mirror of
https://github.com/samsonjs/media.git
synced 2026-04-18 13:25:47 +00:00
Propagate audio session ID to MediaCodecVideoRenderer
Issue: #8190 PiperOrigin-RevId: 350357825
This commit is contained in:
parent
aa2beb080c
commit
d1d28a418d
3 changed files with 24 additions and 15 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue