Merge "CCodec: read usage from component and apply to input buffers"
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 9c1df71..a4d2110 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -967,6 +967,7 @@
C2AndroidMemoryUsage androidUsage(C2MemoryUsage(usage.value));
config->mISConfig->mUsage = androidUsage.asGrallocUsage();
}
+ config->mInputFormat->setInt64("android._C2MemoryUsage", usage.value);
}
// NOTE: we don't blindly use client specified input size if specified as clients
diff --git a/media/codec2/sfplugin/CCodecBuffers.cpp b/media/codec2/sfplugin/CCodecBuffers.cpp
index 566a18f..dd28b6a 100644
--- a/media/codec2/sfplugin/CCodecBuffers.cpp
+++ b/media/codec2/sfplugin/CCodecBuffers.cpp
@@ -807,8 +807,9 @@
capacity = kMaxLinearBufferSize;
}
- // TODO: read usage from intf
- C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
+ int64_t usageValue = 0;
+ (void)format->findInt64("android._C2MemoryUsage", &usageValue);
+ C2MemoryUsage usage{usageValue | C2MemoryUsage::CPU_READ | C2MemoryUsage::CPU_WRITE};
std::shared_ptr<C2LinearBlock> block;
c2_status_t err = pool->fetchLinearBlock(capacity, usage, &block);
@@ -1040,8 +1041,9 @@
}
sp<Codec2Buffer> GraphicInputBuffers::createNewBuffer() {
- // TODO: read usage from intf
- C2MemoryUsage usage = { C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE };
+ int64_t usageValue = 0;
+ (void)mFormat->findInt64("android._C2MemoryUsage", &usageValue);
+ C2MemoryUsage usage{usageValue | C2MemoryUsage::CPU_READ | C2MemoryUsage::CPU_WRITE};
return AllocateGraphicBuffer(
mPool, mFormat, HAL_PIXEL_FORMAT_YV12, usage, mLocalBufferPool);
}