summaryrefslogtreecommitdiff
path: root/media/java/android/media/MediaCodec.java
diff options
context:
space:
mode:
authorHouxiang Dai <houxiang.dai@mediatek.com>2021-03-22 18:03:55 +0800
committerHenry Fang <quxiangfang@google.com>2021-03-30 21:04:15 +0000
commit6e3d3605ddf50587486b9f58951a42bf6db35b7f (patch)
tree877999992e3965f955efaf02bce99f198641ba26 /media/java/android/media/MediaCodec.java
parent2a5efce2d7e5b27e0da7fcab849a971c82ca7283 (diff)
support changing audio-hw-sync-id during playback.
Bug: 151997287 Bug: 183968006 Test: Manual Change-Id: I3ca8a1efbf8a1942fd54e2f892bc76fee847da4c
Diffstat (limited to 'media/java/android/media/MediaCodec.java')
-rw-r--r--media/java/android/media/MediaCodec.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 7062f83fe575..5633236a122e 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -4412,14 +4412,25 @@ final public class MediaCodec {
int i = 0;
for (final String key: params.keySet()) {
- keys[i] = key;
- Object value = params.get(key);
-
- // Bundle's byte array is a byte[], JNI layer only takes ByteBuffer
- if (value instanceof byte[]) {
- values[i] = ByteBuffer.wrap((byte[])value);
+ if (key.equals(MediaFormat.KEY_AUDIO_SESSION_ID)) {
+ int sessionId = 0;
+ try {
+ sessionId = (Integer)params.get(key);
+ } catch (Exception e) {
+ throw new IllegalArgumentException("Wrong Session ID Parameter!");
+ }
+ keys[i] = "audio-hw-sync";
+ values[i] = AudioSystem.getAudioHwSyncForSession(sessionId);
} else {
- values[i] = value;
+ keys[i] = key;
+ Object value = params.get(key);
+
+ // Bundle's byte array is a byte[], JNI layer only takes ByteBuffer
+ if (value instanceof byte[]) {
+ values[i] = ByteBuffer.wrap((byte[])value);
+ } else {
+ values[i] = value;
+ }
}
++i;
}