Merge "CCodec: read formats after setupInputSurface" am: 8b599a8dfd am: 1a1aa41406 am: 631f088fea
Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1701926
Change-Id: Icfb1b0cfc1ca8bdb6cbd456163fbf18779e2f039
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 94af93c..051e9cf 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -1500,13 +1500,11 @@
status_t err;
sp<IGraphicBufferProducer> bufferProducer;
- sp<AMessage> inputFormat;
sp<AMessage> outputFormat;
uint64_t usage = 0;
{
Mutexed<std::unique_ptr<Config>>::Locked configLocked(mConfig);
const std::unique_ptr<Config> &config = *configLocked;
- inputFormat = config->mInputFormat;
outputFormat = config->mOutputFormat;
usage = config->mISConfig ? config->mISConfig->mUsage : 0;
}
@@ -1542,6 +1540,14 @@
return;
}
+ // Formats can change after setupInputSurface
+ sp<AMessage> inputFormat;
+ {
+ Mutexed<std::unique_ptr<Config>>::Locked configLocked(mConfig);
+ const std::unique_ptr<Config> &config = *configLocked;
+ inputFormat = config->mInputFormat;
+ outputFormat = config->mOutputFormat;
+ }
mCallback->onInputSurfaceCreated(
inputFormat,
outputFormat,
@@ -1591,13 +1597,11 @@
}
void CCodec::setInputSurface(const sp<PersistentSurface> &surface) {
- sp<AMessage> inputFormat;
sp<AMessage> outputFormat;
uint64_t usage = 0;
{
Mutexed<std::unique_ptr<Config>>::Locked configLocked(mConfig);
const std::unique_ptr<Config> &config = *configLocked;
- inputFormat = config->mInputFormat;
outputFormat = config->mOutputFormat;
usage = config->mISConfig ? config->mISConfig->mUsage : 0;
}
@@ -1629,6 +1633,14 @@
mCallback->onInputSurfaceDeclined(UNKNOWN_ERROR);
return;
}
+ // Formats can change after setupInputSurface
+ sp<AMessage> inputFormat;
+ {
+ Mutexed<std::unique_ptr<Config>>::Locked configLocked(mConfig);
+ const std::unique_ptr<Config> &config = *configLocked;
+ inputFormat = config->mInputFormat;
+ outputFormat = config->mOutputFormat;
+ }
mCallback->onInputSurfaceAccepted(inputFormat, outputFormat);
}