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
--- 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);
}
}