Commit c8f0814b by andrewlewis Committed by Ian Baker

Remove references to core player classes from C

Move player messages and scaling modes to Renderer.

Remove @links to ExoPlayer AudioAttributes and renderers.

PiperOrigin-RevId: 290932785
parent 78fe1afa
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
* Rename `MediaCodecRenderer.onOutputFormatChanged` to * Rename `MediaCodecRenderer.onOutputFormatChanged` to
`MediaCodecRenderer.onOutputMediaFormatChanged`, further `MediaCodecRenderer.onOutputMediaFormatChanged`, further
clarifying the distinction between `Format` and `MediaFormat`. clarifying the distinction between `Format` and `MediaFormat`.
* Move player message-related constants from `C` to `Renderer`, to avoid
having the constants class depend on player/renderer classes.
* Text: * Text:
* Parse `<ruby>` and `<rt>` tags in WebVTT subtitles (rendering is coming * Parse `<ruby>` and `<rt>` tags in WebVTT subtitles (rendering is coming
later). later).
......
...@@ -46,9 +46,9 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; ...@@ -46,9 +46,9 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
* on the playback thread: * on the playback thread:
* *
* <ul> * <ul>
* <li>Message with type {@link C#MSG_SET_SURFACE} to set the output surface. The message payload * <li>Message with type {@link #MSG_SET_SURFACE} to set the output surface. The message payload
* should be the target {@link Surface}, or null. * should be the target {@link Surface}, or null.
* <li>Message with type {@link C#MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER} to set the output * <li>Message with type {@link #MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER} to set the output
* buffer renderer. The message payload should be the target {@link * buffer renderer. The message payload should be the target {@link
* VideoDecoderOutputBufferRenderer}, or null. * VideoDecoderOutputBufferRenderer}, or null.
* </ul> * </ul>
...@@ -186,9 +186,9 @@ public class Libgav1VideoRenderer extends SimpleDecoderVideoRenderer { ...@@ -186,9 +186,9 @@ public class Libgav1VideoRenderer extends SimpleDecoderVideoRenderer {
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
if (messageType == C.MSG_SET_SURFACE) { if (messageType == MSG_SET_SURFACE) {
setOutputSurface((Surface) message); setOutputSurface((Surface) message);
} else if (messageType == C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) { } else if (messageType == MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) {
setOutputBufferRenderer((VideoDecoderOutputBufferRenderer) message); setOutputBufferRenderer((VideoDecoderOutputBufferRenderer) message);
} else { } else {
super.handleMessage(messageType, message); super.handleMessage(messageType, message);
......
...@@ -47,9 +47,9 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; ...@@ -47,9 +47,9 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener;
* on the playback thread: * on the playback thread:
* *
* <ul> * <ul>
* <li>Message with type {@link C#MSG_SET_SURFACE} to set the output surface. The message payload * <li>Message with type {@link #MSG_SET_SURFACE} to set the output surface. The message payload
* should be the target {@link Surface}, or null. * should be the target {@link Surface}, or null.
* <li>Message with type {@link C#MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER} to set the output * <li>Message with type {@link #MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER} to set the output
* buffer renderer. The message payload should be the target {@link * buffer renderer. The message payload should be the target {@link
* VideoDecoderOutputBufferRenderer}, or null. * VideoDecoderOutputBufferRenderer}, or null.
* </ul> * </ul>
...@@ -292,11 +292,11 @@ public class LibvpxVideoRenderer extends SimpleDecoderVideoRenderer { ...@@ -292,11 +292,11 @@ public class LibvpxVideoRenderer extends SimpleDecoderVideoRenderer {
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
if (messageType == C.MSG_SET_SURFACE) { if (messageType == MSG_SET_SURFACE) {
setOutputSurface((Surface) message); setOutputSurface((Surface) message);
} else if (messageType == C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) { } else if (messageType == MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) {
setOutputBufferRenderer((VideoDecoderOutputBufferRenderer) message); setOutputBufferRenderer((VideoDecoderOutputBufferRenderer) message);
} else if (messageType == C.MSG_SET_VIDEO_FRAME_METADATA_LISTENER) { } else if (messageType == MSG_SET_VIDEO_FRAME_METADATA_LISTENER) {
frameMetadataListener = (VideoFrameMetadataListener) message; frameMetadataListener = (VideoFrameMetadataListener) message;
} else { } else {
super.handleMessage(messageType, message); super.handleMessage(messageType, message);
......
...@@ -15,10 +15,19 @@ ...@@ -15,10 +15,19 @@
*/ */
package com.google.android.exoplayer2; package com.google.android.exoplayer2;
import android.media.MediaCodec;
import android.view.Surface;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.PlayerMessage.Target;
import com.google.android.exoplayer2.audio.AuxEffectInfo;
import com.google.android.exoplayer2.source.SampleStream; import com.google.android.exoplayer2.source.SampleStream;
import com.google.android.exoplayer2.util.MediaClock; import com.google.android.exoplayer2.util.MediaClock;
import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.SimpleDecoderVideoRenderer;
import com.google.android.exoplayer2.video.VideoDecoderOutputBufferRenderer;
import com.google.android.exoplayer2.video.VideoFrameMetadataListener;
import com.google.android.exoplayer2.video.spherical.CameraMotionListener;
import java.io.IOException; import java.io.IOException;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -38,6 +47,111 @@ import java.lang.annotation.RetentionPolicy; ...@@ -38,6 +47,111 @@ import java.lang.annotation.RetentionPolicy;
public interface Renderer extends PlayerMessage.Target { public interface Renderer extends PlayerMessage.Target {
/** /**
* The type of a message that can be passed to a video renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be the target {@link Surface}, or
* null.
*/
@SuppressWarnings("deprecation")
int MSG_SET_SURFACE = C.MSG_SET_SURFACE;
/**
* A type of a message that can be passed to an audio renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be a {@link Float} with 0 being
* silence and 1 being unity gain.
*/
@SuppressWarnings("deprecation")
int MSG_SET_VOLUME = C.MSG_SET_VOLUME;
/**
* A type of a message that can be passed to an audio renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be an {@link
* com.google.android.exoplayer2.audio.AudioAttributes} instance that will configure the
* underlying audio track. If not set, the default audio attributes will be used. They are
* suitable for general media playback.
*
* <p>Setting the audio attributes during playback may introduce a short gap in audio output as
* the audio track is recreated. A new audio session id will also be generated.
*
* <p>If tunneling is enabled by the track selector, the specified audio attributes will be
* ignored, but they will take effect if audio is later played without tunneling.
*
* <p>If the device is running a build before platform API version 21, audio attributes cannot be
* set directly on the underlying audio track. In this case, the usage will be mapped onto an
* equivalent stream type using {@link Util#getStreamTypeForAudioUsage(int)}.
*
* <p>To get audio attributes that are equivalent to a legacy stream type, pass the stream type to
* {@link Util#getAudioUsageForStreamType(int)} and use the returned {@link C.AudioUsage} to build
* an audio attributes instance.
*/
@SuppressWarnings("deprecation")
int MSG_SET_AUDIO_ATTRIBUTES = C.MSG_SET_AUDIO_ATTRIBUTES;
/**
* The type of a message that can be passed to a {@link MediaCodec}-based video renderer via
* {@link ExoPlayer#createMessage(Target)}. The message payload should be one of the integer
* scaling modes in {@link VideoScalingMode}.
*
* <p>Note that the scaling mode only applies if the {@link Surface} targeted by the renderer is
* owned by a {@link android.view.SurfaceView}.
*/
@SuppressWarnings("deprecation")
int MSG_SET_SCALING_MODE = C.MSG_SET_SCALING_MODE;
/**
* A type of a message that can be passed to an audio renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be an {@link AuxEffectInfo}
* instance representing an auxiliary audio effect for the underlying audio track.
*/
@SuppressWarnings("deprecation")
int MSG_SET_AUX_EFFECT_INFO = C.MSG_SET_AUX_EFFECT_INFO;
/**
* The type of a message that can be passed to a video renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be a {@link
* VideoFrameMetadataListener} instance, or null.
*/
@SuppressWarnings("deprecation")
int MSG_SET_VIDEO_FRAME_METADATA_LISTENER = C.MSG_SET_VIDEO_FRAME_METADATA_LISTENER;
/**
* The type of a message that can be passed to a camera motion renderer via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be a {@link CameraMotionListener}
* instance, or null.
*/
@SuppressWarnings("deprecation")
int MSG_SET_CAMERA_MOTION_LISTENER = C.MSG_SET_CAMERA_MOTION_LISTENER;
/**
* The type of a message that can be passed to a {@link SimpleDecoderVideoRenderer} via {@link
* ExoPlayer#createMessage(Target)}. The message payload should be the target {@link
* VideoDecoderOutputBufferRenderer}, or null.
*
* <p>This message is intended only for use with extension renderers that expect a {@link
* VideoDecoderOutputBufferRenderer}. For other use cases, an output surface should be passed via
* {@link #MSG_SET_SURFACE} instead.
*/
@SuppressWarnings("deprecation")
int MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER = C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER;
/**
* Applications or extensions may define custom {@code MSG_*} constants that can be passed to
* renderers. These custom constants must be greater than or equal to this value.
*/
@SuppressWarnings("deprecation")
int MSG_CUSTOM_BASE = C.MSG_CUSTOM_BASE;
/**
* Video scaling modes for {@link MediaCodec}-based renderers. One of {@link
* #VIDEO_SCALING_MODE_SCALE_TO_FIT} or {@link #VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}.
*/
@Documented
@Retention(RetentionPolicy.SOURCE)
@IntDef(value = {VIDEO_SCALING_MODE_SCALE_TO_FIT, VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING})
@interface VideoScalingMode {}
/** See {@link MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT}. */
@SuppressWarnings("deprecation")
int VIDEO_SCALING_MODE_SCALE_TO_FIT = C.VIDEO_SCALING_MODE_SCALE_TO_FIT;
/** See {@link MediaCodec#VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING}. */
@SuppressWarnings("deprecation")
int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING =
C.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING;
/** A default video scaling mode for {@link MediaCodec}-based renderers. */
@SuppressWarnings("deprecation")
int VIDEO_SCALING_MODE_DEFAULT = C.VIDEO_SCALING_MODE_DEFAULT;
/**
* The renderer states. One of {@link #STATE_DISABLED}, {@link #STATE_ENABLED} or {@link * The renderer states. One of {@link #STATE_DISABLED}, {@link #STATE_ENABLED} or {@link
* #STATE_STARTED}. * #STATE_STARTED}.
*/ */
...@@ -64,9 +178,9 @@ public interface Renderer extends PlayerMessage.Target { ...@@ -64,9 +178,9 @@ public interface Renderer extends PlayerMessage.Target {
int STATE_STARTED = 2; int STATE_STARTED = 2;
/** /**
* Returns the track type that the {@link Renderer} handles. For example, a video renderer will * Returns the track type that the renderer handles. For example, a video renderer will return
* return {@link C#TRACK_TYPE_VIDEO}, an audio renderer will return {@link C#TRACK_TYPE_AUDIO}, a * {@link C#TRACK_TYPE_VIDEO}, an audio renderer will return {@link C#TRACK_TYPE_AUDIO}, a text
* text renderer will return {@link C#TRACK_TYPE_TEXT}, and so on. * renderer will return {@link C#TRACK_TYPE_TEXT}, and so on.
* *
* @return One of the {@code TRACK_TYPE_*} constants defined in {@link C}. * @return One of the {@code TRACK_TYPE_*} constants defined in {@link C}.
*/ */
...@@ -266,12 +380,12 @@ public interface Renderer extends PlayerMessage.Target { ...@@ -266,12 +380,12 @@ public interface Renderer extends PlayerMessage.Target {
boolean isReady(); boolean isReady();
/** /**
* Whether the renderer is ready for the {@link ExoPlayer} instance to transition to * Whether the renderer is ready for the {@link ExoPlayer} instance to transition to {@link
* {@link Player#STATE_ENDED}. The player will make this transition as soon as {@code true} is * Player#STATE_ENDED}. The player will make this transition as soon as {@code true} is returned
* returned by all of its {@link Renderer}s. * by all of its renderers.
* <p> *
* This method may be called when the renderer is in the following states: * <p>This method may be called when the renderer is in the following states: {@link
* {@link #STATE_ENABLED}, {@link #STATE_STARTED}. * #STATE_ENABLED}, {@link #STATE_STARTED}.
* *
* @return Whether the renderer is ready for the player to transition to the ended state. * @return Whether the renderer is ready for the player to transition to the ended state.
*/ */
......
...@@ -434,7 +434,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -434,7 +434,7 @@ public class SimpleExoPlayer extends BasePlayer
audioVolume = 1; audioVolume = 1;
audioSessionId = C.AUDIO_SESSION_ID_UNSET; audioSessionId = C.AUDIO_SESSION_ID_UNSET;
audioAttributes = AudioAttributes.DEFAULT; audioAttributes = AudioAttributes.DEFAULT;
videoScalingMode = C.VIDEO_SCALING_MODE_DEFAULT; videoScalingMode = Renderer.VIDEO_SCALING_MODE_DEFAULT;
currentCues = Collections.emptyList(); currentCues = Collections.emptyList();
// Build the player and associated objects. // Build the player and associated objects.
...@@ -506,7 +506,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -506,7 +506,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_SCALING_MODE) .setType(Renderer.MSG_SET_SCALING_MODE)
.setPayload(videoScalingMode) .setPayload(videoScalingMode)
.send(); .send();
} }
...@@ -678,7 +678,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -678,7 +678,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) { if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_AUDIO_ATTRIBUTES) .setType(Renderer.MSG_SET_AUDIO_ATTRIBUTES)
.setPayload(audioAttributes) .setPayload(audioAttributes)
.send(); .send();
} }
...@@ -712,7 +712,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -712,7 +712,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) { if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_AUX_EFFECT_INFO) .setType(Renderer.MSG_SET_AUX_EFFECT_INFO)
.setPayload(auxEffectInfo) .setPayload(auxEffectInfo)
.send(); .send();
} }
...@@ -904,7 +904,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -904,7 +904,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_VIDEO_FRAME_METADATA_LISTENER) .setType(Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER)
.setPayload(listener) .setPayload(listener)
.send(); .send();
} }
...@@ -921,7 +921,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -921,7 +921,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_VIDEO_FRAME_METADATA_LISTENER) .setType(Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER)
.setPayload(null) .setPayload(null)
.send(); .send();
} }
...@@ -936,7 +936,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -936,7 +936,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_CAMERA_MOTION) { if (renderer.getTrackType() == C.TRACK_TYPE_CAMERA_MOTION) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_CAMERA_MOTION_LISTENER) .setType(Renderer.MSG_SET_CAMERA_MOTION_LISTENER)
.setPayload(listener) .setPayload(listener)
.send(); .send();
} }
...@@ -953,7 +953,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -953,7 +953,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_CAMERA_MOTION) { if (renderer.getTrackType() == C.TRACK_TYPE_CAMERA_MOTION) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_CAMERA_MOTION_LISTENER) .setType(Renderer.MSG_SET_CAMERA_MOTION_LISTENER)
.setPayload(null) .setPayload(null)
.send(); .send();
} }
...@@ -1571,7 +1571,11 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -1571,7 +1571,11 @@ public class SimpleExoPlayer extends BasePlayer
for (Renderer renderer : renderers) { for (Renderer renderer : renderers) {
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
messages.add( messages.add(
player.createMessage(renderer).setType(C.MSG_SET_SURFACE).setPayload(surface).send()); player
.createMessage(renderer)
.setType(Renderer.MSG_SET_SURFACE)
.setPayload(surface)
.send());
} }
} }
if (this.surface != null && this.surface != surface) { if (this.surface != null && this.surface != surface) {
...@@ -1598,7 +1602,7 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -1598,7 +1602,7 @@ public class SimpleExoPlayer extends BasePlayer
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) { if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
player player
.createMessage(renderer) .createMessage(renderer)
.setType(C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER) .setType(Renderer.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER)
.setPayload(videoDecoderOutputBufferRenderer) .setPayload(videoDecoderOutputBufferRenderer)
.send(); .send();
} }
...@@ -1620,7 +1624,11 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -1620,7 +1624,11 @@ public class SimpleExoPlayer extends BasePlayer
float scaledVolume = audioVolume * audioFocusManager.getVolumeMultiplier(); float scaledVolume = audioVolume * audioFocusManager.getVolumeMultiplier();
for (Renderer renderer : renderers) { for (Renderer renderer : renderers) {
if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) { if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
player.createMessage(renderer).setType(C.MSG_SET_VOLUME).setPayload(scaledVolume).send(); player
.createMessage(renderer)
.setType(Renderer.MSG_SET_VOLUME)
.setPayload(scaledVolume)
.send();
} }
} }
} }
......
...@@ -59,14 +59,14 @@ import java.util.List; ...@@ -59,14 +59,14 @@ import java.util.List;
* on the playback thread: * on the playback thread:
* *
* <ul> * <ul>
* <li>Message with type {@link C#MSG_SET_VOLUME} to set the volume. The message payload should be * <li>Message with type {@link #MSG_SET_VOLUME} to set the volume. The message payload should be
* a {@link Float} with 0 being silence and 1 being unity gain. * a {@link Float} with 0 being silence and 1 being unity gain.
* <li>Message with type {@link C#MSG_SET_AUDIO_ATTRIBUTES} to set the audio attributes. The * <li>Message with type {@link #MSG_SET_AUDIO_ATTRIBUTES} to set the audio attributes. The
* message payload should be an {@link com.google.android.exoplayer2.audio.AudioAttributes} * message payload should be an {@link com.google.android.exoplayer2.audio.AudioAttributes}
* instance that will configure the underlying audio track. * instance that will configure the underlying audio track.
* <li>Message with type {@link C#MSG_SET_AUX_EFFECT_INFO} to set the auxiliary effect. The * <li>Message with type {@link #MSG_SET_AUX_EFFECT_INFO} to set the auxiliary effect. The message
* message payload should be an {@link AuxEffectInfo} instance that will configure the * payload should be an {@link AuxEffectInfo} instance that will configure the underlying
* underlying audio track. * audio track.
* </ul> * </ul>
*/ */
public class MediaCodecAudioRenderer extends MediaCodecRenderer implements MediaClock { public class MediaCodecAudioRenderer extends MediaCodecRenderer implements MediaClock {
...@@ -846,14 +846,14 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media ...@@ -846,14 +846,14 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
switch (messageType) { switch (messageType) {
case C.MSG_SET_VOLUME: case MSG_SET_VOLUME:
audioSink.setVolume((Float) message); audioSink.setVolume((Float) message);
break; break;
case C.MSG_SET_AUDIO_ATTRIBUTES: case MSG_SET_AUDIO_ATTRIBUTES:
AudioAttributes audioAttributes = (AudioAttributes) message; AudioAttributes audioAttributes = (AudioAttributes) message;
audioSink.setAudioAttributes(audioAttributes); audioSink.setAudioAttributes(audioAttributes);
break; break;
case C.MSG_SET_AUX_EFFECT_INFO: case MSG_SET_AUX_EFFECT_INFO:
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message; AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
audioSink.setAuxEffectInfo(auxEffectInfo); audioSink.setAuxEffectInfo(auxEffectInfo);
break; break;
......
...@@ -54,14 +54,14 @@ import java.lang.annotation.RetentionPolicy; ...@@ -54,14 +54,14 @@ import java.lang.annotation.RetentionPolicy;
* on the playback thread: * on the playback thread:
* *
* <ul> * <ul>
* <li>Message with type {@link C#MSG_SET_VOLUME} to set the volume. The message payload should be * <li>Message with type {@link #MSG_SET_VOLUME} to set the volume. The message payload should be
* a {@link Float} with 0 being silence and 1 being unity gain. * a {@link Float} with 0 being silence and 1 being unity gain.
* <li>Message with type {@link C#MSG_SET_AUDIO_ATTRIBUTES} to set the audio attributes. The * <li>Message with type {@link #MSG_SET_AUDIO_ATTRIBUTES} to set the audio attributes. The
* message payload should be an {@link com.google.android.exoplayer2.audio.AudioAttributes} * message payload should be an {@link com.google.android.exoplayer2.audio.AudioAttributes}
* instance that will configure the underlying audio track. * instance that will configure the underlying audio track.
* <li>Message with type {@link C#MSG_SET_AUX_EFFECT_INFO} to set the auxiliary effect. The * <li>Message with type {@link #MSG_SET_AUX_EFFECT_INFO} to set the auxiliary effect. The message
* message payload should be an {@link AuxEffectInfo} instance that will configure the * payload should be an {@link AuxEffectInfo} instance that will configure the underlying
* underlying audio track. * audio track.
* </ul> * </ul>
*/ */
public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements MediaClock { public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements MediaClock {
...@@ -594,14 +594,14 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements ...@@ -594,14 +594,14 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
switch (messageType) { switch (messageType) {
case C.MSG_SET_VOLUME: case MSG_SET_VOLUME:
audioSink.setVolume((Float) message); audioSink.setVolume((Float) message);
break; break;
case C.MSG_SET_AUDIO_ATTRIBUTES: case MSG_SET_AUDIO_ATTRIBUTES:
AudioAttributes audioAttributes = (AudioAttributes) message; AudioAttributes audioAttributes = (AudioAttributes) message;
audioSink.setAudioAttributes(audioAttributes); audioSink.setAudioAttributes(audioAttributes);
break; break;
case C.MSG_SET_AUX_EFFECT_INFO: case MSG_SET_AUX_EFFECT_INFO:
AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message; AuxEffectInfo auxEffectInfo = (AuxEffectInfo) message;
audioSink.setAuxEffectInfo(auxEffectInfo); audioSink.setAuxEffectInfo(auxEffectInfo);
break; break;
......
...@@ -67,10 +67,10 @@ import java.util.List; ...@@ -67,10 +67,10 @@ import java.util.List;
* on the playback thread: * on the playback thread:
* *
* <ul> * <ul>
* <li>Message with type {@link C#MSG_SET_SURFACE} to set the output surface. The message payload * <li>Message with type {@link #MSG_SET_SURFACE} to set the output surface. The message payload
* should be the target {@link Surface}, or null. * should be the target {@link Surface}, or null.
* <li>Message with type {@link C#MSG_SET_SCALING_MODE} to set the video scaling mode. The message * <li>Message with type {@link #MSG_SET_SCALING_MODE} to set the video scaling mode. The message
* payload should be one of the integer scaling modes in {@link C.VideoScalingMode}. Note that * payload should be one of the integer scaling modes in {@link VideoScalingMode}. Note that
* the scaling mode only applies if the {@link Surface} targeted by this renderer is owned by * the scaling mode only applies if the {@link Surface} targeted by this renderer is owned by
* a {@link android.view.SurfaceView}. * a {@link android.view.SurfaceView}.
* </ul> * </ul>
...@@ -134,8 +134,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -134,8 +134,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
private Surface surface; private Surface surface;
private Surface dummySurface; private Surface dummySurface;
@C.VideoScalingMode @VideoScalingMode private int scalingMode;
private int scalingMode;
private boolean renderedFirstFrame; private boolean renderedFirstFrame;
private long initialPositionUs; private long initialPositionUs;
private long joiningDeadlineMs; private long joiningDeadlineMs;
...@@ -357,7 +356,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -357,7 +356,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
currentHeight = Format.NO_VALUE; currentHeight = Format.NO_VALUE;
currentPixelWidthHeightRatio = Format.NO_VALUE; currentPixelWidthHeightRatio = Format.NO_VALUE;
pendingPixelWidthHeightRatio = Format.NO_VALUE; pendingPixelWidthHeightRatio = Format.NO_VALUE;
scalingMode = C.VIDEO_SCALING_MODE_DEFAULT; scalingMode = VIDEO_SCALING_MODE_DEFAULT;
clearReportedVideoSize(); clearReportedVideoSize();
} }
...@@ -589,15 +588,15 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { ...@@ -589,15 +588,15 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
if (messageType == C.MSG_SET_SURFACE) { if (messageType == MSG_SET_SURFACE) {
setSurface((Surface) message); setSurface((Surface) message);
} else if (messageType == C.MSG_SET_SCALING_MODE) { } else if (messageType == MSG_SET_SCALING_MODE) {
scalingMode = (Integer) message; scalingMode = (Integer) message;
MediaCodec codec = getCodec(); MediaCodec codec = getCodec();
if (codec != null) { if (codec != null) {
codec.setVideoScalingMode(scalingMode); codec.setVideoScalingMode(scalingMode);
} }
} else if (messageType == C.MSG_SET_VIDEO_FRAME_METADATA_LISTENER) { } else if (messageType == MSG_SET_VIDEO_FRAME_METADATA_LISTENER) {
frameMetadataListener = (VideoFrameMetadataListener) message; frameMetadataListener = (VideoFrameMetadataListener) message;
} else { } else {
super.handleMessage(messageType, message); super.handleMessage(messageType, message);
......
...@@ -58,7 +58,7 @@ public class CameraMotionRenderer extends BaseRenderer { ...@@ -58,7 +58,7 @@ public class CameraMotionRenderer extends BaseRenderer {
@Override @Override
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException { public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
if (messageType == C.MSG_SET_CAMERA_MOTION_LISTENER) { if (messageType == MSG_SET_CAMERA_MOTION_LISTENER) {
listener = (CameraMotionListener) message; listener = (CameraMotionListener) message;
} else { } else {
super.handleMessage(messageType, message); 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