Loading media/libstagefright/MediaCodec.cpp +74 −6 Original line number Diff line number Diff line Loading @@ -120,7 +120,9 @@ static const char *kCodecConfigColorTransfer = "android.media.mediacodec.config- static const char *kCodecParsedColorStandard = "android.media.mediacodec.parsed-color-standard"; static const char *kCodecParsedColorRange = "android.media.mediacodec.parsed-color-range"; static const char *kCodecParsedColorTransfer = "android.media.mediacodec.parsed-color-transfer"; static const char *kCodecHDRMetadataFlags = "android.media.mediacodec.hdr-metadata-flags"; static const char *kCodecHDRStaticInfo = "android.media.mediacodec.hdr-static-info"; static const char *kCodecHDR10PlusInfo = "android.media.mediacodec.hdr10-plus-info"; static const char *kCodecHDRFormat = "android.media.mediacodec.hdr-format"; // Min/Max QP before shaping static const char *kCodecOriginalVideoQPIMin = "android.media.mediacodec.original-video-qp-i-min"; Loading Loading @@ -805,7 +807,9 @@ MediaCodec::MediaCodec( mWidth(0), mHeight(0), mRotationDegrees(0), mHDRMetadataFlags(0), mConfigColorTransfer(-1), mHDRStaticInfo(false), mHDR10PlusInfo(false), mDequeueInputTimeoutGeneration(0), mDequeueInputReplyID(0), mDequeueOutputTimeoutGeneration(0), Loading Loading @@ -951,13 +955,71 @@ void MediaCodec::updateMediametrics() { mIndexOfFirstFrameWhenLowLatencyOn); } mediametrics_setInt32(mMetricsHandle, kCodecHDRMetadataFlags, mHDRMetadataFlags); mediametrics_setInt32(mMetricsHandle, kCodecHDRStaticInfo, mHDRStaticInfo ? 1 : 0); mediametrics_setInt32(mMetricsHandle, kCodecHDR10PlusInfo, mHDR10PlusInfo ? 1 : 0); #if 0 // enable for short term, only while debugging updateEphemeralMediametrics(mMetricsHandle); #endif } void MediaCodec::updateHDRFormatMetric() { int32_t profile = -1; AString mediaType; if (mOutputFormat->findInt32(KEY_PROFILE, &profile) && mOutputFormat->findString("mime", &mediaType)) { hdr_format hdrFormat = getHDRFormat(profile, mConfigColorTransfer, mediaType); mediametrics_setInt32(mMetricsHandle, kCodecHDRFormat, static_cast<int>(hdrFormat)); } } hdr_format MediaCodec::getHDRFormat(const int32_t profile, const int32_t transfer, const AString &mediaType) { switch (transfer) { case COLOR_TRANSFER_ST2084: if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_VP9)) { switch (profile) { case VP9Profile2HDR: return HDR_FORMAT_HDR10; case VP9Profile2HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_AV1)) { switch (profile) { case AV1ProfileMain10HDR10: return HDR_FORMAT_HDR10; case AV1ProfileMain10HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_HEVC)) { switch (profile) { case HEVCProfileMain10HDR10: return HDR_FORMAT_HDR10; case HEVCProfileMain10HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else { return HDR_FORMAT_NONE; } case COLOR_TRANSFER_HLG: if (!mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_DOLBY_VISION)) { return HDR_FORMAT_HLG; } else { // TODO: DOLBY format return HDR_FORMAT_NONE; } default: return HDR_FORMAT_NONE; } } void MediaCodec::updateEphemeralMediametrics(mediametrics_handle_t item) { ALOGD("MediaCodec::updateEphemeralMediametrics()"); Loading Loading @@ -1647,12 +1709,13 @@ status_t MediaCodec::configure( } int32_t colorTransfer = -1; if (format->findInt32(KEY_COLOR_TRANSFER, &colorTransfer)) { mConfigColorTransfer = colorTransfer; mediametrics_setInt32(mMetricsHandle, kCodecConfigColorTransfer, colorTransfer); } HDRStaticInfo info; if (ColorUtils::getHDRStaticInfoFromFormat(format, &info) && ColorUtils::isHDRStaticInfoValid(&info)) { mHDRMetadataFlags |= kFlagHDRStaticInfo; mHDRStaticInfo = true; } } Loading Loading @@ -3307,6 +3370,8 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { CHECK(msg->findMessage("input-format", &mInputFormat)); CHECK(msg->findMessage("output-format", &mOutputFormat)); updateHDRFormatMetric(); // limit to confirming the opt-in behavior to minimize any behavioral change if (mSurface != nullptr && !mAllowFrameDroppingBySurface) { // signal frame dropping mode in the input format as this may also be Loading Loading @@ -3388,6 +3453,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mComponentName.c_str(), mInputFormat->debugString(4).c_str(), mOutputFormat->debugString(4).c_str()); updateHDRFormatMetric(); CHECK(obj != NULL); response->setObject("input-surface", obj); mHaveInputSurface = true; Loading @@ -3412,6 +3478,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { if (!msg->findInt32("err", &err)) { CHECK(msg->findMessage("input-format", &mInputFormat)); CHECK(msg->findMessage("output-format", &mOutputFormat)); updateHDRFormatMetric(); mHaveInputSurface = true; } else { response->setInt32("err", err); Loading Loading @@ -4583,6 +4650,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu buffer->meta()->setObject("changedKeys", changedKeys); } mOutputFormat = format; updateHDRFormatMetric(); mapFormat(mComponentName, format, nullptr, true); ALOGV("[%s] output format changed to: %s", mComponentName.c_str(), mOutputFormat->debugString(4).c_str()); Loading @@ -4609,7 +4677,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu if (ColorUtils::getHDRStaticInfoFromFormat(mOutputFormat, &info)) { setNativeWindowHdrMetadata(mSurface.get(), &info); if (ColorUtils::isHDRStaticInfoValid(&info)) { mHDRMetadataFlags |= kFlagHDRStaticInfo; mHDRStaticInfo = true; } } } Loading @@ -4619,7 +4687,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu && hdr10PlusInfo != nullptr && hdr10PlusInfo->size() > 0) { native_window_set_buffers_hdr10_plus_metadata(mSurface.get(), hdr10PlusInfo->size(), hdr10PlusInfo->data()); mHDRMetadataFlags |= kFlagHDR10PlusInfo; mHDR10PlusInfo = true; } if (mime.startsWithIgnoreCase("video/")) { Loading media/libstagefright/include/media/stagefright/MediaCodec.h +7 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <media/hardware/CryptoAPI.h> #include <media/MediaCodecInfo.h> #include <media/MediaMetrics.h> #include <media/MediaProfiles.h> #include <media/stagefright/foundation/AHandler.h> #include <media/stagefright/FrameRenderTracker.h> #include <utils/Vector.h> Loading Loading @@ -451,11 +452,12 @@ private: int32_t mRotationDegrees; int32_t mAllowFrameDroppingBySurface; uint32_t mHDRMetadataFlags; /* bitmask of kFlagHDR* */ enum { kFlagHDRStaticInfo = 1 << 0, kFlagHDR10PlusInfo = 1 << 1, }; int32_t mConfigColorTransfer; bool mHDRStaticInfo; bool mHDR10PlusInfo; void updateHDRFormatMetric(); hdr_format getHDRFormat(const int32_t profile, const int32_t transfer, const AString &mediaType); // initial create parameters AString mInitName; Loading services/mediametrics/statsd_codec.cpp +53 −41 Original line number Diff line number Diff line Loading @@ -390,47 +390,59 @@ bool statsd_codec(const std::shared_ptr<const mediametrics::Item>& item, } AStatsEvent_writeInt32(event, qpBMaxOri); // int32_t configColorStandard = -1; // if (item->getInt32("android.media.mediacodec.config-color-standard", &configColorStandard)) { // metrics_proto.set_config_color_standard(configColorStandard); // } // AStatsEvent_writeInt32(event, configColorStandard); // int32_t configColorRange = -1; // if (item->getInt32("android.media.mediacodec.config-color-range", &configColorRange)) { // metrics_proto.set_config_color_range(configColorRange); // } // AStatsEvent_writeInt32(event, configColorRange); // int32_t configColorTransfer = -1; // if (item->getInt32("android.media.mediacodec.config-color-transfer", &configColorTransfer)) { // metrics_proto.set_config_color_transfer(configColorTransfer); // } // AStatsEvent_writeInt32(event, configColorTransfer); // int32_t parsedColorStandard = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-standard", &parsedColorStandard)) { // metrics_proto.set_parsed_color_standard(parsedColorStandard); // } // AStatsEvent_writeInt32(event, parsedColorStandard); // int32_t parsedColorRange = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-range", &parsedColorRange)) { // metrics_proto.set_parsed_color_range(parsedColorRange); // } // AStatsEvent_writeInt32(event, parsedColorRange); // int32_t parsedColorTransfer = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-transfer", &parsedColorTransfer)) { // metrics_proto.set_parsed_color_transfer(parsedColorTransfer); // } // AStatsEvent_writeInt32(event, parsedColorTransfer); // int32_t hdrMetadataFlags = -1; // if (item->getInt32("android.media.mediacodec.hdr-metadata-flags", &hdrMetadataFlags)) { // metrics_proto.set_hdr_metadata_flags(hdrMetadataFlags); // } // AStatsEvent_writeInt32(event, hdrMetadataFlags); int32_t configColorStandard = -1; if (item->getInt32("android.media.mediacodec.config-color-standard", &configColorStandard)) { metrics_proto.set_config_color_standard(configColorStandard); } AStatsEvent_writeInt32(event, configColorStandard); int32_t configColorRange = -1; if (item->getInt32("android.media.mediacodec.config-color-range", &configColorRange)) { metrics_proto.set_config_color_range(configColorRange); } AStatsEvent_writeInt32(event, configColorRange); int32_t configColorTransfer = -1; if (item->getInt32("android.media.mediacodec.config-color-transfer", &configColorTransfer)) { metrics_proto.set_config_color_transfer(configColorTransfer); } AStatsEvent_writeInt32(event, configColorTransfer); int32_t parsedColorStandard = -1; if (item->getInt32("android.media.mediacodec.parsed-color-standard", &parsedColorStandard)) { metrics_proto.set_parsed_color_standard(parsedColorStandard); } AStatsEvent_writeInt32(event, parsedColorStandard); int32_t parsedColorRange = -1; if (item->getInt32("android.media.mediacodec.parsed-color-range", &parsedColorRange)) { metrics_proto.set_parsed_color_range(parsedColorRange); } AStatsEvent_writeInt32(event, parsedColorRange); int32_t parsedColorTransfer = -1; if (item->getInt32("android.media.mediacodec.parsed-color-transfer", &parsedColorTransfer)) { metrics_proto.set_parsed_color_transfer(parsedColorTransfer); } AStatsEvent_writeInt32(event, parsedColorTransfer); int32_t hdrStaticInfo = -1; if (item->getInt32("android.media.mediacodec.hdr-static-info", &hdrStaticInfo)) { metrics_proto.set_hdr_static_info(hdrStaticInfo); } AStatsEvent_writeInt32(event, hdrStaticInfo); int32_t hdr10PlusInfo = -1; if (item->getInt32("android.media.mediacodec.hdr10-plus-info", &hdr10PlusInfo)) { metrics_proto.set_hdr10_plus_info(hdr10PlusInfo); } AStatsEvent_writeInt32(event, hdr10PlusInfo); int32_t hdrFormat= -1; if (item->getInt32("android.media.mediacodec.hdr-format", &hdrFormat)) { metrics_proto.set_hdr_format(hdrFormat); } AStatsEvent_writeInt32(event, hdrFormat); int err = AStatsEvent_write(event); if (err < 0) { Loading Loading
media/libstagefright/MediaCodec.cpp +74 −6 Original line number Diff line number Diff line Loading @@ -120,7 +120,9 @@ static const char *kCodecConfigColorTransfer = "android.media.mediacodec.config- static const char *kCodecParsedColorStandard = "android.media.mediacodec.parsed-color-standard"; static const char *kCodecParsedColorRange = "android.media.mediacodec.parsed-color-range"; static const char *kCodecParsedColorTransfer = "android.media.mediacodec.parsed-color-transfer"; static const char *kCodecHDRMetadataFlags = "android.media.mediacodec.hdr-metadata-flags"; static const char *kCodecHDRStaticInfo = "android.media.mediacodec.hdr-static-info"; static const char *kCodecHDR10PlusInfo = "android.media.mediacodec.hdr10-plus-info"; static const char *kCodecHDRFormat = "android.media.mediacodec.hdr-format"; // Min/Max QP before shaping static const char *kCodecOriginalVideoQPIMin = "android.media.mediacodec.original-video-qp-i-min"; Loading Loading @@ -805,7 +807,9 @@ MediaCodec::MediaCodec( mWidth(0), mHeight(0), mRotationDegrees(0), mHDRMetadataFlags(0), mConfigColorTransfer(-1), mHDRStaticInfo(false), mHDR10PlusInfo(false), mDequeueInputTimeoutGeneration(0), mDequeueInputReplyID(0), mDequeueOutputTimeoutGeneration(0), Loading Loading @@ -951,13 +955,71 @@ void MediaCodec::updateMediametrics() { mIndexOfFirstFrameWhenLowLatencyOn); } mediametrics_setInt32(mMetricsHandle, kCodecHDRMetadataFlags, mHDRMetadataFlags); mediametrics_setInt32(mMetricsHandle, kCodecHDRStaticInfo, mHDRStaticInfo ? 1 : 0); mediametrics_setInt32(mMetricsHandle, kCodecHDR10PlusInfo, mHDR10PlusInfo ? 1 : 0); #if 0 // enable for short term, only while debugging updateEphemeralMediametrics(mMetricsHandle); #endif } void MediaCodec::updateHDRFormatMetric() { int32_t profile = -1; AString mediaType; if (mOutputFormat->findInt32(KEY_PROFILE, &profile) && mOutputFormat->findString("mime", &mediaType)) { hdr_format hdrFormat = getHDRFormat(profile, mConfigColorTransfer, mediaType); mediametrics_setInt32(mMetricsHandle, kCodecHDRFormat, static_cast<int>(hdrFormat)); } } hdr_format MediaCodec::getHDRFormat(const int32_t profile, const int32_t transfer, const AString &mediaType) { switch (transfer) { case COLOR_TRANSFER_ST2084: if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_VP9)) { switch (profile) { case VP9Profile2HDR: return HDR_FORMAT_HDR10; case VP9Profile2HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_AV1)) { switch (profile) { case AV1ProfileMain10HDR10: return HDR_FORMAT_HDR10; case AV1ProfileMain10HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else if (mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_HEVC)) { switch (profile) { case HEVCProfileMain10HDR10: return HDR_FORMAT_HDR10; case HEVCProfileMain10HDR10Plus: return HDR_FORMAT_HDR10PLUS; default: return HDR_FORMAT_NONE; } } else { return HDR_FORMAT_NONE; } case COLOR_TRANSFER_HLG: if (!mediaType.equalsIgnoreCase(MEDIA_MIMETYPE_VIDEO_DOLBY_VISION)) { return HDR_FORMAT_HLG; } else { // TODO: DOLBY format return HDR_FORMAT_NONE; } default: return HDR_FORMAT_NONE; } } void MediaCodec::updateEphemeralMediametrics(mediametrics_handle_t item) { ALOGD("MediaCodec::updateEphemeralMediametrics()"); Loading Loading @@ -1647,12 +1709,13 @@ status_t MediaCodec::configure( } int32_t colorTransfer = -1; if (format->findInt32(KEY_COLOR_TRANSFER, &colorTransfer)) { mConfigColorTransfer = colorTransfer; mediametrics_setInt32(mMetricsHandle, kCodecConfigColorTransfer, colorTransfer); } HDRStaticInfo info; if (ColorUtils::getHDRStaticInfoFromFormat(format, &info) && ColorUtils::isHDRStaticInfoValid(&info)) { mHDRMetadataFlags |= kFlagHDRStaticInfo; mHDRStaticInfo = true; } } Loading Loading @@ -3307,6 +3370,8 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { CHECK(msg->findMessage("input-format", &mInputFormat)); CHECK(msg->findMessage("output-format", &mOutputFormat)); updateHDRFormatMetric(); // limit to confirming the opt-in behavior to minimize any behavioral change if (mSurface != nullptr && !mAllowFrameDroppingBySurface) { // signal frame dropping mode in the input format as this may also be Loading Loading @@ -3388,6 +3453,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mComponentName.c_str(), mInputFormat->debugString(4).c_str(), mOutputFormat->debugString(4).c_str()); updateHDRFormatMetric(); CHECK(obj != NULL); response->setObject("input-surface", obj); mHaveInputSurface = true; Loading @@ -3412,6 +3478,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { if (!msg->findInt32("err", &err)) { CHECK(msg->findMessage("input-format", &mInputFormat)); CHECK(msg->findMessage("output-format", &mOutputFormat)); updateHDRFormatMetric(); mHaveInputSurface = true; } else { response->setInt32("err", err); Loading Loading @@ -4583,6 +4650,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu buffer->meta()->setObject("changedKeys", changedKeys); } mOutputFormat = format; updateHDRFormatMetric(); mapFormat(mComponentName, format, nullptr, true); ALOGV("[%s] output format changed to: %s", mComponentName.c_str(), mOutputFormat->debugString(4).c_str()); Loading @@ -4609,7 +4677,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu if (ColorUtils::getHDRStaticInfoFromFormat(mOutputFormat, &info)) { setNativeWindowHdrMetadata(mSurface.get(), &info); if (ColorUtils::isHDRStaticInfoValid(&info)) { mHDRMetadataFlags |= kFlagHDRStaticInfo; mHDRStaticInfo = true; } } } Loading @@ -4619,7 +4687,7 @@ void MediaCodec::handleOutputFormatChangeIfNeeded(const sp<MediaCodecBuffer> &bu && hdr10PlusInfo != nullptr && hdr10PlusInfo->size() > 0) { native_window_set_buffers_hdr10_plus_metadata(mSurface.get(), hdr10PlusInfo->size(), hdr10PlusInfo->data()); mHDRMetadataFlags |= kFlagHDR10PlusInfo; mHDR10PlusInfo = true; } if (mime.startsWithIgnoreCase("video/")) { Loading
media/libstagefright/include/media/stagefright/MediaCodec.h +7 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ #include <media/hardware/CryptoAPI.h> #include <media/MediaCodecInfo.h> #include <media/MediaMetrics.h> #include <media/MediaProfiles.h> #include <media/stagefright/foundation/AHandler.h> #include <media/stagefright/FrameRenderTracker.h> #include <utils/Vector.h> Loading Loading @@ -451,11 +452,12 @@ private: int32_t mRotationDegrees; int32_t mAllowFrameDroppingBySurface; uint32_t mHDRMetadataFlags; /* bitmask of kFlagHDR* */ enum { kFlagHDRStaticInfo = 1 << 0, kFlagHDR10PlusInfo = 1 << 1, }; int32_t mConfigColorTransfer; bool mHDRStaticInfo; bool mHDR10PlusInfo; void updateHDRFormatMetric(); hdr_format getHDRFormat(const int32_t profile, const int32_t transfer, const AString &mediaType); // initial create parameters AString mInitName; Loading
services/mediametrics/statsd_codec.cpp +53 −41 Original line number Diff line number Diff line Loading @@ -390,47 +390,59 @@ bool statsd_codec(const std::shared_ptr<const mediametrics::Item>& item, } AStatsEvent_writeInt32(event, qpBMaxOri); // int32_t configColorStandard = -1; // if (item->getInt32("android.media.mediacodec.config-color-standard", &configColorStandard)) { // metrics_proto.set_config_color_standard(configColorStandard); // } // AStatsEvent_writeInt32(event, configColorStandard); // int32_t configColorRange = -1; // if (item->getInt32("android.media.mediacodec.config-color-range", &configColorRange)) { // metrics_proto.set_config_color_range(configColorRange); // } // AStatsEvent_writeInt32(event, configColorRange); // int32_t configColorTransfer = -1; // if (item->getInt32("android.media.mediacodec.config-color-transfer", &configColorTransfer)) { // metrics_proto.set_config_color_transfer(configColorTransfer); // } // AStatsEvent_writeInt32(event, configColorTransfer); // int32_t parsedColorStandard = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-standard", &parsedColorStandard)) { // metrics_proto.set_parsed_color_standard(parsedColorStandard); // } // AStatsEvent_writeInt32(event, parsedColorStandard); // int32_t parsedColorRange = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-range", &parsedColorRange)) { // metrics_proto.set_parsed_color_range(parsedColorRange); // } // AStatsEvent_writeInt32(event, parsedColorRange); // int32_t parsedColorTransfer = -1; // if (item->getInt32("android.media.mediacodec.parsed-color-transfer", &parsedColorTransfer)) { // metrics_proto.set_parsed_color_transfer(parsedColorTransfer); // } // AStatsEvent_writeInt32(event, parsedColorTransfer); // int32_t hdrMetadataFlags = -1; // if (item->getInt32("android.media.mediacodec.hdr-metadata-flags", &hdrMetadataFlags)) { // metrics_proto.set_hdr_metadata_flags(hdrMetadataFlags); // } // AStatsEvent_writeInt32(event, hdrMetadataFlags); int32_t configColorStandard = -1; if (item->getInt32("android.media.mediacodec.config-color-standard", &configColorStandard)) { metrics_proto.set_config_color_standard(configColorStandard); } AStatsEvent_writeInt32(event, configColorStandard); int32_t configColorRange = -1; if (item->getInt32("android.media.mediacodec.config-color-range", &configColorRange)) { metrics_proto.set_config_color_range(configColorRange); } AStatsEvent_writeInt32(event, configColorRange); int32_t configColorTransfer = -1; if (item->getInt32("android.media.mediacodec.config-color-transfer", &configColorTransfer)) { metrics_proto.set_config_color_transfer(configColorTransfer); } AStatsEvent_writeInt32(event, configColorTransfer); int32_t parsedColorStandard = -1; if (item->getInt32("android.media.mediacodec.parsed-color-standard", &parsedColorStandard)) { metrics_proto.set_parsed_color_standard(parsedColorStandard); } AStatsEvent_writeInt32(event, parsedColorStandard); int32_t parsedColorRange = -1; if (item->getInt32("android.media.mediacodec.parsed-color-range", &parsedColorRange)) { metrics_proto.set_parsed_color_range(parsedColorRange); } AStatsEvent_writeInt32(event, parsedColorRange); int32_t parsedColorTransfer = -1; if (item->getInt32("android.media.mediacodec.parsed-color-transfer", &parsedColorTransfer)) { metrics_proto.set_parsed_color_transfer(parsedColorTransfer); } AStatsEvent_writeInt32(event, parsedColorTransfer); int32_t hdrStaticInfo = -1; if (item->getInt32("android.media.mediacodec.hdr-static-info", &hdrStaticInfo)) { metrics_proto.set_hdr_static_info(hdrStaticInfo); } AStatsEvent_writeInt32(event, hdrStaticInfo); int32_t hdr10PlusInfo = -1; if (item->getInt32("android.media.mediacodec.hdr10-plus-info", &hdr10PlusInfo)) { metrics_proto.set_hdr10_plus_info(hdr10PlusInfo); } AStatsEvent_writeInt32(event, hdr10PlusInfo); int32_t hdrFormat= -1; if (item->getInt32("android.media.mediacodec.hdr-format", &hdrFormat)) { metrics_proto.set_hdr_format(hdrFormat); } AStatsEvent_writeInt32(event, hdrFormat); int err = AStatsEvent_write(event); if (err < 0) { Loading