prepareInitialInputBuffer : retry buffers
During flush, if all input buffers are still with component,
We retry to get buffers to proceed.
Bug: 291241758
Bug: 296988490
Test: atest android.media.decoder.cts.AdaptivePlaybackTest
Test: atest android.media.cts.MediaCodecTest
Test: atest android.mediav2.cts.CodecDecoderTest
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:ef235a9a63e1b20f7de24d900db5e834f24e1ddb)
Merged-In: I6326c4c8542844cf7edb4c22054cc16a596c0af2
Change-Id: I6326c4c8542844cf7edb4c22054cc16a596c0af2
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index a75ce70..1153fb6 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -2137,7 +2137,7 @@
}
std::map<size_t, sp<MediaCodecBuffer>> clientInputBuffers;
- status_t err = mChannel->prepareInitialInputBuffers(&clientInputBuffers);
+ status_t err = mChannel->prepareInitialInputBuffers(&clientInputBuffers, true);
if (err != OK) {
if (err == NO_MEMORY) {
// NO_MEMORY happens here when all the buffers are still
@@ -2160,7 +2160,6 @@
const std::unique_ptr<Config> &config = *configLocked;
return config->mBuffersBoundToCodec;
}());
-
{
Mutexed<State>::Locked state(mState);
if (state->get() != RESUMING) {