Fix MPD validation problems

- Replaced urn:mpeg:DASH:schema:MPD:2011 with
  urn:mpeg:dash:schema:mpd:2011. The former is from the old spec.
- Replaced the MPD schema with the latest one.
- Fixed subSegmentAlignment typo with subsegmentAlignment.

Issue #55

Change-Id: Icffa9872ffc462627b81900a48f59e7b76687c11
This commit is contained in:
Rintaro Kuroiwa 2016-01-04 14:21:01 -08:00
parent 098e087459
commit a9b039c3f9
23 changed files with 494 additions and 457 deletions

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S">
<Period> <Period>
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="885151" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="885151" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
@ -13,7 +13,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1" contentType="audio" subSegmentAlignment="true"> <AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
<Representation id="1" bandwidth="128728" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="1" bandwidth="128728" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S">
<Period> <Period>
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cenc:pssh>AAAAMHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABAxMjM0NTY3ODkwMTIzNDU2</cenc:pssh> <cenc:pssh>AAAAMHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABAxMjM0NTY3ODkwMTIzNDU2</cenc:pssh>
@ -13,7 +13,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1" contentType="audio" subSegmentAlignment="true"> <AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">
<cenc:pssh>AAAAMHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABAxMjM0NTY3ODkwMTIzNDU2</cenc:pssh> <cenc:pssh>AAAAMHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABAxMjM0NTY3ODkwMTIzNDU2</cenc:pssh>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S">
<Period> <Period>
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">
<BaseURL>output_video.mp4</BaseURL> <BaseURL>output_video.mp4</BaseURL>
<SegmentBase indexRange="677-744" timescale="30000"> <SegmentBase indexRange="677-744" timescale="30000">
@ -9,7 +9,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1" contentType="audio" subSegmentAlignment="true"> <AdaptationSet id="1" contentType="audio" subsegmentAlignment="true">
<Representation id="1" bandwidth="126087" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="1" bandwidth="126087" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>output_audio.mp4</BaseURL> <BaseURL>output_audio.mp4</BaseURL>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="875620" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="875620" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="876470" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="876470" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="00000000-0000-0000-0000-000000000000"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="00000000-0000-0000-0000-000000000000"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011" availabilityStartTime="place_holder" minimumUpdatePeriod="PT5S" timeShiftBufferDepth="PT1800S">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" segmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="872999" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="872999" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.763174533843994S">
<Period> <Period>
<AdaptationSet id="0" contentType="text"> <AdaptationSet id="0" contentType="text">
<Representation id="0" bandwidth="256" mimeType="text/vtt"> <Representation id="0" bandwidth="256" mimeType="text/vtt">
<BaseURL>output_text.vtt</BaseURL> <BaseURL>output_text.vtt</BaseURL>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="1" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="1" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<Representation id="1" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="1" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">
<BaseURL>output_video.mp4</BaseURL> <BaseURL>output_video.mp4</BaseURL>
<SegmentBase indexRange="677-744" timescale="30000"> <SegmentBase indexRange="677-744" timescale="30000">
@ -14,7 +14,7 @@
</SegmentBase> </SegmentBase>
</Representation> </Representation>
</AdaptationSet> </AdaptationSet>
<AdaptationSet id="2" contentType="audio" subSegmentAlignment="true"> <AdaptationSet id="2" contentType="audio" subsegmentAlignment="true">
<Representation id="2" bandwidth="126087" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="2" bandwidth="126087" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<BaseURL>output_audio.mp4</BaseURL> <BaseURL>output_audio.mp4</BaseURL>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.7694332599639893S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.7694332599639893S">
<Period> <Period>
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="264624" codecs="hev1.1.6.L63.80" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="264624" codecs="hev1.1.6.L63.80" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">
<ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/> <ContentProtection value="cenc" schemeIdUri="urn:mpeg:dash:mp4protection:2011" cenc:default_KID="31323334-3536-3738-3930-313233343536"/>
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed">

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.7360665798187256S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT2.7360665798187256S">
<Period> <Period>
<AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subSegmentAlignment="true" par="16:9"> <AdaptationSet id="0" contentType="video" width="640" height="360" frameRate="30000/1001" subsegmentAlignment="true" par="16:9">
<Representation id="0" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001"> <Representation id="0" bandwidth="881637" codecs="avc1.64001e" mimeType="video/mp4" sar="1:1" width="640" height="360" frameRate="30000/1001">
<BaseURL>output_0.mp4</BaseURL> <BaseURL>output_0.mp4</BaseURL>
<SegmentBase indexRange="677-744" timescale="30000"> <SegmentBase indexRange="677-744" timescale="30000">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT0S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" xmlns:cenc="urn:mpeg:cenc:2013" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT0S">
<Period> <Period>
<AdaptationSet id="0" contentType="text"> <AdaptationSet id="0" contentType="text">
<Representation id="0" bandwidth="256" mimeType="text/vtt"> <Representation id="0" bandwidth="256" mimeType="text/vtt">

View File

@ -77,12 +77,12 @@ std::string GetMimeType(const std::string& prefix,
void AddMpdNameSpaceInfo(XmlNode* mpd) { void AddMpdNameSpaceInfo(XmlNode* mpd) {
DCHECK(mpd); DCHECK(mpd);
static const char kXmlNamespace[] = "urn:mpeg:DASH:schema:MPD:2011"; static const char kXmlNamespace[] = "urn:mpeg:dash:schema:mpd:2011";
static const char kXmlNamespaceXsi[] = static const char kXmlNamespaceXsi[] =
"http://www.w3.org/2001/XMLSchema-instance"; "http://www.w3.org/2001/XMLSchema-instance";
static const char kXmlNamespaceXlink[] = "http://www.w3.org/1999/xlink"; static const char kXmlNamespaceXlink[] = "http://www.w3.org/1999/xlink";
static const char kDashSchemaMpd2011[] = static const char kDashSchemaMpd2011[] =
"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd"; "urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd";
static const char kCencNamespace[] = "urn:mpeg:cenc:2013"; static const char kCencNamespace[] = "urn:mpeg:cenc:2013";
mpd->SetStringAttribute("xmlns", kXmlNamespace); mpd->SetStringAttribute("xmlns", kXmlNamespace);
@ -780,7 +780,7 @@ xml::scoped_xml_ptr<xmlNode> AdaptationSet::GetXml() {
if (segments_aligned_ == kSegmentAlignmentTrue) { if (segments_aligned_ == kSegmentAlignmentTrue) {
adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic adaptation_set.SetStringAttribute(mpd_type_ == MpdBuilder::kStatic
? "subSegmentAlignment" ? "subsegmentAlignment"
: "segmentAlignment", : "segmentAlignment",
"true"); "true");
} }
@ -810,7 +810,7 @@ int AdaptationSet::Group() const {
// Check segmentAlignment for Live here. Storing all start_time and duration // Check segmentAlignment for Live here. Storing all start_time and duration
// will out-of-memory because there's no way of knowing when it will end. // will out-of-memory because there's no way of knowing when it will end.
// VOD subSegmentAlignment check is *not* done here because it is possible // VOD subsegmentAlignment check is *not* done here because it is possible
// that some Representations might not have been added yet (e.g. a thread is // that some Representations might not have been added yet (e.g. a thread is
// assigned per muxer so one might run faster than others). // assigned per muxer so one might run faster than others).
// To be clear, for Live, all Representations should be added before a // To be clear, for Live, all Representations should be added before a

View File

@ -449,7 +449,7 @@ class Representation {
const std::string& pssh); const std::string& pssh);
/// Add a media (sub)segment to the representation. /// Add a media (sub)segment to the representation.
/// AdaptationSet@{subSegmentAlignment,segmentAlignment} cannot be set /// AdaptationSet@{subsegmentAlignment,segmentAlignment} cannot be set
/// if this is not called for all Representations. /// if this is not called for all Representations.
/// @param start_time is the start time for the (sub)segment, in units of the /// @param start_time is the start time for the (sub)segment, in units of the
/// stream's time scale. /// stream's time scale.

View File

@ -248,10 +248,10 @@ class SegmentTemplateTest : public DynamicMpdBuilderTest {
// always has segmentAligntment=true. // always has segmentAligntment=true.
const char kOutputTemplate[] = const char kOutputTemplate[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\" " "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" "
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " "xmlns:xlink=\"http://www.w3.org/1999/xlink\" "
"xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\" " "xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\" "
"availabilityStartTime=\"2011-12-25T12:30:00\" minBufferTime=\"PT2S\" " "availabilityStartTime=\"2011-12-25T12:30:00\" minBufferTime=\"PT2S\" "
"type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n" "type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\">\n"
" <Period start=\"PT0S\">\n" " <Period start=\"PT0S\">\n"
@ -333,10 +333,10 @@ class TimeShiftBufferDepthTest : public SegmentTemplateTest {
// always has segmentAligntment=true. // always has segmentAligntment=true.
const char kOutputTemplate[] = const char kOutputTemplate[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\" " "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" "
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " "xmlns:xlink=\"http://www.w3.org/1999/xlink\" "
"xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\" " "xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\" "
"availabilityStartTime=\"2011-12-25T12:30:00\" minBufferTime=\"PT2S\" " "availabilityStartTime=\"2011-12-25T12:30:00\" minBufferTime=\"PT2S\" "
"type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\" " "type=\"dynamic\" profiles=\"urn:mpeg:dash:profile:isoff-live:2011\" "
"timeShiftBufferDepth=\"PT%dS\">\n" "timeShiftBufferDepth=\"PT%dS\">\n"
@ -712,10 +712,10 @@ TEST_F(CommonMpdBuilderTest, AdaptationAddRoleElementMain) {
// MPD without adding any Representations. // MPD without adding any Representations.
const char kExpectedOutput[] = const char kExpectedOutput[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"\n" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\"\n"
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" " xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n"
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"\n" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\"\n"
" minBufferTime=\"PT2S\" type=\"static\"\n" " minBufferTime=\"PT2S\" type=\"static\"\n"
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"\n" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"\n"
" mediaPresentationDuration=\"PT0S\">\n" " mediaPresentationDuration=\"PT0S\">\n"
@ -755,10 +755,10 @@ TEST_F(CommonMpdBuilderTest, CheckContentProtectionRoleRepresentationOrder) {
xml::scoped_xml_ptr<xmlNode> adaptation_set_xml(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> adaptation_set_xml(adaptation_set->GetXml());
const char kExpectedOutput[] = const char kExpectedOutput[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"\n" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\"\n"
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n" " xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n"
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"\n" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\"\n"
" minBufferTime=\"PT2S\" type=\"static\"\n" " minBufferTime=\"PT2S\" type=\"static\"\n"
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"\n" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"\n"
" mediaPresentationDuration=\"PT0S\">\n" " mediaPresentationDuration=\"PT0S\">\n"
@ -1101,11 +1101,11 @@ TEST_F(CommonMpdBuilderTest,
ExpectAttributeNotSet("frameRate", adaptation_set_xml.get())); ExpectAttributeNotSet("frameRate", adaptation_set_xml.get()));
} }
// Verify that subSegmentAlignment is set to true if all the Representations' // Verify that subsegmentAlignment is set to true if all the Representations'
// segments are aligned and the MPD type is static. // segments are aligned and the MPD type is static.
// Also checking that not all Representations have to be added before calling // Also checking that not all Representations have to be added before calling
// AddNewSegment() on a Representation. // AddNewSegment() on a Representation.
TEST_F(StaticMpdBuilderTest, SubSegmentAlignment) { TEST_F(StaticMpdBuilderTest, subsegmentAlignment) {
base::AtomicSequenceNumber sequence_counter; base::AtomicSequenceNumber sequence_counter;
const char k480pMediaInfo[] = const char k480pMediaInfo[] =
"video_info {\n" "video_info {\n"
@ -1130,7 +1130,7 @@ TEST_F(StaticMpdBuilderTest, SubSegmentAlignment) {
"}\n" "}\n"
"container_type: 1\n"; "container_type: 1\n";
// First use same start time and duration, and verify that subSegmentAlignment // First use same start time and duration, and verify that subsegmentAlignment
// is set to true. // is set to true.
const uint64_t kStartTime = 0u; const uint64_t kStartTime = 0u;
const uint64_t kDuration = 10u; const uint64_t kDuration = 10u;
@ -1151,13 +1151,13 @@ TEST_F(StaticMpdBuilderTest, SubSegmentAlignment) {
xml::scoped_xml_ptr<xmlNode> aligned(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> aligned(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeEqString("subSegmentAlignment", "true", aligned.get())); ExpectAttributeEqString("subsegmentAlignment", "true", aligned.get()));
// Unknown because 480p has an extra subsegments. // Unknown because 480p has an extra subsegments.
representation_480p->AddNewSegment(11, 20, kAnySize); representation_480p->AddNewSegment(11, 20, kAnySize);
xml::scoped_xml_ptr<xmlNode> alignment_unknown(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> alignment_unknown(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeNotSet("subSegmentAlignment", alignment_unknown.get())); ExpectAttributeNotSet("subsegmentAlignment", alignment_unknown.get()));
// Add segments that make them not aligned. // Add segments that make them not aligned.
representation_360p->AddNewSegment(10, 1, kAnySize); representation_360p->AddNewSegment(10, 1, kAnySize);
@ -1165,11 +1165,11 @@ TEST_F(StaticMpdBuilderTest, SubSegmentAlignment) {
xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeNotSet("subSegmentAlignment", unaligned.get())); ExpectAttributeNotSet("subsegmentAlignment", unaligned.get()));
} }
// Verify that subSegmentAlignment can be force set to true. // Verify that subsegmentAlignment can be force set to true.
TEST_F(StaticMpdBuilderTest, ForceSetSubSegmentAlignment) { TEST_F(StaticMpdBuilderTest, ForceSetsubsegmentAlignment) {
base::AtomicSequenceNumber sequence_counter; base::AtomicSequenceNumber sequence_counter;
const char k480pMediaInfo[] = const char k480pMediaInfo[] =
"video_info {\n" "video_info {\n"
@ -1211,13 +1211,13 @@ TEST_F(StaticMpdBuilderTest, ForceSetSubSegmentAlignment) {
representation_360p->AddNewSegment(kStartTime2, kDuration, kAnySize); representation_360p->AddNewSegment(kStartTime2, kDuration, kAnySize);
xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeNotSet("subSegmentAlignment", unaligned.get())); ExpectAttributeNotSet("subsegmentAlignment", unaligned.get()));
// Then force set the segment alignment attribute to true. // Then force set the segment alignment attribute to true.
adaptation_set->ForceSetSegmentAlignment(true); adaptation_set->ForceSetSegmentAlignment(true);
xml::scoped_xml_ptr<xmlNode> aligned(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> aligned(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeEqString("subSegmentAlignment", "true", aligned.get())); ExpectAttributeEqString("subsegmentAlignment", "true", aligned.get()));
} }
// Verify that segmentAlignment is set to true if all the Representations // Verify that segmentAlignment is set to true if all the Representations
@ -1272,7 +1272,7 @@ TEST_F(DynamicMpdBuilderTest, SegmentAlignment) {
xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml()); xml::scoped_xml_ptr<xmlNode> unaligned(adaptation_set->GetXml());
EXPECT_NO_FATAL_FAILURE( EXPECT_NO_FATAL_FAILURE(
ExpectAttributeNotSet("subSegmentAlignment", unaligned.get())); ExpectAttributeNotSet("subsegmentAlignment", unaligned.get()));
} }
// Verify that the width and height attribute are set if all the video // Verify that the width and height attribute are set if all the video
@ -1429,11 +1429,11 @@ TEST_F(CommonMpdBuilderTest, AdaptationSetAddContentProtectionAndUpdate) {
const char kExpectedOutput1[] = const char kExpectedOutput1[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT0S\">" " mediaPresentationDuration=\"PT0S\">"
@ -1459,11 +1459,11 @@ TEST_F(CommonMpdBuilderTest, AdaptationSetAddContentProtectionAndUpdate) {
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed", "new pssh value"); "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed", "new pssh value");
const char kExpectedOutput2[] = const char kExpectedOutput2[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT0S\">" " mediaPresentationDuration=\"PT0S\">"
@ -1515,11 +1515,11 @@ TEST_F(CommonMpdBuilderTest, UpdateToRemovePsshElement) {
const char kExpectedOutput1[] = const char kExpectedOutput1[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT0S\">" " mediaPresentationDuration=\"PT0S\">"
@ -1545,11 +1545,11 @@ TEST_F(CommonMpdBuilderTest, UpdateToRemovePsshElement) {
"added pssh value"); "added pssh value");
const char kExpectedOutput2[] = const char kExpectedOutput2[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT0S\">" " mediaPresentationDuration=\"PT0S\">"
@ -1631,11 +1631,11 @@ TEST_F(StaticMpdBuilderTest, AudioChannelConfigurationWithContentProtection) {
const char kExpectedOutput[] = const char kExpectedOutput[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT24.00943374633789S\">" " mediaPresentationDuration=\"PT24.00943374633789S\">"
@ -1731,11 +1731,11 @@ TEST_F(StaticMpdBuilderTest, Text) {
const char kExpectedOutput[] = const char kExpectedOutput[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\"" "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
" xmlns:cenc=\"urn:mpeg:cenc:2013\"" " xmlns:cenc=\"urn:mpeg:cenc:2013\""
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
" xmlns:xlink=\"http://www.w3.org/1999/xlink\"" " xmlns:xlink=\"http://www.w3.org/1999/xlink\""
" xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\"" " xsi:schemaLocation=\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\""
" minBufferTime=\"PT2S\" type=\"static\"" " minBufferTime=\"PT2S\" type=\"static\""
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\"" " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" mediaPresentationDuration=\"PT35S\">" " mediaPresentationDuration=\"PT35S\">"
@ -1770,11 +1770,11 @@ TEST_F(StaticMpdBuilderTest, Text) {
TEST_F(DynamicMpdBuilderTest, CheckMpdAttributes) { TEST_F(DynamicMpdBuilderTest, CheckMpdAttributes) {
static const char kExpectedOutput[] = static const char kExpectedOutput[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<MPD xmlns=\"urn:mpeg:DASH:schema:MPD:2011\" " "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\" "
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" " "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xmlns:xlink=\"http://www.w3.org/1999/xlink\" " "xmlns:xlink=\"http://www.w3.org/1999/xlink\" "
"xsi:schemaLocation=" "xsi:schemaLocation="
"\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\" " "\"urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd\" "
"xmlns:cenc=\"urn:mpeg:cenc:2013\" " "xmlns:cenc=\"urn:mpeg:cenc:2013\" "
"minBufferTime=\"PT2S\" " "minBufferTime=\"PT2S\" "
"type=\"dynamic\" " "type=\"dynamic\" "

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" contentType="audio"> <AdaptationSet id="0" contentType="audio">
<Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="400" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2">
<Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="1" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" availabilityStartTime="2011-12-25T12:30:00" minBufferTime="PT2S" type="dynamic" profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period start="PT0S"> <Period start="PT0S">
<AdaptationSet id="0" width="720" height="480" frameRate="10/5" contentType="video" par="3:2" segmentAlignment="true"> <AdaptationSet id="0" width="720" height="480" frameRate="10/5" contentType="video" par="3:2" segmentAlignment="true">
<Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1"> <Representation id="0" bandwidth="102400" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/5" sar="1:1">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT24.00943374633789S">
<Period> <Period>
<AdaptationSet id="0" contentType="audio"> <AdaptationSet id="0" contentType="audio">
<Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100"> <Representation id="0" bandwidth="195857" codecs="mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="44100">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2">
<Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="3" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2"> <AdaptationSet id="0" width="720" height="480" frameRate="10/1" contentType="video" par="3:2">
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S"> <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" minBufferTime="PT2S" type="static" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" mediaPresentationDuration="PT10.5S">
<Period> <Period>
<AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1" contentType="video"> <AdaptationSet id="0" maxWidth="720" maxHeight="480" maxFrameRate="10/1" contentType="video">
<Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1"> <Representation id="0" bandwidth="7620" codecs="avc1.010101" mimeType="video/mp4" width="720" height="480" frameRate="10/1" sar="1:1">

View File

@ -1,390 +1,427 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="urn:mpeg:DASH:schema:MPD:2011" <xs:schema targetNamespace="urn:mpeg:dash:schema:mpd:2011" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="urn:mpeg:dash:schema:mpd:2011">
attributeFormDefault="unqualified"
elementFormDefault="qualified" <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink" <xs:annotation>
xmlns="urn:mpeg:DASH:schema:MPD:2011"> <xs:appinfo>Media Presentation Description</xs:appinfo>
<xs:documentation xml:lang="en">
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/> This Schema defines the Media Presentation Description for MPEG-DASH.
</xs:documentation>
<xs:annotation> </xs:annotation>
<xs:appinfo>Media Presentation Description</xs:appinfo>
<xs:documentation xml:lang="en"> <!-- MPD: main element -->
This Schema defines the Media Presentation Description for MPEG-DASH. <xs:element name="MPD" type="MPDtype"/>
</xs:documentation>
</xs:annotation> <!-- MPD Type -->
<xs:complexType name="MPDtype">
<!-- MPD: main element --> <xs:sequence>
<xs:element name="MPD" type="MPDtype"/> <xs:element name="ProgramInformation" type="ProgramInformationType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<!-- MPD Type --> <xs:element name="Location" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
<xs:complexType name="MPDtype"> <xs:element name="Period" type="PeriodType" maxOccurs="unbounded"/>
<xs:sequence> <xs:element name="Metrics" type="MetricsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ProgramInformation" type="ProgramInformationType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="EssentialProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="SupplementalProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Location" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="UTCTiming" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Period" type="PeriodType" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Metrics" type="MetricsType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="id" type="xs:string"/>
</xs:sequence> <xs:attribute name="profiles" type="xs:string" use="required"/>
<xs:attribute name="id" type="xs:string"/> <xs:attribute name="type" type="PresentationType" default="static"/>
<xs:attribute name="profiles" type="xs:string" use="required"/> <xs:attribute name="availabilityStartTime" type="xs:dateTime"/>
<xs:attribute name="type" type="PresentationType" default="static"/> <xs:attribute name="availabilityEndTime" type="xs:dateTime"/>
<xs:attribute name="availabilityStartTime" type="xs:dateTime"/> <xs:attribute name="publishTime" type="xs:dateTime"/>
<xs:attribute name="availabilityEndTime" type="xs:dateTime"/> <xs:attribute name="mediaPresentationDuration" type="xs:duration"/>
<xs:attribute name="mediaPresentationDuration" type="xs:duration"/> <xs:attribute name="minimumUpdatePeriod" type="xs:duration"/>
<xs:attribute name="minimumUpdatePeriod" type="xs:duration"/> <xs:attribute name="minBufferTime" type="xs:duration" use="required"/>
<xs:attribute name="minBufferTime" type="xs:duration" use="required"/> <xs:attribute name="timeShiftBufferDepth" type="xs:duration"/>
<xs:attribute name="timeShiftBufferDepth" type="xs:duration"/> <xs:attribute name="suggestedPresentationDelay" type="xs:duration"/>
<xs:attribute name="suggestedPresentationDelay" type="xs:duration"/> <xs:attribute name="maxSegmentDuration" type="xs:duration"/>
<xs:attribute name="maxSegmentDuration" type="xs:duration"/> <xs:attribute name="maxSubsegmentDuration" type="xs:duration"/>
<xs:attribute name="maxSubsegmentDuration" type="xs:duration"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
</xs:complexType>
<!-- Presentation Type enumeration -->
<!-- Presentation Type enumeration --> <xs:simpleType name="PresentationType">
<xs:simpleType name="PresentationType"> <xs:restriction base="xs:string">
<xs:restriction base="xs:string"> <xs:enumeration value="static"/>
<xs:enumeration value="static"/> <xs:enumeration value="dynamic"/>
<xs:enumeration value="dynamic"/> </xs:restriction>
</xs:restriction> </xs:simpleType>
</xs:simpleType>
<!-- Period -->
<!-- Period --> <xs:complexType name="PeriodType">
<xs:complexType name="PeriodType"> <xs:sequence>
<xs:sequence> <xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/>
<xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/> <xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/>
<xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/> <xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/>
<xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/> <xs:element name="AssetIdentifier" type="DescriptorType" minOccurs="0"/>
<xs:element name="AdaptationSet" type="AdaptationSetType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="EventStream" type="EventStreamType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Subset" type="SubsetType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="AdaptationSet" type="AdaptationSetType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Subset" type="SubsetType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> <xs:element name="SupplementalProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:attribute ref="xlink:href"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:attribute ref="xlink:actuate" default="onRequest"/> </xs:sequence>
<xs:attribute name="id" type="xs:string" /> <xs:attribute ref="xlink:href"/>
<xs:attribute name="start" type="xs:duration"/> <xs:attribute ref="xlink:actuate" default="onRequest"/>
<xs:attribute name="duration" type="xs:duration"/> <xs:attribute name="id" type="xs:string"/>
<xs:attribute name="bitstreamSwitching" type="xs:boolean" default="false"/> <xs:attribute name="start" type="xs:duration"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:attribute name="duration" type="xs:duration"/>
</xs:complexType> <xs:attribute name="bitstreamSwitching" type="xs:boolean" default="false"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
<!-- Adaptation Set --> </xs:complexType>
<xs:complexType name="AdaptationSetType">
<xs:complexContent> <!-- Event Stream -->
<xs:extension base="RepresentationBaseType"> <xs:complexType name="EventStreamType">
<xs:sequence> <xs:sequence>
<xs:element name="Accessibility" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Event" type="EventType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Role" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Rating" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
<xs:element name="Viewpoint" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute ref="xlink:href"/>
<xs:element name="ContentComponent" type="ContentComponentType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute ref="xlink:actuate" default="onRequest"/>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="schemeIdUri" type="xs:anyURI" use="required"/>
<xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/> <xs:attribute name="value" type="xs:string"/>
<xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/> <xs:attribute name="timescale" type="xs:unsignedInt"/>
<xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/> </xs:complexType>
<xs:element name="Representation" type="RepresentationType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:href"/> <!-- Event -->
<xs:attribute ref="xlink:actuate" default="onRequest"/> <xs:complexType name="EventType">
<xs:attribute name="id" type="xs:unsignedInt"/> <xs:sequence>
<xs:attribute name="group" type="xs:unsignedInt"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:attribute name="lang" type="xs:language"/> </xs:sequence>
<xs:attribute name="contentType" type="xs:string"/> <xs:attribute name="presentationTime" type="xs:unsignedLong" default="0"/>
<xs:attribute name="par" type="RatioType"/> <xs:attribute name="duration" type="xs:unsignedLong"/>
<xs:attribute name="minBandwidth" type="xs:unsignedInt"/> <xs:attribute name="id" type="xs:unsignedInt"/>
<xs:attribute name="maxBandwidth" type="xs:unsignedInt"/> <xs:attribute name="messageData" type="xs:string"/>
<xs:attribute name="minWidth" type="xs:unsignedInt"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:attribute name="maxWidth" type="xs:unsignedInt"/> </xs:complexType>
<xs:attribute name="minHeight" type="xs:unsignedInt"/>
<xs:attribute name="maxHeight" type="xs:unsignedInt"/> <!-- Adaptation Set -->
<xs:attribute name="minFrameRate" type="FrameRateType"/> <xs:complexType name="AdaptationSetType">
<xs:attribute name="maxFrameRate" type="FrameRateType"/> <xs:complexContent>
<xs:attribute name="segmentAlignment" type="ConditionalUintType" default="false"/> <xs:extension base="RepresentationBaseType">
<xs:attribute name="subsegmentAlignment" type="ConditionalUintType" default="false"/> <xs:sequence>
<xs:attribute name="subsegmentStartsWithSAP" type="SAPType" default="0"/> <xs:element name="Accessibility" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:attribute name="bitstreamSwitching" type="xs:boolean"/> <xs:element name="Role" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
</xs:extension> <xs:element name="Rating" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
</xs:complexContent> <xs:element name="Viewpoint" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType> <xs:element name="ContentComponent" type="ContentComponentType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<!-- Type for Frame Rate --> <xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/>
<xs:simpleType name="FrameRateType"> <xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/>
<xs:restriction base="xs:string"> <xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/>
<xs:pattern value="[0-9]*[0-9](/[0-9]*[0-9])?"/> <xs:element name="Representation" type="RepresentationType" minOccurs="0" maxOccurs="unbounded"/>
</xs:restriction> </xs:sequence>
</xs:simpleType> <xs:attribute ref="xlink:href"/>
<xs:attribute ref="xlink:actuate" default="onRequest"/>
<xs:attribute name="id" type="xs:unsignedInt"/>
<!-- Conditional Unsigned Integer (unsignedInt or boolean) --> <xs:attribute name="group" type="xs:unsignedInt"/>
<xs:simpleType name="ConditionalUintType"> <xs:attribute name="lang" type="xs:language"/>
<xs:union memberTypes="xs:unsignedInt xs:boolean"/> <xs:attribute name="contentType" type="xs:string"/>
</xs:simpleType> <xs:attribute name="par" type="RatioType"/>
<xs:attribute name="minBandwidth" type="xs:unsignedInt"/>
<!-- Content Component --> <xs:attribute name="maxBandwidth" type="xs:unsignedInt"/>
<xs:complexType name="ContentComponentType"> <xs:attribute name="minWidth" type="xs:unsignedInt"/>
<xs:sequence> <xs:attribute name="maxWidth" type="xs:unsignedInt"/>
<xs:element name="Accessibility" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="minHeight" type="xs:unsignedInt"/>
<xs:element name="Role" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="maxHeight" type="xs:unsignedInt"/>
<xs:element name="Rating" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="minFrameRate" type="FrameRateType"/>
<xs:element name="Viewpoint" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="maxFrameRate" type="FrameRateType"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="segmentAlignment" type="ConditionalUintType" default="false"/>
</xs:sequence> <xs:attribute name="subsegmentAlignment" type="ConditionalUintType" default="false"/>
<xs:attribute name="id" type="xs:unsignedInt"/> <xs:attribute name="subsegmentStartsWithSAP" type="SAPType" default="0"/>
<xs:attribute name="lang" type="xs:language"/> <xs:attribute name="bitstreamSwitching" type="xs:boolean"/>
<xs:attribute name="contentType" type="xs:string"/> </xs:extension>
<xs:attribute name="par" type="RatioType"/> </xs:complexContent>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
</xs:complexType>
<!-- Ratio Type for sar and par -->
<!-- Representation --> <xs:simpleType name="RatioType">
<xs:complexType name="RepresentationType"> <xs:restriction base="xs:string">
<xs:complexContent> <xs:pattern value="[0-9]*:[0-9]*"/>
<xs:extension base="RepresentationBaseType"> </xs:restriction>
<xs:sequence> </xs:simpleType>
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="SubRepresentation" type="SubRepresentationType" minOccurs="0" maxOccurs="unbounded"/> <!-- Type for Frame Rate -->
<xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/> <xs:simpleType name="FrameRateType">
<xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/> <xs:restriction base="xs:string">
<xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/> <xs:pattern value="[0-9]*[0-9](/[0-9]*[0-9])?"/>
</xs:sequence> </xs:restriction>
<xs:attribute name="id" type="StringNoWhitespaceType" use="required"/> </xs:simpleType>
<xs:attribute name="bandwidth" type="xs:unsignedInt" use="required"/>
<xs:attribute name="qualityRanking" type="xs:unsignedInt"/>
<xs:attribute name="dependencyId" type="StringVectorType"/> <!-- Conditional Unsigned Integer (unsignedInt or boolean) -->
<xs:attribute name="mediaStreamStructureId" type="StringVectorType"/> <xs:simpleType name="ConditionalUintType">
</xs:extension> <xs:union memberTypes="xs:unsignedInt xs:boolean"/>
</xs:complexContent> </xs:simpleType>
</xs:complexType>
<!-- Content Component -->
<!-- String without white spaces --> <xs:complexType name="ContentComponentType">
<xs:simpleType name="StringNoWhitespaceType"> <xs:sequence>
<xs:restriction base="xs:string"> <xs:element name="Accessibility" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:pattern value="[^\r\n\t \p{Z}]*"/> <xs:element name="Role" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
</xs:restriction> <xs:element name="Rating" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
</xs:simpleType> <xs:element name="Viewpoint" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- SubRepresentation --> <xs:attribute name="id" type="xs:unsignedInt"/>
<xs:complexType name="SubRepresentationType"> <xs:attribute name="lang" type="xs:language"/>
<xs:complexContent> <xs:attribute name="contentType" type="xs:string"/>
<xs:extension base="RepresentationBaseType"> <xs:attribute name="par" type="RatioType"/>
<xs:attribute name="level" type="xs:unsignedInt"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:attribute name="dependencyLevel" type="UIntVectorType"/> </xs:complexType>
<xs:attribute name="bandwidth" type="xs:unsignedInt"/>
<xs:attribute name="contentComponent" type="StringVectorType"/> <!-- Representation -->
</xs:extension> <xs:complexType name="RepresentationType">
</xs:complexContent> <xs:complexContent>
</xs:complexType> <xs:extension base="RepresentationBaseType">
<xs:sequence>
<!-- Representation base (common attributes and elements) --> <xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<xs:complexType name="RepresentationBaseType"> <xs:element name="SubRepresentation" type="SubRepresentationType" minOccurs="0" maxOccurs="unbounded"/>
<xs:sequence> <xs:element name="SegmentBase" type="SegmentBaseType" minOccurs="0"/>
<xs:element name="FramePacking" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="SegmentList" type="SegmentListType" minOccurs="0"/>
<xs:element name="AudioChannelConfiguration" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="SegmentTemplate" type="SegmentTemplateType" minOccurs="0"/>
<xs:element name="ContentProtection" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="id" type="StringNoWhitespaceType" use="required"/>
</xs:sequence> <xs:attribute name="bandwidth" type="xs:unsignedInt" use="required"/>
<xs:attribute name="profiles" type="xs:string"/> <xs:attribute name="qualityRanking" type="xs:unsignedInt"/>
<xs:attribute name="width" type="xs:unsignedInt"/> <xs:attribute name="dependencyId" type="StringVectorType"/>
<xs:attribute name="height" type="xs:unsignedInt"/> <xs:attribute name="mediaStreamStructureId" type="StringVectorType"/>
<xs:attribute name="sar" type="RatioType"/> </xs:extension>
<xs:attribute name="frameRate" type="FrameRateType"/> </xs:complexContent>
<xs:attribute name="audioSamplingRate" type="xs:string"/> </xs:complexType>
<xs:attribute name="mimeType" type="xs:string"/>
<xs:attribute name="segmentProfiles" type="xs:string"/> <!-- String without white spaces -->
<xs:attribute name="codecs" type="xs:string"/> <xs:simpleType name="StringNoWhitespaceType">
<xs:attribute name="maximumSAPPeriod" type="xs:double"/> <xs:restriction base="xs:string">
<xs:attribute name="startWithSAP" type="SAPType"/> <xs:pattern value="[^\r\n\t \p{Z}]*"/>
<xs:attribute name="maxPlayoutRate" type="xs:double"/> </xs:restriction>
<xs:attribute name="codingDependency" type="xs:boolean"/> </xs:simpleType>
<xs:attribute name="scanType" type="VideoScanType"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType> <!-- SubRepresentation -->
<xs:complexType name="SubRepresentationType">
<!-- Ratio Type for sar and par --> <xs:complexContent>
<xs:simpleType name="RatioType"> <xs:extension base="RepresentationBaseType">
<xs:restriction base="xs:string"> <xs:attribute name="level" type="xs:unsignedInt"/>
<xs:pattern value="[0-9]*:[0-9]*"/> <xs:attribute name="dependencyLevel" type="UIntVectorType"/>
</xs:restriction> <xs:attribute name="bandwidth" type="xs:unsignedInt"/>
</xs:simpleType> <xs:attribute name="contentComponent" type="StringVectorType"/>
</xs:extension>
<!-- Stream Access Point type enumeration --> </xs:complexContent>
<xs:simpleType name="SAPType"> </xs:complexType>
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="0"/> <!-- Representation base (common attributes and elements) -->
<xs:maxInclusive value="6"/> <xs:complexType name="RepresentationBaseType">
</xs:restriction> <xs:sequence>
</xs:simpleType> <xs:element name="FramePacking" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="AudioChannelConfiguration" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<!-- Video Scan type enumeration --> <xs:element name="ContentProtection" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:simpleType name="VideoScanType"> <xs:element name="EssentialProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:restriction base="xs:string"> <xs:element name="SupplementalProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:enumeration value="progressive"/> <xs:element name="InbandEventStream" type="EventStreamType" minOccurs="0" maxOccurs="unbounded"/>
<xs:enumeration value="interlaced"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:enumeration value="unknown"/> </xs:sequence>
</xs:restriction> <xs:attribute name="profiles" type="xs:string"/>
</xs:simpleType> <xs:attribute name="width" type="xs:unsignedInt"/>
<xs:attribute name="height" type="xs:unsignedInt"/>
<!-- Subset --> <xs:attribute name="sar" type="RatioType"/>
<xs:complexType name="SubsetType"> <xs:attribute name="frameRate" type="FrameRateType"/>
<xs:attribute name="contains" type="UIntVectorType" use="required"/> <xs:attribute name="audioSamplingRate" type="xs:string"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:attribute name="mimeType" type="xs:string"/>
</xs:complexType> <xs:attribute name="segmentProfiles" type="xs:string"/>
<xs:attribute name="codecs" type="xs:string"/>
<!-- Segment information base --> <xs:attribute name="maximumSAPPeriod" type="xs:double"/>
<xs:complexType name="SegmentBaseType"> <xs:attribute name="startWithSAP" type="SAPType"/>
<xs:sequence> <xs:attribute name="maxPlayoutRate" type="xs:double"/>
<xs:element name="Initialization" type="URLType" minOccurs="0"/> <xs:attribute name="codingDependency" type="xs:boolean"/>
<xs:element name="RepresentationIndex" type="URLType" minOccurs="0"/> <xs:attribute name="scanType" type="VideoScanType"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:sequence> </xs:complexType>
<xs:attribute name="timescale" type="xs:unsignedInt"/>
<xs:attribute name="presentationTimeOffset" type="xs:unsignedInt"/> <!-- Stream Access Point type enumeration -->
<xs:attribute name="indexRange" type="xs:string"/> <xs:simpleType name="SAPType">
<xs:attribute name="indexRangeExact" type="xs:boolean" default="false"/> <xs:restriction base="xs:unsignedInt">
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:minInclusive value="0"/>
</xs:complexType> <xs:maxInclusive value="6"/>
</xs:restriction>
<!-- Multiple Segment information base --> </xs:simpleType>
<xs:complexType name="MultipleSegmentBaseType">
<xs:complexContent> <!-- Video Scan type enumeration -->
<xs:extension base="SegmentBaseType"> <xs:simpleType name="VideoScanType">
<xs:sequence> <xs:restriction base="xs:string">
<xs:element name="SegmentTimeline" type="SegmentTimelineType" minOccurs="0"/> <xs:enumeration value="progressive"/>
<xs:element name="BitstreamSwitching" type="URLType" minOccurs="0"/> <xs:enumeration value="interlaced"/>
</xs:sequence> <xs:enumeration value="unknown"/>
<xs:attribute name="duration" type="xs:unsignedInt"/> </xs:restriction>
<xs:attribute name="startNumber" type="xs:unsignedInt"/> </xs:simpleType>
</xs:extension>
</xs:complexContent> <!-- Subset -->
</xs:complexType> <xs:complexType name="SubsetType">
<xs:attribute name="contains" type="UIntVectorType" use="required"/>
<!-- Segment Info item URL/range --> <xs:attribute name="id" type="xs:string"/>
<xs:complexType name="URLType"> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:sequence> </xs:complexType>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence> <!-- Segment information base -->
<xs:attribute name="sourceURL" type="xs:anyURI"/> <xs:complexType name="SegmentBaseType">
<xs:attribute name="range" type="xs:string"/> <xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:element name="Initialization" type="URLType" minOccurs="0"/>
</xs:complexType> <xs:element name="RepresentationIndex" type="URLType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<!-- Segment List --> </xs:sequence>
<xs:complexType name="SegmentListType"> <xs:attribute name="timescale" type="xs:unsignedInt"/>
<xs:complexContent> <xs:attribute name="presentationTimeOffset" type="xs:unsignedLong"/>
<xs:extension base="MultipleSegmentBaseType"> <xs:attribute name="indexRange" type="xs:string"/>
<xs:sequence> <xs:attribute name="indexRangeExact" type="xs:boolean" default="false"/>
<xs:element name="SegmentURL" type="SegmentURLType" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="availabilityTimeOffset" type="xs:double"/>
</xs:sequence> <xs:attribute name="availabilityTimeComplete" type="xs:boolean"/>
<xs:attribute ref="xlink:href"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:attribute ref="xlink:actuate" default="onRequest"/> </xs:complexType>
</xs:extension>
</xs:complexContent> <!-- Multiple Segment information base -->
</xs:complexType> <xs:complexType name="MultipleSegmentBaseType">
<xs:complexContent>
<!-- Segment URL --> <xs:extension base="SegmentBaseType">
<xs:complexType name="SegmentURLType"> <xs:sequence>
<xs:sequence> <xs:element name="SegmentTimeline" type="SegmentTimelineType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="BitstreamSwitching" type="URLType" minOccurs="0"/>
</xs:sequence> </xs:sequence>
<xs:attribute name="media" type="xs:anyURI"/> <xs:attribute name="duration" type="xs:unsignedInt"/>
<xs:attribute name="mediaRange" type="xs:string"/> <xs:attribute name="startNumber" type="xs:unsignedInt"/>
<xs:attribute name="index" type="xs:anyURI"/> </xs:extension>
<xs:attribute name="indexRange" type="xs:string"/> </xs:complexContent>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
</xs:complexType>
<!-- Segment Info item URL/range -->
<!-- Segment Template --> <xs:complexType name="URLType">
<xs:complexType name="SegmentTemplateType"> <xs:sequence>
<xs:complexContent> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:extension base="MultipleSegmentBaseType"> </xs:sequence>
<xs:attribute name="media" type="xs:string"/> <xs:attribute name="sourceURL" type="xs:anyURI"/>
<xs:attribute name="index" type="xs:string"/> <xs:attribute name="range" type="xs:string"/>
<xs:attribute name="initialization" type="xs:string" /> <xs:anyAttribute namespace="##other" processContents="lax"/>
<xs:attribute name="bitstreamSwitching" type="xs:string" /> </xs:complexType>
</xs:extension>
</xs:complexContent> <!-- Segment List -->
</xs:complexType> <xs:complexType name="SegmentListType">
<xs:complexContent>
<!-- Segment Timeline --> <xs:extension base="MultipleSegmentBaseType">
<xs:complexType name="SegmentTimelineType"> <xs:sequence>
<xs:sequence> <xs:element name="SegmentURL" type="SegmentURLType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="S" minOccurs="1" maxOccurs="unbounded" > </xs:sequence>
<xs:complexType> <xs:attribute ref="xlink:href"/>
<xs:attribute name="t" type="xs:unsignedInt"/> <xs:attribute ref="xlink:actuate" default="onRequest"/>
<xs:attribute name="d" type="xs:unsignedInt" use="required"/> </xs:extension>
<xs:attribute name="r" type="xs:unsignedInt" use="optional" default="0"/> </xs:complexContent>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
</xs:complexType>
</xs:element> <!-- Segment URL -->
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:complexType name="SegmentURLType">
</xs:sequence> <xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:complexType> </xs:sequence>
<xs:attribute name="media" type="xs:anyURI"/>
<!-- Whitespace-separated list of strings --> <xs:attribute name="mediaRange" type="xs:string"/>
<xs:simpleType name="StringVectorType"> <xs:attribute name="index" type="xs:anyURI"/>
<xs:list itemType="xs:string"/> <xs:attribute name="indexRange" type="xs:string"/>
</xs:simpleType> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Whitespace-separated list of unsigned integers -->
<xs:simpleType name="UIntVectorType"> <!-- Segment Template -->
<xs:list itemType="xs:unsignedInt"/> <xs:complexType name="SegmentTemplateType">
</xs:simpleType> <xs:complexContent>
<xs:extension base="MultipleSegmentBaseType">
<!-- Base URL --> <xs:attribute name="media" type="xs:string"/>
<xs:complexType name="BaseURLType"> <xs:attribute name="index" type="xs:string"/>
<xs:simpleContent> <xs:attribute name="initialization" type="xs:string"/>
<xs:extension base="xs:anyURI"> <xs:attribute name="bitstreamSwitching" type="xs:string"/>
<xs:attribute name="serviceLocation" type="xs:string"/> </xs:extension>
<xs:attribute name="byteRange" type="xs:string"/> </xs:complexContent>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:complexType>
</xs:extension>
</xs:simpleContent> <!-- Segment Timeline -->
</xs:complexType> <xs:complexType name="SegmentTimelineType">
<xs:sequence>
<!-- Program Information --> <xs:element name="S" minOccurs="1" maxOccurs="unbounded">
<xs:complexType name="ProgramInformationType"> <xs:complexType>
<xs:sequence> <xs:attribute name="t" type="xs:unsignedLong"/>
<xs:element name="Title" type="xs:string" minOccurs="0"/> <xs:attribute name="n" type="xs:unsignedLong" use="optional"/>
<xs:element name="Source" type="xs:string" minOccurs="0"/> <xs:attribute name="d" type="xs:unsignedLong" use="required"/>
<xs:element name="Copyright" type="xs:string" minOccurs="0"/> <xs:attribute name="r" type="xs:integer" use="optional" default="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:sequence> </xs:complexType>
<xs:attribute name="lang" type="xs:language"/> </xs:element>
<xs:attribute name="moreInformationURL" type="xs:anyURI"/> <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> </xs:sequence>
</xs:complexType> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Descriptor -->
<xs:complexType name="DescriptorType"> <!-- Whitespace-separated list of strings -->
<xs:sequence> <xs:simpleType name="StringVectorType">
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:list itemType="xs:string"/>
</xs:sequence> </xs:simpleType>
<xs:attribute name="schemeIdUri" type="xs:anyURI" use="required"/>
<xs:attribute name="value" type="xs:string"/> <!-- Whitespace-separated list of unsigned integers -->
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:simpleType name="UIntVectorType">
</xs:complexType> <xs:list itemType="xs:unsignedInt"/>
</xs:simpleType>
<!-- Metrics -->
<xs:complexType name="MetricsType"> <!-- Base URL -->
<xs:sequence> <xs:complexType name="BaseURLType">
<xs:element name="Reporting" type="DescriptorType" maxOccurs="unbounded"/> <xs:simpleContent>
<xs:element name="Range" type="RangeType" minOccurs="0" maxOccurs="unbounded"/> <xs:extension base="xs:anyURI">
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> <xs:attribute name="serviceLocation" type="xs:string"/>
</xs:sequence> <xs:attribute name="byteRange" type="xs:string"/>
<xs:attribute name="metrics" type="xs:string" use="required"/> <xs:attribute name="availabilityTimeOffset" type="xs:double"/>
<xs:anyAttribute namespace="##other" processContents="lax"/> <xs:attribute name="availabilityTimeComplete" type="xs:boolean"/>
</xs:complexType> <xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
<!-- Metrics Range --> </xs:simpleContent>
<xs:complexType name="RangeType"> </xs:complexType>
<xs:attribute name="starttime" type="xs:duration"/>
<xs:attribute name="duration" type="xs:duration"/> <!-- Program Information -->
</xs:complexType> <xs:complexType name="ProgramInformationType">
<xs:sequence>
</xs:schema> <xs:element name="Title" type="xs:string" minOccurs="0"/>
<xs:element name="Source" type="xs:string" minOccurs="0"/>
<xs:element name="Copyright" type="xs:string" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="lang" type="xs:language"/>
<xs:attribute name="moreInformationURL" type="xs:anyURI"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Descriptor -->
<xs:complexType name="DescriptorType">
<xs:sequence>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="schemeIdUri" type="xs:anyURI" use="required"/>
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="id" type="xs:string"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Metrics -->
<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>
<!-- Metrics Range -->
<xs:complexType name="RangeType">
<xs:attribute name="starttime" type="xs:duration"/>
<xs:attribute name="duration" type="xs:duration"/>
</xs:complexType>
</xs:schema>