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.
* 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)

View File

@ -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<Cue> 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);

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.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 {
*
* <p>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

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.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 {
* <p>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();
}

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.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<VideoListener> videoListeners;
private final CopyOnWriteArraySet<TextOutput> textOutputs;
private final CopyOnWriteArraySet<Listener> 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();
}
}
}