D.4 MPD Deltas
26.2473GPPProgressive Download and Dynamic Adaptive Streaming over HTTP (3GP-DASH)Release 17Transparent end-to-end Packet-switched Streaming Service (PSS)TS
In the following MPD example, the content is 30 minutes in duration. There are 3 Periods, each of 10 minutes duration. Each Period has 3 Representations and each Representation is contained within one 3gp file. Each Representation has audio encoded with Low Complexity-AAC. One Representation of each Period (p1rep1.3gp, p2rep1.3gp, and p3rep1.3gp) has video resolution 320×240 encoded with H.264 baseline profile level 1.1. Another Representation of each Period (p1rep2.3gp, p2rep2.3gp, and p3rep2.3gp) has resolution 320×240 encoded with H.264 baseline profile level 1.3. Finally, a third representation in each period (p1rep3.3gp, p2rep3.3gp, and p3rep3.3gp) has resolution 480×240 encoded with H.264 baseline profile level 2.1. One Representation of each Period has bandwidth of 239 kbps, a second representation has bandwidth of 478 kbps, and a third representation has bandwidth of 892 kbps.
Since each represention is contained in one file, the Initialization Segments and the Media Segments for a representation are accessed with byte ranges. Each SegmentURL element in the MPD contains a mediaRange attribute and the corresponding byte range for the Initialization Segment or Media Segment. For the example each Segment of all representations is 10 seconds in duration.
Line numbers of the MPD in the example are shown for clarity, although these would not be present in the MPD.
EXAMPLE 1 (add)
The change of adding the SegmentURL element for the next Segment to the Representation of the third Period of the MPD in the example with 239K bandwidth can be described as follows.
492a
<SegmentURL mediaRange="17339554-17642841"/>
.
The SegmentURL element is added on a new line after line number 492.
EXAMPLE 2 (replace)
Replacing the line containing the DeltaSupport element to correspond to the MPD after the next update can be described as follows.
625c
<DeltaSupport sourceURL="delta2.mpdd" availabilityDuration="PT120S"/>
.
EXAMPLE 3(delete)
If lines 8 through 10 of the original MPD are deleted and not present in the updated MPD, the delta to express this is:
8,10d
.
Below is what the MPD looks like after approximately 29 minutes and 40 seconds. In this case, the MPD is updated approximately every 10 seconds.
1<?xml version="1.0"?> 2<MPD profiles="urn:3GPP:PSS:profile:DASH10" 3 type="dynamic" 4 availabilityStartTime="2010-07-01T05:00:00Z" 5 availabilityEndTime="2010-07-08T05:00:00Z" 6 mediaPresentationDuration="PT2H" 7 minimumUpdatePeriod="PT10S" 8 minBufferTime="PT10S" 9 timeShiftBufferDepth="PT30M" 10 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 11 xmlns:x3gpp="urn:3GPP:ns:DASH:MPD-ext:2011" 12 xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 3GPP-Rel10-MPD.xsd" 13 xmlns="urn:mpeg:dash:schema:mpd:2011"> 14 15 <ProgramInformation moreInformationURL="http://www.example.com"> 16 <Title>Example</Title> 17 <Source>Example</Source> 18 <Copyright>Example</Copyright> 19 </ProgramInformation> 20 <BaseURL>http://www.example.com</BaseURL> 21 <Period start="PT0S" bitstreamSwitching="true" id="0"> 22 <AdaptationSet mimeType="video/3gpp"> 23 <ContentComponent contentType="video"/> 25 <Representation id="0" bandwidth="239000" width="320" height="240" codecs="avc1.42E00b, mp4a.40.2"> 26 <BaseURL>"p1rep1.3gp"</BaseURL> 27 <SegmentList duration="10" > 28 <Initialization range="0-985" /> 29 <SegmentURL mediaRange="986-293761" /> 30 <SegmentURL mediaRange="293762-592501" /> . . . 88 <SegmentURL mediaRange="17600065-17894640" /> 89 </SegmentList> 90 </Representation> 91 <Representation id="1" bandwidth="478000" width="320" height="240" codecs="avc1.42E00d, mp4a.40.2" > 92 <BaseURL>"p1rep2.3gp"</BaseURL> 93 <SegmentList duration="10"> 94 <Initialization range="0-985" /> 95 <SegmentURL mediaRange="986-586538" /> 96 <SegmentURL mediaRange="586539-1184019" /> . . . 154 <SegmentURL mediaRange="35199171-35788323" /> 155 </SegmentList> 156 </Representation> 157 <Representation id="2" bandwidth="892000" width="480" height="240" codecs="avc1.42E015, mp4a.40.2"> 158 <BaseURL>"p1rep3.3gp"</BaseURL> 159 <SegmentList duration="10"> 160 <Initialization range="0-985" /> 161 <SegmentURL mediaRange="986-1093691" /> 162 <SegmentURL mediaRange="1093692-2208656" /> . . . 220 <SegmentURL mediaRange="65684646-66784068" /> 221 </SegmentList> 222 </Representation> 223 </AdaptationSet> 224</Period> 225<Period start="PT10M0S" bitstreamSwitching="true" id="1"> 226 <AdaptationSet mimeType="video/3gpp"> 227 <ContentComponent contentType="video"/> 229 <Representation id="0" bandwidth="239000" width="320" height="240" codecs="avc1.42E00b, mp4a.40.2"> 230 <BaseURL>"p2rep0.3gp"</BaseURL> 231 <SegmentList duration="10"> 232 <Initialization range="0-985" /> 233 <SegmentURL mediaRange="986-296011" /> 234 <SegmentURL mediaRange="296012-595787" /> . . . 292 <SegmentURL mediaRange="17647666-17946154" /> 293 </SegmentList> 294 </Representation> 295 <Representation id="1" bandwidth="478000" width="320" height="240" codecs="avc1.42E00d, mp4a.40.2"> 296 <BaseURL>"p2rep1.3gp"</BaseURL> 297 <SegmentList duration="10"> 298 <Initialization range="0-985" /> 299 <SegmentURL mediaRange="986-591037" /> 300 <SegmentURL mediaRange="591038-1190590" /> . . . 358 <SegmentURL mediaRange="35294377-35891354" /> 359 </SegmentList> 360 </Representation> 361 <Representation id="2" bandwidth="892000" width="480" height="240" codecs="avc1.42E015, mp4a.40.2"> 362 <BaseURL>"p2rep2.3gp"</BaseURL> 363 <SegmentList duration="10"> 364 <Initialization range="0-985" /> 365 <SegmentURL mediaRange="986-1102088" /> 366 <SegmentURL mediaRange="1102089-2220920" /> . . . 424 <SegmentURL mediaRange="65862331-66976355" /> 425 </SegmentList> 426 </Representation> 427 </AdaptationSet> 428</Period> 429<Period start="PT20M0S" bitstreamSwitching="true" id="2"> 430 <AdaptationSet mimeType="video/3gpp"> 431 <ContentComponent contentType="video"/> 433 <Representation id="0" bandwidth="239000" width="320" height="240" codecs="avc1.42E00b, mp4a.40.2"> 432 <BaseURL>"p3rep0.3gp"</BaseURL> 433 <SegmentList duration="10"> 434 <Initialization range="0-985" /> 435 <SegmentURL mediaRange="986-302469" /> 436 <SegmentURL mediaRange="302470-597839" /> . . . 492 <SegmentURL mediaRange="17040002-17339553" /> 493 </SegmentList> 494 </Representation> 495 <Representation id="1" bandwidth="478000" width="320" height="240" codecs="avc1.42E00d, mp4a.40.2" > 496 <BaseURL>"p3rep1.3gp"</BaseURL> 497 <SegmentList duration="10"> 498 <Initialization range="0-985" /> 499 <SegmentURL mediaRange="986-603953" /> 500 <SegmentURL mediaRange="603954-1194693" /> . . . 556 <SegmentURL mediaRange="34079046-34678149" /> 557 </SegmentList> 558 </Representation> 559 <Representation id="2" bandwidth="892000" width="480" height="240" codecs="avc1.42E015, mp4a.40.2" > 560 <BaseURL>"p3rep2.3gp"</BaseURL> 561 <SegmentList duration="10"> 562 <Initialization range="0-985" /> 563 <SegmentURL mediaRange="986-1126190" /> 564 <SegmentURL mediaRange="1126191-2228575" /> . . . 620 <SegmentURL mediaRange="63594383-64712374" /> 621 </SegmentList> 622 </Representation> 623 </AdaptationSet> 624 </Period> 625 <x3gpp:DeltaSupport sourceURL="delta1.mpdd" availabilityDuration="PT120S"/> 626</MPD> |
Since the value of @sourceURL in the above MPD is "delta1.mpdd", delta1.mpdd is an empty file at the time of publication of the above MPD.
The following file is delta1.mpdd after the next MPD update. Notice that clients have access to the new value of @sourceURL referenced by the latest MPD via the delta.
625c <DeltaSupport sourceURL="delta2.mpdd" availabilityDuration="PT120S"/> . 620a <SegmentURL mediaRange="64712375-65844316"/> . 556a <SegmentURL mediaRange="34678150-35284727"/> . 492a <SegmentURL mediaRange="17339554-17642841"/> . |
At the next MPD update, "delta1.mpdd" would contain the cumulative update for 2 MPD updates.
625c <DeltaSupport sourceURL="delta3.mpdd" availabilityDuration="PT120S"/> . 620a <SegmentURL mediaRange="64712375-65844316"/> <SegmentURL mediaRange="65844317-66966044"/> . 556a <SegmentURL mediaRange="34678150-35284727"/> <SegmentURL mediaRange="35284728-35885833"/> . 492a <SegmentURL mediaRange="17339554-17642841"/> <SegmentURL mediaRange="17642842-17943394"/> . |
Annex E (normative):
Void
Annex F (normative):
OMA DM QoE Management Object
As an alternative to configuring the QoE reporting for each session via MPD, OMA-DM can be used to specify the QoE configuration. If such an OMA-DM QoE configuration has been specified, it shall be evaluated by the client for all subsequent sessions.
For the OMA-DM QoE configuration the parameters are specified according to the following Managed Object (MO), and represents the same information as specified in section 10.4 and 10.5. Version numbering is included for possible extension of the MO.
The Management Object Identifier shall be: urn:oma:mo:ext-3gpp-pss-dash-qoe:1.0.
Protocol compatibility: The MO is compatible with OMA Device Management protocol specifications, version 1.2 and upwards, and is defined using the OMA DM Device Description Framework as described in the Enabler Release Definition OMA-ERELD _DM-V1_2 [22].
The nodes and leaf objects as provided in Figure F.1 shall be contained under the 3GPP_PSS_DASH_QOE node if a client supports the feature described in this clause.
Figure F.1: Nodes and leaf objects
Node: /<X>
This interior node specifies the unique object id of a QoE metrics management object. The purpose of this interior node is to group together the parameters of a single object.
– Occurrence: ZeroOrOne
– Format: node
– Minimum Access Types: Get
The following interior nodes shall be contained if the client supports the QoE Management Object.
/<X>/Enabled
This leaf indicates if QoE reporting is requested by the provider.
– Occurrence: One
– Format: bool
– Minimum Access Types: Get
/<X>/Servers
This leaf contains a space-separated list of servers to which the QoE reports are transmitted. It is URI addresses, e.g. http://qoeserver.operator.com. In case of multiple servers, the client randomly selects one of the servers from the list, with uniform distribution.
– Occurrence: One
– Format: chr
– Minimum Access Types: Get
– Values: URI of the servers to receive the QoE report.
/<X>/APN
This leaf contains the Access Point Name that should be used for establishing the PDP context on which the QoE metric reports will be transmitted. This may be used to ensure that no costs are charged for QoE metrics reporting. If this leaf is not defined then any QoE reporting is done over the default access point.
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: The Access Point Name
/<X>/Format
This leaf specifies the format of the report.If this leaf is not defined the QoE reports shall be sent uncompressed.
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: "uncompressed", "gzip"
/<X>/Interval
This leaf specifies how often QoE reports shall be sent. If this leaf is not defined only one QoE report shall be sent after the complete session.
– Occurrence: ZeroOrOne
– Format: int
– Minimum Access Types: Get
– Values: seconds
/<X>/SamplePercentage
This leaf specifies the percentage of sessions for which QoE metrics shall be reported. The client evaluates a random number at start of each session to determine if reporting shall be done for the specific session. If this leaf is not defined QoE reports are sent for every session.
– Occurrence: ZeroOrOne
– Format: float
– Minimum Access Types: Get
– Values: 0.0-100.0.
/<X>/StartTime
This leaf specifies when collection of QoE metrics shall start. It is specified in seconds and is relative to the start of the session. If this leaf is not defined, the QoE collection shall be done from the start of the session.
– Occurrence: ZeroOrOne
– Format: int
– Minimum Access Types: Get
– Values: seconds
/<X>/Duration
This leaf specifies for how long QoE collection shall be done. It is specified in seconds and is relative to the start time of QoE collection. If this leaf is not defined QoE collection shall be done until the end of the session.
– Occurrence: ZeroOrOne
– Format: int
– Minimum Access Types: Get
– Values: seconds.
/<X>/Metrics
This leaf specifies a list of white-space separated metrics which shall be reported, and follows the same syntax as specified for the "@metrics" attribute in Table 32. If this leaf is not defined no QoE reporting shall be done.
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: Metrics as specified in section 10.4.
/<X>/StreamingSourceFilter
This leaf controls the Media Presentations for which QoE metrics are collected and reported. The filter is defined as a URL pattern. Each URL pattern is represented by a POSIX regular expression as specified by IEEE Std 1003.1-2008 [52].
If the MPD URL of a Media Presentation does not match any of the regular expressions as provided by the URL patterns in the StreamingSourceFilter values, then reporting is disabled and the DASH client shall not report the requested QoE metrics for that Media Presentation. If no StreamingSourceFilter leaf is present, then reporting is enabled for any Media Presentation.
– Occurrence: ZeroOrMore
– Format: chr
– Minimum Access Types: Get
– Values: a POSIX regular expression providing the URL pattern.
/<X> /<LocationFilter>
This interior node specifies any location filters.
– Occurrence: ZeroOrOne
– Format: node
– Minimum Access Types: Get
/<X>/<LocationFilter>/CellList
This leaf specifies a list of cellIDs.
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: a list of ECGI or CGI.
/<X>/<LocationFilter>/PolygonList
This leaf specifies a list of shapes defined as ‘Polygon’ by OMA MLP[51].
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: a list of ‘Polygon’ defined by OMA MLP[51].
/<X>/<LocationFilter>/Polygon_Conf_Level
This leaf indicates the probability in percent that the DASH client is located in the corresponding polygon area specified by leaf ‘PolygonList’. It is defined as ‘lev_conf’ by OMA MLP. If not present, it has default value of 60.
– Occurrence: ZeroOrOne
– Format: int
– Minimum Access Types: Get
– Values: ‘lev_conf’ defined by OMA MLP[51].
/<X>/<LocationFilter>/CircularAreaList
This leaf specifies a list of shapes defined as ‘CircularArea’ by OMA MLP[51].
– Occurrence: ZeroOrOne
– Format: chr
– Minimum Access Types: Get
– Values: a list of ‘CircularArea’ defined by OMA MLP[51].
/<X>/<LocationFilter>/Circular_Conf_Level
This leaf indicates the probability in percent that the DASH client is located in the corresponding circular area specified by leaf ‘CircularAreaList’. It is defined as ‘lev_conf’ by OMA MLP. If not present, it has default value of 60.
– Occurrence: ZeroOrOne
– Format: int
– Minimum Access Types: Get
– Values: ‘lev_conf’ defined by OMA MLP[51].
/<X>/Ext
The Ext node is an interior node where the vendor specific information can be placed (vendor includes application vendor, device vendor etc.). Usually the vendor extension is identified by vendor specific name under the ext node. The tree structure under the vendor identified is not defined and can therefore include one or more un-standardized sub-trees.
– Occurrence: ZeroOrOne
– Format: node
– Minimum Access Types: Get
Annex G (normative):
File format extensions for 3GP DASH support