From 772aa7c93fae0ec458be803bd6b4a224059dcb51 Mon Sep 17 00:00:00 2001 From: KongQun Yang Date: Tue, 27 Mar 2018 09:27:17 -0700 Subject: [PATCH] Do not force earliest_presentation_time to 0 for VOD Instead, the actual earliest presentation time is used except for the first segment if there is an offset between presentation time (pts) and decoding time (dts). Chrome (as of v66) reports dts instead of pts in buffered ranges in MSE API. To avoid breaking Chrome, the earliest_presentation_time of the first segment is set to its dts as Chrome does not like negative values for adjusted dts = dts + Period@start (0 for the first period) - presentationTimeOffset (earliest_presentation_time). Fixes #303. Change-Id: I5ca80e05d5570961400499436f2bcc01f06e69e0 --- .../bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../output.mpd | 2 +- ...bear-640x360-video-trick_play_factor_1.mp4 | Bin 53408 -> 53408 bytes .../bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../audio-video-with-trick-play/output.mpd | 2 +- ...bear-640x360-video-trick_play_factor_1.mp4 | Bin 53408 -> 53408 bytes ...bear-640x360-video-trick_play_factor_2.mp4 | Bin 35523 -> 35523 bytes .../bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../output.mpd | 2 +- .../audio-video/bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../app/test/testdata/audio-video/output.mpd | 2 +- .../bear-640x360-ac3-audio.mp4 | Bin 68606 -> 68606 bytes .../bear-640x360-ac3-video.m3u8 | 2 +- .../bear-640x360-ac3-video.mp4 | Bin 301673 -> 301673 bytes .../test/testdata/bear-320x240-vp9-golden.mp4 | Bin 70698 -> 70698 bytes .../testdata/bear-640x360-av-cbcs-golden.mpd | 2 +- .../testdata/bear-640x360-av-cenc-golden.mpd | 2 +- .../bear-640x360-av-cenc-non-iop-golden.mpd | 2 +- .../testdata/bear-640x360-hevc-golden.mp4 | Bin 90519 -> 90519 bytes .../testdata/bear-640x360-v-cbcs-golden.mp4 | Bin 302472 -> 302472 bytes .../testdata/bear-640x360-v-cenc-golden.mp4 | Bin 302879 -> 302879 bytes .../test/testdata/bear-640x360-v-golden.mp4 | Bin 301673 -> 301673 bytes .../bear-640x360-v-live-cenc-golden-1.m4s | Bin 99393 -> 99393 bytes .../bear-640x360-v-trick-1-golden.mp4 | Bin 53408 -> 53408 bytes .../bear-640x360-v-trick-2-golden.mp4 | Bin 35523 -> 35523 bytes .../test/testdata/bear-640x360-vp8-golden.mp4 | Bin 115868 -> 115868 bytes .../bear-640x360-ec3-video.m3u8 | 2 +- .../bear-640x360-ec3-video.mp4 | Bin 297371 -> 297371 bytes .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../encryption-and-ad-cues/output.mpd | 4 +- .../bear-640x360-video.mp4 | Bin 303276 -> 303276 bytes .../encryption-and-no-clear-lead/output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302827 -> 302827 bytes .../output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes ...bear-640x360-video-trick_play_factor_1.mp4 | Bin 53814 -> 53814 bytes .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../encryption-and-trick-play/output.mpd | 2 +- ...bear-640x360-video-trick_play_factor_1.mp4 | Bin 53814 -> 53814 bytes ...bear-640x360-video-trick_play_factor_2.mp4 | Bin 35860 -> 35860 bytes .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../encryption-and-two-trick-plays/output.mpd | 2 +- .../encryption-cbc-1/bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../test/testdata/encryption-cbc-1/output.mpd | 2 +- .../encryption-cens/bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../test/testdata/encryption-cens/output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302895 -> 302895 bytes .../output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302895 -> 302895 bytes .../testdata/encryption-multi-keys/output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../encryption-using-fixed-key/output.mpd | 2 +- .../encryption/bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../app/test/testdata/encryption/output.mpd | 2 +- .../testdata/first-stream/bear-640x360-0.mp4 | Bin 301673 -> 301673 bytes .../app/test/testdata/first-stream/output.mpd | 2 +- .../bear-640x360-hevc-video.mp4 | Bin 92801 -> 92801 bytes .../testdata/hevc-with-encryption/output.mpd | 2 +- .../video/video-1.m4s | Bin 99393 -> 99393 bytes .../video/video.m3u8 | 2 +- .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../hls-segmented-webvtt/stream_2.m3u8 | 2 +- .../bear-640x360-video.m3u8 | 2 +- .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../bear-640x360-video.m3u8 | 2 +- .../bear-640x360-video.mp4 | Bin 302879 -> 302879 bytes .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../output.mpd | 5 ++- .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../live-profile-and-encryption/output.mpd | 5 ++- .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../output.mpd | 5 ++- .../bear-640x360-video-1.m4s | Bin 99445 -> 99445 bytes .../output.mpd | 5 ++- .../bear-640x360-video-1.m4s | Bin 99445 -> 99445 bytes .../live-profile-and-key-rotation/output.mpd | 5 ++- .../live-profile/bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../app/test/testdata/live-profile/output.mpd | 5 ++- .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../output.mpd | 9 ++-- .../bear-640x360-video-1.m4s | Bin 99393 -> 99393 bytes .../testdata/live-static-profile/output.mpd | 7 +-- .../bear-320x240-vp9-opus-video.mp4 | Bin 71890 -> 71890 bytes .../opus-vp9-mp4-with-encryption/output.mpd | 4 +- .../video-audio-text/bear-640x360-video.mp4 | Bin 301673 -> 301673 bytes .../test/testdata/video-audio-text/output.mpd | 2 +- .../bear-640x360-video.mp4 | Bin 116628 -> 116628 bytes .../vp8-mp4-with-encryption/output.mpd | 2 +- .../app/test/testdata/vp8-webm/output.mpd | 2 +- .../app/test/testdata/vp9-webm/output.mpd | 4 +- .../testdata/webm-with-encryption/output.mpd | 2 +- .../bear-multi-configs-0.mp4 | Bin 121153 -> 121153 bytes .../bear-multi-configs-1.mp4 | Bin 44949 -> 44949 bytes .../bear-multi-configs-2.mp4 | Bin 300149 -> 300149 bytes .../bear-multi-configs-3.mp4 | Bin 46061 -> 46061 bytes .../output.mpd | 10 ++--- .../wvm-input/bear-multi-configs-0.mp4 | Bin 121043 -> 121043 bytes .../wvm-input/bear-multi-configs-1.mp4 | Bin 44949 -> 44949 bytes .../wvm-input/bear-multi-configs-2.mp4 | Bin 300036 -> 300036 bytes .../wvm-input/bear-multi-configs-3.mp4 | Bin 46061 -> 46061 bytes .../app/test/testdata/wvm-input/output.mpd | 10 ++--- packager/media/formats/mp4/fragmenter.cc | 23 +++++++++- packager/media/formats/mp4/fragmenter.h | 5 ++- .../formats/mp4/single_segment_segmenter.cc | 20 +-------- packager/mpd/base/mpd_builder.cc | 16 ------- packager/mpd/base/mpd_builder_unittest.cc | 41 ++++++++++++++---- 110 files changed, 132 insertions(+), 113 deletions(-) diff --git a/packager/app/test/testdata/audio-video-with-language-override-with-subtag/bear-640x360-video.mp4 b/packager/app/test/testdata/audio-video-with-language-override-with-subtag/bear-640x360-video.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/audio-video-with-language-override-with-subtag/output.mpd b/packager/app/test/testdata/audio-video-with-language-override-with-subtag/output.mpd index 0be5e0b9ca..a7c74fc568 100644 --- a/packager/app/test/testdata/audio-video-with-language-override-with-subtag/output.mpd +++ b/packager/app/test/testdata/audio-video-with-language-override-with-subtag/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/audio-video-with-language-override/bear-640x360-video.mp4 b/packager/app/test/testdata/audio-video-with-language-override/bear-640x360-video.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/audio-video-with-language-override/output.mpd b/packager/app/test/testdata/audio-video-with-language-override/output.mpd index 0be5e0b9ca..a7c74fc568 100644 --- a/packager/app/test/testdata/audio-video-with-language-override/output.mpd +++ b/packager/app/test/testdata/audio-video-with-language-override/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/audio-video-with-trick-play/bear-640x360-video-trick_play_factor_1.mp4 b/packager/app/test/testdata/audio-video-with-trick-play/bear-640x360-video-trick_play_factor_1.mp4 index 60407efb5f9a4656a5cec43a7b1dcf5b63415c03..0473a61a765db7cbd07fe9703cfa719d1db97a9e 100644 GIT binary patch delta 21 dcmZ3mka@vE<_)pTY_$p#7}zguPG+_}3jkLi2gm>b delta 21 dcmZ3mka@vE<_)pTY^8n^7#J8fCo|ig1prfa2NeJS diff --git a/packager/app/test/testdata/audio-video-with-trick-play/bear-640x360-video.mp4 b/packager/app/test/testdata/audio-video-with-trick-play/bear-640x360-video.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/audio-video-with-trick-play/output.mpd b/packager/app/test/testdata/audio-video-with-trick-play/output.mpd index ad49391552..406031e9bc 100644 --- a/packager/app/test/testdata/audio-video-with-trick-play/output.mpd +++ b/packager/app/test/testdata/audio-video-with-trick-play/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/audio-video-with-two-trick-play/bear-640x360-video-trick_play_factor_1.mp4 b/packager/app/test/testdata/audio-video-with-two-trick-play/bear-640x360-video-trick_play_factor_1.mp4 index 60407efb5f9a4656a5cec43a7b1dcf5b63415c03..0473a61a765db7cbd07fe9703cfa719d1db97a9e 100644 GIT binary patch delta 21 dcmZ3mka@vE<_)pTY_$p#7}zguPG+_}3jkLi2gm>b delta 21 dcmZ3mka@vE<_)pTY^8n^7#J8fCo|ig1prfa2NeJS diff --git a/packager/app/test/testdata/audio-video-with-two-trick-play/bear-640x360-video-trick_play_factor_2.mp4 b/packager/app/test/testdata/audio-video-with-two-trick-play/bear-640x360-video-trick_play_factor_2.mp4 index 078bad9cc8fd6923ac5f6a4981db93d8cd72d208..5279433a2bef6699ad2df0233efe7384282d706b 100644 GIT binary patch delta 37 tcmX>+mFe(QrVX*oLZ9*`FtA@@VDP@oz!1hZfq{Wx@&`Nd&27xK?Ew9H41xdv delta 37 ocmX>+mFe(QrVX*oLa*jbU;qK{%M1)*Y#{dJ4|d|4+n8 - + diff --git a/packager/app/test/testdata/audio-video/bear-640x360-video.mp4 b/packager/app/test/testdata/audio-video/bear-640x360-video.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/audio-video/output.mpd b/packager/app/test/testdata/audio-video/output.mpd index 8ddaf172c8..cc41438310 100644 --- a/packager/app/test/testdata/audio-video/output.mpd +++ b/packager/app/test/testdata/audio-video/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-audio.mp4 b/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-audio.mp4 index 3c4ec7a4b0c58d1a39578fff553bcffcbe168081..84a7c72c985f3042fdbdaff0af11f78176ad3e9b 100644 GIT binary patch delta 21 dcmex2o#o$jmJM&1n0TF<-!W}}$HXYW2>@*H2vz_9 delta 21 dcmex2o#o$jmJM&1m>3wE-!W}}$HXYW2>@x$2nPTF diff --git a/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.m3u8 b/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.m3u8 index 09e8052f5b..c8d79e5522 100644 --- a/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.m3u8 +++ b/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.m3u8 @@ -4,7 +4,7 @@ #EXT-X-TARGETDURATION:2 #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MAP:URI="bear-640x360-ac3-video.mp4",BYTERANGE="823@0" -#EXTINF:1.001, +#EXTINF:1.068, #EXT-X-BYTERANGE:99313@891 bear-640x360-ac3-video.mp4 #EXTINF:1.001, diff --git a/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.mp4 b/packager/app/test/testdata/avc-ac3-ts-to-mp4/bear-640x360-ac3-video.mp4 index 62124d237d4a6aee8ad6aa93aaf7cd189c93db63..6964da6920df81567e48a6cdc8ddb7012c16ac35 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY~=|P7{tq(lbPF-nHhnY35c1uCo{9KO$Pu6T?^d+ delta 37 qcmaF4Md;-gp$)OjZ1JxqFfcGQCo{JvGcy7)6A&|RPiAIen+^a5qzl3T diff --git a/packager/app/test/testdata/bear-320x240-vp9-golden.mp4 b/packager/app/test/testdata/bear-320x240-vp9-golden.mp4 index eb37055756482856be84d925082b703ca5f21e29..a7190fb2018ad2bb77d447705da91b49af3a16d0 100644 GIT binary patch delta 21 dcmZ3rf@ReTmJRmIOcOeq9htW~GBdsu003Hu2Xz1d delta 21 dcmZ3rf@ReTmJRmIObiUoj?CK~nHgUS002)223-IE diff --git a/packager/app/test/testdata/bear-640x360-av-cbcs-golden.mpd b/packager/app/test/testdata/bear-640x360-av-cbcs-golden.mpd index 99cf60abf2..abbc149629 100644 --- a/packager/app/test/testdata/bear-640x360-av-cbcs-golden.mpd +++ b/packager/app/test/testdata/bear-640x360-av-cbcs-golden.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/bear-640x360-av-cenc-golden.mpd b/packager/app/test/testdata/bear-640x360-av-cenc-golden.mpd index fd79c082d7..955443b1c6 100644 --- a/packager/app/test/testdata/bear-640x360-av-cenc-golden.mpd +++ b/packager/app/test/testdata/bear-640x360-av-cenc-golden.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/bear-640x360-av-cenc-non-iop-golden.mpd b/packager/app/test/testdata/bear-640x360-av-cenc-non-iop-golden.mpd index e7115967ab..f15e43cd03 100644 --- a/packager/app/test/testdata/bear-640x360-av-cenc-non-iop-golden.mpd +++ b/packager/app/test/testdata/bear-640x360-av-cenc-non-iop-golden.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/bear-640x360-hevc-golden.mp4 b/packager/app/test/testdata/bear-640x360-hevc-golden.mp4 index 69170b8652e379cb6a759d7520c8c162d8dc8d56..b18ed17f70806b4a7c0d1621813aaaab09078c24 100644 GIT binary patch delta 25 hcmbP!n05ML)(yGrY_$p#7}zg07qf3KW@l810swsz2%G=_ delta 25 hcmbP!n05ML)(yGrY^8n^7#J9ui`lmqvooqh0RVQM2k8I+ diff --git a/packager/app/test/testdata/bear-640x360-v-cbcs-golden.mp4 b/packager/app/test/testdata/bear-640x360-v-cbcs-golden.mp4 index 246a814ab05da035adeba2c36287863ac471df15..59c5ade7943b4dd3d94bfb0958d8936c5f25814f 100644 GIT binary patch delta 37 qcmeC!E!44FXhRVTTdl$b2KGzM6)f!)EQ~+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/bear-640x360-v-trick-1-golden.mp4 b/packager/app/test/testdata/bear-640x360-v-trick-1-golden.mp4 index 60407efb5f9a4656a5cec43a7b1dcf5b63415c03..0473a61a765db7cbd07fe9703cfa719d1db97a9e 100644 GIT binary patch delta 21 dcmZ3mka@vE<_)pTY_$p#7}zguPG+_}3jkLi2gm>b delta 21 dcmZ3mka@vE<_)pTY^8n^7#J8fCo|ig1prfa2NeJS diff --git a/packager/app/test/testdata/bear-640x360-v-trick-2-golden.mp4 b/packager/app/test/testdata/bear-640x360-v-trick-2-golden.mp4 index 078bad9cc8fd6923ac5f6a4981db93d8cd72d208..5279433a2bef6699ad2df0233efe7384282d706b 100644 GIT binary patch delta 37 tcmX>+mFe(QrVX*oLZ9*`FtA@@VDP@oz!1hZfq{Wx@&`Nd&27xK?Ew9H41xdv delta 37 ocmX>+mFe(QrVX*oLa*jbU;qK{%M1)*Y#{dJ4|d|4+n8 - - + + diff --git a/packager/app/test/testdata/encryption-and-no-clear-lead/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-and-no-clear-lead/bear-640x360-video.mp4 index 95418131de4ed41b4dda68f08f3a006c2f2a3237..60f4e6f5b3674a3ff83f66c1eec3d3ad9b8b5788 100644 GIT binary patch delta 37 qcmZ2;P-x9Tp$!k2*=iLgFtA^0e$L$foS6}bnShvi`*UWNqjLZ(h!1N3 delta 37 qcmZ2;P-x9Tp$!k2*-HH;FfcGQKWA=#&ddnJOhC-M{W&ws(K!GeuMW5X diff --git a/packager/app/test/testdata/encryption-and-no-clear-lead/output.mpd b/packager/app/test/testdata/encryption-and-no-clear-lead/output.mpd index 9d72c67203..6c9d0c3d29 100644 --- a/packager/app/test/testdata/encryption-and-no-clear-lead/output.mpd +++ b/packager/app/test/testdata/encryption-and-no-clear-lead/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-and-no-pssh-in-stream/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-and-no-pssh-in-stream/bear-640x360-video.mp4 index 17b831df782bc7387169cbf430384f1a870ae3d1..daececa16626f2854d8d1b62dc1939154a1cadf3 100644 GIT binary patch delta 37 qcmaF8SLpR#p$(=iY_$p#7}zg0TeGxVvoHcN6A&|Rw`O74Fbe?v;tR+C delta 37 qcmaF8SLpR#p$(=iY^8n^7#J9uty$WwSr~zs35c1uTeGlim<0gu2@4ef diff --git a/packager/app/test/testdata/encryption-and-no-pssh-in-stream/output.mpd b/packager/app/test/testdata/encryption-and-no-pssh-in-stream/output.mpd index ffb3292a2d..0f841e15f3 100644 --- a/packager/app/test/testdata/encryption-and-no-pssh-in-stream/output.mpd +++ b/packager/app/test/testdata/encryption-and-no-pssh-in-stream/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-and-output-media-info/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-and-trick-play/bear-640x360-video-trick_play_factor_1.mp4 b/packager/app/test/testdata/encryption-and-trick-play/bear-640x360-video-trick_play_factor_1.mp4 index c6251150ff91bdfd68bffda524eefee9de777fe9..ce0e437d68e55e896b0a3279ca9ae4fc59716cd3 100644 GIT binary patch delta 21 dcmdnCgn8Q%<_(!FY_$p#7}zgu&SyD(764r22%Z1{ delta 21 dcmdnCgn8Q%<_(!FY^8n^7#J8f=d&C?3jkR=2kQU; diff --git a/packager/app/test/testdata/encryption-and-trick-play/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-and-trick-play/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-and-trick-play/output.mpd b/packager/app/test/testdata/encryption-and-trick-play/output.mpd index 0969c57f85..c890540aa5 100644 --- a/packager/app/test/testdata/encryption-and-trick-play/output.mpd +++ b/packager/app/test/testdata/encryption-and-trick-play/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video-trick_play_factor_1.mp4 b/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video-trick_play_factor_1.mp4 index c6251150ff91bdfd68bffda524eefee9de777fe9..ce0e437d68e55e896b0a3279ca9ae4fc59716cd3 100644 GIT binary patch delta 21 dcmdnCgn8Q%<_(!FY_$p#7}zgu&SyD(764r22%Z1{ delta 21 dcmdnCgn8Q%<_(!FY^8n^7#J8f=d&C?3jkR=2kQU; diff --git a/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video-trick_play_factor_2.mp4 b/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video-trick_play_factor_2.mp4 index e4d1f9556e9e6390d73c33c42e4ae8de02e2f129..09bc5d466810b4370487cd3949b50f21240d69cc 100644 GIT binary patch delta 21 dcmbO-gK5ePrVW`aY@hNbFtA_RoX@hf9ROWm2%7)^ delta 21 dcmbO-gK5ePrVW`aY_H}_U|?X_oX@hf9ROLk2j~C* diff --git a/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-and-two-trick-plays/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-and-two-trick-plays/output.mpd b/packager/app/test/testdata/encryption-and-two-trick-plays/output.mpd index 072a7b8ba6..629287de1f 100644 --- a/packager/app/test/testdata/encryption-and-two-trick-plays/output.mpd +++ b/packager/app/test/testdata/encryption-and-two-trick-plays/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-cbc-1/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-cbc-1/bear-640x360-video.mp4 index 1edc8ecddc6472cfd7b70b14c7df6dabb2f48d80..8cbfc316caee1303e62c55a5009ddb231b9a3a31 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-cbc-1/output.mpd b/packager/app/test/testdata/encryption-cbc-1/output.mpd index 840d146294..be386623e4 100644 --- a/packager/app/test/testdata/encryption-cbc-1/output.mpd +++ b/packager/app/test/testdata/encryption-cbc-1/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-cens/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-cens/bear-640x360-video.mp4 index adee9cfc8ca6ef0aab84c068066878c3001e32c5..07f0dc14dc65629c1c0bd294a397bd4af2f75764 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-cens/output.mpd b/packager/app/test/testdata/encryption-cens/output.mpd index 2af43b290e..1bad06fde1 100644 --- a/packager/app/test/testdata/encryption-cens/output.mpd +++ b/packager/app/test/testdata/encryption-cens/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-multi-keys-with-stream-label/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-multi-keys-with-stream-label/bear-640x360-video.mp4 index f875a54176b18850320b3cfbe8cca7e5d3f94058..3680c73c32491786b014c2a85d8249c5a81c98b5 100644 GIT binary patch delta 37 qcmZ3#PiXxsi|CSr~zs35c1u*R!x}m<0g$q6{|x diff --git a/packager/app/test/testdata/encryption-multi-keys-with-stream-label/output.mpd b/packager/app/test/testdata/encryption-multi-keys-with-stream-label/output.mpd index b03313a45e..b93325dba9 100644 --- a/packager/app/test/testdata/encryption-multi-keys-with-stream-label/output.mpd +++ b/packager/app/test/testdata/encryption-multi-keys-with-stream-label/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-multi-keys/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-multi-keys/bear-640x360-video.mp4 index db9f0c3c9f7f23b991a6250ed79a2ac6ab2b77c8..580d34e67a06e01a204f390a0427c06f492228db 100644 GIT binary patch delta 37 qcmZ3#PiXxsi|CSr~zs35c1u*R!x}m<0g$q6{|x diff --git a/packager/app/test/testdata/encryption-multi-keys/output.mpd b/packager/app/test/testdata/encryption-multi-keys/output.mpd index 24841b16ab..135bca7a7e 100644 --- a/packager/app/test/testdata/encryption-multi-keys/output.mpd +++ b/packager/app/test/testdata/encryption-multi-keys/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-of-only-video-stream/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-of-only-video-stream/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-of-only-video-stream/output.mpd b/packager/app/test/testdata/encryption-of-only-video-stream/output.mpd index 76e5680aa0..aac311031d 100644 --- a/packager/app/test/testdata/encryption-of-only-video-stream/output.mpd +++ b/packager/app/test/testdata/encryption-of-only-video-stream/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption-using-fixed-key/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption-using-fixed-key/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption-using-fixed-key/output.mpd b/packager/app/test/testdata/encryption-using-fixed-key/output.mpd index fd79c082d7..955443b1c6 100644 --- a/packager/app/test/testdata/encryption-using-fixed-key/output.mpd +++ b/packager/app/test/testdata/encryption-using-fixed-key/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/encryption/bear-640x360-video.mp4 b/packager/app/test/testdata/encryption/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/encryption/output.mpd b/packager/app/test/testdata/encryption/output.mpd index fd79c082d7..955443b1c6 100644 --- a/packager/app/test/testdata/encryption/output.mpd +++ b/packager/app/test/testdata/encryption/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/first-stream/bear-640x360-0.mp4 b/packager/app/test/testdata/first-stream/bear-640x360-0.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/first-stream/output.mpd b/packager/app/test/testdata/first-stream/output.mpd index 32906dbcf9..9400a05120 100644 --- a/packager/app/test/testdata/first-stream/output.mpd +++ b/packager/app/test/testdata/first-stream/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/hevc-with-encryption/bear-640x360-hevc-video.mp4 b/packager/app/test/testdata/hevc-with-encryption/bear-640x360-hevc-video.mp4 index ba921f62147bcdc06b45a7961f35263cac6b103a..b98897e81a24c551b50799e7fc144a2d52d08b0a 100644 GIT binary patch delta 25 hcmZp?%G!99bwe)?Tdl$b2KGzMlX - + diff --git a/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video-1.m4s b/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video-1.m4s index e8a21a613c3bb3799226baaf66bb6338bd12d28b..82605ec2c30428a0cff9d9f6c124502f65de509c 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video.m3u8 b/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video.m3u8 index 0f3fbe7f5a..2c0c3d4ea0 100644 --- a/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video.m3u8 +++ b/packager/app/test/testdata/hls-multi-segment-mp4-with-custom-path/video/video.m3u8 @@ -4,7 +4,7 @@ #EXT-X-TARGETDURATION:2 #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MAP:URI="video-init.mp4" -#EXTINF:1.001, +#EXTINF:1.068, video-1.m4s #EXTINF:1.001, video-2.m4s diff --git a/packager/app/test/testdata/hls-segmented-webvtt/bear-640x360-video-1.m4s b/packager/app/test/testdata/hls-segmented-webvtt/bear-640x360-video-1.m4s index e8a21a613c3bb3799226baaf66bb6338bd12d28b..82605ec2c30428a0cff9d9f6c124502f65de509c 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/hls-segmented-webvtt/stream_2.m3u8 b/packager/app/test/testdata/hls-segmented-webvtt/stream_2.m3u8 index 19e29dda02..ac2680a454 100644 --- a/packager/app/test/testdata/hls-segmented-webvtt/stream_2.m3u8 +++ b/packager/app/test/testdata/hls-segmented-webvtt/stream_2.m3u8 @@ -4,7 +4,7 @@ #EXT-X-TARGETDURATION:2 #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MAP:URI="bear-640x360-video-init.mp4" -#EXTINF:1.001, +#EXTINF:1.068, bear-640x360-video-1.m4s #EXTINF:1.001, bear-640x360-video-2.m4s diff --git a/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.m3u8 b/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.m3u8 index 50b7e9ddea..f81460f81e 100644 --- a/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.m3u8 +++ b/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.m3u8 @@ -5,7 +5,7 @@ #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MAP:URI="bear-640x360-video.mp4",BYTERANGE="1091@0" #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,MTIzNDU2Nzg5MDEyMzQ1Ng==",KEYFORMAT="identity" -#EXTINF:1.001, +#EXTINF:1.068, #EXT-X-BYTERANGE:99313@1159 bear-640x360-video.mp4 #EXTINF:1.001, diff --git a/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.mp4 b/packager/app/test/testdata/hls-single-segment-mp4-encrypted-and-ad-cues/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.m3u8 b/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.m3u8 index 9e1b78afe7..671eef27e7 100644 --- a/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.m3u8 +++ b/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.m3u8 @@ -5,7 +5,7 @@ #EXT-X-PLAYLIST-TYPE:VOD #EXT-X-MAP:URI="bear-640x360-video.mp4",BYTERANGE="1091@0" #EXT-X-KEY:METHOD=SAMPLE-AES-CTR,URI="data:text/plain;base64,MTIzNDU2Nzg5MDEyMzQ1Ng==",KEYFORMAT="identity" -#EXTINF:1.001, +#EXTINF:1.068, #EXT-X-BYTERANGE:99313@1159 bear-640x360-video.mp4 #EXTINF:1.001, diff --git a/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.mp4 b/packager/app/test/testdata/hls-single-segment-mp4-encrypted/bear-640x360-video.mp4 index 43bfd90f1fff8c652ed774c8a37396e891834892..cebb14a0e88fccd128f5f47d7e092e000ac3907a 100644 GIT binary patch delta 37 qcmbQgPiX!=p$(ZVY_$p#7}zg0=d-luvoHcN6A&|R&u3xTFbe?uD-3D? delta 37 qcmbQgPiX!=p$(ZVY^8n^7#J9u^I6*SSr~zs35c1u=d-YEm<0gsQVX{L diff --git a/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/bear-640x360-video-1.m4s index c8e0ec8cfa6add9df9dea33d5aac40f12d250b09..eddc48d4b101b2693f7c60aa388cc3f4774dcf68 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/output.mpd b/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/output.mpd index 0a76506d2f..2f573473c8 100644 --- a/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/output.mpd +++ b/packager/app/test/testdata/live-profile-and-encryption-and-non-dash-if-iop/output.mpd @@ -3,14 +3,15 @@ - + AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA== - + + diff --git a/packager/app/test/testdata/live-profile-and-encryption/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile-and-encryption/bear-640x360-video-1.m4s index c8e0ec8cfa6add9df9dea33d5aac40f12d250b09..eddc48d4b101b2693f7c60aa388cc3f4774dcf68 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-profile-and-encryption/output.mpd b/packager/app/test/testdata/live-profile-and-encryption/output.mpd index ebd3702b39..416e419b6f 100644 --- a/packager/app/test/testdata/live-profile-and-encryption/output.mpd +++ b/packager/app/test/testdata/live-profile-and-encryption/output.mpd @@ -7,10 +7,11 @@ AAAANHBzc2gBAAAAEHfv7MCyTQKs4zweUuL7SwAAAAExMjM0NTY3ODkwMTIzNDU2AAAAAA== - + - + + diff --git a/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/bear-640x360-video-1.m4s index c8e0ec8cfa6add9df9dea33d5aac40f12d250b09..eddc48d4b101b2693f7c60aa388cc3f4774dcf68 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/output.mpd b/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/output.mpd index be06661a74..d1faca5262 100644 --- a/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/output.mpd +++ b/packager/app/test/testdata/live-profile-and-key-rotation-and-no-pssh-in-stream/output.mpd @@ -5,10 +5,11 @@ - + - + + diff --git a/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/bear-640x360-video-1.m4s index 5ff1a7ced3a820ba9d483e563c6c7389e7ca507e..6fcbc85250059fe8368afb2371bf1ddef993fa14 100644 GIT binary patch delta 38 ncmey`!S=O-ZGx2;0}L=SFt(^NFw`ncU|_%07_c>fQMCmCv<3+n delta 38 ocmey`!S=O-ZGx2;`y~blU}RuyQDtB#^_u|XHwJ7CU{q}Z0LHorJ^%m! diff --git a/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/output.mpd b/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/output.mpd index 4fbecc5254..51a6f3df78 100644 --- a/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/output.mpd +++ b/packager/app/test/testdata/live-profile-and-key-rotation-and-non-dash-if-iop/output.mpd @@ -3,12 +3,13 @@ - + - + + diff --git a/packager/app/test/testdata/live-profile-and-key-rotation/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile-and-key-rotation/bear-640x360-video-1.m4s index 5ff1a7ced3a820ba9d483e563c6c7389e7ca507e..6fcbc85250059fe8368afb2371bf1ddef993fa14 100644 GIT binary patch delta 38 ncmey`!S=O-ZGx2;0}L=SFt(^NFw`ncU|_%07_c>fQMCmCv<3+n delta 38 ocmey`!S=O-ZGx2;`y~blU}RuyQDtB#^_u|XHwJ7CU{q}Z0LHorJ^%m! diff --git a/packager/app/test/testdata/live-profile-and-key-rotation/output.mpd b/packager/app/test/testdata/live-profile-and-key-rotation/output.mpd index cb0c0d801b..4c9eb7365c 100644 --- a/packager/app/test/testdata/live-profile-and-key-rotation/output.mpd +++ b/packager/app/test/testdata/live-profile-and-key-rotation/output.mpd @@ -5,10 +5,11 @@ - + - + + diff --git a/packager/app/test/testdata/live-profile/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-profile/bear-640x360-video-1.m4s index e8a21a613c3bb3799226baaf66bb6338bd12d28b..82605ec2c30428a0cff9d9f6c124502f65de509c 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-profile/output.mpd b/packager/app/test/testdata/live-profile/output.mpd index 8482505bfb..b77da2c78f 100644 --- a/packager/app/test/testdata/live-profile/output.mpd +++ b/packager/app/test/testdata/live-profile/output.mpd @@ -3,10 +3,11 @@ - + - + + diff --git a/packager/app/test/testdata/live-static-profile-and-ad-cues/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-static-profile-and-ad-cues/bear-640x360-video-1.m4s index e8a21a613c3bb3799226baaf66bb6338bd12d28b..82605ec2c30428a0cff9d9f6c124502f65de509c 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-static-profile-and-ad-cues/output.mpd b/packager/app/test/testdata/live-static-profile-and-ad-cues/output.mpd index 67589ed6f1..6402c84a12 100644 --- a/packager/app/test/testdata/live-static-profile-and-ad-cues/output.mpd +++ b/packager/app/test/testdata/live-static-profile-and-ad-cues/output.mpd @@ -1,12 +1,13 @@ - - + + - + - + + diff --git a/packager/app/test/testdata/live-static-profile/bear-640x360-video-1.m4s b/packager/app/test/testdata/live-static-profile/bear-640x360-video-1.m4s index e8a21a613c3bb3799226baaf66bb6338bd12d28b..82605ec2c30428a0cff9d9f6c124502f65de509c 100644 GIT binary patch delta 38 ncmX@u!FI5NZGx2;0}L=SFgAZ=V5n7?z`%Z~F<@%|+d delta 38 ocmX@u!FI5NZGx2;`y~blU}Ruy{>Z>k>Nf$%Zw%NP!1%El0LCl|YybcN diff --git a/packager/app/test/testdata/live-static-profile/output.mpd b/packager/app/test/testdata/live-static-profile/output.mpd index 6544f9a5bc..5c2a2b0a90 100644 --- a/packager/app/test/testdata/live-static-profile/output.mpd +++ b/packager/app/test/testdata/live-static-profile/output.mpd @@ -1,12 +1,13 @@ - + - + - + + diff --git a/packager/app/test/testdata/opus-vp9-mp4-with-encryption/bear-320x240-vp9-opus-video.mp4 b/packager/app/test/testdata/opus-vp9-mp4-with-encryption/bear-320x240-vp9-opus-video.mp4 index 1e611f0a642cc6c124d2aaec090716c365952aea..199276410d5c369c63bf974f4c2c33b5a88c9ed2 100644 GIT binary patch delta 21 dcmcb#k>%1xmJPNnOcOeq?OC?lvoKB;0RUkq2Z8_q delta 21 dcmcb#k>%1xmJPNnObiUo_AJ}&Sr{ja0032|25JBR diff --git a/packager/app/test/testdata/opus-vp9-mp4-with-encryption/output.mpd b/packager/app/test/testdata/opus-vp9-mp4-with-encryption/output.mpd index 72210e76d3..a593f3f41a 100644 --- a/packager/app/test/testdata/opus-vp9-mp4-with-encryption/output.mpd +++ b/packager/app/test/testdata/opus-vp9-mp4-with-encryption/output.mpd @@ -10,7 +10,7 @@ bear-320x240-vp9-opus-audio.mp4 - + @@ -22,7 +22,7 @@ bear-320x240-vp9-opus-video.mp4 - + diff --git a/packager/app/test/testdata/video-audio-text/bear-640x360-video.mp4 b/packager/app/test/testdata/video-audio-text/bear-640x360-video.mp4 index a4315c32cb8fb1c703a43d431a62cad181fc0df1..9ea15d763dcd94daf378c853dc0063b979afeb4f 100644 GIT binary patch delta 37 qcmaF4Md;-gp$)OjY_$p#7}zg0Co{JvGcy7)6A&|RPiAIen+^a6_Y3a; delta 37 qcmaF4Md;-gp$)OjY^8n^7#J9ulbPF-nHhnY35c1uCo{9KO$Pw^4+}g1 diff --git a/packager/app/test/testdata/video-audio-text/output.mpd b/packager/app/test/testdata/video-audio-text/output.mpd index bc3952e791..ad7e4a7d4b 100644 --- a/packager/app/test/testdata/video-audio-text/output.mpd +++ b/packager/app/test/testdata/video-audio-text/output.mpd @@ -1,6 +1,6 @@ - + diff --git a/packager/app/test/testdata/vp8-mp4-with-encryption/bear-640x360-video.mp4 b/packager/app/test/testdata/vp8-mp4-with-encryption/bear-640x360-video.mp4 index 8c3c919a137edfff5c011c0fd2bede00b4741cf5..dbfd1689cc46e9df99a436fbd19797bcb65b38b4 100644 GIT binary patch delta 21 ccmbQz&pxG}eS<6uQ|g3fd6w<+ER3ax0ZzUK)&Kwi delta 21 ccmbQz&pxG}eS<6u69YrDJj-@@7RJ)U07S bear-640x360-video.mp4 - + diff --git a/packager/app/test/testdata/vp8-webm/output.mpd b/packager/app/test/testdata/vp8-webm/output.mpd index e4a1fd8473..665cffa84d 100644 --- a/packager/app/test/testdata/vp8-webm/output.mpd +++ b/packager/app/test/testdata/vp8-webm/output.mpd @@ -5,7 +5,7 @@ bear-640x360-video.webm - + diff --git a/packager/app/test/testdata/vp9-webm/output.mpd b/packager/app/test/testdata/vp9-webm/output.mpd index 7f61377760..2b37025f13 100644 --- a/packager/app/test/testdata/vp9-webm/output.mpd +++ b/packager/app/test/testdata/vp9-webm/output.mpd @@ -6,7 +6,7 @@ bear-320x240-vp9-opus-audio.webm - + @@ -14,7 +14,7 @@ bear-320x240-vp9-opus-video.webm - + diff --git a/packager/app/test/testdata/webm-with-encryption/output.mpd b/packager/app/test/testdata/webm-with-encryption/output.mpd index 2e780a0818..a7c3f5b80c 100644 --- a/packager/app/test/testdata/webm-with-encryption/output.mpd +++ b/packager/app/test/testdata/webm-with-encryption/output.mpd @@ -8,7 +8,7 @@ bear-640x360-video.webm - + diff --git a/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/bear-multi-configs-0.mp4 b/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/bear-multi-configs-0.mp4 index 5dfff29f96300bfc0fea0f93ce0ff2db3420054b..7c24e9e5091db7e643224262835ce91c895d64dc 100644 GIT binary patch delta 41 tcmX@OiT&Uv_6;7)Vr~Hp5Wvj9FncotV|l^^2Jy1yIOgqf%#4q(0s!mb3zq-@ delta 41 qcmX@OiT&Uv_6;7)Vhk|A%)l^vGXrD%s|i4n<~Zi2jc($ delta 17 ZcmaF+oayazrVZT8ObiU0d6^$<002dL2EYIS diff --git a/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/output.mpd b/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/output.mpd index aaf48a7524..b21f042c4f 100644 --- a/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/output.mpd +++ b/packager/app/test/testdata/wvm-input-without-stripping-parameters-set-nalus/output.mpd @@ -1,17 +1,17 @@ - + bear-multi-configs-0.mp4 - + bear-multi-configs-2.mp4 - + @@ -20,14 +20,14 @@ bear-multi-configs-1.mp4 - + bear-multi-configs-3.mp4 - + diff --git a/packager/app/test/testdata/wvm-input/bear-multi-configs-0.mp4 b/packager/app/test/testdata/wvm-input/bear-multi-configs-0.mp4 index 9e3752e3b34892f43e48772ed134cf7bf7ee94b4..f2db8721e4dd7b036527022a04ef1473745d2971 100644 GIT binary patch delta 41 scmcb-k^S;U_6b{gLqkU67%*XX2!y+0Pao;EdT%j delta 41 pcmcb-k^S;U_67nVDtb1OR9J B4W0l1 delta 53 ycmZo!A=I)$XoD}a7y}G2GcY!PWMGVcH32BnoXp&w%*+VHOhC-MJ(-zh;RFCqVGQj6 diff --git a/packager/app/test/testdata/wvm-input/bear-multi-configs-3.mp4 b/packager/app/test/testdata/wvm-input/bear-multi-configs-3.mp4 index d7a846f1b8bc276968105b4c81a81e0c7ee0ba99..c5ec848107f61607830cc2bf43d89555f7e48288 100644 GIT binary patch delta 17 ZcmaF+oayazrVZT8OtHr{^D;l!002y>2jc($ delta 17 ZcmaF+oayazrVZT8ObiU0d6^$<002dL2EYIS diff --git a/packager/app/test/testdata/wvm-input/output.mpd b/packager/app/test/testdata/wvm-input/output.mpd index 1c0e71ab9d..c6ee7e7779 100644 --- a/packager/app/test/testdata/wvm-input/output.mpd +++ b/packager/app/test/testdata/wvm-input/output.mpd @@ -1,17 +1,17 @@ - + bear-multi-configs-0.mp4 - + bear-multi-configs-2.mp4 - + @@ -20,14 +20,14 @@ bear-multi-configs-1.mp4 - + bear-multi-configs-3.mp4 - + diff --git a/packager/media/formats/mp4/fragmenter.cc b/packager/media/formats/mp4/fragmenter.cc index 166abb4c79..d637e467ce 100644 --- a/packager/media/formats/mp4/fragmenter.cc +++ b/packager/media/formats/mp4/fragmenter.cc @@ -6,6 +6,7 @@ #include "packager/media/formats/mp4/fragmenter.h" +#include #include #include "packager/media/base/audio_stream_info.h" @@ -150,6 +151,24 @@ Status Fragmenter::FinalizeFragment() { return status; } + if (first_fragment_) { + // Chrome (as of v66 https://crbug.com/398141) does not like negative values + // for adjusted dts = dts + Period@start (0 for first Period) + // - presentationTimeOffset + // Since |earliest_presentation_time| of the first fragment will be used to + // set presentationTimeOffset, the adjusted dts can become negative for the + // frames in the first segment in the first Period. To avoid seeing that, + // |earliest_presentation_time| is adjusted so it is not larger than the + // dts. + const int64_t dts = traf_->decode_time.decode_time; + if (earliest_presentation_time_ > dts) { + const uint64_t delta = earliest_presentation_time_ - dts; + earliest_presentation_time_ = dts; + fragment_duration_ += delta; + } + first_fragment_ = false; + } + // Optimize trun box. traf_->runs[0].sample_count = static_cast(traf_->runs[0].sample_sizes.size()); @@ -208,7 +227,7 @@ Status Fragmenter::FinalizeFragment() { return Status::OK; } -void Fragmenter::GenerateSegmentReference(SegmentReference* reference) { +void Fragmenter::GenerateSegmentReference(SegmentReference* reference) const { // NOTE: Daisy chain is not supported currently. reference->reference_type = false; reference->subsegment_duration = fragment_duration_; @@ -275,7 +294,7 @@ Status Fragmenter::FinalizeFragmentForEncryption() { return Status::OK; } -bool Fragmenter::StartsWithSAP() { +bool Fragmenter::StartsWithSAP() const { DCHECK(!traf_->runs.empty()); uint32_t start_sample_flag; if (traf_->runs[0].flags & TrackFragmentRun::kSampleFlagsPresentMask) { diff --git a/packager/media/formats/mp4/fragmenter.h b/packager/media/formats/mp4/fragmenter.h index 8870077754..4edf5c116b 100644 --- a/packager/media/formats/mp4/fragmenter.h +++ b/packager/media/formats/mp4/fragmenter.h @@ -51,7 +51,7 @@ class Fragmenter { Status FinalizeFragment(); /// Fill @a reference with current fragment information. - void GenerateSegmentReference(SegmentReference* reference); + void GenerateSegmentReference(SegmentReference* reference) const; void ClearFragmentFinalized() { fragment_finalized_ = false; } @@ -88,7 +88,7 @@ class Fragmenter { private: Status FinalizeFragmentForEncryption(); // Check if the current fragment starts with SAP. - bool StartsWithSAP(); + bool StartsWithSAP() const; std::shared_ptr stream_info_; bool use_decoding_timestamp_in_timeline_; @@ -98,6 +98,7 @@ class Fragmenter { bool fragment_finalized_; uint64_t fragment_duration_; int64_t earliest_presentation_time_; + bool first_fragment_ = true; int64_t first_sap_time_; std::unique_ptr data_; // Saves key frames information, for Video. diff --git a/packager/media/formats/mp4/single_segment_segmenter.cc b/packager/media/formats/mp4/single_segment_segmenter.cc index 409cdac680..7c54d9235a 100644 --- a/packager/media/formats/mp4/single_segment_segmenter.cc +++ b/packager/media/formats/mp4/single_segment_segmenter.cc @@ -196,25 +196,7 @@ Status SingleSegmentSegmenter::DoFinalizeSegment() { vod_sidx_.reset(new SegmentIndex()); vod_sidx_->reference_id = sidx()->reference_id; vod_sidx_->timescale = sidx()->timescale; - - if (vod_ref.earliest_presentation_time > 0) { - const double starting_time_in_seconds = - static_cast(vod_ref.earliest_presentation_time) / - GetReferenceTimeScale(); - // Give a warning if it is significant. - if (starting_time_in_seconds > 0.5) { - // Note that DASH IF player requires presentationTimeOffset to be set in - // Segment{Base,List,Template} if there is non-zero starting time. Since - // current Chromium's MSE implementation uses DTS, the player expects - // DTS to be used. - LOG(WARNING) << "Warning! Non-zero starting time (in seconds): " - << starting_time_in_seconds - << ". Manual adjustment of presentationTimeOffset in " - "mpd might be necessary."; - } - } - // Force earliest_presentation_time to start from 0 for VOD. - vod_sidx_->earliest_presentation_time = 0; + vod_sidx_->earliest_presentation_time = vod_ref.earliest_presentation_time; } vod_sidx_->references.push_back(vod_ref); diff --git a/packager/mpd/base/mpd_builder.cc b/packager/mpd/base/mpd_builder.cc index 2845ed2517..5b9f940e88 100644 --- a/packager/mpd/base/mpd_builder.cc +++ b/packager/mpd/base/mpd_builder.cc @@ -353,7 +353,6 @@ bool MpdBuilder::GetEarliestTimestamp(double* timestamp_seconds) { void MpdBuilder::UpdatePeriodDurationAndPresentationTimestamp() { DCHECK_EQ(MpdType::kStatic, mpd_options_.mpd_type); - bool first_period = true; for (const auto& period : periods_) { std::list video_representations; std::list non_video_representations; @@ -393,21 +392,6 @@ void MpdBuilder::UpdatePeriodDurationAndPresentationTimestamp() { period->set_duration_seconds(*latest_end_time - *earliest_start_time); double presentation_time_offset = *earliest_start_time; - if (first_period) { - first_period = false; - // Chrome does not like negative dts (https://crbug.com/398141). - // Always set presentationTimeOffset (pto) to 0 for the first period as it - // may result in an error on Chrome v63.0.3239.132 if it sets to a non - // zero value. - // It is fine with subsequent periods as the actual offset applied takes - // Period@start into consideration: - // offset = Period@start - presentationTimeOffset - // The result timestamp with offset applied is close to Period@start, so - // it is unlikely to result in a negative dts value. - // TODO(kqyang): Set the pto to |dts| instead of always setting it to 0 to - // workaround Chrome negative DTS bug. - presentation_time_offset = 0; - } for (const auto& adaptation_set : period->GetAdaptationSets()) { for (const auto& representation : adaptation_set->GetRepresentations()) { representation->SetPresentationTimeOffset(presentation_time_offset); diff --git a/packager/mpd/base/mpd_builder_unittest.cc b/packager/mpd/base/mpd_builder_unittest.cc index 0d26da23da..fd2509812b 100644 --- a/packager/mpd/base/mpd_builder_unittest.cc +++ b/packager/mpd/base/mpd_builder_unittest.cc @@ -174,6 +174,29 @@ TEST_F(OnDemandMpdBuilderTest, MediaInfoMissingBandwidth) { ASSERT_FALSE(mpd_.ToString(&mpd_doc)); } +TEST_F(OnDemandMpdBuilderTest, CheckXmlTest) { + // Disable pto adjustment. + FLAGS_pto_adjustment = 0; + + const double kPeriod1StartTimeSeconds = 0.0; + + // Actual period duration is determined by the segments not by the period + // start time above, which only provides an anchor point. + const double kPeriod1SegmentStartSeconds = 0.2; + const double kPeriod1SegmentDurationSeconds = 3.0; + + Period* period = mpd_.GetOrCreatePeriod(kPeriod1StartTimeSeconds); + AddSegmentToPeriod(kPeriod1SegmentStartSeconds, + kPeriod1SegmentDurationSeconds, period); + + std::string mpd_doc; + ASSERT_TRUE(mpd_.ToString(&mpd_doc)); + EXPECT_THAT(mpd_doc, HasSubstr("\n")); + EXPECT_THAT(mpd_doc, + HasSubstr("")); +} + TEST_F(OnDemandMpdBuilderTest, MultiplePeriodTest) { const double kPeriodStartTimeSeconds = 1.0; Period* period = mpd_.GetOrCreatePeriod(kPeriodStartTimeSeconds); @@ -226,17 +249,19 @@ TEST_F(OnDemandMpdBuilderTest, MultiplePeriodCheckXmlTest) { std::string mpd_doc; ASSERT_TRUE(mpd_.ToString(&mpd_doc)); EXPECT_THAT(mpd_doc, HasSubstr("\n")); + EXPECT_THAT(mpd_doc, + HasSubstr("")); + EXPECT_THAT(mpd_doc, HasSubstr("\n")); EXPECT_THAT( mpd_doc, - HasSubstr("")); - EXPECT_THAT(mpd_doc, HasSubstr("\n")); - EXPECT_THAT(mpd_doc, - HasSubstr("")); + HasSubstr("")); EXPECT_THAT(mpd_doc, HasSubstr("\n")); - EXPECT_THAT(mpd_doc, - HasSubstr("")); + EXPECT_THAT( + mpd_doc, + HasSubstr("")); } TEST_F(LiveMpdBuilderTest, MultiplePeriodCheckXmlTest) {