Skip to content

Commit

Permalink
Merge pull request #31 from MPEGGroup/dev
Browse files Browse the repository at this point in the history
merge dev into master - first cut at FDIS 4th Ed
  • Loading branch information
Michael A Dolan authored Aug 6, 2019
2 parents 696fce2 + c5a0840 commit 881cc59
Show file tree
Hide file tree
Showing 9 changed files with 323 additions and 40 deletions.
92 changes: 63 additions & 29 deletions DASH-MPD.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@
<xs:element name="BaseURL" type="BaseURLType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Location" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ServiceDescription" type="ServiceDescriptionType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="InitializationSet" type="InitializationSetType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="InitializationGroup" type="UIntVWithIDType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="InitializationPresentation" type="UIntVWithIDType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Period" type="PeriodType" maxOccurs="unbounded"/>
<xs:element name="Metrics" type="MetricsType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="EssentialProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="SupplementalProperty" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="UTCTiming" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="LeapSecondInformation" type="LeapSecondInformationType" minOccurs="0" maxOccurs="1"/>
<xs:element name="InitializationSet" type="InitializationSetType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="InitializationGroup" type="UIntVWithIDType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="InitializationPresentation" type="UIntVWithIDType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="LeapSecondInformation" type="LeapSecondInformationType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="profiles" type="xs:string" use="required"/>
<xs:attribute name="profiles" type="ListOfProfilesType" use="required"/>
<xs:attribute name="type" type="PresentationType" default="static"/>
<xs:attribute name="availabilityStartTime" type="xs:dateTime"/>
<xs:attribute name="availabilityEndTime" type="xs:dateTime"/>
Expand Down Expand Up @@ -126,15 +126,15 @@
<xs:element name="Role" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Rating" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="Viewpoint" type="DescriptorType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="ContentComponent" type="ContentComponentType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="xlink:href"/>
<xs:attribute ref="xlink:actuate" default="onRequest"/>
<xs:attribute ref="xlink:type" fixed="simple"/>
<xs:attribute ref="xlink:show" fixed="embed"/>
<xs:attribute name="id" type="xs:unsignedInt" use="required"/>
<xs:attribute name="lang" type="xs:language"/>
<xs:attribute name="inAllPeriods" type="xs:boolean" default="true"/>
<xs:attribute name="contentType" type="RFC6838ContentTypeType"/>
<xs:attribute name="par" type="RatioType"/>
<xs:attribute name="maxBandwidth" type="xs:unsignedInt"/>
<xs:attribute name="maxWidth" type="xs:unsignedInt"/>
<xs:attribute name="maxHeight" type="xs:unsignedInt"/>
<xs:attribute name="maxFrameRate" type="FrameRateType"/>
Expand All @@ -152,7 +152,7 @@
<xs:element name="OperatingBandwidth" type="PlaybackRateType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string"/>
<xs:attribute name="id" type="xs:unsignedInt"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Service Description Latency -->
Expand All @@ -176,17 +176,27 @@
<!-- Service Description Operating Quality -->
<xs:complexType name="OperatingQualityType">
<xs:attribute name="mediaType" type="xs:string"/>
<xs:attribute name="min" type="xs:double"/>
<xs:attribute name="max" type="xs:double"/>
<xs:attribute name="min" type="xs:unsignedInt"/>
<xs:attribute name="max" type="xs:unsignedInt"/>
<xs:attribute name="target" type="xs:unsignedInt"/>
<xs:attribute name="type" type="xs:anyURI"/>
<xs:attribute name="maxDifference" type="xs:unsignedInt"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Service Description Operating Bandwidth -->
<xs:complexType name="OperatingBandwidthType">
<xs:attribute name="mediaType" type="xs:string"/>
<xs:attribute name="min" type="xs:double"/>
<xs:attribute name="max" type="xs:double"/>
<xs:attribute name="mediaType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="video"/>
<xs:enumeration value="audio"/>
<xs:enumeration value="any"/>
<xs:enumeration value="all"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="min" type="xs:unsignedInt"/>
<xs:attribute name="max" type="xs:unsignedInt"/>
<xs:attribute name="target" type="xs:unsignedInt"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
Expand All @@ -203,13 +213,19 @@
<xs:complexType name="UIntVWithIDType">
<xs:simpleContent>
<xs:extension base="UIntVectorType">
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="profiles" type="xs:string"/>
<xs:attribute name="id" type="xs:unsignedInt" use="required"/>
<xs:attribute name="profiles" type="ListOfProfilesType"/>
<xs:attribute name="contentType" type="RFC6838ContentTypeType"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- List of Profiles -->
<xs:simpleType name="ListOfProfilesType">
<xs:restriction base="xs:string">
<xs:pattern value="(([A-Za-z0-9\-\._~&#xA0;-&#xFF;]|(&#37;[0-9A-Fa-f][0-9A-Fa-f])|[!$&amp;'()*+;=:@]))+(,(([A-Za-z0-9\-\._~&#xA0;-&#xFF;]|(&#37;[0-9A-Fa-f][0-9A-Fa-f])|[!$&amp;'()*+;=:@]))*)*"/>
</xs:restriction>
</xs:simpleType>
<!-- Adaptation Set -->
<xs:complexType name="AdaptationSetType">
<xs:complexContent>
Expand Down Expand Up @@ -247,7 +263,7 @@
<xs:attribute name="subsegmentAlignment" type="xs:boolean" default="false"/>
<xs:attribute name="subsegmentStartsWithSAP" type="SAPType" default="0"/>
<xs:attribute name="bitstreamSwitching" type="xs:boolean"/>
<xs:attribute name="initializationRef" type="StringVectorType"/>
<xs:attribute name="initializationSetRef" type="UIntVectorType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Expand Down Expand Up @@ -285,7 +301,7 @@
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt"/>
<xs:attribute name="lang" type="xs:language"/>
<xs:attribute name="contentType" type="xs:string"/>
<xs:attribute name="contentType" type="RFC6838ContentTypeType"/>
<xs:attribute name="par" type="RatioType"/>
<xs:attribute name="tag" type="TagType"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
Expand Down Expand Up @@ -345,7 +361,7 @@
<xs:element name="ContentPopularityRate" type="ContentPopularityRateType" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="profiles" type="xs:string"/>
<xs:attribute name="profiles" type="ListOfProfilesType"/>
<xs:attribute name="width" type="xs:unsignedInt"/>
<xs:attribute name="height" type="xs:unsignedInt"/>
<xs:attribute name="sar" type="RatioType"/>
Expand Down Expand Up @@ -376,7 +392,7 @@
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="start" type="xs:unsignedInt" use="optional"/>
<xs:attribute name="start" type="xs:unsignedLong" use="optional"/>
<xs:attribute name="r" type="xs:int" use="optional" default="0"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
Expand Down Expand Up @@ -425,17 +441,24 @@
<!-- Producer Reference time -->
<xs:complexType name="ProducerReferenceTimeType">
<xs:sequence>
<xs:element name="Instance" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="ntp" type="xs:unsignedLong" use="required"/>
<xs:attribute name="media" type="xs:unsignedLong"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:element name="UTCTiming" type="DescriptorType" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedInt" use="required"/>
<xs:attribute name="inband" type="xs:boolean" default="false"/>
<xs:attribute name="type" type="ProducerReferenceTimeTypeType" default="encoder"/>
<xs:attribute name="applicationScheme" type="xs:string"/>
<xs:attribute name="wallClockTime" type="xs:string" use="required"/>
<xs:attribute name="presentationTime" type="xs:unsignedLong" use="required"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:simpleType name="ProducerReferenceTimeTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="encoder"/>
<xs:enumeration value="captured"/>
<xs:enumeration value="application"/>
</xs:restriction>
</xs:simpleType>
<!-- Preselection -->
<xs:complexType name="PreselectionType">
<xs:complexContent>
Expand All @@ -449,6 +472,7 @@
<xs:attribute name="id" type="StringNoWhitespaceType" default="1"/>
<xs:attribute name="preselectionComponents" type="StringVectorType" use="required"/>
<xs:attribute name="lang" type="xs:language"/>
<xs:attribute name="order" type="PreselectionOrderType" default="unordered"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Expand Down Expand Up @@ -513,6 +537,14 @@
<xs:enumeration value="gradual"/>
</xs:restriction>
</xs:simpleType>
<!--Preselection Order type-->
<xs:simpleType name="PreselectionOrderType">
<xs:restriction base="xs:string">
<xs:enumeration value="unordered"/>
<xs:enumeration value="time-ordered"/>
<xs:enumeration value="fully-ordered"/>
</xs:restriction>
</xs:simpleType>
<!-- Segment information base -->
<xs:complexType name="SegmentBaseType">
<xs:sequence>
Expand Down Expand Up @@ -542,6 +574,7 @@
</xs:sequence>
<xs:attribute name="duration" type="xs:unsignedInt"/>
<xs:attribute name="startNumber" type="xs:unsignedInt"/>
<xs:attribute name="endNumber" type="xs:unsignedInt"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Expand All @@ -557,7 +590,7 @@
<!-- Failover Content -->
<xs:complexType name="FailoverContentType">
<xs:sequence>
<xs:element name="MS" maxOccurs="unbounded">
<xs:element name="FCS" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="t" type="xs:unsignedLong" use="required"/>
<xs:attribute name="d" type="xs:unsignedLong"/>
Expand All @@ -566,6 +599,7 @@
</xs:element>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="valid" type="xs:boolean" default="true"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<!-- Segment List -->
Expand Down Expand Up @@ -684,7 +718,7 @@
</xs:complexType>
<!-- Metrics Range -->
<xs:complexType name="RangeType">
<xs:attribute name="time" type="xs:duration"/>
<xs:attribute name="starttime" type="xs:duration"/>
<xs:attribute name="duration" type="xs:duration"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
Expand Down
11 changes: 2 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,7 @@
[28-Mar-2019]
[6-Aug-2019]

This project is for the maintenance of the DASH part 1 schemas (ISO/IEC 23009-1).

There are necessarily a few branches at this time as we have a few things going on in parallel:

master – verbatim from w18312 (draft FDIS 3rd Ed). Note that I did not include xlink.xsd since that’s not ISO’s and should not be in the electronic attachments. The master has various errors covered in the open issues. A release was created for the baseline master since it was published in the FDIS 3rd Ed. Do not make PRs against this master branch.

3rd-Ed (from master) – schema typos are fixed and is the target for the final 3rd Ed schema and examples. No more edits should be made to this branch unless you find an error WRT to the spec text, in which case an issue should be filed. I will ensure that it matches the as-published 3rd Ed in a few months. Do not make PRs against this branch.

Amd5 (from 3rd-Ed) – this is the beginning of the schema for FDAM5 (as of this morning, aka FDIS 4th Ed). FYI, I have fixes committed for the errors in G4, G5 and G8, but I am along ways from adding the schema updates from COR3+DAM5+SoDAM5 found in my m47966-v6; which would then need to be modified per the DoC output from this meeting (which would include for example the mixed=true on Event).

This is the not forum for proposing changes to DASH. This is a forum for working through the details of the intent of approved contributions and TexOf text outputs, as well as fixing errors.

Please do any proposed Pull Requests on the dev branch.
2 changes: 1 addition & 1 deletion example_G13-1.mpd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" mediaPresentationDuration="PT3256S"
minBufferTime="PT1.500000S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
minBufferTime="PT1.500000S" profiles="urn:mpeg:dash:profile:isoff-ext-live:2014">
<Period>
<AdaptationSet startWithSAP="2" segmentAlignment="true" id="1" sar="1:1" mimeType="video/mp4">
<InbandEventStream schemeIdUri="tag:rdmedia.bbc.co.uk,2014:events/ballposition" value="1"/>
Expand Down
2 changes: 1 addition & 1 deletion example_G13-2.mpd
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd" mediaPresentationDuration="PT3256S"
minBufferTime="PT1.500000S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
minBufferTime="PT1.500000S" profiles="urn:mpeg:dash:profile:isoff-ext-live:2014">
<Period>
<AdaptationSet id="1" segmentAlignment="true" sar="1:1" mimeType="video/mp4" startWithSAP="2" maxPlayoutRate="1">
<InbandEventStream schemeIdUri="tag:rdmedia.bbc.co.uk,2014:events/ballposition" value="1"/>
Expand Down
63 changes: 63 additions & 0 deletions example_G15.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<MPD
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
type="dynamic"
availabilityStartTime="2018-12-20T06:04:22Z"
publishTime="2018-12-20T06:04:22Z"
minimumUpdatePeriod="PT2S"
mediaPresentationDuration="PT0H4M9.708S"
minBufferTime="PT4S"
profiles="urn:mpeg:dash:profile:isoff-live:2011">

<Period id="1" start="PT0S">
<!-- Video -->
<AdaptationSet id="1" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<SegmentTemplate timescale="5994" media="video_$Number$.mp4" initialization="video.mp4">
<SegmentTimeline>
<S t="0" d="12000" r="154"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="1" bandwidth="3732256" codecs="hev1.1.6.L120.90" width="1920" height="1080"/>
</AdaptationSet>
<!-- Audio (M&E) -->
<AdaptationSet id="2" mimeType="audio/mp4" codecs="mhm2.0x0C" segmentAlignment="true" startWithSAP="1">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:mpegB:cicp:ChannelConfiguration" value="2"/>
<EssentialProperty schemeIdUri="urn:mpeg:dash:preselection:2016" value="1,2 3"/>
<EssentialProperty schemeIdUri="urn:mpeg:dash:preselection:2016" value="2,2 4"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<SegmentTemplate timescale="48000" media="audio0_$Number$.mp4" initialization="audio0.mp4">
<SegmentTimeline>
<S t="0" d="90112" r="133"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="2" bandwidth="132669" audioSamplingRate="48000"/>
</AdaptationSet>
<!-- Audio (English) -->
<AdaptationSet id="3" mimeType="audio/mp4" lang="en" codecs="mhm2.0x0C" segmentAlignment="true" startWithSAP="1">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:mpegB:cicp:ChannelConfiguration" value="1"/>
<EssentialProperty schemeIdUri="urn:mpeg:dash:preselection:2016"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<SegmentTemplate timescale="48000" media="audio1_$Number$.mp4" initialization="audio1.mp4">
<SegmentTimeline>
<S t="0" d="90112" r="133"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="3" bandwidth="32494" audioSamplingRate="48000"/>
</AdaptationSet>
<!-- Audio (Spanish) -->
<AdaptationSet id="4" mimeType="audio/mp4" lang="es" codecs="mhm2.0x0C" segmentAlignment="true" startWithSAP="1">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:mpegB:cicp:ChannelConfiguration" value="1"/>
<EssentialProperty schemeIdUri="urn:mpeg:dash:preselection:2016"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="dub"/>
<SegmentTemplate timescale="48000" media="audio2_$Number$.mp4" initialization="audio2.mp4">
<SegmentTimeline>
<S t="0" d="90112" r="133"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="4" bandwidth="32494" audioSamplingRate="48000"/>
</AdaptationSet>
</Period>
</MPD>
Loading

0 comments on commit 881cc59

Please sign in to comment.