MPEG/DVB-compliant Metrics Reporting
Created by: davemevans
This sizable PR is a reworking of the Metrics Reporting functionality introduced in 1.6.0, which can be split roughly in two.
Changes in the core code are to ensure that client metric reporting and subsequent display is more aligned with Annex D of ISO 23009-1. Clients consuming metrics should note that units and attribute names have changed on some metric VOs. There is an internal API change, where getCurrentBufferLevel now returns a time rather than a BufferLevel VO. All existing code has been updated to
The remainder has been refactored into an external "plugin", using the same detection and initialisation mechanism as the Protection functionality (ie a single new attribute and explicit detection method on the MediaPlayer object). Aside from this it is completely separated from the core code, and can be included optionally by those who require it. There are APIs for adding custom metrics handling and custom reporting schemes.
The DVB Reporting scheme (as defined in DVB A168) is implemented since this is the only mechanism defined currently. You can see a sample MPD at http://rdmedia.bbc.co.uk/dash/ondemand/testcard/1/client_manifest-events.mpd. Note that you would need to add DASH metrics to the metrics attribute to report these, and the probability will need tweaking to ensure you see some output.
Note the following limitations:
- RepSwitchList.mt reports the media time at the switch request, not when the new Representation starts playout (see #754 (closed))
- Metrics collection period start and end does not affect Playlist as ISO 23009-1 say it should