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

Commit 4b7abff0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "add getMetrics() apis for AudioTrack and AudioRecord"

parents eb576da4 510225b5
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -22101,6 +22101,7 @@ package android.media {
    method public int getChannelConfiguration();
    method public int getChannelCount();
    method public android.media.AudioFormat getFormat();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
    method public int getNotificationMarkerPosition();
    method public int getPositionNotificationPeriod();
@@ -22149,6 +22150,14 @@ package android.media {
    method public android.media.AudioRecord.Builder setBufferSizeInBytes(int) throws java.lang.IllegalArgumentException;
  }
  public static final class AudioRecord.MetricsConstants {
    field public static final java.lang.String CHANNELS = "android.media.audiorecord.channels";
    field public static final java.lang.String ENCODING = "android.media.audiorecord.encoding";
    field public static final java.lang.String LATENCY = "android.media.audiorecord.latency";
    field public static final java.lang.String SAMPLERATE = "android.media.audiorecord.samplerate";
    field public static final java.lang.String SOURCE = "android.media.audiorecord.source";
  }
  public static abstract interface AudioRecord.OnRecordPositionUpdateListener {
    method public abstract void onMarkerReached(android.media.AudioRecord);
    method public abstract void onPeriodicNotification(android.media.AudioRecord);
@@ -22208,6 +22217,7 @@ package android.media {
    method public int getChannelCount();
    method public android.media.AudioFormat getFormat();
    method public static float getMaxVolume();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
    method public static float getMinVolume();
    method protected deprecated int getNativeFrameCount();
@@ -22288,6 +22298,14 @@ package android.media {
    method public android.media.AudioTrack.Builder setTransferMode(int) throws java.lang.IllegalArgumentException;
  }
  public static final class AudioTrack.MetricsConstants {
    field public static final java.lang.String CHANNELMASK = "android.media.audiorecord.channelmask";
    field public static final java.lang.String CONTENTTYPE = "android.media.audiotrack.type";
    field public static final java.lang.String SAMPLERATE = "android.media.audiorecord.samplerate";
    field public static final java.lang.String STREAMTYPE = "android.media.audiotrack.streamtype";
    field public static final java.lang.String USAGE = "android.media.audiotrack.usage";
  }
  public static abstract interface AudioTrack.OnPlaybackPositionUpdateListener {
    method public abstract void onMarkerReached(android.media.AudioTrack);
    method public abstract void onPeriodicNotification(android.media.AudioTrack);
+2 −0
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@ cc_library_shared {
        "android_media_AudioTrack.cpp",
        "android_media_DeviceCallback.cpp",
        "android_media_JetPlayer.cpp",
        "android_media_MediaMetricsJNI.cpp",
        "android_media_RemoteDisplay.cpp",
        "android_media_ToneGenerator.cpp",
        "android_hardware_Camera.cpp",
@@ -261,6 +262,7 @@ cc_library_shared {
        "libselinux",
        "libicuuc",
        "libmedia",
        "libmediametrics",
        "libaudioclient",
        "libjpeg",
        "libusbhost",
+36 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "android_media_AudioFormat.h"
#include "android_media_AudioErrors.h"
#include "android_media_DeviceCallback.h"
#include "android_media_MediaMetricsJNI.h"

// ----------------------------------------------------------------------------

@@ -750,6 +751,39 @@ static jint android_media_AudioRecord_get_timestamp(JNIEnv *env, jobject thiz,
    return status;
}

// ----------------------------------------------------------------------------
static jobject
android_media_AudioRecord_native_getMetrics(JNIEnv *env, jobject thiz)
{
    ALOGV("android_media_AudioRecord_native_getMetrics");

    sp<AudioRecord> lpRecord = getAudioRecord(env, thiz);

    if (lpRecord == NULL) {
        ALOGE("Unable to retrieve AudioRecord pointer for getMetrics()");
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return (jobject) NULL;
    }

    // get what we have for the metrics from the record session
    MediaAnalyticsItem *item = NULL;

    status_t err = lpRecord->getMetrics(item);
    if (err != OK) {
        ALOGE("getMetrics failed");
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return (jobject) NULL;
    }

    jobject mybundle = MediaMetricsJNI::writeMetricsToBundle(env, item, NULL /* mybundle */);

    // housekeeping
    delete item;
    item = NULL;

    return mybundle;
}

// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
static const JNINativeMethod gMethods[] = {
@@ -781,6 +815,8 @@ static const JNINativeMethod gMethods[] = {
                             "()I",    (void *)android_media_AudioRecord_get_pos_update_period},
    {"native_get_min_buff_size",
                             "(III)I",   (void *)android_media_AudioRecord_get_min_buff_size},
    {"native_getMetrics",    "()Landroid/os/PersistableBundle;",
                                         (void *)android_media_AudioRecord_native_getMetrics},
    {"native_setInputDevice", "(I)Z", (void *)android_media_AudioRecord_setInputDevice},
    {"native_getRoutedDeviceId", "()I", (void *)android_media_AudioRecord_getRoutedDeviceId},
    {"native_enableDeviceCallback", "()V", (void *)android_media_AudioRecord_enableDeviceCallback},
+36 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@

#include "android_media_AudioFormat.h"
#include "android_media_AudioErrors.h"
#include "android_media_MediaMetricsJNI.h"
#include "android_media_PlaybackParams.h"
#include "android_media_DeviceCallback.h"
#include "android_media_VolumeShaper.h"
@@ -1011,6 +1012,39 @@ static jint android_media_AudioTrack_get_timestamp(JNIEnv *env, jobject thiz, j
    return (jint) nativeToJavaStatus(status);
}

// ----------------------------------------------------------------------------
static jobject
android_media_AudioTrack_native_getMetrics(JNIEnv *env, jobject thiz)
{
    ALOGD("android_media_AudioTrack_native_getMetrics");

    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);

    if (lpTrack == NULL) {
        ALOGE("Unable to retrieve AudioTrack pointer for getMetrics()");
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return (jobject) NULL;
    }

    // get what we have for the metrics from the track
    MediaAnalyticsItem *item = NULL;

    status_t err = lpTrack->getMetrics(item);
    if (err != OK) {
        ALOGE("getMetrics failed");
        jniThrowException(env, "java/lang/IllegalStateException", NULL);
        return (jobject) NULL;
    }

    jobject mybundle = MediaMetricsJNI::writeMetricsToBundle(env, item, NULL /* mybundle */);

    // housekeeping
    delete item;
    item = NULL;

    return mybundle;
}


// ----------------------------------------------------------------------------
static jint android_media_AudioTrack_set_loop(JNIEnv *env,  jobject thiz,
@@ -1275,6 +1309,8 @@ static const JNINativeMethod gMethods[] = {
    {"native_get_underrun_count", "()I",      (void *)android_media_AudioTrack_get_underrun_count},
    {"native_get_flags",     "()I",      (void *)android_media_AudioTrack_get_flags},
    {"native_get_timestamp", "([J)I",    (void *)android_media_AudioTrack_get_timestamp},
    {"native_getMetrics",    "()Landroid/os/PersistableBundle;",
                                         (void *)android_media_AudioTrack_native_getMetrics},
    {"native_set_loop",      "(III)I",   (void *)android_media_AudioTrack_set_loop},
    {"native_reload_static", "()I",      (void *)android_media_AudioTrack_reload},
    {"native_get_output_sample_rate",
Loading