Tech-invite3GPPspaceIETFspace
21222324252627282931323334353637384‑5x

Content for  TS 26.247  Word version:  18.4.0

Top   Top   Up   Prev   Next
0f…   4   5…   6…   7…   8…   9…   10…   11…   12…   13…   14…   15   A…   B…   C…   D…   F…   K…   L…   M…

 

10  QoE for Progressive Download and DASHp. 38

10.1  Generalp. 38

A progressive download or 3GP-DASH client supporting Quality of Experience (QoE) shall report QoE metrics according to the QoE configuration. QoE reporting is optional, but if a 3GP-DASH client reports DASH metrics, it shall report all requested metrics.
The quality metrics are defined in clause 10.2.
The quality metrics applicable for progressive download are specified in clause 10.3. In this case the activation and configuration of QoE reporting framework is achieved by a corresponding OMA DM QoE Management Object as specified in Annex F, or by the QMC functionality as specified in Annex L.
The quality metrics for DASH are specified in clause 10.4. In this case, QoE reporting may be triggered using the MPD ( i.e. when the Metrics element is present in the MPD) or using OMA DM QoE Management Object as specified in Annex F, or by the QMC functionality as specified in Annex L. When QoE reporting is triggered via any of the above methods, the 3GP-DASH client is expected to collect quality metrics according to the QoE configuration. When using the MPD or the QMC functionality, the Quality Reporting scheme as defined in clause 10.5 may be used.
The QoE configuration shall only be evaluated by the client at the start of a QoE measurement and reporting session ("QoE session") associated with a streaming session. This includes evaluation of any filtering criteria such as by geographical area. Client evaluation of all measurement and reporting criteria for an ongoing QoE session shall be unaffected by any QoE configuration changes received during that session - i.e., any changes to the QoE configuration shall only affect QoE sessions started after these configuration changes have been received.
The quality metric reporting protocol is defined in clause 10.6. This protocol shall be used when QoE reporting is triggered via the MPD or OMA DM QoE Management Object. When QoE reporting is triggered via the QMC functionality, the reporting is specified in Annex L.
The usage of ITU-T P.1203 [49] Audio/Video Mean Opinion Score (A/V MOS) estimation is defined in Annex K.
Up

10.2  QoE metric definitionsp. 38

10.2.1  Introductionp. 38

This clause provides the general QoE metric definitions and measurement framework.
The semantics are defined using an abstract syntax. clause 10.6 provides a mapping to an XML schema. Items in this abstract syntax have one of the following primitive types (Integer, Real, Boolean, Enum, String) or one of the following compound types:
  • Objects: an unordered sequence of (key, value) pairs, where the key always has string type and is unique within the sequence.
  • List: a ordered list of items.
  • Set: an unordered set of items.
Additionally, there are two kinds of timestamp defined, i.e. real time (wall-clock time) and media time.
Up

10.2.2Void

10.2.3  Representation switch eventsp. 39

Clause D.4.4 in ISO/IEC 23009-1 [43] defines the metrics for representation switch events.

10.2.4  Average throughputp. 39

This metric in Table 27 indicates the average throughput that is observed by the client during the measurement interval.
Key Type Description
AvgThroughputObjectAverage throughput that is observed by the client during the measurement interval.
numbytesIntegerThe total number of the content bytes, i.e. the total number of bytes in the body of the HTTP responses, received during the measurement interval.
activitytimeIntegerThe activity time during the measurement interval in milliseconds. The activity time during the measurement interval is the time during which at least one GET request is still not completed (i.e. excluding inactivity time during the measurement interval).
tReal TimeThe real time of the start of the measurement interval.
durationIntegerThe time in milliseconds of the measurement interval.
accessbearerStringAccess bearer for the TCP connection for which the average throughput is reported.
inactivitytypeEnumType of the inactivity, if known and consistent throughout the reporting period:
  • User request (e.g. pause)
  • Client measure to control the buffer
  • Error case
If the client requests the media Segments from the server separately over multiple non-competing parallel TCP connections established over separate access network bearers named as accessbearer, then the average throughput values should be reported as a list of events with average throughput for each access network and associated access network bearer information reported separately, following the same guidelines as described above.
Up

10.2.5  Initial playout delayp. 39

This metric in Table 28 signals the initial playout delay at the start of the streaming of the presentation.
The metric is only logged at the time point when the playout of streaming video begins.
Key Type Description
InitialPlayoutDelayIntegerThe initial playout delay is measured as the time in milliseconds from the fetch of the first media Segment (or sub-segment) and the time at which media is retrieved from the client buffer.
Up

10.2.6  Buffer levelp. 40

Clause D.4.5 in ISO/IEC 23009-1 [43] defines the metrics for buffer level status events.

10.2.7  Playlistp. 40

Decoded samples are generally rendered in presentation time sequence, each at or close to its specified presentation time. A compact representation of the information flow can thus be constructed from a list of time periods during which samples of a single representation were continuously rendered, such that each was presented at its specified presentation time to some specific level of accuracy (e.g. +/-10 ms).
Such a sequence of periods of continuous delivery is started by a user action that requests playout to begin at a specified media time (this could be a "play", "seek" or "resume" action) and continues until playout stops either due to a user action, the end of the content, or a permanent failure.
Table 30 defines the playlist event metric.
Key Type Description
PlayListListA list of playback periods. A playback period is the time interval between a user action and whichever occurs soonest of the next user action, the end of playback or a failure that stops playback.
EntryObjectA record of a single playback period.
startReal TimeTimestamp of the user action that starts the playback period.
mstartMedia TimeThe presentation time at which playout was requested by the user action.
starttypeEnumType of user action which triggered playout
  • New playout request (e.g. initial playout or seeking)
  • Resume from pause
  • Other user request (e.g. user-requested quality change)
  • Start of a metrics collection period (hence earlier entries in the play list not collected)
TraceListList of periods of continuous rendering of decoded samples.
TraceentryObjectsSingle entry in the list.
representationidStringThe value of Representation@id from which the samples were taken.
This is an optional parameter and should not be reported in case of progressive download.
subreplevelIntegerIf not present, this metric concerns the Representation as a whole. If present, subreplevel indicates the greatest value of any SubRepresentation@level being rendered.
This is an optional parameter and should not be reported in case of progressive download.
startReal TimeThe time at which the first sample was rendered.
sstartMedia TimeThe presentation time of the first sample rendered.
durationInteger The time in milliseconds of the duration of the continuously presented samples (which is the same in real time and media time). "Continuously presented" means that the media clock continued to advance at the playout speed throughout the interval.
playbackspeedRealThe playback speed relative to normal playback speed (i.e., normal forward playback speed is 1.0).
stopreasonEnumThe reason why continuous presentation of this representation was stopped. Either:
  • representation switch (not relevant in case of progressive download)
  • rebuffering
  • user request
  • end of period
  • end of content
  • end of a metrics collection period
  • failure
  • other
stopreasonotherStringThe stopreasonother attribute shall be included only if stopreason attribute is included and has the enum value other. In this release of the specification, the sender of this string shall set its value to one of the following:
  • switch from unicast to broadcast
  • switch from broadcast to unicast
The receiver of this attribute shall ignore this attribute if its string is set to different value than the values listed above.
The playlist includes user actions about start/stop, but also other non-user actions such as adaptation and rebuffering. Thus, the playlist may be used to derive many other metrics, and an example calculation of a few stalling-related metrics is shown below.
Assume a user at wallclock time hh:mm:ss = 09:00:00 clicks to start a 60-second video with the following playout characteristics:
Copy of original 3GPP image for 3GPP TS 26.247, Fig. 10-1: Example for Playout
Figure 10-1: Example for Playout
(⇒ copy of original 3GPP image)
Up
  • 5 seconds of initial stalling
  • 10 seconds playing with representation 1
  • 15 seconds of stalling
  • 20 seconds playing with representation 2
  • 30 seconds playing with representation 1
This would result in the following (somewhat simplified in this example) playout list being reported by the client:
Playlist
    Entry#1
        start = 09:00:00
        mstart = 00:00:00
        starttype = New playout request
        Trace
            Traceentry#1
                representationid = 1
                start = 09:00:05
                sstart = 00:00:00
                duration = 10 seconds
                stopreason = rebuffering
            Traceentry#2
                representationid = 2
                start = 09:00:30
                sstart = 00:00:10
                duration = 20 seconds
                stopreason = representation switch
            Traceentry#3
                representationid = 1
                start = 09:00:50
                sstart = 00:00:30
                duration = 30 seconds
                stopreason = end of content
The number of stalling occurrences may be calculated by counting how many times a stop reason is specified as "rebuffering".
The time duration for a stalling event may be calculated based on the time difference between the end time of a trace entry with stopreason equal to "rebuffering", and the start time of the next trace entry. In the example above the stalling starts at "Traceentry#1, (start + duration)" = 09:00:05 + 10 secs = 09:00:15, and ends at "Traceentry#2, start" = 09:00:30. Thus the length of the stalling is 15 seconds.
Up

10.2.8  MPD informationp. 42

This metric can be used to report Representation information from the MPD, so that reporting servers without direct access to the MPD can understand the used media characteristics.
The metric is reported whenever the client sends any other quality metrics report containing references to a Representation which MPD information has still not been reported.
Table 31 defines the MPD information for quality reporting.
Key Type Description
MPDInformationObject
representationidStringValue of Representation@id for the representation addressed by the QoE metrics report.
subreplevelIntegerIf present, value of SubRepresentation@level for the subrepresentation addressed by the QoE metrics report. If not present, the QoE metrics report concerns the representation as a whole.
MpdinfoRepresentationTypeProvides the MPD information for the representation or subrepresentation identified by representationid and subreplevel, if present. The following attributes and elements shall be present within mpdinfo if they are present for the identified representation or subrepresentation and their values shall be identical to those presented in the MPD: @bandwidth, @qualityRanking, @width, @height, @mimeType, and @codecs.
Up

10.2.9  Playout delay for media start-up |R13|p. 43

This metric in Table 31a indicates the waiting time that the user experiences for media start-up.
The metric is only logged at the time point when the media start-up happens.
Key Type Description
PlayoutDelayforMediaStartupIntegerThe playout delay for media start-up is measured as the time in milliseconds from the time instant of DASH player receives play-back-start trigger to the instant of media playout.
  • If the MPD has been delivered earlier before the user clicks, it may include the process time of MPD, the fetch time of some media segments which are required for media presentation, the process time of segments, and the time for media decode and render to the user.
  • If no MPD has been fetched earlier, it also needs to add the fetch time of MPD.
Up

10.2.10  Device information |R14|p. 43

This metric contains information about the displayed video resolution as well as the physical screen characteristics. If the video is rendered in full-screen mode, the video resolution usually coincides with the characteristics of the full physical display. If the video is rendered in a smaller sub-window, the characteristics of the actual video window shown shall be logged.
If known by the DASH client, the physical screen width and the horizontal field-of-view shall also be logged.
The metric is logged at the start of each QoE reporting period, and whenever the characteristics changes during the session (for instance if the UE is rotated from horizontal to vertical orientation, or if the video sub-window size is changed).
Table 31b defines the device information metrics. If an individual metric cannot be logged, its value shall be set to 0 (zero).
Key Type Description
DeviceInformationListListA list of device information objects.
EntryObjectA single object containing new device information.
startReal-TimeTimestamp when the device information was logged.
mstartMedia-TimeThe presentation time at which the device information was logged.
videoWidthIntegerThe width of the displayed video, in screen pixels (not encoded video pixels).
videoHeightIntegerThe height of the displayed video, in screen pixels (not encoded video pixels).
screenWidthIntegerThe total width of the screen, in screen pixels.
screenHeightIntegerThe total height of the screen, in screen pixels.
pixelWidthFloatThe width of a screen pixel, in mm.
pixelHeightFloatThe height of a screen pixel, in mm.
fieldOfViewFloatThe actual or estimated horizontal angle subtended at the eye by the screen, measured in degrees.
Up

10.3  Quality metrics for Progressive Downloadp. 44

The following metrics shall be supported by Progressive Download clients supporting the QoE reporting feature:
Up

10.4  Quality metrics for DASHp. 44

The following metrics shall be supported by 3GP-DASH clients supporting the QoE reporting feature:
The @metrics attribute contains a list of quality metric keys listing all metrics that the DASH shall collect and report.
The semantics of the attributes within the Metrics element are provided in Table 32. The XML-syntax of a Metrics element is provided in Table 33.
Element or attribute name Use Description
MetricsDASH metric element
@metrics
MThis attribute lists all quality metrics (as a list of quality metric keys as defined in clause 10.2, separated by a whitespace) that the client shall report.
Certain keys allow specifying a measurement interval or period over which a single value of the metric is derived and potentially also other parameters controlling the collection of the metrics. The parameters, if any, are included in parentheses after the key and their semantics are specified in clause 10.2 with the metric definition itself.
Range
0..NWhen specified, it indicates the time period during which quality metric collection is requested. When not present, quality metric collection is requested for the whole duration of the content.
@starttime
O When specified, it indicates the start time of the quality metric collection operation. When not present, quality metric collection is requested from the beginning of content consumption. For services with MPD@type "Live", the start time of quality metric collection can be obtained in wallclock time by adding the value of this attribute indicated in media time to the value of the MPD@availabilityStartTime attribute. For services with MPD@type "OnDemand", the start time is indicated in media time and is relative to the PeriodStart time of the first period in this MPD.
@duration
OWhen specified, it indicates the duration of the quality metric collection period. The value of this attribute is expressed in media time.
Reporting
1...NDescriptors that provide information about the requested Quality Reporting method and formats, and Auxiliary Reporting method and format. See clause 10.5 for the 3GP-DASH quality reporting schemes, and clause 14 for the 3GP-DASH auxiliary reporting scheme.
Legend:
For attributes: M=Mandatory, O=Optional, OD=Optional with Default Value, CM=Conditionally Mandatory.
For elements: <minOccurs>...<maxOccurs> (N=unbounded)
Elements are bold; attributes are non-bold and preceded with an @.
    <!-- QoE Collection and Reporting -->
    <xs:complexType name="MetricsType">
        <xs:sequence>
            <xs:element name="Reporting" type="DescriptorType" maxOccurs="unbounded"/>
            <xs:element name="Range" type="RangeType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="metrics" type="xs:string" use="required"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    <xs:complexType name="RangeType">
        <xs:sequence>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="startTime" type="xs:duration" use="optional"/>
        <xs:attribute name="duration" type="xs:duration" use="required"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
Up

10.5  Quality reporting scheme for DASHp. 46

This clause specifies a 3GP-DASH quality reporting scheme.
The quality reporting scheme is signalled using in the Reporting element in the Metrics element. The URN to be used for the Reporting@schemeIdUri shall be "urn:3GPP:ns:PSS:DASH:QM10".
The reporting scheme shall use the quality reporting protocol defined in clause 10.6.
The semantics and XML syntax of the scheme information for the 3GP-DASH quality reporting scheme are specified in Table 34 and Table 35, respectively. The filename of this schema is "TS26247_Quality­Reporting­Scheme­Information.xsd".
Element or attribute name Use Description
@apnOThis attribute gives the access point that should be used for sending the QoE reports.
@formatO This field gives the requested format for the reports. Possible formats are: "uncompressed" and "gzip".
@samplepercentageOPercentage of the clients that should report QoE. The client uses a random number generator with the given percentage to find out if the client should report or not.
@reportingserverMThe reporting server URL to which the reports will be sent.
@reportingintervalOIndicates the time(s) reports should be sent. If not present, then the client should send a report after the streaming session has ended. If present, @reportingInterval=n indicates that the client should send a report every n-th second provided that new metrics information has become available since the previous report. For each report sent, only the newly collected information since the previous report shall be reported.
LocationFilter0..1When present, this element indicates the geographic area(s) or location(s) where quality metric collection is requested. When not present, quality metric collection is requested regardless of the device's location. The LocationFilter element comprises one or more instances of any combination of targeted cell-IDs, polygons and circular areas. Each cell-ID entry in LocationFilter is announced in cellList, and each polygon and circular area entry is announced in the polygonList or and circularAreaList elements, respectively.
cellList
0..NThis element specifies a list of cells identified by E-UTRAN-CGI or CGI.
shape
Geographic area comprising one or more instances of polygonList and/or circularAreaList elements.
polygonList
0..N This element, when present, comprises a list of 'Polygon' shapes as defined by OMA MLP [51].
@confLevel
O This attribute indicates the probability in percent that the DASH client is located in the corresponding polygon area. It is defined as 'lev_conf' by OMA MLP. If not present, it has default value of 60.
circularAreaList
0..N This element, when present, comprises a list of 'CircularArea' shapes as defined by OMA MLP [51].
@confLevel
O This attribute indicates the probability in percent that the DASH client is located in the corresponding circular area. It is defined as 'lev_conf' by OMA MLP. If not present, it has default value of 60.
@sliceScopeOWhen present, this attribute indicates a list of network slices in which the collection and reporting of QoE metrics is requested. When not present, quality metric collection is requested for all network slices. The value is a list of S-NSSAIs.
@communicationServiceTypeOWhen present, this attribute indicates a list of communication service type(s) for which communication service type the collection and reporting of QoE metrics is requested, and shall contain one or more of the following values:
  • The value unicast refers to the common unicast communication type carrying media streaming services.
  • The value mbsMulticast refers to the MBS Multicast communication service per clause 21.1 of TS 38.300.
  • The value mbsBroadcast refers to the MBS Broadcast communication service per clause 21.1 of TS 38.300.
  • The value all refers to all communication service types.
When absent, quality metrics collection is requested for all communication service types.
Legend:
For attributes: M=Mandatory, O=Optional, CM=Conditionally Mandatory.
For elements: <minOccurs>…<maxOccurs> (N=unbounded)
Elements are bold; attributes are non-bold and preceded with an @
<?xml version="1.0"?>
<xs:schema targetNamespace="urn:3GPP:ns:PSS:AdaptiveHTTPStreaming:2009:qm"
    attributeFormDefault="unqualified"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns="urn:3GPP:ns:PSS:AdaptiveHTTPStreaming:2009:qm">
    
    <xs:annotation>
        <xs:appinfo>3GPP DASH Quality Reporting</xs:appinfo>
        <xs:documentation xml:lang="en">
            This Schema defines the quality reporting scheme information for 3GPP DASH.
        </xs:documentation>
    </xs:annotation>
    
    <xs:element name="ThreeGPQualityReporting" type="SimpleQualityReportingType"/>
    
    <xs:complexType name="SimpleQualityReportingType">
        <xs:sequence>
            <xs:element name="LocationFilter" type="LocationFilterType" minOccurs="0"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="apn" type="xs:string" use="optional"/>
        <xs:attribute name="format" type="FormatType" use="optional"/>
        <xs:attribute name="samplePercentage" type="xs:double" use="optional"/>
        <xs:attribute name="reportingServer" type="xs:anyURI" use="required"/>
        <xs:attribute name="reportingInterval" type="xs:unsignedInt" use="optional"/>
        <xs:attribute name="sliceScope" type="UnsignedIntVectorType" use="optional"/>
        <xs:attribute name="communicationServiceType" type="CommunicationServiceTypeType" use="optional" default="all"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    
    <xs:simpleType name="FormatType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="uncompressed" />
            <xs:enumeration value="gzip" />
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="CommunicationServiceTypeType">
        <xs:list>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="all" />
                    <xs:enumeration value="unicast" />
                    <xs:enumeration value="mbsBroadcast" />
                    <xs:enumeration value="mbsMulticast" />
                </xs:restriction>
            </xs:simpleType>
        </xs:list>
    </xs:simpleType>
    <xs:complexType name="LocationFilterType">
        <xs:sequence>
            <xs:element name="cellID" type="xs:unsignedLong" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="shape" type="ShapeType" minOccurs="0"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    <xs:complexType name="ShapeType">
        <xs:sequence>
            <xs:element name="PolygonList" type="PolygonListType" minOccurs="0"/>
            <xs:element name="CircularAreaList" type="CircularAreaListType" minOccurs="0"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    <xs:complexType name="PolygonListType">
        <xs:annotation>
            <xs:documentation> see [OMA MLP] </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Polygon" minOccurs="0" maxOccurs="unbounded"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="ConfLevel" type="xs:unsignedInt" use="optional"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    <xs:complexType name="CircularAreaListType">
        <xs:annotation>
            <xs:documentation> see [OMA MLP] </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="CircularArea" minOccurs="0" maxOccurs="unbounded"/>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="ConfLevel" type="xs:unsignedInt" use="optional"/>
        <xs:anyAttribute namespace="##other" processContents="lax"/>
    </xs:complexType>
    <xs:simpleType name="UnsignedIntVectorType">
        <xs:list itemType="xs:unsignedInt"/>
    </xs:simpleType>
</xs:schema>
Up

10.6  Quality reporting protocolp. 48

10.6.1  Generalp. 48

The quality reporting protocol consists of:
The MIME type of an XML-formatted QoE report shall be "application/3gpdash-qoe-report+xml" as defined in Annex J.
Up

10.6.2  Report formatp. 49

The QoE report is formatted as an XML document that complies with the XML schema in Listing 10.6.2-1. The filename of this schema is "TS 26247_HSDReceptionReport.xsd".
<?xml version="1.0"?>
<xs:schema version="TSG105-Rel18" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="urn:3gpp:metadata:2017:HSD:receptionreport"
xmlns:sup="urn:3gpp:metadata:2016:PSS:SupplementQoEMetric"
xmlns:rtc="urn:3gpp:metadata:2023:RTC:QoEMetrics"
xmlns:src="urn:3gpp:metadata:2024:RTC:SR_MSEQoEMetrics"
xmlns:evex="urn:3gpp:metadata:2024:PSS:SupplementalEventExposureReportingFields"
xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
    xmlns="urn:3gpp:metadata:2017:HSD:receptionreport" elementFormDefault="qualified">
    <xs:import namespace="urn:3gpp:metadata:2016:PSS:SupplementQoEMetric"
    schemaLocation="TS 26247_SupplementalQoEMetric.xsd"/>
    <xs:import namespace="urn:3gpp:metadata:2023:RTC:QoEMetrics" schemaLocation="TS 26113_QoEMetrics.xsd"/>
    <xs:import namespace="urn:3gpp:metadata:2024:RTC:SR_MSEQoEMetrics"
    schemaLocation="TS 26565_SR_MSEQoEMetrics.xsd"/>
    <xs:import namespace="urn:3gpp:metadata:2024:PSS:SupplementalEventExposureReportingFields"
    schemaLocation="TS 26247_SupplementalEventExposureReporting.xsd"/>
    <xs:import namespace="urn:3gpp:metadata:2016:PSS:schemaVersion" schemaLocation="TS 26247_SchemaVersion.xsd"/>
    <xs:element name="ReceptionReport" type="ReceptionReportType"/>
    <xs:complexType name="ReceptionReportType">
        <xs:sequence>
            <xs:element ref="sv:schemaVersion"/>
            <xs:element name="QoeReport" type="QoeReportType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element ref="sv:delimiter"/>
            <xs:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="contentURI" type="xs:anyURI" use="required"/>
        <xs:attribute name="clientID" type="xs:string" use="optional"/>
    </xs:complexType>
    <xs:complexType name="QoeReportType">
        <xs:sequence>
            <xs:element name="QoeMetric" type="QoeMetricType" minOccurs="1" maxOccurs="unbounded"/>
            <xs:element ref="sup:supplementQoEMetric" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="sv:delimiter"/>
            <xs:element ref="rtc:QoeMetric" minOccurs="0"/>
            <xs:element ref="sv:delimiter"/>
            <xs:element ref="src:QoeMetric" minOccurs="0"/>
            <xs:element ref="sv:delimiter"/>
            <xs:element ref="evex:SliceInfo" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="evex:DNN" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="evex:Locations" minOccurs="0" maxOccurs="1"/>
            <xs:element ref="sv:delimiter"/>
            <xs:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="periodID" type="xs:string" use="required"/>
        <xs:attribute name="reportTime" type="xs:dateTime" use="required"/>
        <xs:attribute name="reportPeriod" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="qoeReferenceId" type="xs:hexBinary" use="optional"/>
        <xs:attribute name="recordingSessionId" type="xs:hexBinary" use="optional"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="QoeMetricType">
        <xs:choice>
            <xs:element name="RepSwitchList" type="RepSwitchListType"/>
            <xs:element name="AvgThroughput" type="AvgThroughputType" maxOccurs="unbounded"/>
            <xs:element name="InitialPlayoutDelay" type="xs:unsignedInt"/>
            <xs:element name="BufferLevel" type="BufferLevelType"/>
            <xs:element name="PlayList" type="PlayListType"/>
            <xs:element name="MPDInformation" type="MpdInformationType" maxOccurs="unbounded"/>
            <xs:element name="PlayoutDelayforMediaStartup" type="xs:unsignedInt"/>
        </xs:choice>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="RepSwitchListType">
        <xs:choice>
            <xs:element name="RepSwitchEvent" type="RepSwitchEventType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="RepSwitchEventType">
        <xs:attribute name="to" type="xs:string" use="required"/>
        <xs:attribute name="mt" type="xs:duration" use="optional"/>
        <xs:attribute name="t" type="xs:dateTime" use="optional"/>
        <xs:attribute name="lto" type="xs:unsignedInt" use="optional"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="AvgThroughputType">
        <xs:attribute name="numBytes" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="activityTime" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="t" type="xs:dateTime" use="required"/>
        <xs:attribute name="duration" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="accessbearer" type="xs:string" use="optional"/>
        <xs:attribute name="inactivityType" type="InactivityType" use="optional"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:simpleType name="InactivityType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Pause"/>
            <xs:enumeration value="BufferControl"/>
            <xs:enumeration value="Error"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="BufferLevelType">
        <xs:choice>
            <xs:element name="BufferLevelEntry" type="BufferLevelEntryType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="BufferLevelEntryType">
        <xs:attribute name="t" type="xs:dateTime" use="required"/>
        <xs:attribute name="level" type="xs:unsignedInt" use="required"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="PlayListType">
        <xs:choice>
            <xs:element name="Trace" type="PlayListEntryType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="PlayListEntryType">
        <xs:choice>
            <xs:element name="TraceEntry" type="PlayListTraceEntryType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:attribute name="start" type="xs:dateTime" use="required"/>
        <xs:attribute name="mstart" type="xs:duration" use="required"/>
        <xs:attribute name="startType" type="StartType" use="required"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="PlayListTraceEntryType">
        <xs:attribute name="representationId" type="xs:string" use="optional"/>
        <xs:attribute name="subrepLevel" type="xs:unsignedInt" use="optional"/>
        <xs:attribute name="start" type="xs:dateTime" use="required"/>
        <xs:attribute name="sstart" type="xs:duration" use="required"/>
        <xs:attribute name="duration" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="playbackSpeed" type="xs:double" use="optional"/>
        <xs:attribute name="stopReason" type="StopReasonType" use="optional"/>
        <xs:attribute name="stopReasonOther" type="xs:string" use="optional"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:simpleType name="StartType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="NewPlayoutRequest"/>
            <xs:enumeration value="Resume"/>
            <xs:enumeration value="OtherUserRequest"/>
            <xs:enumeration value="StartOfMetricsCollectionPeriod"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StopReasonType">
        <xs:restriction base="xs:string">
            <xs:enumeration value="RepresentationSwitch"/>
            <xs:enumeration value="Rebuffering"/>
            <xs:enumeration value="UserRequest"/>
            <xs:enumeration value="EndOfPeriod"/>
            <xs:enumeration value="EndOfContent"/>
            <xs:enumeration value="EndOfMetricsCollectionPeriod"/>
            <xs:enumeration value="Failure"/>
            <xs:enumeration value="Other"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="MpdInformationType">
        <xs:choice>
            <xs:element name="Mpdinfo" type="RepresentationType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:attribute name="representationId" type="xs:string" use="required"/>
        <xs:attribute name="subrepLevel" type="xs:unsignedInt" use="optional"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="RepresentationType">
        <xs:attribute name="codecs" type="xs:string" use="required"/>
        <xs:attribute name="bandwidth" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="qualityRanking" type="xs:unsignedInt" use="optional"/>
        <xs:attribute name="frameRate" type="xs:double" use="optional"/>
        <xs:attribute name="width" type="xs:unsignedInt" use="optional"/>
        <xs:attribute name="height" type="xs:unsignedInt" use="optional"/>
        <xs:attribute name="mimeType" type="xs:string" use="required"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:simpleType name="DoubleVectorType">
        <xs:list itemType="xs:double"/>
    </xs:simpleType>
    <xs:simpleType name="StringVectorType">
        <xs:list itemType="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="UnsignedIntVectorType">
        <xs:list itemType="xs:unsignedInt"/>
    </xs:simpleType>
</xs:schema>
The schema in Listing 10.6.2-2 is an extension to allow additional QoE metrics. The filename of this schema is "TS 26247_SupplementalQoEMetric.xsd".
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
 xmlns="urn:3gpp:metadata:2016:PSS:SupplementQoEMetric"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="urn:3gpp:metadata:2016:PSS:SupplementQoEMetric"
 elementFormDefault="qualified">
 <xs:element name="supplementQoEMetric" type="SupplementQoEMetricType"/>
<xs:complexType name="SupplementQoEMetricType">
  <xs:sequence>
   <xs:element name="deviceinformation" type="DeviceInformationType" minOccurs="0"/>
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
    </xs:complexType>
    <xs:complexType name="DeviceInformationType">
        <xs:choice>
            <xs:element name="Entry" type="DeviceInformationEntryType" maxOccurs="unbounded"/>
        </xs:choice>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
    <xs:complexType name="DeviceInformationEntryType">
        <xs:attribute name="start" type="xs:dateTime" use="required"/>
        <xs:attribute name="mstart" type="xs:duration" use="required"/>
        <xs:attribute name="videoWidth" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="videoHeight" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="screenWidth" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="screenHeight" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="pixelWidth" type="xs:double" use="required"/>
        <xs:attribute name="pixelHeight" type="xs:double" use="required"/>
        <xs:attribute name="fieldOfView" type="xs:double" use="required"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
</xs:schema>    <xs:complexType name="DeviceInformationEntryType">
        <xs:attribute name="start" type="xs:dateTime" use="required"/>
        <xs:attribute name="mstart" type="xs:duration" use="required"/>
        <xs:attribute name="videoWidth" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="videoHeight" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="screenWidth" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="screenHeight" type="xs:unsignedInt" use="required"/>
        <xs:attribute name="pixelWidth" type="xs:double" use="required"/>
        <xs:attribute name="pixelHeight" type="xs:double" use="required"/>
        <xs:attribute name="fieldOfView" type="xs:double" use="required"/>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
</xs:schema>
The schema in Listing 10.6.2-2a is an extension to allow additional fields to be included in QoE metrics reports to support event exposure. The filename of this schema is "TS 26247_SupplementalEventExposureReporting.xsd".
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="TSG104-Rel18"
 xmlns="urn:3gpp:metadata:2024:PSS:SupplementalEventExposureReportingFields"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="urn:3gpp:metadata:2024:PSS:SupplementalEventExposureReportingFields"
 elementFormDefault="qualified">
 <!-- Slice identification -->
 <xs:simpleType name="SliceDifferentiatorType">
  <xs:restriction base="xs:string">
   <xs:pattern value="[A-Fa-f0-9]{6}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:complexType name="SliceInfoType">
  <xs:annotation>
   <xs:documentation>Information about a network slice.</xs:documentation>
  </xs:annotation>
  <xs:attribute name="sst" type="xs:unsignedByte" use="required">
   <xs:annotation>
    <xs:documentation>Slice/Service Type, expressed as an integer between 0 and 255 inclusive.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:attribute name="sd" type="SliceDifferentiatorType" use="optional">
   <xs:annotation>
    <xs:documentation>Slice Differentiator, expressed as a 6-digit hexadecimal string.</xs:documentation>
   </xs:annotation>
  </xs:attribute>
  <xs:anyAttribute processContents="skip"/>
 </xs:complexType>
 <xs:element name="SliceInfo" type="SliceInfoType"/>
 <!-- Data Network naming -->
 <xs:element name="DNN" type="xs:string" nillable="false"/>
 <!-- Location identification -->
 <xs:simpleType name="CGIType">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{2,3}-^\d{3}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="ECGIType">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{2,3}-^\d{3}$-[A-Fa-f0-9]{7}(-[A-Fa-f0-9]{11})+"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="NCGIType">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{2,3}-^\d{3}-[A-Fa-f0-9]{9}(-[A-Fa-f0-9]{11})+"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:complexType name="UserLocationsType">
  <xs:annotation>
   <xs:documentation>A set of UE locations.</xs:documentation>
  </xs:annotation>
  <xs:sequence minOccurs="1" maxOccurs="unbounded">
   <xs:choice>
    <xs:element name="CGI" type="CGIType">
     <xs:annotation>
      <xs:documentation>A string of four numeric codes separated by hyphen characters that encode
      a Cell Global Identification per clause 4.3.1 of TS 23.003:
-- Mobile Country Code (MCC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of 2 or 3 decimal digits.
- Mobile Network Code (MNC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of exactly 3 decimal digits.
- A Location Area Code (LAC) encoded using a string of 4 hexadecimal digits with the most significant nybble
appearing first, and padded with leading zeroes as necessary.
- A Cell Identification (CI) encoded using a string of 4 hexadecimal digits with the most significant nybble
appearing first, and padded with leading zeroes as necessary.</xs:documentation>
     </xs:annotation>
    </xs:element>
    <xs:element name="ECGI" type="ECGIType">
     <xs:annotation>
      <xs:documentation>A string of four numeric codes separated by hyphen characters that encode
      a E-UTRAN Cell Global Identification per clause 19.6 of TS 23.003:
- Mobile Country Code (MCC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of 2 or 3 decimal digits.
- Mobile Network Code (MNC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of exactly 3 decimal digits.
- E-UTRAN Cell Identity (ECI), as specified in clause 9.3.1.9 of TS 38.413,
encoded as a string of 7 hexadecimal digits with the most significant nybble appearing first,
and padded with leading zeroes as necessary.
- Optional Network Identifier (NID), as specified in 3GPP TS 23.003 and clause 5.30.2.1 of TS 23.501,
encoded as a string of 11 hexadecimal digits with the most significant nybble appearing first,
and padded with leading zeroes as necessary.</xs:documentation>
     </xs:annotation>
    </xs:element>
    <xs:element name="NCGI" type="NCGIType">
     <xs:annotation>
      <xs:documentation>A string of four numeric codes separated by hyphen characters that encode
      a E-UTRAN Cell Global Identification per clause 19.6 of TS 23.003:
- Mobile Country Code (MCC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of 2 or 3 decimal digits.
- Mobile Network Code (MNC) part of the PLMN ID, as defined in clause 9.3.3.5 of TS 38.413,
encoded using a string of exactly 3 decimal digits.
- NR Cell Identity (NCI), as specified in clause 9.3.1.7 of TS 38.413,
encoded as a string of 9 hexadecimal digits with the most significant nybble appearing first,
and padded with leading zeroes as necessary.
- Optional Network Identifier (NID), as specified in 3GPP TS 23.003 and clause 5.30.2.1 of TS 23.501,
encoded as a string of 11 hexadecimal digits with the most significant nybble appearing first,
and padded with leading zeroes as necessary.</xs:documentation>
     </xs:annotation>
    </xs:element>
   </xs:choice>
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  <xs:anyAttribute processContents="skip"/>
 </xs:complexType>
 <xs:element name="Locations" type="UserLocationsType"/>
</xs:schema>
The schema in Listing 10.6.2-3 is used by XML instance documents to declare their compatibility with a particular version of the QoE reporting schema specified in Listing 10.6.2-1. The filename of this schema is "TS 26247_SchemaVersion.xsd".
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="urn:3gpp:metadata:2016:PSS:schemaVersion"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="urn:3gpp:metadata:2016:PSS:schemaVersion"
   elementFormDefault="qualified">
 <xs:element name="schemaVersion" type="xs:string"/>
 <xs:element name="delimiter" type="xs:byte"/>
</xs:schema>
If a supplementQoEMetric needs to be sent when no ordinary QoEMetric is due, a dummy MPDInformation metric shall be sent with codecs="none", bandwidth=0, mimeType="none", representationId="none".
If the attribute qoeReferenceId was defined in the QMC configuration (see clause L.2), the value shall be copied into each QoE report, to facilitate network-side correlation (see TS 28.405). If this attribute was defined the attribute recordingSessionId shall also be returned for each QoE report. When metrics are reported via the QMC functionality (see Annex L) the recordingSessionId is a two-byte numeric value defined by the client. It shall remain the same for all QoE reports belonging to the same streaming session, and it should be different for QoE reports belonging to different streaming sessions.
For the QMC scheme, if the SliceScope element is included in the QoE configuration and the slice associated with the streaming service is within the SliceScope, the DASH client should execute the QoE collection and include the S-NSSAI and DNN that correspond to the report data for support of per-slice QoE reporting and evaluation in OAM. This information may be retrieved via the AT Command +CGDCONT TS 27.007) or the specific traffic mapping with URSP rule TS 24.526.
Up

10.6.3  Reporting protocolsp. 54

For configuration done via the QMC functionality (see Annex L), the client shall also send QoE reports via the QMC functionality. For MPD or OMA-DM configuration, if a specific metrics server has been configured, the client shall send QoE reports using the HTTP (RFC 9112) POST request carrying XML-formatted metadata in its body.
An example QoE reporting based on HTTP POST request signalling is shown below:
POST http://www.exampleserver.com HTTP/1.1
Host: 192.68.1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)
Content-Type: text/xml; charset=utf-8
Content-Length: 4408
<?xml version="1.0"?>
<ReceptionReport contentURI="http://www.example.com/content/content.mpd" clientID="35848574673"
 xmlns="urn:3gpp:metadata:2011:HSD:receptionreport"
 xmlns:evex="urn:3gpp:metadata:2024:PSS:SupplementalEventExposureReporting"
 xmlns:sv="urn:3gpp:metadata:2016:PSS:schemaVersion"
 xsi:schemaLocation="urn:3gpp:metadata:2011:HSD:receptionreport DASH-QoE-Report.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <sv:schemaVersion>TSG105-Rel18</sv:schemaVersion>
 <QoeReport recordingSessionId="7a25" periodID="Period1" reportTime="2011-02-16T09:00:00" reportPeriod="500">
  <QoeMetric>
   <HttpList>
    <HttpListEntry type="MPD" url="http://www.example.com/content/content.mpd"
     trequest="2011-02-16T08:59:30" tresponse="2011-02-16T08:59:31" interval="50">
       <Trace s="2011-02-16T08:59:30Z" d="171" b="2367 1990 2463 1254"/>
    </HttpListEntry>
    <HttpListEntry type="InitializationSegment" url="http://www.example.com/content/initRep1.3gp"
     trequest="2011-02-16T08:59:40" tresponse="2011-02-16T08:59:41" interval="200">
       <Trace s="2011-02-16T08:59:40.5Z" d="159" b="9345"/>
    </HttpListEntry>
    <HttpListEntry type="InitializationSegment" url="http://www.example.com/content/initRep2.3gp"
     trequest="2011-02-16T08:59:41" tresponse="2011-02-16T08:59:42" interval="200">
       <Trace s="2011-02-16T08:59:41.5Z" d="123" b="6723"/>
    </HttpListEntry>
    <HttpListEntry type="InitializationSegment" url="http://www.example.com/content/initRep3.3gp"
     trequest="2011-02-16T08:59:42" tresponse="2011-02-16T08:59:43" interval="200">
       <Trace s="2011-02-16T08:59:42.5Z" d="195" b="9786"/>
    </HttpListEntry>
   </HttpList
  </QoeMetric>
  <QoeMetric>
   <InitialPlayoutDelay>10000</InitialPlayoutDelay>
  </QoeMetric>
  <sv:delimiter>0</sv:delimiter>
  <sv:delimiter>0</sv:delimiter>
  <sv:delimiter>0</sv:delimiter>
  <evex:SliceInfo sst="42" sd="a1b2c3"/>
  <evex:UserLocations>
   <evex:NCGI>234-015-000000001</evex:NCGI>
  </evex:UserLocations>
  <evex:DNN>broadband</evex:DNN>
  <sv:delimiter>0</sv:delimiter>
 </QoeReport>
 <QoeReport periodID="Period1" reportTime="2011-02-16T09:08:20" reportPeriod="500">
  <QoeMetric>
   <BufferLevel>
    <BufferLevelEntry t="2011-02-16T09:08:19" level="84673"/>
    <BufferLevelEntry t="2011-02-16T09:08:20" level="93874"/>
   </BufferLevel>
  </QoeMetric>
  <QoeMetric>
   <RepSwitchList>
    <RepSwitchEvent to="Rep2"/>
    <RepSwitchEvent to="Rep3"/>
   </RepSwitchList>
  </QoeMetric>
  <sv:delimiter>0</sv:delimiter>
  <sv:delimiter>0</sv:delimiter>
  <sv:delimiter>0</sv:delimiter>
  <evex:SliceInfo sst="42" sd="a1b2c3"/>
  <evex:UserLocations>
   <evex:NCGI>234-015-000000002</evex:NCGI>
  </evex:UserLocations>
  <evex:DNN>broadband</evex:DNN>
  <sv:delimiter>0</sv:delimiter>
 </QoeReport>
 <sv:delimiter>0</sv:delimiter>
</ReceptionReport>
Up

Up   Top   ToC