mirror of
https://github.com/androidx/media.git
synced 2025-05-07 23:50:44 +08:00
Add open @IntDef for Renderer message types.
#exofixit PiperOrigin-RevId: 395233622
This commit is contained in:
parent
093d117127
commit
11d2d7daf9
@ -196,7 +196,8 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities {
|
||||
// PlayerMessage.Target implementation.
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
@ -179,7 +179,8 @@ public abstract class NoSampleRenderer implements Renderer, RendererCapabilities
|
||||
// PlayerMessage.Target implementation.
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
|
@ -18,6 +18,7 @@ package com.google.android.exoplayer2;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.Renderer.MessageType;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Clock;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
@ -39,7 +40,8 @@ public final class PlayerMessage {
|
||||
* @throws ExoPlaybackException If an error occurred whilst handling the message. Should only be
|
||||
* thrown by targets that handle messages on the playback thread.
|
||||
*/
|
||||
void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException;
|
||||
void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException;
|
||||
}
|
||||
|
||||
/** A sender for messages. */
|
||||
|
@ -74,6 +74,33 @@ public interface Renderer extends PlayerMessage.Target {
|
||||
void onWakeup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a type of message that can be passed to a renderer. May be one of {@link
|
||||
* #MSG_SET_VIDEO_OUTPUT}, {@link #MSG_SET_VOLUME}, {@link #MSG_SET_AUDIO_ATTRIBUTES}, {@link
|
||||
* #MSG_SET_SCALING_MODE}, {@link #MSG_SET_CHANGE_FRAME_RATE_STRATEGY}, {@link
|
||||
* #MSG_SET_AUX_EFFECT_INFO}, {@link #MSG_SET_VIDEO_FRAME_METADATA_LISTENER}, {@link
|
||||
* #MSG_SET_CAMERA_MOTION_LISTENER}, {@link #MSG_SET_SKIP_SILENCE_ENABLED}, {@link
|
||||
* #MSG_SET_AUDIO_SESSION_ID} or {@link #MSG_SET_WAKEUP_LISTENER}. May also be an app-defined
|
||||
* value (see {@link #MSG_CUSTOM_BASE}).
|
||||
*/
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef(
|
||||
open = true,
|
||||
value = {
|
||||
MSG_SET_VIDEO_OUTPUT,
|
||||
MSG_SET_VOLUME,
|
||||
MSG_SET_AUDIO_ATTRIBUTES,
|
||||
MSG_SET_SCALING_MODE,
|
||||
MSG_SET_CHANGE_FRAME_RATE_STRATEGY,
|
||||
MSG_SET_AUX_EFFECT_INFO,
|
||||
MSG_SET_VIDEO_FRAME_METADATA_LISTENER,
|
||||
MSG_SET_CAMERA_MOTION_LISTENER,
|
||||
MSG_SET_SKIP_SILENCE_ENABLED,
|
||||
MSG_SET_AUDIO_SESSION_ID,
|
||||
MSG_SET_WAKEUP_LISTENER
|
||||
})
|
||||
public @interface MessageType {}
|
||||
/**
|
||||
* The type of a message that can be passed to a video renderer via {@link
|
||||
* ExoPlayer#createMessage(Target)}. The message payload is normally a {@link Surface}, however
|
||||
|
@ -45,6 +45,7 @@ import android.view.TextureView;
|
||||
import androidx.annotation.IntRange;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import com.google.android.exoplayer2.Renderer.MessageType;
|
||||
import com.google.android.exoplayer2.analytics.AnalyticsCollector;
|
||||
import com.google.android.exoplayer2.analytics.AnalyticsListener;
|
||||
import com.google.android.exoplayer2.audio.AudioAttributes;
|
||||
@ -2206,11 +2207,15 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
private static final class FrameMetadataListener
|
||||
implements VideoFrameMetadataListener, CameraMotionListener, PlayerMessage.Target {
|
||||
|
||||
@MessageType
|
||||
public static final int MSG_SET_VIDEO_FRAME_METADATA_LISTENER =
|
||||
Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER;
|
||||
|
||||
@MessageType
|
||||
public static final int MSG_SET_CAMERA_MOTION_LISTENER =
|
||||
Renderer.MSG_SET_CAMERA_MOTION_LISTENER;
|
||||
public static final int MSG_SET_SPHERICAL_SURFACE_VIEW = Renderer.MSG_CUSTOM_BASE;
|
||||
|
||||
@MessageType public static final int MSG_SET_SPHERICAL_SURFACE_VIEW = Renderer.MSG_CUSTOM_BASE;
|
||||
|
||||
@Nullable private VideoFrameMetadataListener videoFrameMetadataListener;
|
||||
@Nullable private CameraMotionListener cameraMotionListener;
|
||||
@ -2218,7 +2223,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
@Nullable private CameraMotionListener internalCameraMotionListener;
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message) {
|
||||
switch (messageType) {
|
||||
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
videoFrameMetadataListener = (VideoFrameMetadataListener) message;
|
||||
@ -2227,7 +2232,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
cameraMotionListener = (CameraMotionListener) message;
|
||||
break;
|
||||
case MSG_SET_SPHERICAL_SURFACE_VIEW:
|
||||
SphericalGLSurfaceView surfaceView = (SphericalGLSurfaceView) message;
|
||||
@Nullable SphericalGLSurfaceView surfaceView = (SphericalGLSurfaceView) message;
|
||||
if (surfaceView == null) {
|
||||
internalVideoFrameMetadataListener = null;
|
||||
internalCameraMotionListener = null;
|
||||
@ -2236,6 +2241,15 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
internalCameraMotionListener = surfaceView.getCameraMotionListener();
|
||||
}
|
||||
break;
|
||||
case Renderer.MSG_SET_AUDIO_ATTRIBUTES:
|
||||
case Renderer.MSG_SET_AUDIO_SESSION_ID:
|
||||
case Renderer.MSG_SET_AUX_EFFECT_INFO:
|
||||
case Renderer.MSG_SET_CHANGE_FRAME_RATE_STRATEGY:
|
||||
case Renderer.MSG_SET_SCALING_MODE:
|
||||
case Renderer.MSG_SET_SKIP_SILENCE_ENABLED:
|
||||
case Renderer.MSG_SET_VIDEO_OUTPUT:
|
||||
case Renderer.MSG_SET_VOLUME:
|
||||
case Renderer.MSG_SET_WAKEUP_LISTENER:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -571,7 +571,8 @@ public abstract class DecoderAudioRenderer<
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
switch (messageType) {
|
||||
case MSG_SET_VOLUME:
|
||||
audioSink.setVolume((Float) message);
|
||||
@ -590,6 +591,12 @@ public abstract class DecoderAudioRenderer<
|
||||
case MSG_SET_AUDIO_SESSION_ID:
|
||||
audioSink.setAudioSessionId((Integer) message);
|
||||
break;
|
||||
case MSG_SET_CAMERA_MOTION_LISTENER:
|
||||
case MSG_SET_CHANGE_FRAME_RATE_STRATEGY:
|
||||
case MSG_SET_SCALING_MODE:
|
||||
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
case MSG_SET_VIDEO_OUTPUT:
|
||||
case MSG_SET_WAKEUP_LISTENER:
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
break;
|
||||
|
@ -15,6 +15,11 @@
|
||||
*/
|
||||
package com.google.android.exoplayer2.audio;
|
||||
|
||||
import static com.google.android.exoplayer2.Renderer.MSG_SET_CAMERA_MOTION_LISTENER;
|
||||
import static com.google.android.exoplayer2.Renderer.MSG_SET_CHANGE_FRAME_RATE_STRATEGY;
|
||||
import static com.google.android.exoplayer2.Renderer.MSG_SET_SCALING_MODE;
|
||||
import static com.google.android.exoplayer2.Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER;
|
||||
import static com.google.android.exoplayer2.Renderer.MSG_SET_VIDEO_OUTPUT;
|
||||
import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.DISCARD_REASON_MAX_INPUT_SIZE_EXCEEDED;
|
||||
import static com.google.android.exoplayer2.decoder.DecoderReuseEvaluation.REUSE_RESULT_NO;
|
||||
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
|
||||
@ -667,7 +672,8 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
switch (messageType) {
|
||||
case MSG_SET_VOLUME:
|
||||
audioSink.setVolume((Float) message);
|
||||
@ -689,6 +695,11 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||
case MSG_SET_WAKEUP_LISTENER:
|
||||
this.wakeupListener = (WakeupListener) message;
|
||||
break;
|
||||
case MSG_SET_CAMERA_MOTION_LISTENER:
|
||||
case MSG_SET_CHANGE_FRAME_RATE_STRATEGY:
|
||||
case MSG_SET_SCALING_MODE:
|
||||
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
case MSG_SET_VIDEO_OUTPUT:
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
break;
|
||||
|
@ -247,7 +247,8 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
|
||||
// PlayerMessage.Target implementation.
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
if (messageType == MSG_SET_VIDEO_OUTPUT) {
|
||||
setOutput(message);
|
||||
} else if (messageType == MSG_SET_VIDEO_FRAME_METADATA_LISTENER) {
|
||||
|
@ -505,7 +505,8 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
switch (messageType) {
|
||||
case MSG_SET_VIDEO_OUTPUT:
|
||||
setOutput(message);
|
||||
@ -532,6 +533,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MSG_SET_AUDIO_ATTRIBUTES:
|
||||
case MSG_SET_AUX_EFFECT_INFO:
|
||||
case MSG_SET_CAMERA_MOTION_LISTENER:
|
||||
case MSG_SET_SKIP_SILENCE_ENABLED:
|
||||
case MSG_SET_VOLUME:
|
||||
case MSG_SET_WAKEUP_LISTENER:
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
}
|
||||
|
@ -64,7 +64,8 @@ public final class CameraMotionRenderer extends BaseRenderer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
if (messageType == MSG_SET_CAMERA_MOTION_LISTENER) {
|
||||
listener = (CameraMotionListener) message;
|
||||
} else {
|
||||
|
@ -2573,7 +2573,7 @@ public final class ExoPlayerTest {
|
||||
Renderer videoRenderer =
|
||||
new FakeRenderer(C.TRACK_TYPE_VIDEO) {
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message)
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
super.handleMessage(messageType, message);
|
||||
rendererMessages.add(messageType);
|
||||
@ -11093,7 +11093,7 @@ public final class ExoPlayerTest {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message)
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
if (messageType == MSG_SET_WAKEUP_LISTENER) {
|
||||
assertThat(message).isNotNull();
|
||||
@ -11116,7 +11116,7 @@ public final class ExoPlayerTest {
|
||||
public int messageCount;
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) {
|
||||
public void handleMessage(@Renderer.MessageType int messageType, @Nullable Object message) {
|
||||
messageCount++;
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ import com.google.android.exoplayer2.PlaybackParameters;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.PlayerMessage;
|
||||
import com.google.android.exoplayer2.PlayerMessage.Target;
|
||||
import com.google.android.exoplayer2.Renderer;
|
||||
import com.google.android.exoplayer2.SimpleExoPlayer;
|
||||
import com.google.android.exoplayer2.Timeline;
|
||||
import com.google.android.exoplayer2.audio.AudioAttributes;
|
||||
@ -616,7 +617,8 @@ public final class ActionSchedule {
|
||||
SimpleExoPlayer player, int messageType, @Nullable Object message);
|
||||
|
||||
@Override
|
||||
public final void handleMessage(int messageType, @Nullable Object message) {
|
||||
public final void handleMessage(
|
||||
@Renderer.MessageType int messageType, @Nullable Object message) {
|
||||
handleMessage(Assertions.checkStateNotNull(player), messageType, message);
|
||||
if (callback != null) {
|
||||
hasArrived = true;
|
||||
|
@ -95,12 +95,24 @@ public class FakeVideoRenderer extends FakeRenderer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(int messageType, @Nullable Object message) throws ExoPlaybackException {
|
||||
public void handleMessage(@MessageType int messageType, @Nullable Object message)
|
||||
throws ExoPlaybackException {
|
||||
switch (messageType) {
|
||||
case MSG_SET_VIDEO_OUTPUT:
|
||||
output = message;
|
||||
renderedFirstFrameAfterReset = false;
|
||||
break;
|
||||
|
||||
case Renderer.MSG_SET_AUDIO_ATTRIBUTES:
|
||||
case Renderer.MSG_SET_AUDIO_SESSION_ID:
|
||||
case Renderer.MSG_SET_AUX_EFFECT_INFO:
|
||||
case Renderer.MSG_SET_CAMERA_MOTION_LISTENER:
|
||||
case Renderer.MSG_SET_CHANGE_FRAME_RATE_STRATEGY:
|
||||
case Renderer.MSG_SET_SCALING_MODE:
|
||||
case Renderer.MSG_SET_SKIP_SILENCE_ENABLED:
|
||||
case Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
case Renderer.MSG_SET_VOLUME:
|
||||
case Renderer.MSG_SET_WAKEUP_LISTENER:
|
||||
default:
|
||||
super.handleMessage(messageType, message);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user