Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 242ca740 authored by Ray Essick's avatar Ray Essick Committed by Android (Google) Code Review
Browse files

Merge "API android.media.MediaExtractor.getMetrics()"

parents d5015bec ba5ce2c0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -21992,6 +21992,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
+1 −0
Original line number Diff line number Diff line
@@ -23612,6 +23612,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
+1 −0
Original line number Diff line number Diff line
@@ -22084,6 +22084,7 @@ package android.media {
    method public boolean advance();
    method public long getCachedDuration();
    method public android.media.DrmInitData getDrmInitData();
    method public android.os.Bundle getMetrics();
    method public java.util.Map<java.util.UUID, byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
+11 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.media.MediaCodec;
import android.media.MediaFormat;
import android.media.MediaHTTPService;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;

import com.android.internal.util.Preconditions;
@@ -598,6 +599,16 @@ final public class MediaExtractor {
     */
    public native boolean hasCacheReachedEndOfStream();

    /**
     *  Returns Analytics/Metrics data about the current media container.
     *
     * @return the set of keys and values available for the media being
     * handled by this instance of MediaExtractor
     *
     */
    public native Bundle getMetrics();


    private static native final void native_init();
    private native final void native_setup();
    private native final void native_finalize();
+43 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <utils/Log.h>

#include "android_media_MediaExtractor.h"
#include "android_media_MediaMetricsJNI.h"

#include "android_media_Utils.h"
#include "android_runtime/AndroidRuntime.h"
@@ -240,6 +241,13 @@ status_t JMediaExtractor::getSampleFlags(uint32_t *sampleFlags) {
    return OK;
}

status_t JMediaExtractor::getMetrics(Parcel *reply) const {

    status_t status = mImpl->getMetrics(reply);
    return status;
}


status_t JMediaExtractor::getSampleMeta(sp<MetaData> *sampleMeta) {
    return mImpl->getSampleMeta(sampleMeta);
}
@@ -767,6 +775,38 @@ static void android_media_MediaExtractor_native_finalize(
    android_media_MediaExtractor_release(env, thiz);
}

static jobject
android_media_MediaExtractor_getMetrics(JNIEnv * env, jobject thiz)
{
    ALOGV("android_media_MediaExtractor_getMetrics");

    sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz);
    if (extractor == NULL ) {
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return NULL;
    }

    // get what we have for the metrics from the codec
    Parcel reply;
    status_t err = extractor->getMetrics(&reply);
    if (err != OK) {
        ALOGE("getMetrics failed");
        return (jobject) NULL;
    }

    // build and return the Bundle
    MediaAnalyticsItem *item = new MediaAnalyticsItem;
    item->readFromParcel(reply);
    jobject mybundle = MediaMetricsJNI::writeMetricsToBundle(env, item, NULL);

    // housekeeping
    delete item;
    item = NULL;

    return mybundle;
}


static const JNINativeMethod gMethods[] = {
    { "release", "()V", (void *)android_media_MediaExtractor_release },

@@ -826,6 +866,9 @@ static const JNINativeMethod gMethods[] = {

    { "hasCacheReachedEndOfStream", "()Z",
      (void *)android_media_MediaExtractor_hasCacheReachedEOS },

    {"getMetrics",          "()Landroid/os/Bundle;",
      (void *)android_media_MediaExtractor_getMetrics},
};

int register_android_media_MediaExtractor(JNIEnv *env) {
Loading