Bug 1314863 - Data sample fed potentially fed twice to the decoder. r=jya

MozReview-Commit-ID: 2TmHiLju0C4

--HG--
extra : rebase_source : a364a4b53dc9bc5b33395f18a16264256cace71f
This commit is contained in:
James Cheng 2016-11-10 14:53:15 +08:00
parent 3e0d037fe5
commit 281025dce6

View File

@ -86,6 +86,11 @@ H264Converter::Input(MediaRawData* aSample)
}
} else {
rv = CheckForSPSChange(aSample);
if (rv == NS_ERROR_NOT_INITIALIZED) {
// Decoder has not yet initialized.
mCallback->InputExhausted();
return;
}
}
if (NS_FAILED(rv)) {
mCallback->Error(
@ -229,7 +234,7 @@ H264Converter::CreateDecoderAndInit(MediaRawData* aSample)
&H264Converter::OnDecoderInitDone,
&H264Converter::OnDecoderInitFailed));
}
return rv;
return NS_ERROR_NOT_INITIALIZED;
}
void
@ -245,6 +250,12 @@ H264Converter::OnDecoderInitDone(const TrackType aTrackType)
}
mNeedKeyframe = false;
}
if (!mNeedAVCC &&
!mp4_demuxer::AnnexB::ConvertSampleToAnnexB(sample, mNeedKeyframe)) {
mCallback->Error(MediaResult(NS_ERROR_OUT_OF_MEMORY,
RESULT_DETAIL("ConvertSampleToAnnexB")));
return;
}
mDecoder->Input(sample);
}
if (!gotInput) {