MediaCodecLinearBlock: Let input slot available for onWorkDone buffer.
Currently, we should let queueLinearBlock to queue new C2Buffer to MediaCodec. So, this C2Buffer could be released while onWorkDone from C2 Component is earlier than onInputBuffersReleased. Test: Digital TV test pass Bug: 202306353 Change-Id: I7cc5eb938f127bd816ea7115d7f9995dbaefcf0b
This commit is contained in:
@@ -42,12 +42,19 @@ struct JMediaCodecLinearBlock {
|
||||
|
||||
std::shared_ptr<C2Buffer> toC2Buffer(size_t offset, size_t size) {
|
||||
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 =
|
||||
|
||||
Reference in New Issue
Block a user