Add top level DRM playback metric
Add meteric to show the difference between drm
playback of protected vs unprotected content.
We log onQueueInputBuffer errors.
Bug: 138862395
Test: adb shell dumpsys media.metrics | grep -i InputBuffer
Change-Id: I26aae706267956b6f944955877347747e573e3c8
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp
index a1b719c..b597583 100644
--- a/media/libstagefright/MediaCodec.cpp
+++ b/media/libstagefright/MediaCodec.cpp
@@ -103,6 +103,8 @@
static const char *kCodecLatencyCount = "android.media.mediacodec.latency.n";
static const char *kCodecLatencyHist = "android.media.mediacodec.latency.hist"; /* in us */
static const char *kCodecLatencyUnknown = "android.media.mediacodec.latency.unknown";
+static const char *kCodecQueueSecureInputBufferError = "android.media.mediacodec.queueSecureInputBufferError";
+static const char *kCodecQueueInputBufferError = "android.media.mediacodec.queueInputBufferError";
static const char *kCodecNumLowLatencyModeOn = "android.media.mediacodec.low-latency.on"; /* 0..n */
static const char *kCodecNumLowLatencyModeOff = "android.media.mediacodec.low-latency.off"; /* 0..n */
@@ -3629,8 +3631,16 @@
subSamples,
numSubSamples,
errorDetailMsg);
+ if (err != OK) {
+ mediametrics_setInt32(mMetricsHandle, kCodecQueueSecureInputBufferError, err);
+ ALOGW("Log queueSecureInputBuffer error: %d", err);
+ }
} else {
err = mBufferChannel->queueInputBuffer(buffer);
+ if (err != OK) {
+ mediametrics_setInt32(mMetricsHandle, kCodecQueueInputBufferError, err);
+ ALOGW("Log queueInputBuffer error: %d", err);
+ }
}
if (err == OK) {
diff --git a/services/mediametrics/statsd_codec.cpp b/services/mediametrics/statsd_codec.cpp
index 214c51a..f5fa57e 100644
--- a/services/mediametrics/statsd_codec.cpp
+++ b/services/mediametrics/statsd_codec.cpp
@@ -154,6 +154,18 @@
if ( item->getInt64("android.media.mediacodec.latency.unknown", &latency_unknown)) {
metrics_proto.set_latency_unknown(latency_unknown);
}
+ // android.media.mediacodec.queueSecureInputBufferError int32
+ if (int32_t queueSecureInputBufferError = -1;
+ item->getInt32("android.media.mediacodec.queueSecureInputBufferError",
+ &queueSecureInputBufferError)) {
+ metrics_proto.set_queue_secure_input_buffer_error(queueSecureInputBufferError);
+ }
+ // android.media.mediacodec.queueInputBufferError int32
+ if (int32_t queueInputBufferError = -1;
+ item->getInt32("android.media.mediacodec.queueInputBufferError",
+ &queueInputBufferError)) {
+ metrics_proto.set_queue_input_buffer_error(queueInputBufferError);
+ }
// android.media.mediacodec.latency.hist NOT EMITTED
std::string serialized;