Bug 1347518 - P2. Don't attempt to determine frame type when encrypted. r?cpearce draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Mon, 21 Aug 2017 18:54:44 +0200
changeset 650733 71a7d309f6cf8d4c8828c0eb7422cb5b54b7cdbc
parent 650732 b79c260ed4dd758df1a133a533d1897afbae4ee1
child 727475 cb2e544191f837c9358b0e52cfbd4cd20cb71f81
push id75474
push userbmo:jyavenard@mozilla.com
push dateTue, 22 Aug 2017 19:30:02 +0000
reviewerscpearce
bugs1347518
milestone57.0a1
Bug 1347518 - P2. Don't attempt to determine frame type when encrypted. r?cpearce The data being encrypted, is nonsensical. So we always rely on the container information MozReview-Commit-ID: 4uQ9l3Q1Ebl
dom/media/fmp4/MP4Demuxer.cpp
--- a/dom/media/fmp4/MP4Demuxer.cpp
+++ b/dom/media/fmp4/MP4Demuxer.cpp
@@ -431,17 +431,17 @@ already_AddRefed<MediaRawData>
 MP4TrackDemuxer::GetNextSample()
 {
   RefPtr<MediaRawData> sample = mIterator->GetNext();
   if (!sample) {
     return nullptr;
   }
   if (mInfo->GetAsVideoInfo()) {
     sample->mExtraData = mInfo->GetAsVideoInfo()->mExtraData;
-    if (mIsH264) {
+    if (mIsH264 && !sample->mCrypto.mValid) {
       mp4_demuxer::H264::FrameType type =
         mp4_demuxer::H264::GetFrameType(sample);
       switch (type) {
         case mp4_demuxer::H264::FrameType::I_FRAME: MOZ_FALLTHROUGH;
         case mp4_demuxer::H264::FrameType::OTHER:
         {
           bool keyframe = type == mp4_demuxer::H264::FrameType::I_FRAME;
           if (sample->mKeyframe != keyframe) {