Log pixel format metric for decoders and non-surface mode encoders.
Test: manual
Bug: 270518245
Merged-In: I0d3fabcca632d974ecd7d86305b3dfef4eee895f
Change-Id: I0d3fabcca632d974ecd7d86305b3dfef4eee895f
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 1153fb6..abfac8b 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -45,6 +45,7 @@
#include <media/stagefright/CCodec.h>
#include <media/stagefright/BufferProducerWrapper.h>
#include <media/stagefright/MediaCodecConstants.h>
+#include <media/stagefright/MediaCodecMetricsConstants.h>
#include <media/stagefright/PersistentSurface.h>
#include <media/stagefright/RenderedFrameInfo.h>
#include <utils/NativeHandle.h>
@@ -1536,6 +1537,9 @@
config->queryConfiguration(comp);
+ mMetrics = new AMessage;
+ mChannel->resetBuffersPixelFormat((config->mDomain & Config::IS_ENCODER) ? true : false);
+
mCallback->onComponentConfigured(config->mInputFormat, config->mOutputFormat);
}
@@ -2499,6 +2503,19 @@
}
mChannel->onWorkDone(
std::move(work), outputFormat, initData ? initData.get() : nullptr);
+ // log metrics to MediaCodec
+ if (mMetrics->countEntries() == 0) {
+ Mutexed<std::unique_ptr<Config>>::Locked configLocked(mConfig);
+ const std::unique_ptr<Config> &config = *configLocked;
+ uint32_t pf = PIXEL_FORMAT_UNKNOWN;
+ if (!config->mInputSurface) {
+ pf = mChannel->getBuffersPixelFormat(config->mDomain & Config::IS_ENCODER);
+ }
+ if (pf != PIXEL_FORMAT_UNKNOWN) {
+ mMetrics->setInt64(kCodecPixelFormat, pf);
+ mCallback->onMetricsUpdated(mMetrics);
+ }
+ }
break;
}
case kWhatWatch: {