diff options
| author | 2018-11-13 17:14:34 +0000 | |
|---|---|---|
| committer | 2018-11-13 17:14:34 +0000 | |
| commit | b4b95f70cd02f789b54819b8abcb15cb757b08bb (patch) | |
| tree | b2cd4273c2914a2e1db8dec3585bab8dad7d9aaf | |
| parent | d65a1323c087ca2e34b43c04ff7de8154e76403f (diff) | |
| parent | 923a173627122d8c040792619c8b0b8824b814b7 (diff) | |
Merge "MediaPlayer2: directly pass AudioAttributes to AudioTrack without native parcel conversion"
| -rw-r--r-- | media/java/android/media/MediaPlayer2Impl.java | 13 | ||||
| -rw-r--r-- | media/jni/android_media_MediaPlayer2.cpp | 51 | 
2 files changed, 17 insertions, 47 deletions
| diff --git a/media/java/android/media/MediaPlayer2Impl.java b/media/java/android/media/MediaPlayer2Impl.java index 0431820777bf..35346369ed8e 100644 --- a/media/java/android/media/MediaPlayer2Impl.java +++ b/media/java/android/media/MediaPlayer2Impl.java @@ -246,15 +246,14 @@ public final class MediaPlayer2Impl extends MediaPlayer2 {                      final String msg = "Cannot set AudioAttributes to null";                      throw new IllegalArgumentException(msg);                  } -                setParameter(KEY_PARAMETER_AUDIO_ATTRIBUTES, attributes); +                native_setAudioAttributes(attributes);              }          });      }      @Override      public @NonNull AudioAttributes getAudioAttributes() { -        AudioAttributes attributes = (AudioAttributes) getParameter(KEY_PARAMETER_AUDIO_ATTRIBUTES); -        return attributes; +        return native_getAudioAttributes();      }      @Override @@ -1102,14 +1101,12 @@ public final class MediaPlayer2Impl extends MediaPlayer2 {      // Keep KEY_PARAMETER_* in sync with include/media/mediaplayer2.h      private final static int KEY_PARAMETER_AUDIO_ATTRIBUTES = 1400;      /** -     * Sets the parameter indicated by key. -     * @param key key indicates the parameter to be set. +     * Sets the audio attributes.       * @param value value of the parameter to be set.       * @return true if the parameter is set successfully, false otherwise       */ -    private native boolean setParameter(int key, Object value); - -    private native Object getParameter(int key); +    private native boolean native_setAudioAttributes(AudioAttributes audioAttributes); +    private native AudioAttributes native_getAudioAttributes();      /** diff --git a/media/jni/android_media_MediaPlayer2.cpp b/media/jni/android_media_MediaPlayer2.cpp index 8e30455c31f0..0769e5c84674 100644 --- a/media/jni/android_media_MediaPlayer2.cpp +++ b/media/jni/android_media_MediaPlayer2.cpp @@ -846,56 +846,29 @@ android_media_MediaPlayer2_reset(JNIEnv *env, jobject thiz)  }  static jboolean -android_media_MediaPlayer2_setParameter(JNIEnv *env, jobject thiz, jint key, jobject) +android_media_MediaPlayer2_setAudioAttributes(JNIEnv *env, jobject thiz, jobject attributes)  { -    ALOGV("setParameter: key %d", key); +    ALOGV("setAudioAttributes");      sp<MediaPlayer2> mp = getMediaPlayer(env, thiz);      if (mp == NULL ) {          jniThrowException(env, "java/lang/IllegalStateException", NULL);          return false;      } - -    return false; -    // TODO: set/getParameter is temporarily disabled to remove android_runtime.so dependency. -    //       Once JAudioTrack migration is done, the AudioAttribute jobject -    //       should be directly passed to AudioTrack without native parcel conversion. -    /* -    Parcel *request = parcelForJavaObject(env, java_request); -    status_t err = mp->setParameter(key, *request); -    if (err == OK) { -        return true; -    } else { -        return false; -    } -    */ +    status_t err = mp->setAudioAttributes(attributes); +    return err == OK;  }  static jobject -android_media_MediaPlayer2_getParameter(JNIEnv *env, jobject thiz, jint key) +android_media_MediaPlayer2_getAudioAttributes(JNIEnv *env, jobject thiz)  { -    ALOGV("getParameter: key %d", key); +    ALOGV("getAudioAttributes");      sp<MediaPlayer2> mp = getMediaPlayer(env, thiz);      if (mp == NULL) {          jniThrowException(env, "java/lang/IllegalStateException", NULL);          return NULL;      } -    return NULL; -    // TODO: set/getParameter is temporarily disabled to remove android_runtime.so dependency. -    //       Once JAudioTrack migration is done, the AudioAttribute jobject -    //       should be directly passed to AudioTrack without native parcel conversion. -    /* -    jobject jParcel = createJavaParcelObject(env); -    if (jParcel != NULL) { -        Parcel* nativeParcel = parcelForJavaObject(env, jParcel); -        status_t err = mp->getParameter(key, nativeParcel); -        if (err != OK) { -            env->DeleteLocalRef(jParcel); -            return NULL; -        } -    } -    return jParcel; -    */ +    return mp->getAudioAttributes();  }  static void @@ -1428,17 +1401,17 @@ static const JNINativeMethod gMethods[] = {      {"native_getState",     "()I",                              (void *)android_media_MediaPlayer2_getState},      {"native_getMetrics",   "()Landroid/os/PersistableBundle;", (void *)android_media_MediaPlayer2_native_getMetrics},      {"_setPlaybackParams", "(Landroid/media/PlaybackParams;)V", (void *)android_media_MediaPlayer2_setPlaybackParams}, -    {"getPlaybackParams", "()Landroid/media/PlaybackParams;", (void *)android_media_MediaPlayer2_getPlaybackParams}, -    {"_setSyncParams",     "(Landroid/media/SyncParams;)V",  (void *)android_media_MediaPlayer2_setSyncParams}, -    {"getSyncParams",     "()Landroid/media/SyncParams;",   (void *)android_media_MediaPlayer2_getSyncParams}, +    {"getPlaybackParams", "()Landroid/media/PlaybackParams;",   (void *)android_media_MediaPlayer2_getPlaybackParams}, +    {"_setSyncParams",     "(Landroid/media/SyncParams;)V",     (void *)android_media_MediaPlayer2_setSyncParams}, +    {"getSyncParams",     "()Landroid/media/SyncParams;",       (void *)android_media_MediaPlayer2_getSyncParams},      {"_seekTo",             "(JI)V",                            (void *)android_media_MediaPlayer2_seekTo},      {"_pause",              "()V",                              (void *)android_media_MediaPlayer2_pause},      {"getCurrentPosition",  "()J",                              (void *)android_media_MediaPlayer2_getCurrentPosition},      {"getDuration",         "()J",                              (void *)android_media_MediaPlayer2_getDuration},      {"_release",            "()V",                              (void *)android_media_MediaPlayer2_release},      {"_reset",              "()V",                              (void *)android_media_MediaPlayer2_reset}, -    {"setParameter",        "(ILjava/lang/Object;)Z",          (void *)android_media_MediaPlayer2_setParameter}, -    {"getParameter",        "(I)Ljava/lang/Object;",           (void *)android_media_MediaPlayer2_getParameter}, +    {"native_setAudioAttributes", "(Landroid/media/AudioAttributes;)Z", (void *)android_media_MediaPlayer2_setAudioAttributes}, +    {"native_getAudioAttributes", "()Landroid/media/AudioAttributes;", (void *)android_media_MediaPlayer2_getAudioAttributes},      {"setLooping",          "(Z)V",                             (void *)android_media_MediaPlayer2_setLooping},      {"isLooping",           "()Z",                              (void *)android_media_MediaPlayer2_isLooping},      {"native_setVolume",    "(F)V",                             (void *)android_media_MediaPlayer2_setVolume}, |