Merge "MediaCodecLinearBlock: Let input slot available for onWorkDone buffer." am: c831fde1ab

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1844937

Change-Id: Ifa84074947c312a79d7ea98a25a387813abe8332
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-04-07 03:28:49 +00:00
committed by Automerger Merge Worker

View File

@@ -44,12 +44,19 @@ struct JMediaCodecLinearBlock {
std::shared_ptr<C2Buffer> toC2Buffer(size_t offset, size_t size) const {
if (mBuffer) {
// TODO: if returned C2Buffer is different from mBuffer, we should
// find a way to connect the life cycle between this C2Buffer and
// mBuffer.
if (mBuffer->data().type() != C2BufferData::LINEAR) {
return nullptr;
}
C2ConstLinearBlock block = mBuffer->data().linearBlocks().front();
if (offset == 0 && size == block.capacity()) {
return mBuffer;
// Let C2Buffer be new one to queue to MediaCodec. It will allow
// the related input slot to be released by onWorkDone from C2
// Component. Currently, the life cycle of mBuffer should be
// protected by different flows.
return std::make_shared<C2Buffer>(*mBuffer);
}
std::shared_ptr<C2Buffer> buffer =