Skip to content

Commit

Permalink
Tests to verify generated codec strings in DASH/HLS manifest files.
Browse files Browse the repository at this point in the history
  • Loading branch information
felicialim committed Aug 29, 2024
1 parent eea194c commit bed593d
Show file tree
Hide file tree
Showing 22 changed files with 198 additions and 1 deletion.
32 changes: 32 additions & 0 deletions packager/app/test/packager_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,38 @@ def testAv1WebM(self):
self._GetFlags(output_dash=True, output_hls=True))
self._CheckTestResults('av1-webm')

def testIamfWithBaseProfileAndPcm(self):
self.assertPackageSuccess(
self._GetStreams(['audio'],
output_format='mp4',
test_files=['bear-iamf-base-pcm.mp4']),
self._GetFlags(output_dash=True, output_hls=True))
self._CheckTestResults('iamf-base-pcm-mp4')

def testIamfWithBaseProfileAndOpus(self):
self.assertPackageSuccess(
self._GetStreams(['audio'],
output_format='mp4',
test_files=['bear-iamf-base-opus.mp4']),
self._GetFlags(output_dash=True, output_hls=True))
self._CheckTestResults('iamf-base-opus-mp4')

def testIamfWithSimpleProfileAndAacLc(self):
self.assertPackageSuccess(
self._GetStreams(['audio'],
output_format='mp4',
test_files=['bear-iamf-simple-aac-lc.mp4']),
self._GetFlags(output_dash=True, output_hls=True))
self._CheckTestResults('iamf-simple-aac-lc-mp4')

def testIamfWithSimpleProfileAndFlac(self):
self.assertPackageSuccess(
self._GetStreams(['audio'],
output_format='mp4',
test_files=['bear-iamf-simple-flac.mp4']),
self._GetFlags(output_dash=True, output_hls=True))
self._CheckTestResults('iamf-simple-flac-mp4')

def testEncryption(self):
self.assertPackageSuccess(
self._GetStreams(['audio', 'video']),
Expand Down
Binary file not shown.
9 changes: 9 additions & 0 deletions packager/app/test/testdata/iamf-base-opus-mp4/output.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#EXTM3U
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:TYPE=AUDIO,URI="stream_0.m3u8",GROUP-ID="default-audio-group",NAME="stream_0",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="0"

#EXT-X-STREAM-INF:BANDWIDTH=136796,AVERAGE-BANDWIDTH=134443,CODECS="iamf.001.001.Opus",AUDIO="default-audio-group",CLOSED-CAPTIONS=NONE
stream_0.m3u8
15 changes: 15 additions & 0 deletions packager/app/test/testdata/iamf-base-opus-mp4/output.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>-->
<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" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.739958S">
<Period id="0">
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
<Representation id="0" bandwidth="136796" codecs="iamf.001.001.Opus" mimeType="audio/mp4" audioSamplingRate="0">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="0"/>
<BaseURL>bear-iamf-base-opus-audio.mp4</BaseURL>
<SegmentBase indexRange="892-959" timescale="48000">
<Initialization range="0-891"/>
</SegmentBase>
</Representation>
</AdaptationSet>
</Period>
</MPD>
16 changes: 16 additions & 0 deletions packager/app/test/testdata/iamf-base-opus-mp4/stream_0.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>
#EXT-X-TARGETDURATION:2
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="bear-iamf-base-opus-audio.mp4",BYTERANGE="892@0"
#EXTINF:1.014,
#EXT-X-BYTERANGE:16835@960
bear-iamf-base-opus-audio.mp4
#EXTINF:1.000,
#EXT-X-BYTERANGE:16789
bear-iamf-base-opus-audio.mp4
#EXTINF:0.726,
#EXT-X-BYTERANGE:12422
bear-iamf-base-opus-audio.mp4
#EXT-X-ENDLIST
Binary file not shown.
9 changes: 9 additions & 0 deletions packager/app/test/testdata/iamf-base-pcm-mp4/output.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#EXTM3U
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:TYPE=AUDIO,URI="stream_0.m3u8",GROUP-ID="default-audio-group",NAME="stream_0",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="0"

#EXT-X-STREAM-INF:BANDWIDTH=2177226,AVERAGE-BANDWIDTH=1803234,CODECS="iamf.001.001.ipcm",AUDIO="default-audio-group",CLOSED-CAPTIONS=NONE
stream_0.m3u8
15 changes: 15 additions & 0 deletions packager/app/test/testdata/iamf-base-pcm-mp4/output.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>-->
<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" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.739958S">
<Period id="0">
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
<Representation id="0" bandwidth="2177226" codecs="iamf.001.001.ipcm" mimeType="audio/mp4" audioSamplingRate="0">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="0"/>
<BaseURL>bear-iamf-base-pcm-audio.mp4</BaseURL>
<SegmentBase indexRange="850-917" timescale="48000">
<Initialization range="0-849"/>
</SegmentBase>
</Representation>
</AdaptationSet>
</Period>
</MPD>
16 changes: 16 additions & 0 deletions packager/app/test/testdata/iamf-base-pcm-mp4/stream_0.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>
#EXT-X-TARGETDURATION:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="bear-iamf-base-pcm-audio.mp4",BYTERANGE="850@0"
#EXTINF:1.000,
#EXT-X-BYTERANGE:208108@918
bear-iamf-base-pcm-audio.mp4
#EXTINF:1.000,
#EXT-X-BYTERANGE:208108
bear-iamf-base-pcm-audio.mp4
#EXTINF:0.740,
#EXT-X-BYTERANGE:201382
bear-iamf-base-pcm-audio.mp4
#EXT-X-ENDLIST
Binary file not shown.
9 changes: 9 additions & 0 deletions packager/app/test/testdata/iamf-simple-aac-lc-mp4/output.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#EXTM3U
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:TYPE=AUDIO,URI="stream_0.m3u8",GROUP-ID="default-audio-group",NAME="stream_0",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="0"

#EXT-X-STREAM-INF:BANDWIDTH=604125,AVERAGE-BANDWIDTH=590976,CODECS="iamf.000.000.mp4a.40.2",AUDIO="default-audio-group",CLOSED-CAPTIONS=NONE
stream_0.m3u8
15 changes: 15 additions & 0 deletions packager/app/test/testdata/iamf-simple-aac-lc-mp4/output.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>-->
<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" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.739958S">
<Period id="0">
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
<Representation id="0" bandwidth="604125" codecs="iamf.000.000.mp4a.40.2" mimeType="audio/mp4" audioSamplingRate="0">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="0"/>
<BaseURL>bear-iamf-simple-aac-lc-audio.mp4</BaseURL>
<SegmentBase indexRange="900-967" timescale="48000">
<Initialization range="0-899"/>
</SegmentBase>
</Representation>
</AdaptationSet>
</Period>
</MPD>
16 changes: 16 additions & 0 deletions packager/app/test/testdata/iamf-simple-aac-lc-mp4/stream_0.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>
#EXT-X-TARGETDURATION:2
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="bear-iamf-simple-aac-lc-audio.mp4",BYTERANGE="900@0"
#EXTINF:1.003,
#EXT-X-BYTERANGE:75717@968
bear-iamf-simple-aac-lc-audio.mp4
#EXTINF:1.003,
#EXT-X-BYTERANGE:72441
bear-iamf-simple-aac-lc-audio.mp4
#EXTINF:0.735,
#EXT-X-BYTERANGE:54248
bear-iamf-simple-aac-lc-audio.mp4
#EXT-X-ENDLIST
Binary file not shown.
9 changes: 9 additions & 0 deletions packager/app/test/testdata/iamf-simple-flac-mp4/output.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#EXTM3U
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>

#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:TYPE=AUDIO,URI="stream_0.m3u8",GROUP-ID="default-audio-group",NAME="stream_0",DEFAULT=NO,AUTOSELECT=YES,CHANNELS="0"

#EXT-X-STREAM-INF:BANDWIDTH=977240,AVERAGE-BANDWIDTH=926327,CODECS="iamf.000.000.fLaC",AUDIO="default-audio-group",CLOSED-CAPTIONS=NONE
stream_0.m3u8
15 changes: 15 additions & 0 deletions packager/app/test/testdata/iamf-simple-flac-mp4/output.mpd
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>-->
<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" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" minBufferTime="PT2S" type="static" mediaPresentationDuration="PT2.739958S">
<Period id="0">
<AdaptationSet id="0" contentType="audio" subsegmentAlignment="true">
<Representation id="0" bandwidth="977240" codecs="iamf.000.000.fLaC" mimeType="audio/mp4" audioSamplingRate="0">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="0"/>
<BaseURL>bear-iamf-simple-flac-audio.mp4</BaseURL>
<SegmentBase indexRange="883-950" timescale="48000">
<Initialization range="0-882"/>
</SegmentBase>
</Representation>
</AdaptationSet>
</Period>
</MPD>
16 changes: 16 additions & 0 deletions packager/app/test/testdata/iamf-simple-flac-mp4/stream_0.m3u8
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/shaka-project/shaka-packager version <tag>-<hash>-<test>
#EXT-X-TARGETDURATION:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="bear-iamf-simple-flac-audio.mp4",BYTERANGE="883@0"
#EXTINF:1.000,
#EXT-X-BYTERANGE:116763@951
bear-iamf-simple-flac-audio.mp4
#EXTINF:1.000,
#EXT-X-BYTERANGE:122155
bear-iamf-simple-flac-audio.mp4
#EXTINF:0.740,
#EXT-X-BYTERANGE:78344
bear-iamf-simple-flac-audio.mp4
#EXT-X-ENDLIST
7 changes: 6 additions & 1 deletion packager/media/formats/mp4/mp4_media_parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,12 @@ bool MP4MediaParser::ParseMoov(BoxReader* reader) {
const int16_t roll_distance_in_samples =
audio_roll_recovery_entries[0].roll_distance;
if (roll_distance_in_samples < 0) {
RCHECK(sampling_frequency != 0);
// IAMF requires the `samplerate` field to be set to 0.
// (https://aomediacodec.github.io/iamf/#iasampleentry-section)
if (actual_format == FOURCC_iamf)
continue;

RCHECK((sampling_frequency != 0));
seek_preroll_ns = kNanosecondsPerSecond *
(-roll_distance_in_samples) / sampling_frequency;
} else {
Expand Down
Binary file added packager/media/test/data/bear-iamf-base-opus.mp4
Binary file not shown.
Binary file added packager/media/test/data/bear-iamf-base-pcm.mp4
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit bed593d

Please sign in to comment.