diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index 3dc927c6442f6..72dd2bd43eb62 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -2282,6 +2282,10 @@ final public class MediaCodec { */ public final void start() { native_start(); + synchronized(mBufferLock) { + cacheBuffers(true /* input */); + cacheBuffers(false /* input */); + } } private native final void native_start(); @@ -3912,9 +3916,6 @@ final public class MediaCodec { + "Please obtain MediaCodec.LinearBlock or HardwareBuffer " + "objects and attach to QueueRequest objects."); } - if (mCachedInputBuffers == null) { - cacheBuffers(true /* input */); - } if (mCachedInputBuffers == null) { throw new IllegalStateException(); } @@ -3953,9 +3954,6 @@ final public class MediaCodec { + "is not compatible with CONFIGURE_FLAG_USE_BLOCK_MODEL. " + "Please use getOutputFrame to get output frames."); } - if (mCachedOutputBuffers == null) { - cacheBuffers(false /* input */); - } if (mCachedOutputBuffers == null) { throw new IllegalStateException(); }