From 743b33e821cd06ec7b7b704725c97031736da05d Mon Sep 17 00:00:00 2001 From: olly Date: Fri, 13 Aug 2021 16:10:54 +0100 Subject: [PATCH] Remove Player.Listener inheritance of VideoListener NO_EXTERNAL PiperOrigin-RevId: 390614839 --- RELEASENOTES.md | 2 + .../android/exoplayer2/ForwardingPlayer.java | 17 ------ .../com/google/android/exoplayer2/Player.java | 24 ++++++-- .../exoplayer2/video/VideoListener.java | 57 ------------------- .../google/android/exoplayer2/ExoPlayer.java | 21 +------ .../android/exoplayer2/SimpleExoPlayer.java | 40 +++---------- 6 files changed, 31 insertions(+), 130 deletions(-) delete mode 100644 library/common/src/main/java/com/google/android/exoplayer2/video/VideoListener.java diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 174da6899f..4381e61448 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -31,6 +31,8 @@ Use `Player.addListener` and `Player.Listener` instead. * Remove `SimpleExoPlayer.addAudioListener`, `removeAudioListener` and `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) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java b/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java index 395fea9c6f..59329088f8 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/ForwardingPlayer.java @@ -802,20 +802,11 @@ public class ForwardingPlayer implements Player { this.listener = listener; } - // VideoListener methods. - @Override public void onVideoSizeChanged(VideoSize 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 public void onSurfaceSizeChanged(int width, int height) { listener.onSurfaceSizeChanged(width, height); @@ -826,8 +817,6 @@ public class ForwardingPlayer implements Player { listener.onRenderedFirstFrame(); } - // AudioListener methods - @Override public void onAudioSessionIdChanged(int audioSessionId) { listener.onAudioSessionIdChanged(audioSessionId); @@ -848,22 +837,16 @@ public class ForwardingPlayer implements Player { listener.onSkipSilenceEnabledChanged(skipSilenceEnabled); } - // TextOutput methods. - @Override public void onCues(List cues) { listener.onCues(cues); } - // MetadataOutput methods. - @Override public void onMetadata(Metadata metadata) { listener.onMetadata(metadata); } - // DeviceListener callbacks - @Override public void onDeviceInfoChanged(DeviceInfo deviceInfo) { listener.onDeviceInfoChanged(deviceInfo); diff --git a/library/common/src/main/java/com/google/android/exoplayer2/Player.java b/library/common/src/main/java/com/google/android/exoplayer2/Player.java index 898c4026aa..457332bb44 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/Player.java @@ -32,7 +32,6 @@ import com.google.android.exoplayer2.trackselection.TrackSelection; import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.util.FlagSet; import com.google.android.exoplayer2.util.Util; -import com.google.android.exoplayer2.video.VideoListener; import com.google.android.exoplayer2.video.VideoSize; import com.google.common.base.Objects; import java.lang.annotation.Documented; @@ -869,7 +868,7 @@ public interface Player { * *

All methods have no-op default implementations to allow selective overrides. */ - interface Listener extends VideoListener, TextOutput, EventListener { + interface Listener extends TextOutput, EventListener { @Override default void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) {} @@ -964,13 +963,28 @@ public interface Player { @Override 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) {} - @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) {} - @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() {} @Override diff --git a/library/common/src/main/java/com/google/android/exoplayer2/video/VideoListener.java b/library/common/src/main/java/com/google/android/exoplayer2/video/VideoListener.java deleted file mode 100644 index 6a05230dce..0000000000 --- a/library/common/src/main/java/com/google/android/exoplayer2/video/VideoListener.java +++ /dev/null @@ -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() {} -} diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index 6bf7d66f15..80d3899832 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -53,7 +53,6 @@ import com.google.android.exoplayer2.util.PriorityTaskManager; import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.video.MediaCodecVideoRenderer; 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.spherical.CameraMotionListener; import java.util.List; @@ -253,24 +252,6 @@ public interface ExoPlayer extends Player { @C.VideoChangeFrameRateStrategy 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. * @@ -397,7 +378,7 @@ public interface ExoPlayer extends Player { *

The width and height of size could be 0 if there is no video or the size has not been * determined yet. * - * @see Listener#onVideoSizeChanged(int, int, int, float) + * @see Listener#onVideoSizeChanged(VideoSize) */ VideoSize getVideoSize(); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index 81254f4e47..ed678d1d9b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -76,7 +76,6 @@ import com.google.android.exoplayer2.util.PriorityTaskManager; import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.video.VideoDecoderOutputBufferRenderer; 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.VideoSize; import com.google.android.exoplayer2.video.spherical.CameraMotionListener; @@ -425,7 +424,6 @@ public class SimpleExoPlayer extends BasePlayer private final ExoPlayerImpl player; private final ComponentListener componentListener; private final FrameMetadataListener frameMetadataListener; - private final CopyOnWriteArraySet videoListeners; private final CopyOnWriteArraySet textOutputs; private final CopyOnWriteArraySet listeners; private final AnalyticsCollector analyticsCollector; @@ -507,7 +505,6 @@ public class SimpleExoPlayer extends BasePlayer detachSurfaceTimeoutMs = builder.detachSurfaceTimeoutMs; componentListener = new ComponentListener(); frameMetadataListener = new FrameMetadataListener(); - videoListeners = new CopyOnWriteArraySet<>(); textOutputs = new CopyOnWriteArraySet<>(); listeners = new CopyOnWriteArraySet<>(); Handler eventHandler = new Handler(builder.looper); @@ -1001,21 +998,6 @@ public class SimpleExoPlayer extends BasePlayer 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 public void setVideoFrameMetadataListener(VideoFrameMetadataListener listener) { verifyApplicationThread(); @@ -1105,7 +1087,6 @@ public class SimpleExoPlayer extends BasePlayer @Override public void addListener(Listener listener) { Assertions.checkNotNull(listener); - addVideoListener(listener); addTextOutput(listener); listeners.add(listener); EventListener eventListener = listener; @@ -1123,7 +1104,6 @@ public class SimpleExoPlayer extends BasePlayer @Override public void removeListener(Listener listener) { Assertions.checkNotNull(listener); - removeVideoListener(listener); removeTextOutput(listener); listeners.remove(listener); EventListener eventListener = listener; @@ -1796,8 +1776,9 @@ public class SimpleExoPlayer extends BasePlayer surfaceWidth = width; surfaceHeight = height; analyticsCollector.onSurfaceSizeChanged(width, height); - for (VideoListener videoListener : videoListeners) { - videoListener.onSurfaceSizeChanged(width, height); + // TODO(internal b/187152483): Events should be dispatched via ListenerSet + for (Listener listener : listeners) { + listener.onSurfaceSizeChanged(width, height); } } } @@ -1969,13 +1950,9 @@ public class SimpleExoPlayer extends BasePlayer public void onVideoSizeChanged(VideoSize videoSize) { SimpleExoPlayer.this.videoSize = videoSize; analyticsCollector.onVideoSizeChanged(videoSize); - for (VideoListener videoListener : videoListeners) { - videoListener.onVideoSizeChanged(videoSize); - videoListener.onVideoSizeChanged( - videoSize.width, - videoSize.height, - videoSize.unappliedRotationDegrees, - videoSize.pixelWidthHeightRatio); + // TODO(internal b/187152483): Events should be dispatched via ListenerSet + for (Listener listener : listeners) { + listener.onVideoSizeChanged(videoSize); } } @@ -1983,8 +1960,9 @@ public class SimpleExoPlayer extends BasePlayer public void onRenderedFirstFrame(Object output, long renderTimeMs) { analyticsCollector.onRenderedFirstFrame(output, renderTimeMs); if (videoOutput == output) { - for (VideoListener videoListener : videoListeners) { - videoListener.onRenderedFirstFrame(); + // TODO(internal b/187152483): Events should be dispatched via ListenerSet + for (Listener listener : listeners) { + listener.onRenderedFirstFrame(); } } }