-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #190 from Dash-Industry-Forum/fix-multiperiod-segt…
…imeline-patch fix: multiperiod MPD patch response at new period start
- Loading branch information
Showing
6 changed files
with
166 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
67 changes: 67 additions & 0 deletions
67
pkg/patch/testdata/segtimeline_multiper_after_full_min.mpd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<?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" id="auto-patch-id" profiles="urn:mpeg:dash:profile:isoff-live:2011,http://dashif.org/guidelines/dash-if-simple" type="dynamic" availabilityStartTime="1970-01-01T00:00:00Z" publishTime="2024-05-24T15:12:04Z" minimumUpdatePeriod="PT2S" minBufferTime="PT2S" timeShiftBufferDepth="PT1M" maxSegmentDuration="PT2S"> | ||
<ProgramInformation moreInformationURL="https://github.com/dash-Industry-Forum/livesim-content"> | ||
<Title>Basic MPD with 640x480@30 video at 300kbp and 48kbps audio</Title> | ||
<Source>VoD source for DASH-IF livesim2</Source> | ||
</ProgramInformation> | ||
<PatchLocation ttl="60">/patch/livesim2/patch_60/periods_60/segtimeline_1/testpic_2s/Manifest.mpp?publishTime=2024-05-24T15%3A12%3A04Z</PatchLocation> | ||
<Period id="P28609391" start="PT476823H11M"> | ||
<AdaptationSet id="2" lang="en" contentType="audio" segmentAlignment="true" mimeType="audio/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="48000" presentationTimeOffset="82395046080000"> | ||
<SegmentTimeline> | ||
<S t="82395046176768" d="95232"></S> | ||
<S t="82395046272000" d="96256" r="2"></S> | ||
<S t="82395046560768" d="95232"></S> | ||
<S t="82395046656000" d="96256" r="2"></S> | ||
<S t="82395046944768" d="95232"></S> | ||
<S t="82395047040000" d="96256" r="2"></S> | ||
<S t="82395047328768" d="95232"></S> | ||
<S t="82395047424000" d="96256" r="2"></S> | ||
<S t="82395047712768" d="95232"></S> | ||
<S t="82395047808000" d="96256" r="2"></S> | ||
<S t="82395048096768" d="95232"></S> | ||
<S t="82395048192000" d="96256" r="2"></S> | ||
<S t="82395048480768" d="95232"></S> | ||
<S t="82395048576000" d="96256" r="2"></S> | ||
<S t="82395048864768" d="95232"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="A48" bandwidth="48000" audioSamplingRate="48000" codecs="mp4a.40.2"> | ||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration> | ||
</Representation> | ||
</AdaptationSet> | ||
<AdaptationSet id="1" contentType="video" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true" mimeType="video/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="90000" presentationTimeOffset="154490711400000"> | ||
<SegmentTimeline> | ||
<S t="154490711580000" d="180000" r="28"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="V300" bandwidth="300000" width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e"></Representation> | ||
</AdaptationSet> | ||
</Period> | ||
<Period id="P28609392" start="PT476823H12M"> | ||
<AdaptationSet id="2" lang="en" contentType="audio" segmentAlignment="true" mimeType="audio/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="48000" presentationTimeOffset="82395048960000"> | ||
<SegmentTimeline> | ||
<S t="82395048960000" d="96256" r="1"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="A48" bandwidth="48000" audioSamplingRate="48000" codecs="mp4a.40.2"> | ||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration> | ||
</Representation> | ||
</AdaptationSet> | ||
<AdaptationSet id="1" contentType="video" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true" mimeType="video/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="90000" presentationTimeOffset="154490716800000"> | ||
<SegmentTimeline> | ||
<S t="154490716800000" d="180000" r="1"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="V300" bandwidth="300000" width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e"></Representation> | ||
</AdaptationSet> | ||
</Period> | ||
<UTCTiming schemeIdUri="urn:mpeg:dash:utc:http-xsdate:2014" value="https://time.akamai.com/?iso&ms"></UTCTiming> | ||
</MPD> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
<?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" id="auto-patch-id" profiles="urn:mpeg:dash:profile:isoff-live:2011,http://dashif.org/guidelines/dash-if-simple" type="dynamic" availabilityStartTime="1970-01-01T00:00:00Z" publishTime="2024-05-24T15:12:00Z" minimumUpdatePeriod="PT2S" minBufferTime="PT2S" timeShiftBufferDepth="PT1M" maxSegmentDuration="PT2S"> | ||
<ProgramInformation moreInformationURL="https://github.com/dash-Industry-Forum/livesim-content"> | ||
<Title>Basic MPD with 640x480@30 video at 300kbp and 48kbps audio</Title> | ||
<Source>VoD source for DASH-IF livesim2</Source> | ||
</ProgramInformation> | ||
<PatchLocation ttl="60">/patch/livesim2/patch_60/periods_60/segtimeline_1/testpic_2s/Manifest.mpp?publishTime=2024-05-24T15%3A12%3A00Z</PatchLocation> | ||
<Period id="P28609391" start="PT476823H11M"> | ||
<AdaptationSet id="2" lang="en" contentType="audio" segmentAlignment="true" mimeType="audio/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="48000" presentationTimeOffset="82395046080000"> | ||
<SegmentTimeline> | ||
<S t="82395046080512" d="96256"></S> | ||
<S t="82395046176768" d="95232"></S> | ||
<S t="82395046272000" d="96256" r="2"></S> | ||
<S t="82395046560768" d="95232"></S> | ||
<S t="82395046656000" d="96256" r="2"></S> | ||
<S t="82395046944768" d="95232"></S> | ||
<S t="82395047040000" d="96256" r="2"></S> | ||
<S t="82395047328768" d="95232"></S> | ||
<S t="82395047424000" d="96256" r="2"></S> | ||
<S t="82395047712768" d="95232"></S> | ||
<S t="82395047808000" d="96256" r="2"></S> | ||
<S t="82395048096768" d="95232"></S> | ||
<S t="82395048192000" d="96256" r="2"></S> | ||
<S t="82395048480768" d="95232"></S> | ||
<S t="82395048576000" d="96256" r="2"></S> | ||
<S t="82395048864768" d="95232"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="A48" bandwidth="48000" audioSamplingRate="48000" codecs="mp4a.40.2"> | ||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration> | ||
</Representation> | ||
</AdaptationSet> | ||
<AdaptationSet id="1" contentType="video" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true" mimeType="video/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="90000" presentationTimeOffset="154490711400000"> | ||
<SegmentTimeline> | ||
<S t="154490711400000" d="180000" r="29"></S> | ||
</SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="V300" bandwidth="300000" width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e"></Representation> | ||
</AdaptationSet> | ||
</Period> | ||
<Period id="P28609392" start="PT476823H12M"> | ||
<AdaptationSet id="2" lang="en" contentType="audio" segmentAlignment="true" mimeType="audio/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="48000" presentationTimeOffset="82395048960000"> | ||
<SegmentTimeline></SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="A48" bandwidth="48000" audioSamplingRate="48000" codecs="mp4a.40.2"> | ||
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></AudioChannelConfiguration> | ||
</Representation> | ||
</AdaptationSet> | ||
<AdaptationSet id="1" contentType="video" par="16:9" minWidth="640" maxWidth="640" minHeight="360" maxHeight="360" maxFrameRate="60/2" segmentAlignment="true" mimeType="video/mp4" startWithSAP="1"> | ||
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"></Role> | ||
<SegmentTemplate media="$RepresentationID$/$Time$.m4s" initialization="$RepresentationID$/init.mp4" timescale="90000" presentationTimeOffset="154490716800000"> | ||
<SegmentTimeline></SegmentTimeline> | ||
</SegmentTemplate> | ||
<Representation id="V300" bandwidth="300000" width="640" height="360" sar="1:1" frameRate="60/2" codecs="avc1.64001e"></Representation> | ||
</AdaptationSet> | ||
</Period> | ||
<UTCTiming schemeIdUri="urn:mpeg:dash:utc:http-xsdate:2014" value="https://time.akamai.com/?iso&ms"></UTCTiming> | ||
</MPD> |
18 changes: 18 additions & 0 deletions
18
pkg/patch/testdata/segtimeline_multiper_patch_after_full_min.mpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<Patch xmlns="urn:mpeg:dash:schema:mpd-patch:2020" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd-patch:2020 DASH-MPD-PATCH.xsd" mpdId="auto-patch-id" originalPublishTime="2024-05-24T15:12:00Z" publishTime="2024-05-24T15:12:04Z"> | ||
<replace sel="/MPD/@publishTime">2024-05-24T15:12:04Z</replace> | ||
<replace sel="/MPD/PatchLocation[1]"> | ||
<PatchLocation ttl="60">/patch/livesim2/patch_60/periods_60/segtimeline_1/testpic_2s/Manifest.mpp?publishTime=2024-05-24T15%3A12%3A04Z</PatchLocation> | ||
</replace> | ||
<remove sel="/MPD/Period[@id='P28609391']/AdaptationSet[@id='2']/SegmentTemplate/SegmentTimeline/S[1]"/> | ||
<remove sel="/MPD/Period[@id='P28609391']/AdaptationSet[@id='1']/SegmentTemplate/SegmentTimeline/S[1]"/> | ||
<add sel="/MPD/Period[@id='P28609391']/AdaptationSet[@id='1']/SegmentTemplate/SegmentTimeline" pos="prepend"> | ||
<S t="154490711580000" d="180000" r="28"/> | ||
</add> | ||
<add sel="/MPD/Period[@id='P28609392']/AdaptationSet[@id='2']/SegmentTemplate/SegmentTimeline" pos="prepend"> | ||
<S t="82395048960000" d="96256" r="1"/> | ||
</add> | ||
<add sel="/MPD/Period[@id='P28609392']/AdaptationSet[@id='1']/SegmentTemplate/SegmentTimeline" pos="prepend"> | ||
<S t="154490716800000" d="180000" r="1"/> | ||
</add> | ||
</Patch> |