Fix decoder buffer usage
it needs `write` access to populate images
Bug: 285100511
Test: play a YouTube video
Signed-off-by: Roman Kiryanov <rkir@google.com>
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:b06dcedbb89a9d4b77e81f401bb8a862d5db77d7)
Merged-In: I906af8a70a1e58827d59cabf19870752b72d5b35
Change-Id: I906af8a70a1e58827d59cabf19870752b72d5b35
diff --git a/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp b/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
index a4a9a1d..8ae1d0a 100644
--- a/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
+++ b/system/codecs/c2/decoders/avcdec/C2GoldfishAvcDec.cpp
@@ -719,8 +719,8 @@
}
if (!mOutBlock) {
const uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
- const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
- (uint64_t)(BufferUsage::VIDEO_DECODER)};
+ const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+ C2MemoryUsage::CPU_WRITE};
c2_status_t err = pool->fetchGraphicBlock(ALIGN2(mWidth), mHeight,
format, usage, &mOutBlock);
if (err != C2_OK) {
diff --git a/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp b/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
index a0cb8d5..e8d076d 100644
--- a/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
+++ b/system/codecs/c2/decoders/hevcdec/C2GoldfishHevcDec.cpp
@@ -667,8 +667,8 @@
}
if (!mOutBlock) {
const uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
- const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
- (uint64_t)(BufferUsage::VIDEO_DECODER)};
+ const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+ C2MemoryUsage::CPU_WRITE};
c2_status_t err = pool->fetchGraphicBlock(ALIGN2(mWidth), mHeight,
format, usage, &mOutBlock);
if (err != C2_OK) {
diff --git a/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp b/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
index 60a625f..6e6c651 100644
--- a/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
+++ b/system/codecs/c2/decoders/vpxdec/C2GoldfishVpxDec.cpp
@@ -724,8 +724,8 @@
// now get the block
std::shared_ptr<C2GraphicBlock> block;
uint32_t format = HAL_PIXEL_FORMAT_YCBCR_420_888;
- const C2MemoryUsage usage = {C2MemoryUsage::CPU_READ,
- (uint64_t)(BufferUsage::VIDEO_DECODER)};
+ const C2MemoryUsage usage = {(uint64_t)(BufferUsage::VIDEO_DECODER),
+ C2MemoryUsage::CPU_WRITE};
c2_status_t err = pool->fetchGraphicBlock(align(mWidth, 2), mHeight, format,
usage, &block);