CCodec: add missing use of input stream usage
Add the component's input stream usage flags to two input buffer
allocation sites where it was missing.
Bug: 194634369, Bug: 194634017
Test: MediaDrmClearkeyTest#testClearKeyPlaybackCenc on ARCVM w/5.10
Test: DashTest#testWidevine23FpsH264Fixed on ARCVM w/5.10
Change-Id: Idc1817789d472b75f2872c5c269efc1264d05b1b
diff --git a/media/codec2/sfplugin/CCodecBuffers.cpp b/media/codec2/sfplugin/CCodecBuffers.cpp
index 29cc564..f846b7e 100644
--- a/media/codec2/sfplugin/CCodecBuffers.cpp
+++ b/media/codec2/sfplugin/CCodecBuffers.cpp
@@ -33,7 +33,7 @@
namespace {
-sp<GraphicBlockBuffer> AllocateGraphicBuffer(
+sp<GraphicBlockBuffer> AllocateInputGraphicBuffer(
const std::shared_ptr<C2BlockPool> &pool,
const sp<AMessage> &format,
uint32_t pixelFormat,
@@ -45,9 +45,13 @@
return nullptr;
}
+ int64_t usageValue = 0;
+ (void)format->findInt64("android._C2MemoryUsage", &usageValue);
+ C2MemoryUsage fullUsage{usageValue | usage.expected};
+
std::shared_ptr<C2GraphicBlock> block;
c2_status_t err = pool->fetchGraphicBlock(
- width, height, pixelFormat, usage, &block);
+ width, height, pixelFormat, fullUsage, &block);
if (err != C2_OK) {
ALOGD("fetch graphic block failed: %d", err);
return nullptr;
@@ -884,6 +888,10 @@
return nullptr;
}
+ int64_t usageValue = 0;
+ (void)format->findInt64("android._C2MemoryUsage", &usageValue);
+ usage = C2MemoryUsage(usage.expected | usageValue);
+
std::shared_ptr<C2LinearBlock> block;
c2_status_t err = pool->fetchLinearBlock(capacity, usage, &block);
if (err != C2_OK || block == nullptr) {
@@ -1028,7 +1036,7 @@
[pool = mPool, format = mFormat, lbp = mLocalBufferPool, pixelFormat]()
-> sp<Codec2Buffer> {
C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
- return AllocateGraphicBuffer(
+ return AllocateInputGraphicBuffer(
pool, format, pixelFormat, usage, lbp);
});
return std::move(array);
@@ -1039,10 +1047,8 @@
}
sp<Codec2Buffer> GraphicInputBuffers::createNewBuffer() {
- int64_t usageValue = 0;
- (void)mFormat->findInt64("android._C2MemoryUsage", &usageValue);
- C2MemoryUsage usage{usageValue | C2MemoryUsage::CPU_READ | C2MemoryUsage::CPU_WRITE};
- return AllocateGraphicBuffer(
+ C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
+ return AllocateInputGraphicBuffer(
mPool, mFormat, extractPixelFormat(mFormat), usage, mLocalBufferPool);
}