-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QoE Metrics Reporting - Investigate and derive metrics via PlaybackStatsListener #27
Comments
Yes. Putting together a mapping table on a Wiki page is probably the first thing I would do. This would be a very useful piece of analysis that would be of benefit to others following in your footsteps. |
Using this ticket to also collect open questions that I need to check and we potentially need to discuss:
|
Added initial support for:
Currently, a metrics message that is received by the <QoeReport>
<QoeMetric class="java.util.ArrayList">
<object class="com.fivegmag.a5gmscommonlibrary.qoeMetricsModels.threeGPP.BufferLevel">
<BufferLevel class="java.util.ArrayList">
<BufferLevelEntry level="3982" t="1687183773586"/>
<BufferLevelEntry level="3984" t="1687183773586"/>
</BufferLevel>
</object>
</QoeMetric>
</QoeReport> The above messages needs some cleanup:
All of the above serves as a starting point to derive additional metrics and serialize them. |
@dsilhavy: A couple of things missing from your QoE metrics report:
|
Thanks @rjb1000 the example above was limited to the relevant information for |
Added basic support for RepresentationSwitchList. Note that this is event-driven. I am currently saving all the
I prefer option 1) The Media Session Handler knows when the last metric request to the media player was issued. By sending this timestamp, we can filter all old values. Moreover, we cannot simply omit values for Android data classes and defaulting to For means of completion, an example how the reporting looks. Note this is not completed at this point, see @rjb1000 and my comments above. <QoeReport>
<QoeMetric class="java.util.ArrayList">
<object class="com.fivegmag.a5gmscommonlibrary.qoeMetricsModels.threeGPP.BufferLevel">
<BufferLevel>
<BufferLevelEntry level="3928" t="1687196339408"/>
</BufferLevel>
</object>
<object class="com.fivegmag.a5gmscommonlibrary.qoeMetricsModels.threeGPP.RepresentationSwitchList">
<RepSwitchList>
<RepSwitchEvent lto="-1" mt="268000" t="1687196338309" to="V300"/>
<RepSwitchEvent lto="-1" mt="268000" t="1687196338717" to="A48"/>
</RepSwitchList>
</object>
</QoeMetric>
</QoeReport> |
Current status incorporating @rjb1000 comments in #35 <?xml version="1.0"?>
<ReceptionReport xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
contentURI="https://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd"
xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport DASH-QoE-Report.xsd">
<QoeReport periodID="p0" reportPeriod="10000" reportTime="2023-07-10T16:55:32.106Z">
<QoeMetric>
<BufferLevel>
<BufferLevelEntry level="0" t="2023-07-10T16:55:28.130Z" />
<BufferLevelEntry level="0" t="2023-07-10T16:55:29.898Z" />
<BufferLevelEntry level="0" t="2023-07-10T16:55:30.901Z" />
<BufferLevelEntry level="0" t="2023-07-10T16:55:31.301Z" />
<BufferLevelEntry level="0" t="2023-07-10T16:55:31.343Z" />
<BufferLevelEntry level="2000" t="2023-07-10T16:55:31.667Z" />
<BufferLevelEntry level="2000" t="2023-07-10T16:55:31.710Z" />
<BufferLevelEntry level="3965" t="2023-07-10T16:55:32.053Z" />
<BufferLevelEntry level="3921" t="2023-07-10T16:55:32.089Z" />
</BufferLevel>
</QoeMetric>
<QoeMetric>
<HttpList>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/Manifest.mpd"
interval="1731" range="" responsecode="200" trequest="2023-07-10T16:55:28.139Z"
tresponse="2023-07-10T16:55:28.153Z" type="MPD"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/Manifest.mpd">
<Trace b="1955" d="1731" s="2023-07-10T16:55:28.153Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/init.mp4"
interval="200" range="" responsecode="200" trequest="2023-07-10T16:55:30.681Z"
tresponse="2023-07-10T16:55:30.691Z" type="InitializationSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/init.mp4">
<Trace b="715" d="200" s="2023-07-10T16:55:30.691Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504049.m4s"
interval="332" range="" responsecode="200" trequest="2023-07-10T16:55:30.950Z"
tresponse="2023-07-10T16:55:30.959Z" type="MediaSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504049.m4s">
<Trace b="38709" d="332" s="2023-07-10T16:55:30.959Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/init.mp4"
interval="608" range="" responsecode="200" trequest="2023-07-10T16:55:30.717Z"
tresponse="2023-07-10T16:55:30.727Z" type="InitializationSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/init.mp4">
<Trace b="651" d="608" s="2023-07-10T16:55:30.727Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/844504049.m4s"
interval="343" range="" responsecode="200" trequest="2023-07-10T16:55:31.303Z"
tresponse="2023-07-10T16:55:31.314Z" type="MediaSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/844504049.m4s">
<Trace b="13449" d="343" s="2023-07-10T16:55:31.314Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504050.m4s"
interval="358" range="" responsecode="200" trequest="2023-07-10T16:55:31.335Z"
tresponse="2023-07-10T16:55:31.345Z" type="MediaSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504050.m4s">
<Trace b="39941" d="358" s="2023-07-10T16:55:31.345Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/844504050.m4s"
interval="289" range="" responsecode="200" trequest="2023-07-10T16:55:31.748Z"
tresponse="2023-07-10T16:55:31.756Z" type="MediaSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/A48/844504050.m4s">
<Trace b="13094" d="289" s="2023-07-10T16:55:31.756Z" />
</HttpListEntry>
<HttpListEntry
actualurl="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504051.m4s"
interval="301" range="" responsecode="200" trequest="2023-07-10T16:55:31.773Z"
tresponse="2023-07-10T16:55:31.780Z" type="MediaSegment"
url="https://livesim.dashif.org/livesim/sts_1689008128/sid_60623bfd/testpic_2s/V300/844504051.m4s">
<Trace b="41458" d="301" s="2023-07-10T16:55:31.780Z" />
</HttpListEntry>
</HttpList>
</QoeMetric>
<QoeMetric>
<RepSwitchList>
<RepSwitchEvent mt="P0Y0DT0H4M28S" t="2023-07-10T16:55:30.922Z" to="V300" />
<RepSwitchEvent mt="P0Y0DT0H4M28S" t="2023-07-10T16:55:31.363Z" to="A48" />
</RepSwitchList>
</QoeMetric>
<sv:delimiter>0</sv:delimiter>
</QoeReport>
</ReceptionReport> I checked against the provided |
Validates successfully :-) The only slight oddity is the lack of a UTF-8 encoding declaration in the first line. (That might be an option in the library you are using to generate the XML.) And the question about whether |
@rjb1000 I forgot this one today in the call. I am generating the |
Apparently the library is not generating this by itself so I changed the string to |
Implemented in #67 |
Feature description
From the media3 Exoplayer documentation:
PlaybackStatsListener
is an AnalyticsListener that implements on-device event processing. It calculates PlaybackStats, with counters and derived metrics including:Goal
PlaybackStatsListener
and if it makes sense to use them directly with a newly defined metrics reporting scheme.The text was updated successfully, but these errors were encountered: