diff options
author | Ray Essick <essick@google.com> | 2017-01-25 18:01:56 -0800 |
---|---|---|
committer | Ray Essick <essick@google.com> | 2017-01-27 17:58:30 +0000 |
commit | 0e0fee1e3a04023c9ec122d3bd7da54e9565c3e7 (patch) | |
tree | dd2531595b09ab1a7335cfc41c20146506fe9033 /media/jni/android_media_MediaPlayer.cpp | |
parent | df9a4f9a7c599ccd2348d429e6a6f0a5a415f780 (diff) |
API access to mediametrics
provide SDK/API access to media metrics for user apps. This lets the
apps metrics data for their instances of player and codecs. Others
to come.
Bug: 34715803
Test: booted, invoked new APIs to verify desired results
Change-Id: Iaae6406aadef30adc893952961ac154a7c4c761d
Diffstat (limited to 'media/jni/android_media_MediaPlayer.cpp')
-rw-r--r-- | media/jni/android_media_MediaPlayer.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp index 822505242426..af59d818f447 100644 --- a/media/jni/android_media_MediaPlayer.cpp +++ b/media/jni/android_media_MediaPlayer.cpp @@ -23,6 +23,8 @@ #include <media/AudioResamplerPublic.h> #include <media/IMediaHTTPService.h> #include <media/MediaPlayerInterface.h> +#include <media/MediaAnalyticsItem.h> +#include <media/stagefright/Utils.h> // for FOURCC definition #include <stdio.h> #include <assert.h> #include <limits.h> @@ -39,6 +41,7 @@ #include "utils/String8.h" #include "android_media_BufferingParams.h" #include "android_media_MediaDataSource.h" +#include "android_media_MediaMetricsJNI.h" #include "android_media_PlaybackParams.h" #include "android_media_SyncParams.h" #include "android_media_Utils.h" @@ -684,6 +687,33 @@ android_media_MediaPlayer_getVideoHeight(JNIEnv *env, jobject thiz) return (jint) h; } +static jobject +android_media_MediaPlayer_getMetrics(JNIEnv *env, jobject thiz) +{ + sp<MediaPlayer> mp = getMediaPlayer(env, thiz); + if (mp == NULL ) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return 0; + } + + Parcel p; + int key = FOURCC('m','t','r','X'); + status_t status = mp->getParameter(key, &p); + if (status != OK) { + ALOGD("getMetrics() failed: %d", status); + return (jobject) NULL; + } + + MediaAnalyticsItem *item = new MediaAnalyticsItem; + item->readFromParcel(p); + jobject mybundle = MediaMetricsJNI::writeMetricsToBundle(env, item, NULL); + + // housekeeping + delete item; + item = NULL; + + return mybundle; +} static jint android_media_MediaPlayer_getCurrentPosition(JNIEnv *env, jobject thiz) @@ -1118,6 +1148,7 @@ static const JNINativeMethod gMethods[] = { {"_stop", "()V", (void *)android_media_MediaPlayer_stop}, {"getVideoWidth", "()I", (void *)android_media_MediaPlayer_getVideoWidth}, {"getVideoHeight", "()I", (void *)android_media_MediaPlayer_getVideoHeight}, + {"getMetrics", "()Landroid/os/Bundle;", (void *)android_media_MediaPlayer_getMetrics}, {"setPlaybackParams", "(Landroid/media/PlaybackParams;)V", (void *)android_media_MediaPlayer_setPlaybackParams}, {"getPlaybackParams", "()Landroid/media/PlaybackParams;", (void *)android_media_MediaPlayer_getPlaybackParams}, {"setSyncParams", "(Landroid/media/SyncParams;)V", (void *)android_media_MediaPlayer_setSyncParams}, |