Bug 1345545: Prepend SPS/PPS on first frame. r?jolin draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Wed, 08 Mar 2017 18:31:03 +0100
changeset 495370 46f86d6a6acabc501f8591bbd0da0e2a4d7d67cd
parent 495323 800ba54a4bd52628833c4db005ddd182586666c4
child 495753 7c6fc39a6769d55ef9db996f6371e7b368836765
child 495766 e7d02acbd411ee0d13ec2ad885c8ba04ad9d4c90
push id48305
push userbmo:jyavenard@mozilla.com
push dateWed, 08 Mar 2017 17:34:54 +0000
reviewersjolin
bugs1345545
milestone55.0a1
Bug 1345545: Prepend SPS/PPS on first frame. r?jolin MozReview-Commit-ID: 3UxVGjQcYtk
dom/media/platforms/wrappers/H264Converter.cpp
--- a/dom/media/platforms/wrappers/H264Converter.cpp
+++ b/dom/media/platforms/wrappers/H264Converter.cpp
@@ -272,29 +272,31 @@ H264Converter::OnDecoderInitFailed(const
 
 void
 H264Converter::DecodeFirstSample(MediaRawData* aSample)
 {
   if (mNeedKeyframe && !aSample->mKeyframe) {
     mDecodePromise.Resolve(DecodedData(), __func__);
     return;
   }
-  mNeedKeyframe = false;
 
   mNeedAVCC =
     Some(mDecoder->NeedsConversion() == ConversionRequired::kNeedAVCC);
 
   if (!*mNeedAVCC
       && !mp4_demuxer::AnnexB::ConvertSampleToAnnexB(aSample, mNeedKeyframe)) {
     mDecodePromise.Reject(
       MediaResult(NS_ERROR_OUT_OF_MEMORY,
                   RESULT_DETAIL("ConvertSampleToAnnexB")),
       __func__);
     return;
   }
+
+  mNeedKeyframe = false;
+
   if (CanRecycleDecoder()) {
     mDecoder->ConfigurationChanged(mCurrentConfig);
   }
   RefPtr<H264Converter> self = this;
   mDecoder->Decode(aSample)
     ->Then(AbstractThread::GetCurrent()->AsTaskQueue(), __func__,
            [self, this](const MediaDataDecoder::DecodedData& aResults) {
              mDecodePromiseRequest.Complete();