CCodecBufferChannel: skip output slot check if the block pool can throttle
Bug: 274736629
Test: atest CtsMediaDecoderTestCases CtsMediaPerformanceTestCases
Change-Id: I476c3340728c87dfbb3be7b37a436d8fe5c59f81
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 1c86ba9..f8d529e 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -167,6 +167,7 @@
Mutexed<Output>::Locked output(mOutput);
output->outputDelay = 0u;
output->numSlots = kSmoothnessFactor;
+ output->bounded = false;
}
{
Mutexed<BlockPools>::Locked pools(mBlockPools);
@@ -727,7 +728,7 @@
Mutexed<Output>::Locked output(mOutput);
if (!output->buffers ||
output->buffers->hasPending() ||
- output->buffers->numActiveSlots() >= output->numSlots) {
+ (!output->bounded && output->buffers->numActiveSlots() >= output->numSlots)) {
return;
}
}
@@ -1509,6 +1510,7 @@
Mutexed<Output>::Locked output(mOutput);
output->outputDelay = outputDelayValue;
output->numSlots = numOutputSlots;
+ output->bounded = bool(outputSurface);
if (graphic) {
if (outputSurface || !buffersBoundToCodec) {
output->buffers.reset(new GraphicOutputBuffers(mName));