Add AudioPresentation selection support for MediaCodec
Bug: 119312182
Test: compile
Change-Id: I5cfc577b681ea6dcc1692abf71837fd5f41616ea
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 5037209..2578608 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -752,6 +752,13 @@
}
}
+void JMediaCodec::selectAudioPresentation(const int32_t presentationId, const int32_t programId) {
+ sp<AMessage> msg = new AMessage;
+ msg->setInt32("audio-presentation-presentation-id", presentationId);
+ msg->setInt32("audio-presentation-program-id", programId);
+ (void)mCodec->setParameters(msg);
+}
+
static jthrowable createCodecException(
JNIEnv *env, status_t err, int32_t actionCode, const char *msg = NULL) {
ScopedLocalRef<jclass> clazz(
@@ -1874,6 +1881,18 @@
codec->setVideoScalingMode(mode);
}
+static void android_media_MediaCodec_setAudioPresentation(
+ JNIEnv *env, jobject thiz, jint presentationId, jint programId) {
+ sp<JMediaCodec> codec = getMediaCodec(env, thiz);
+
+ if (codec == NULL) {
+ throwExceptionAsNecessary(env, INVALID_OPERATION);
+ return;
+ }
+
+ codec->selectAudioPresentation((int32_t)presentationId, (int32_t)programId);
+}
+
static void android_media_MediaCodec_native_init(JNIEnv *env) {
ScopedLocalRef<jclass> clazz(
env, env->FindClass("android/media/MediaCodec"));
@@ -2183,6 +2202,9 @@
{ "setVideoScalingMode", "(I)V",
(void *)android_media_MediaCodec_setVideoScalingMode },
+ { "native_setAudioPresentation", "(II)V",
+ (void *)android_media_MediaCodec_setAudioPresentation },
+
{ "native_init", "()V", (void *)android_media_MediaCodec_native_init },
{ "native_setup", "(Ljava/lang/String;ZZ)V",
diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h
index 985f55a..0a53f1a 100644
--- a/media/jni/android_media_MediaCodec.h
+++ b/media/jni/android_media_MediaCodec.h
@@ -128,6 +128,8 @@
void setVideoScalingMode(int mode);
+ void selectAudioPresentation(const int32_t presentationId, const int32_t programId);
+
protected:
virtual ~JMediaCodec();