From d59a075f79b97245badba32fc54149769512a21b Mon Sep 17 00:00:00 2001 From: Wonsik Kim Date: Mon, 9 May 2022 16:44:15 -0700 Subject: [PATCH] MediaCodec: don't cache buffers until requested Bug: 189889230 Test: manual & presubmit Change-Id: I4caca59d6854416cedb6758fe66aefaacb69beb7 (cherry picked from commit 07358dfea5d63baf80608536c2a3dff6ed0f44e1) Merged-In: I4caca59d6854416cedb6758fe66aefaacb69beb7 --- media/java/android/media/MediaCodec.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java index e39914db4d0ff..d5b7adaeb57b9 100644 --- a/media/java/android/media/MediaCodec.java +++ b/media/java/android/media/MediaCodec.java @@ -2317,10 +2317,6 @@ final public class MediaCodec { */ public final void start() { native_start(); - synchronized(mBufferLock) { - cacheBuffers(true /* input */); - cacheBuffers(false /* input */); - } } private native final void native_start(); @@ -3951,6 +3947,9 @@ 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(); } @@ -3989,6 +3988,9 @@ 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(); }