Refactor MediaCodec restart flow
Play Netflix then play DTV in stress test.
It will configure then setCallback if restart in MediaCodec.
The MediaCodec block mode will check callback when configuring.
At this time, the callback have not been set.
Test: Play Netflix and DTV stress test OK.
Bug: 302481159
Change-Id: I155e16ddbebc81b327cb8bccb118e45f87b27bee
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index 870ebdf..c110f05 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -2991,12 +2991,6 @@
ALOGE("retrying start: failed to reset codec");
break;
}
- sp<AMessage> response;
- err = PostAndAwaitResponse(mConfigureMsg, &response);
- if (err != OK) {
- ALOGE("retrying start: failed to configure codec");
- break;
- }
if (callback != nullptr) {
err = setCallback(callback);
if (err != OK) {
@@ -3005,6 +2999,12 @@
}
ALOGD("succeed to set callback for reclaim");
}
+ sp<AMessage> response;
+ err = PostAndAwaitResponse(mConfigureMsg, &response);
+ if (err != OK) {
+ ALOGE("retrying start: failed to configure codec");
+ break;
+ }
}
// Keep callback message after the first iteration if necessary.