MediaCodec: realloc & copy for non-secure buffers at secure session & vice versa
Bug: 159714043
Test: manual
Test: atest android.media.codec.cts.MediaCodecBlockModelTest
Change-Id: Ie44dcd1b2ce13c4219a388ad19c7662db8aaf9bd
diff --git a/media/jni/android_media_MediaCodecLinearBlock.h b/media/jni/android_media_MediaCodecLinearBlock.h
index ae2d3a2..c753020 100644
--- a/media/jni/android_media_MediaCodecLinearBlock.h
+++ b/media/jni/android_media_MediaCodecLinearBlock.h
@@ -25,6 +25,8 @@
namespace android {
struct JMediaCodecLinearBlock {
+ std::vector<std::string> mCodecNames;
+
std::shared_ptr<C2Buffer> mBuffer;
std::shared_ptr<C2ReadView> mReadonlyMapping;
@@ -40,7 +42,7 @@
std::once_flag mCopyWarningFlag;
- std::shared_ptr<C2Buffer> toC2Buffer(size_t offset, size_t size) {
+ std::shared_ptr<C2Buffer> toC2Buffer(size_t offset, size_t size) const {
if (mBuffer) {
if (mBuffer->data().type() != C2BufferData::LINEAR) {
return nullptr;
@@ -64,12 +66,22 @@
return nullptr;
}
- sp<hardware::HidlMemory> toHidlMemory() {
+ sp<hardware::HidlMemory> toHidlMemory() const {
if (mHidlMemory) {
return mHidlMemory;
}
return nullptr;
}
+
+ size_t capacity() const {
+ if (mBlock) {
+ return mBlock->capacity();
+ }
+ if (mMemory) {
+ return mMemory->size();
+ }
+ return 0;
+ }
};
} // namespace android