Remove Player.Listener inheritance of VideoListener

NO_EXTERNAL

PiperOrigin-RevId: 390614839
This commit is contained in:
olly 2021-08-13 16:10:54 +01:00 committed by Oliver Woodman
parent a44878482c
commit 743b33e821
6 changed files with 31 additions and 130 deletions

View File

@ -31,6 +31,8 @@
Use `Player.addListener` and `Player.Listener` instead. Use `Player.addListener` and `Player.Listener` instead.
* Remove `SimpleExoPlayer.addAudioListener`, `removeAudioListener` and * Remove `SimpleExoPlayer.addAudioListener`, `removeAudioListener` and
`AudioListener`. Use `Player.addListener` and `Player.Listener` instead. `AudioListener`. Use `Player.addListener` and `Player.Listener` instead.
* Remove `SimpleExoPlayer.addVideoListener`, `removeVideoListener` and
`VideoListener`. Use `Player.addListener` and `Player.Listener` instead.
### 2.15.0 (2021-08-10) ### 2.15.0 (2021-08-10)

View File

@ -802,20 +802,11 @@ public class ForwardingPlayer implements Player {
this.listener = listener; this.listener = listener;
} }
// VideoListener methods.
@Override @Override
public void onVideoSizeChanged(VideoSize videoSize) { public void onVideoSizeChanged(VideoSize videoSize) {
listener.onVideoSizeChanged(videoSize); listener.onVideoSizeChanged(videoSize);
} }
@Override
@SuppressWarnings("deprecation") // Forwarding to deprecated method.
public void onVideoSizeChanged(
int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {
listener.onVideoSizeChanged(width, height, unappliedRotationDegrees, pixelWidthHeightRatio);
}
@Override @Override
public void onSurfaceSizeChanged(int width, int height) { public void onSurfaceSizeChanged(int width, int height) {
listener.onSurfaceSizeChanged(width, height); listener.onSurfaceSizeChanged(width, height);
@ -826,8 +817,6 @@ public class ForwardingPlayer implements Player {
listener.onRenderedFirstFrame(); listener.onRenderedFirstFrame();
} }
// AudioListener methods
@Override @Override
public void onAudioSessionIdChanged(int audioSessionId) { public void onAudioSessionIdChanged(int audioSessionId) {
listener.onAudioSessionIdChanged(audioSessionId); listener.onAudioSessionIdChanged(audioSessionId);
@ -848,22 +837,16 @@ public class ForwardingPlayer implements Player {
listener.onSkipSilenceEnabledChanged(skipSilenceEnabled); listener.onSkipSilenceEnabledChanged(skipSilenceEnabled);
} }
// TextOutput methods.
@Override @Override
public void onCues(List<Cue> cues) { public void onCues(List<Cue> cues) {
listener.onCues(cues); listener.onCues(cues);
} }
// MetadataOutput methods.
@Override @Override
public void onMetadata(Metadata metadata) { public void onMetadata(Metadata metadata) {
listener.onMetadata(metadata); listener.onMetadata(metadata);
} }
// DeviceListener callbacks
@Override @Override
public void onDeviceInfoChanged(DeviceInfo deviceInfo) { public void onDeviceInfoChanged(DeviceInfo deviceInfo) {
listener.onDeviceInfoChanged(deviceInfo); listener.onDeviceInfoChanged(deviceInfo);

View File

@ -32,7 +32,6 @@ import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.util.FlagSet; import com.google.android.exoplayer2.util.FlagSet;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoListener;
import com.google.android.exoplayer2.video.VideoSize; import com.google.android.exoplayer2.video.VideoSize;
import com.google.common.base.Objects; import com.google.common.base.Objects;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
@ -869,7 +868,7 @@ public interface Player {
* *
* <p>All methods have no-op default implementations to allow selective overrides. * <p>All methods have no-op default implementations to allow selective overrides.
*/ */
interface Listener extends VideoListener, TextOutput, EventListener { interface Listener extends TextOutput, EventListener {
@Override @Override
default void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) {} default void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) {}
@ -964,13 +963,28 @@ public interface Player {
@Override @Override
default void onEvents(Player player, Events events) {} default void onEvents(Player player, Events events) {}
@Override /**
* Called each time there's a change in the size of the video being rendered.
*
* @param videoSize The new size of the video.
*/
default void onVideoSizeChanged(VideoSize videoSize) {} default void onVideoSizeChanged(VideoSize videoSize) {}
@Override /**
* Called each time there's a change in the size of the surface onto which the video is being
* rendered.
*
* @param width The surface width in pixels. May be {@link C#LENGTH_UNSET} if unknown, or 0 if
* the video is not rendered onto a surface.
* @param height The surface height in pixels. May be {@link C#LENGTH_UNSET} if unknown, or 0 if
* the video is not rendered onto a surface.
*/
default void onSurfaceSizeChanged(int width, int height) {} default void onSurfaceSizeChanged(int width, int height) {}
@Override /**
* Called when a frame is rendered for the first time since setting the surface, or since the
* renderer was reset, or since the stream being rendered was changed.
*/
default void onRenderedFirstFrame() {} default void onRenderedFirstFrame() {}
@Override @Override

View File

@ -1,57 +0,0 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.android.exoplayer2.video;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Player;
/**
* A listener for metadata corresponding to video being rendered.
*
* @deprecated Use {@link Player.Listener}.
*/
@Deprecated
public interface VideoListener {
/**
* Called each time there's a change in the size of the video being rendered.
*
* @param videoSize The new size of the video.
*/
default void onVideoSizeChanged(VideoSize videoSize) {}
/** @deprecated Use {@link #onVideoSizeChanged(VideoSize videoSize)}. */
@Deprecated
default void onVideoSizeChanged(
int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {}
/**
* Called each time there's a change in the size of the surface onto which the video is being
* rendered.
*
* @param width The surface width in pixels. May be {@link C#LENGTH_UNSET} if unknown, or 0 if the
* video is not rendered onto a surface.
* @param height The surface height in pixels. May be {@link C#LENGTH_UNSET} if unknown, or 0 if
* the video is not rendered onto a surface.
*/
default void onSurfaceSizeChanged(int width, int height) {}
/**
* Called when a frame is rendered for the first time since setting the surface, or since the
* renderer was reset, or since the stream being rendered was changed.
*/
default void onRenderedFirstFrame() {}
}

View File

@ -53,7 +53,6 @@ import com.google.android.exoplayer2.util.PriorityTaskManager;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.MediaCodecVideoRenderer; import com.google.android.exoplayer2.video.MediaCodecVideoRenderer;
import com.google.android.exoplayer2.video.VideoFrameMetadataListener; import com.google.android.exoplayer2.video.VideoFrameMetadataListener;
import com.google.android.exoplayer2.video.VideoListener;
import com.google.android.exoplayer2.video.VideoSize; import com.google.android.exoplayer2.video.VideoSize;
import com.google.android.exoplayer2.video.spherical.CameraMotionListener; import com.google.android.exoplayer2.video.spherical.CameraMotionListener;
import java.util.List; import java.util.List;
@ -253,24 +252,6 @@ public interface ExoPlayer extends Player {
@C.VideoChangeFrameRateStrategy @C.VideoChangeFrameRateStrategy
int getVideoChangeFrameRateStrategy(); int getVideoChangeFrameRateStrategy();
/**
* Adds a listener to receive video events.
*
* @param listener The listener to register.
* @deprecated Use {@link #addListener(Listener)}.
*/
@Deprecated
void addVideoListener(VideoListener listener);
/**
* Removes a listener of video events.
*
* @param listener The listener to unregister.
* @deprecated Use {@link #removeListener(Listener)}.
*/
@Deprecated
void removeVideoListener(VideoListener listener);
/** /**
* Sets a listener to receive video frame metadata events. * Sets a listener to receive video frame metadata events.
* *
@ -397,7 +378,7 @@ public interface ExoPlayer extends Player {
* <p>The width and height of size could be 0 if there is no video or the size has not been * <p>The width and height of size could be 0 if there is no video or the size has not been
* determined yet. * determined yet.
* *
* @see Listener#onVideoSizeChanged(int, int, int, float) * @see Listener#onVideoSizeChanged(VideoSize)
*/ */
VideoSize getVideoSize(); VideoSize getVideoSize();
} }

View File

@ -76,7 +76,6 @@ import com.google.android.exoplayer2.util.PriorityTaskManager;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.android.exoplayer2.video.VideoDecoderOutputBufferRenderer; import com.google.android.exoplayer2.video.VideoDecoderOutputBufferRenderer;
import com.google.android.exoplayer2.video.VideoFrameMetadataListener; import com.google.android.exoplayer2.video.VideoFrameMetadataListener;
import com.google.android.exoplayer2.video.VideoListener;
import com.google.android.exoplayer2.video.VideoRendererEventListener; import com.google.android.exoplayer2.video.VideoRendererEventListener;
import com.google.android.exoplayer2.video.VideoSize; import com.google.android.exoplayer2.video.VideoSize;
import com.google.android.exoplayer2.video.spherical.CameraMotionListener; import com.google.android.exoplayer2.video.spherical.CameraMotionListener;
@ -425,7 +424,6 @@ public class SimpleExoPlayer extends BasePlayer
private final ExoPlayerImpl player; private final ExoPlayerImpl player;
private final ComponentListener componentListener; private final ComponentListener componentListener;
private final FrameMetadataListener frameMetadataListener; private final FrameMetadataListener frameMetadataListener;
private final CopyOnWriteArraySet<VideoListener> videoListeners;
private final CopyOnWriteArraySet<TextOutput> textOutputs; private final CopyOnWriteArraySet<TextOutput> textOutputs;
private final CopyOnWriteArraySet<Listener> listeners; private final CopyOnWriteArraySet<Listener> listeners;
private final AnalyticsCollector analyticsCollector; private final AnalyticsCollector analyticsCollector;
@ -507,7 +505,6 @@ public class SimpleExoPlayer extends BasePlayer
detachSurfaceTimeoutMs = builder.detachSurfaceTimeoutMs; detachSurfaceTimeoutMs = builder.detachSurfaceTimeoutMs;
componentListener = new ComponentListener(); componentListener = new ComponentListener();
frameMetadataListener = new FrameMetadataListener(); frameMetadataListener = new FrameMetadataListener();
videoListeners = new CopyOnWriteArraySet<>();
textOutputs = new CopyOnWriteArraySet<>(); textOutputs = new CopyOnWriteArraySet<>();
listeners = new CopyOnWriteArraySet<>(); listeners = new CopyOnWriteArraySet<>();
Handler eventHandler = new Handler(builder.looper); Handler eventHandler = new Handler(builder.looper);
@ -1001,21 +998,6 @@ public class SimpleExoPlayer extends BasePlayer
return audioDecoderCounters; return audioDecoderCounters;
} }
@Deprecated
@Override
public void addVideoListener(VideoListener listener) {
// Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
videoListeners.add(listener);
}
@Deprecated
@Override
public void removeVideoListener(VideoListener listener) {
// Don't verify application thread. We allow calls to this method from any thread.
videoListeners.remove(listener);
}
@Override @Override
public void setVideoFrameMetadataListener(VideoFrameMetadataListener listener) { public void setVideoFrameMetadataListener(VideoFrameMetadataListener listener) {
verifyApplicationThread(); verifyApplicationThread();
@ -1105,7 +1087,6 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addListener(Listener listener) { public void addListener(Listener listener) {
Assertions.checkNotNull(listener); Assertions.checkNotNull(listener);
addVideoListener(listener);
addTextOutput(listener); addTextOutput(listener);
listeners.add(listener); listeners.add(listener);
EventListener eventListener = listener; EventListener eventListener = listener;
@ -1123,7 +1104,6 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void removeListener(Listener listener) { public void removeListener(Listener listener) {
Assertions.checkNotNull(listener); Assertions.checkNotNull(listener);
removeVideoListener(listener);
removeTextOutput(listener); removeTextOutput(listener);
listeners.remove(listener); listeners.remove(listener);
EventListener eventListener = listener; EventListener eventListener = listener;
@ -1796,8 +1776,9 @@ public class SimpleExoPlayer extends BasePlayer
surfaceWidth = width; surfaceWidth = width;
surfaceHeight = height; surfaceHeight = height;
analyticsCollector.onSurfaceSizeChanged(width, height); analyticsCollector.onSurfaceSizeChanged(width, height);
for (VideoListener videoListener : videoListeners) { // TODO(internal b/187152483): Events should be dispatched via ListenerSet
videoListener.onSurfaceSizeChanged(width, height); for (Listener listener : listeners) {
listener.onSurfaceSizeChanged(width, height);
} }
} }
} }
@ -1969,13 +1950,9 @@ public class SimpleExoPlayer extends BasePlayer
public void onVideoSizeChanged(VideoSize videoSize) { public void onVideoSizeChanged(VideoSize videoSize) {
SimpleExoPlayer.this.videoSize = videoSize; SimpleExoPlayer.this.videoSize = videoSize;
analyticsCollector.onVideoSizeChanged(videoSize); analyticsCollector.onVideoSizeChanged(videoSize);
for (VideoListener videoListener : videoListeners) { // TODO(internal b/187152483): Events should be dispatched via ListenerSet
videoListener.onVideoSizeChanged(videoSize); for (Listener listener : listeners) {
videoListener.onVideoSizeChanged( listener.onVideoSizeChanged(videoSize);
videoSize.width,
videoSize.height,
videoSize.unappliedRotationDegrees,
videoSize.pixelWidthHeightRatio);
} }
} }
@ -1983,8 +1960,9 @@ public class SimpleExoPlayer extends BasePlayer
public void onRenderedFirstFrame(Object output, long renderTimeMs) { public void onRenderedFirstFrame(Object output, long renderTimeMs) {
analyticsCollector.onRenderedFirstFrame(output, renderTimeMs); analyticsCollector.onRenderedFirstFrame(output, renderTimeMs);
if (videoOutput == output) { if (videoOutput == output) {
for (VideoListener videoListener : videoListeners) { // TODO(internal b/187152483): Events should be dispatched via ListenerSet
videoListener.onRenderedFirstFrame(); for (Listener listener : listeners) {
listener.onRenderedFirstFrame();
} }
} }
} }