Bug 1362969 - Flush MediaCodec only when necessary. r?esawin
MozReview-Commit-ID: FgfEnqwnZ58
--- a/dom/media/platforms/android/MediaCodecDataDecoder.cpp
+++ b/dom/media/platforms/android/MediaCodecDataDecoder.cpp
@@ -462,17 +462,21 @@ MediaCodecDataDecoder::WaitForInput()
already_AddRefed<MediaRawData>
MediaCodecDataDecoder::PeekNextSample()
{
MonitorAutoLock lock(mMonitor);
if (mState == ModuleState::kFlushing) {
- mDecoder->Flush();
+ // Flush MediaCodec only when there is input in progress to works around a bug
+ // in some Android 4.2.2 devices. See bug 1362969.
+ if (!mDurations.empty()) {
+ mDecoder->Flush();
+ }
ClearQueue();
SetState(ModuleState::kDecoding);
lock.Notify();
return nullptr;
}
if (mQueue.empty()) {
if (mState == ModuleState::kDrainQueue) {