Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
11d2d7da
authored
Sep 07, 2021
by
samrobinson
Committed by
Ian Baker
Sep 07, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add open @IntDef for Renderer message types.
#exofixit PiperOrigin-RevId: 395233622
parent
093d1171
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
102 additions
and
16 deletions
library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/NoSampleRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java
library/core/src/main/java/com/google/android/exoplayer2/Renderer.java
library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/video/spherical/CameraMotionRenderer.java
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/ActionSchedule.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeVideoRenderer.java
library/core/src/main/java/com/google/android/exoplayer2/BaseRenderer.java
View file @
11d2d7da
...
...
@@ -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.
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/NoSampleRenderer.java
View file @
11d2d7da
...
...
@@ -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.
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/PlayerMessage.java
View file @
11d2d7da
...
...
@@ -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. */
...
...
library/core/src/main/java/com/google/android/exoplayer2/Renderer.java
View file @
11d2d7da
...
...
@@ -75,6 +75,33 @@ public interface Renderer extends PlayerMessage.Target {
}
/**
* 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
* some video renderers may accept other outputs (e.g., {@link VideoDecoderOutputBufferRenderer}).
...
...
library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
View file @
11d2d7da
...
...
@@ -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
;
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java
View file @
11d2d7da
...
...
@@ -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
;
...
...
library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java
View file @
11d2d7da
...
...
@@ -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
;
...
...
library/core/src/main/java/com/google/android/exoplayer2/video/DecoderVideoRenderer.java
View file @
11d2d7da
...
...
@@ -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
)
{
...
...
library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
View file @
11d2d7da
...
...
@@ -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
);
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/video/spherical/CameraMotionRenderer.java
View file @
11d2d7da
...
...
@@ -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
{
...
...
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
View file @
11d2d7da
...
...
@@ -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
++;
}
}
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/ActionSchedule.java
View file @
11d2d7da
...
...
@@ -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
;
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeVideoRenderer.java
View file @
11d2d7da
...
...
@@ -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
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment