diff --git a/dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp b/dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp index 0446f691b77..fc20b562de0 100644 --- a/dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp +++ b/dom/media/fmp4/gonk/GonkAudioDecoderManager.cpp @@ -247,4 +247,14 @@ void GonkAudioDecoderManager::ReleaseAudioBuffer() { } } +nsresult +GonkAudioDecoderManager::Flush() +{ + GonkDecoderManager::Flush(); + status_t err = mDecoder->flush(); + if (err != OK) { + return NS_ERROR_FAILURE; + } + return NS_OK; +} } // namespace mozilla diff --git a/dom/media/fmp4/gonk/GonkAudioDecoderManager.h b/dom/media/fmp4/gonk/GonkAudioDecoderManager.h index 6409350dae9..a10c87eff02 100644 --- a/dom/media/fmp4/gonk/GonkAudioDecoderManager.h +++ b/dom/media/fmp4/gonk/GonkAudioDecoderManager.h @@ -32,6 +32,8 @@ public: virtual nsresult Output(int64_t aStreamOffset, nsRefPtr& aOutput) MOZ_OVERRIDE; + virtual nsresult Flush() MOZ_OVERRIDE; + protected: virtual bool PerformFormatSpecificProcess(mp4_demuxer::MP4Sample* aSample) MOZ_OVERRIDE; diff --git a/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp b/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp index cee59176414..3e3ad61c5ef 100644 --- a/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp +++ b/dom/media/fmp4/gonk/GonkMediaDataDecoder.cpp @@ -234,7 +234,7 @@ GonkMediaDataDecoder::Flush() // it's executing at all. Note the MP4Reader ignores all output while // flushing. mTaskQueue->Flush(); - + mDrainComplete = false; return mManager->Flush(); }