Commit d1d28a41 by olly Committed by Ian Baker

Propagate audio session ID to MediaCodecVideoRenderer

Issue: #8190
PiperOrigin-RevId: 350357825
parent aa2beb08
......@@ -160,13 +160,14 @@ public interface Renderer extends PlayerMessage.Target {
*/
int MSG_SET_SKIP_SILENCE_ENABLED = 101;
/**
* A type of a message that can be passed to an audio renderer via {@link
* The type of a message that can be passed to audio and video renderers via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be an {@link Integer} instance
* representing the audio session ID that will be attached to the underlying audio track.
* representing the audio session ID that will be attached to the underlying audio track. Video
* renderers that support tunneling will use the audio session ID when tunneling is enabled.
*/
int MSG_SET_AUDIO_SESSION_ID = 102;
/**
* A type of a message that can be passed to a {@link Renderer} via {@link
* The type of a message that can be passed to a {@link Renderer} via {@link
* ExoPlayer#createMessage(Target)}, to inform the renderer that it can schedule waking up another
* component.
*
......
......@@ -962,6 +962,7 @@ public class SimpleExoPlayer extends BasePlayer
}
this.audioSessionId = audioSessionId;
sendRendererMessage(C.TRACK_TYPE_AUDIO, Renderer.MSG_SET_AUDIO_SESSION_ID, audioSessionId);
sendRendererMessage(C.TRACK_TYPE_VIDEO, Renderer.MSG_SET_AUDIO_SESSION_ID, audioSessionId);
if (audioSessionId != C.AUDIO_SESSION_ID_UNSET) {
notifyAudioSessionIdSet();
}
......
......@@ -501,18 +501,25 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
@Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
if (messageType == MSG_SET_SURFACE) {
setSurface((Surface) message);
} else if (messageType == MSG_SET_SCALING_MODE) {
scalingMode = (Integer) message;
@Nullable MediaCodecAdapter codec = getCodec();
if (codec != null) {
codec.setVideoScalingMode(scalingMode);
}
} else if (messageType == MSG_SET_VIDEO_FRAME_METADATA_LISTENER) {
frameMetadataListener = (VideoFrameMetadataListener) message;
} else {
super.handleMessage(messageType, message);
switch (messageType) {
case MSG_SET_SURFACE:
setSurface((Surface) message);
break;
case MSG_SET_SCALING_MODE:
scalingMode = (Integer) message;
@Nullable MediaCodecAdapter codec = getCodec();
if (codec != null) {
codec.setVideoScalingMode(scalingMode);
}
break;
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
frameMetadataListener = (VideoFrameMetadataListener) message;
break;
case MSG_SET_AUDIO_SESSION_ID:
// TODO: Set tunnelingAudioSessionId.
break;
default:
super.handleMessage(messageType, message);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment