Merge "CCodec: read formats after setupInputSurface"
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index e812be2..12b9605 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -1479,13 +1479,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;
}
@@ -1521,6 +1519,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,
@@ -1570,13 +1576,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;
}
@@ -1608,6 +1612,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);
}