codec2: vts-video: align input buffer size for decoders
Hardware decoders expect minimum PAGE_SIZE alignment.
Test:
VtsHalMediaC2V1_0TargetVideoDecTest -C c2.qti.hevc.decoder -P /sdcard/res/ -I default
Bug: 135427312
Change-Id: I14ee2f93d644450679500d507e775ad16afead6d
diff --git a/media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp b/media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp
index 33fa848..0e20b47 100644
--- a/media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp
+++ b/media/codec2/hidl/1.0/vts/functional/video/VtsHalMediaC2V1_0TargetVideoDecTest.cpp
@@ -46,6 +46,10 @@
explicit LinearBuffer(const std::shared_ptr<C2LinearBlock>& block)
: C2Buffer(
{block->share(block->offset(), block->size(), ::C2Fence())}) {}
+
+ explicit LinearBuffer(const std::shared_ptr<C2LinearBlock>& block, size_t size)
+ : C2Buffer(
+ {block->share(block->offset(), size, ::C2Fence())}) {}
};
static ComponentTestEnvironment* gEnv = nullptr;
@@ -371,11 +375,12 @@
ASSERT_EQ(eleStream.gcount(), size);
work->input.buffers.clear();
+ auto alignedSize = ALIGN(size, PAGE_SIZE);
if (size) {
std::shared_ptr<C2LinearBlock> block;
ASSERT_EQ(C2_OK,
linearPool->fetchLinearBlock(
- size, {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE},
+ alignedSize, {C2MemoryUsage::CPU_READ, C2MemoryUsage::CPU_WRITE},
&block));
ASSERT_TRUE(block);
@@ -385,13 +390,13 @@
fprintf(stderr, "C2LinearBlock::map() failed : %d", view.error());
break;
}
- ASSERT_EQ((size_t)size, view.capacity());
+ ASSERT_EQ((size_t)alignedSize, view.capacity());
ASSERT_EQ(0u, view.offset());
- ASSERT_EQ((size_t)size, view.size());
+ ASSERT_EQ((size_t)alignedSize, view.size());
memcpy(view.base(), data, size);
- work->input.buffers.emplace_back(new LinearBuffer(block));
+ work->input.buffers.emplace_back(new LinearBuffer(block, size));
free(data);
}
work->worklets.clear();
diff --git a/media/codec2/hidl/1.0/vts/functional/video/media_c2_video_hidl_test_common.h b/media/codec2/hidl/1.0/vts/functional/video/media_c2_video_hidl_test_common.h
index dd45557..e37ca38 100644
--- a/media/codec2/hidl/1.0/vts/functional/video/media_c2_video_hidl_test_common.h
+++ b/media/codec2/hidl/1.0/vts/functional/video/media_c2_video_hidl_test_common.h
@@ -23,6 +23,8 @@
#define ENC_DEFAULT_FRAME_HEIGHT 288
#define MAX_ITERATIONS 128
+#define ALIGN(_sz, _align) ((_sz + (_align - 1)) & ~(_align - 1))
+
/*
* Common video utils
*/