diff options
| -rw-r--r-- | media/jni/android_media_MediaCodec.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp index 61c287b9633c..ae54c18eb135 100644 --- a/media/jni/android_media_MediaCodec.cpp +++ b/media/jni/android_media_MediaCodec.cpp @@ -2990,11 +2990,16 @@ static void extractMemoryFromContext( } *memory = context->toHidlMemory(); } - if (context->mBlock == nullptr || context->mReadWriteMapping == nullptr) { - ALOGW("extractMemoryFromContext: Cannot extract memory as C2Block is not created/mapped"); + if (context->mBlock == nullptr) { + // this should be ok as we may only have IMemory/hidlMemory + // e.g. video codecs may only have IMemory and no mBlock return; } - if (context->mReadWriteMapping->error() != C2_OK) { + + // if we have mBlock and memory, then we will copy data from mBlock to hidlMemory + // e.g. audio codecs may only have mBlock and wanted to decrypt using hidlMemory + // and also wanted to re-use mBlock + if (context->mReadWriteMapping == nullptr || context->mReadWriteMapping->error() != C2_OK) { ALOGW("extractMemoryFromContext: failed to map C2Block (%d)", context->mReadWriteMapping->error()); return; |