Bug 1378507: Add extra check to ensure data is valid. r?gerald draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Thu, 06 Jul 2017 09:28:48 +0200
changeset 604639 e3ee90ef7bcd6cfe4b67dc9fdedfffccdb3b0c82
parent 604638 835c7bb9534cd7bbbeb49d4316f1bac1749479c2
child 636249 1303dfd9111d7068edccee574987ec3b6075d1c3
push id67142
push userbmo:jyavenard@mozilla.com
push dateThu, 06 Jul 2017 07:33:33 +0000
reviewersgerald
bugs1378507
milestone56.0a1
Bug 1378507: Add extra check to ensure data is valid. r?gerald MP4TrackDemuxer::GetNextSamples set mExtraData and it should be valid. This sample will later be rejected by the H264Converter. The case would also fail if the video codec was VP9. MozReview-Commit-ID: 5nXoRFJ6ntx
dom/media/fmp4/MP4Demuxer.cpp
--- a/dom/media/fmp4/MP4Demuxer.cpp
+++ b/dom/media/fmp4/MP4Demuxer.cpp
@@ -515,17 +515,18 @@ MP4TrackDemuxer::GetSamples(int32_t aNum
   }
 
   if (samples->mSamples.IsEmpty()) {
     return SamplesPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
                                            __func__);
   }
   for (const auto& sample : samples->mSamples) {
     // Collect telemetry from h264 Annex B SPS.
-    if (mNeedSPSForTelemetry) {
+    if (mNeedSPSForTelemetry && mIsH264 &&
+        mp4_demuxer::AnnexB::IsAVCC(sample)) {
       RefPtr<MediaByteBuffer> extradata =
         mp4_demuxer::H264::ExtractExtraData(sample);
       if (mp4_demuxer::H264::HasSPS(extradata)) {
         RefPtr<MediaByteBuffer> extradata =
           mp4_demuxer::H264::ExtractExtraData(sample);
         mNeedSPSForTelemetry = AccumulateSPSTelemetry(extradata);
       }
     }