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) {