summaryrefslogtreecommitdiff
path: root/media/jni/android_media_MediaCodec.cpp
diff options
context:
space:
mode:
authorybai <Yanning.Bai@dolby.com>2018-11-01 13:02:15 +0800
committerMikhail Naganov <mnaganov@google.com>2018-12-11 12:46:21 -0800
commit5e05320c7239601327c4a1689d1b2fb6d30c493d (patch)
treecbce9efc681e204a4a4c0f120bb300123d660c99 /media/jni/android_media_MediaCodec.cpp
parentb5555f6929640e0c114b103feda72d170a0ad632 (diff)
Add AudioPresentation selection support for MediaCodec
Bug: 119312182 Test: compile Change-Id: I5cfc577b681ea6dcc1692abf71837fd5f41616ea
Diffstat (limited to 'media/jni/android_media_MediaCodec.cpp')
-rw-r--r--media/jni/android_media_MediaCodec.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 503720939113..257860890437 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -752,6 +752,13 @@ void JMediaCodec::setVideoScalingMode(int mode) {
}
}
+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 @@ static void android_media_MediaCodec_setVideoScalingMode(
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 @@ static const JNINativeMethod gMethods[] = {
{ "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",