CCodec: add to check pipelineFull() in feedInputBufferIfAvailableInternal()
it is possible that input could be feeded over numSlots
because that feedInputBufferIfAvailableInternal() can be called
at multi-threads.
so, need to check pipelineFull() for stopping it.
Bug: 169831745
Change-Id: I879301f3d137aeb9d8935d97e906849af7ee7bc6
Signed-off-by: Taehwan Kim <t_h.kim@samsung.com>
diff --git a/media/codec2/sfplugin/CCodecBufferChannel.cpp b/media/codec2/sfplugin/CCodecBufferChannel.cpp
index 0626c8d..ba19565 100644
--- a/media/codec2/sfplugin/CCodecBufferChannel.cpp
+++ b/media/codec2/sfplugin/CCodecBufferChannel.cpp
@@ -618,7 +618,7 @@
}
void CCodecBufferChannel::feedInputBufferIfAvailableInternal() {
- if (mInputMetEos || mPipelineWatcher.lock()->pipelineFull()) {
+ if (mInputMetEos) {
return;
}
{
@@ -631,6 +631,9 @@
}
size_t numInputSlots = mInput.lock()->numSlots;
for (size_t i = 0; i < numInputSlots; ++i) {
+ if (mPipelineWatcher.lock()->pipelineFull()) {
+ return;
+ }
sp<MediaCodecBuffer> inBuffer;
size_t index;
{