Commit a6640ae3 by olly Committed by Oliver Woodman

Stop merging methods through AnalyticsCollector/AnalyticsListener

PiperOrigin-RevId: 321595514
parent 3b26c218
...@@ -2224,10 +2224,9 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -2224,10 +2224,9 @@ public class SimpleExoPlayer extends BasePlayer
} }
@Override @Override
public void onAudioSinkUnderrun( public void onAudioUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
for (AudioRendererEventListener audioDebugListener : audioDebugListeners) { for (AudioRendererEventListener audioDebugListener : audioDebugListeners) {
audioDebugListener.onAudioSinkUnderrun(bufferSize, bufferSizeMs, elapsedSinceLastFeedMs); audioDebugListener.onAudioUnderrun(bufferSize, bufferSizeMs, elapsedSinceLastFeedMs);
} }
} }
......
...@@ -172,34 +172,40 @@ public class AnalyticsCollector ...@@ -172,34 +172,40 @@ public class AnalyticsCollector
// AudioRendererEventListener implementation. // AudioRendererEventListener implementation.
@SuppressWarnings("deprecation")
@Override @Override
public final void onAudioEnabled(DecoderCounters counters) { public final void onAudioEnabled(DecoderCounters counters) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onAudioEnabled(eventTime, counters);
listener.onDecoderEnabled(eventTime, C.TRACK_TYPE_AUDIO, counters); listener.onDecoderEnabled(eventTime, C.TRACK_TYPE_AUDIO, counters);
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onAudioDecoderInitialized( public final void onAudioDecoderInitialized(
String decoderName, long initializedTimestampMs, long initializationDurationMs) { String decoderName, long initializedTimestampMs, long initializationDurationMs) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onAudioDecoderInitialized(eventTime, decoderName, initializationDurationMs);
listener.onDecoderInitialized( listener.onDecoderInitialized(
eventTime, C.TRACK_TYPE_AUDIO, decoderName, initializationDurationMs); eventTime, C.TRACK_TYPE_AUDIO, decoderName, initializationDurationMs);
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onAudioInputFormatChanged(Format format) { public final void onAudioInputFormatChanged(Format format) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onAudioInputFormatChanged(eventTime, format);
listener.onDecoderInputFormatChanged(eventTime, C.TRACK_TYPE_AUDIO, format); listener.onDecoderInputFormatChanged(eventTime, C.TRACK_TYPE_AUDIO, format);
} }
} }
@Override @Override
public final void onAudioSinkUnderrun( public final void onAudioUnderrun(
int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) { int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
...@@ -207,10 +213,12 @@ public class AnalyticsCollector ...@@ -207,10 +213,12 @@ public class AnalyticsCollector
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onAudioDisabled(DecoderCounters counters) { public final void onAudioDisabled(DecoderCounters counters) {
EventTime eventTime = generatePlayingMediaPeriodEventTime(); EventTime eventTime = generatePlayingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onAudioDisabled(eventTime, counters);
listener.onDecoderDisabled(eventTime, C.TRACK_TYPE_AUDIO, counters); listener.onDecoderDisabled(eventTime, C.TRACK_TYPE_AUDIO, counters);
} }
} }
...@@ -251,28 +259,34 @@ public class AnalyticsCollector ...@@ -251,28 +259,34 @@ public class AnalyticsCollector
// VideoRendererEventListener implementation. // VideoRendererEventListener implementation.
@SuppressWarnings("deprecation")
@Override @Override
public final void onVideoEnabled(DecoderCounters counters) { public final void onVideoEnabled(DecoderCounters counters) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onVideoEnabled(eventTime, counters);
listener.onDecoderEnabled(eventTime, C.TRACK_TYPE_VIDEO, counters); listener.onDecoderEnabled(eventTime, C.TRACK_TYPE_VIDEO, counters);
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onVideoDecoderInitialized( public final void onVideoDecoderInitialized(
String decoderName, long initializedTimestampMs, long initializationDurationMs) { String decoderName, long initializedTimestampMs, long initializationDurationMs) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onVideoDecoderInitialized(eventTime, decoderName, initializationDurationMs);
listener.onDecoderInitialized( listener.onDecoderInitialized(
eventTime, C.TRACK_TYPE_VIDEO, decoderName, initializationDurationMs); eventTime, C.TRACK_TYPE_VIDEO, decoderName, initializationDurationMs);
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onVideoInputFormatChanged(Format format) { public final void onVideoInputFormatChanged(Format format) {
EventTime eventTime = generateReadingMediaPeriodEventTime(); EventTime eventTime = generateReadingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onVideoInputFormatChanged(eventTime, format);
listener.onDecoderInputFormatChanged(eventTime, C.TRACK_TYPE_VIDEO, format); listener.onDecoderInputFormatChanged(eventTime, C.TRACK_TYPE_VIDEO, format);
} }
} }
...@@ -285,10 +299,12 @@ public class AnalyticsCollector ...@@ -285,10 +299,12 @@ public class AnalyticsCollector
} }
} }
@SuppressWarnings("deprecation")
@Override @Override
public final void onVideoDisabled(DecoderCounters counters) { public final void onVideoDisabled(DecoderCounters counters) {
EventTime eventTime = generatePlayingMediaPeriodEventTime(); EventTime eventTime = generatePlayingMediaPeriodEventTime();
for (AnalyticsListener listener : listeners) { for (AnalyticsListener listener : listeners) {
listener.onVideoDisabled(eventTime, counters);
listener.onDecoderDisabled(eventTime, C.TRACK_TYPE_VIDEO, counters); listener.onDecoderDisabled(eventTime, C.TRACK_TYPE_VIDEO, counters);
} }
} }
......
...@@ -66,16 +66,14 @@ public interface AudioRendererEventListener { ...@@ -66,16 +66,14 @@ public interface AudioRendererEventListener {
default void onAudioInputFormatChanged(Format format) {} default void onAudioInputFormatChanged(Format format) {}
/** /**
* Called when an {@link AudioSink} underrun occurs. * Called when an audio underrun occurs.
* *
* @param bufferSize The size of the {@link AudioSink}'s buffer, in bytes. * @param bufferSize The size of the audio output buffer, in bytes.
* @param bufferSizeMs The size of the {@link AudioSink}'s buffer, in milliseconds, if it is * @param bufferSizeMs The size of the audio output buffer, in milliseconds, if it contains PCM
* configured for PCM output. {@link C#TIME_UNSET} if it is configured for passthrough output, * encoded audio. {@link C#TIME_UNSET} if the output buffer contains non-PCM encoded audio.
* as the buffered media can have a variable bitrate so the duration may be unknown. * @param elapsedSinceLastFeedMs The time since audio was last written to the output buffer.
* @param elapsedSinceLastFeedMs The time since the {@link AudioSink} was last fed data.
*/ */
default void onAudioSinkUnderrun( default void onAudioUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {}
int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {}
/** /**
* Called when the renderer is disabled. * Called when the renderer is disabled.
...@@ -140,14 +138,14 @@ public interface AudioRendererEventListener { ...@@ -140,14 +138,14 @@ public interface AudioRendererEventListener {
} }
} }
/** Invokes {@link AudioRendererEventListener#onAudioSinkUnderrun(int, long, long)}. */ /** Invokes {@link AudioRendererEventListener#onAudioUnderrun(int, long, long)}. */
public void underrun( public void underrun(
final int bufferSize, final long bufferSizeMs, final long elapsedSinceLastFeedMs) { final int bufferSize, final long bufferSizeMs, final long elapsedSinceLastFeedMs) {
if (handler != null) { if (handler != null) {
handler.post( handler.post(
() -> () ->
castNonNull(listener) castNonNull(listener)
.onAudioSinkUnderrun(bufferSize, bufferSizeMs, elapsedSinceLastFeedMs)); .onAudioUnderrun(bufferSize, bufferSizeMs, elapsedSinceLastFeedMs));
} }
} }
......
...@@ -301,8 +301,34 @@ public class EventLogger implements AnalyticsListener { ...@@ -301,8 +301,34 @@ public class EventLogger implements AnalyticsListener {
} }
@Override @Override
public void onDecoderEnabled(EventTime eventTime, int trackType, DecoderCounters counters) { public void onAudioEnabled(EventTime eventTime, DecoderCounters counters) {
logd(eventTime, "decoderEnabled", Util.getTrackTypeString(trackType)); logd(eventTime, "audioEnabled");
}
@Override
public void onAudioDecoderInitialized(
EventTime eventTime, String decoderName, long initializationDurationMs) {
logd(eventTime, "audioDecoderInitialized", decoderName);
}
@Override
public void onAudioInputFormatChanged(EventTime eventTime, Format format) {
logd(eventTime, "audioInputFormat", Format.toLogString(format));
}
@Override
public void onAudioUnderrun(
EventTime eventTime, int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
loge(
eventTime,
"audioTrackUnderrun",
bufferSize + ", " + bufferSizeMs + ", " + elapsedSinceLastFeedMs + "]",
/* throwable= */ null);
}
@Override
public void onAudioDisabled(EventTime eventTime, DecoderCounters counters) {
logd(eventTime, "audioDisabled");
} }
@Override @Override
...@@ -335,37 +361,34 @@ public class EventLogger implements AnalyticsListener { ...@@ -335,37 +361,34 @@ public class EventLogger implements AnalyticsListener {
} }
@Override @Override
public void onDecoderInitialized( public void onVideoEnabled(EventTime eventTime, DecoderCounters counters) {
EventTime eventTime, int trackType, String decoderName, long initializationDurationMs) { logd(eventTime, "videoEnabled");
logd(eventTime, "decoderInitialized", Util.getTrackTypeString(trackType) + ", " + decoderName);
} }
@Override @Override
public void onDecoderInputFormatChanged(EventTime eventTime, int trackType, Format format) { public void onVideoDecoderInitialized(
logd( EventTime eventTime, String decoderName, long initializationDurationMs) {
eventTime, logd(eventTime, "videoDecoderInitialized", decoderName);
"decoderInputFormat",
Util.getTrackTypeString(trackType) + ", " + Format.toLogString(format));
} }
@Override @Override
public void onDecoderDisabled(EventTime eventTime, int trackType, DecoderCounters counters) { public void onVideoInputFormatChanged(EventTime eventTime, Format format) {
logd(eventTime, "decoderDisabled", Util.getTrackTypeString(trackType)); logd(eventTime, "videoInputFormat", Format.toLogString(format));
} }
@Override @Override
public void onAudioUnderrun( public void onDroppedVideoFrames(EventTime eventTime, int count, long elapsedMs) {
EventTime eventTime, int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) { logd(eventTime, "droppedFrames", Integer.toString(count));
loge(
eventTime,
"audioTrackUnderrun",
bufferSize + ", " + bufferSizeMs + ", " + elapsedSinceLastFeedMs + "]",
null);
} }
@Override @Override
public void onDroppedVideoFrames(EventTime eventTime, int count, long elapsedMs) { public void onVideoDisabled(EventTime eventTime, DecoderCounters counters) {
logd(eventTime, "droppedFrames", Integer.toString(count)); logd(eventTime, "videoDisabled");
}
@Override
public void onRenderedFirstFrame(EventTime eventTime, @Nullable Surface surface) {
logd(eventTime, "renderedFirstFrame", String.valueOf(surface));
} }
@Override @Override
...@@ -379,11 +402,6 @@ public class EventLogger implements AnalyticsListener { ...@@ -379,11 +402,6 @@ public class EventLogger implements AnalyticsListener {
} }
@Override @Override
public void onRenderedFirstFrame(EventTime eventTime, @Nullable Surface surface) {
logd(eventTime, "renderedFirstFrame", String.valueOf(surface));
}
@Override
public void onMediaPeriodCreated(EventTime eventTime) { public void onMediaPeriodCreated(EventTime eventTime) {
logd(eventTime, "mediaPeriodCreated"); logd(eventTime, "mediaPeriodCreated");
} }
......
...@@ -51,8 +51,8 @@ public interface VideoListener { ...@@ -51,8 +51,8 @@ public interface VideoListener {
default void onSurfaceSizeChanged(int width, int height) {} default void onSurfaceSizeChanged(int width, int height) {}
/** /**
* Called when a frame is rendered for the first time since setting the surface, and when a frame * Called when a frame is rendered for the first time since setting the surface, or since the
* is rendered for the first time since the renderer was reset. * renderer was reset, or since the stream being rendered was changed.
*/ */
default void onRenderedFirstFrame() {} default void onRenderedFirstFrame() {}
} }
...@@ -114,8 +114,8 @@ public interface VideoRendererEventListener { ...@@ -114,8 +114,8 @@ public interface VideoRendererEventListener {
int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {} int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {}
/** /**
* Called when a frame is rendered for the first time since setting the surface, and when a frame * Called when a frame is rendered for the first time since setting the surface, or since the
* is rendered for the first time since the renderer was reset. * renderer was reset, or since the stream being rendered was changed.
* *
* @param surface The {@link Surface} to which a first frame has been rendered, or {@code null} if * @param surface The {@link Surface} to which a first frame has been rendered, or {@code null} if
* the renderer renders to something that isn't a {@link Surface}. * the renderer renders to something that isn't a {@link Surface}.
......
...@@ -22,7 +22,6 @@ import android.os.SystemClock; ...@@ -22,7 +22,6 @@ import android.os.SystemClock;
import android.view.Surface; import android.view.Surface;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultRenderersFactory; import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
...@@ -209,13 +208,13 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest { ...@@ -209,13 +208,13 @@ public abstract class ExoHostedTest implements AnalyticsListener, HostedTest {
} }
@Override @Override
public void onDecoderDisabled( public void onAudioDisabled(EventTime eventTime, DecoderCounters decoderCounters) {
EventTime eventTime, int trackType, DecoderCounters decoderCounters) { audioDecoderCounters.merge(decoderCounters);
if (trackType == C.TRACK_TYPE_AUDIO) { }
audioDecoderCounters.merge(decoderCounters);
} else if (trackType == C.TRACK_TYPE_VIDEO) { @Override
videoDecoderCounters.merge(decoderCounters); public void onVideoDisabled(EventTime eventTime, DecoderCounters decoderCounters) {
} videoDecoderCounters.merge(decoderCounters);
} }
// Internal logic // Internal logic
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment