mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Use EventLogger in ExoHostedTest
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=210082909
This commit is contained in:
parent
335fa13063
commit
0da7f6ca08
@ -44,7 +44,7 @@ import java.util.Locale;
|
||||
/** Logs events from {@link Player} and other core components using {@link Log}. */
|
||||
public class EventLogger implements AnalyticsListener {
|
||||
|
||||
private static final String TAG = "EventLogger";
|
||||
private static final String DEFAULT_TAG = "EventLogger";
|
||||
private static final int MAX_TIMELINE_ITEM_LINES = 3;
|
||||
private static final NumberFormat TIME_FORMAT;
|
||||
static {
|
||||
@ -55,6 +55,7 @@ public class EventLogger implements AnalyticsListener {
|
||||
}
|
||||
|
||||
private final @Nullable MappingTrackSelector trackSelector;
|
||||
private final String tag;
|
||||
private final Timeline.Window window;
|
||||
private final Timeline.Period period;
|
||||
private final long startTimeMs;
|
||||
@ -66,7 +67,19 @@ public class EventLogger implements AnalyticsListener {
|
||||
* logging of track mapping is not required.
|
||||
*/
|
||||
public EventLogger(@Nullable MappingTrackSelector trackSelector) {
|
||||
this(trackSelector, DEFAULT_TAG);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates event logger.
|
||||
*
|
||||
* @param trackSelector The mapping track selector used by the player. May be null if detailed
|
||||
* logging of track mapping is not required.
|
||||
* @param tag The tag used for logging.
|
||||
*/
|
||||
public EventLogger(@Nullable MappingTrackSelector trackSelector, String tag) {
|
||||
this.trackSelector = trackSelector;
|
||||
this.tag = tag;
|
||||
window = new Timeline.Window();
|
||||
period = new Timeline.Period();
|
||||
startTimeMs = SystemClock.elapsedRealtime();
|
||||
@ -403,7 +416,7 @@ public class EventLogger implements AnalyticsListener {
|
||||
* @param msg The message to log.
|
||||
*/
|
||||
protected void logd(String msg) {
|
||||
Log.d(TAG, msg);
|
||||
Log.d(tag, msg);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -413,7 +426,7 @@ public class EventLogger implements AnalyticsListener {
|
||||
* @param tr The exception to log.
|
||||
*/
|
||||
protected void loge(String msg, Throwable tr) {
|
||||
Log.e(TAG, msg, tr);
|
||||
Log.e(tag, msg, tr);
|
||||
}
|
||||
|
||||
// Internal methods
|
||||
|
@ -22,17 +22,16 @@ import android.os.Looper;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.DefaultLoadControl;
|
||||
import com.google.android.exoplayer2.DefaultRenderersFactory;
|
||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||
import com.google.android.exoplayer2.ExoPlayer;
|
||||
import com.google.android.exoplayer2.ExoPlayerFactory;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.RenderersFactory;
|
||||
import com.google.android.exoplayer2.SimpleExoPlayer;
|
||||
import com.google.android.exoplayer2.analytics.AnalyticsListener;
|
||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||
import com.google.android.exoplayer2.audio.DefaultAudioSink;
|
||||
import com.google.android.exoplayer2.decoder.DecoderCounters;
|
||||
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||
@ -43,16 +42,12 @@ import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.trackselection.MappingTrackSelector;
|
||||
import com.google.android.exoplayer2.util.Clock;
|
||||
import com.google.android.exoplayer2.util.EventLogger;
|
||||
import com.google.android.exoplayer2.util.HandlerWrapper;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.google.android.exoplayer2.video.VideoRendererEventListener;
|
||||
|
||||
/** A {@link HostedTest} for {@link ExoPlayer} playback tests. */
|
||||
public abstract class ExoHostedTest
|
||||
implements Player.EventListener,
|
||||
HostedTest,
|
||||
AudioRendererEventListener,
|
||||
VideoRendererEventListener {
|
||||
public abstract class ExoHostedTest implements AnalyticsListener, HostedTest {
|
||||
|
||||
static {
|
||||
// DefaultAudioSink is able to work around spurious timestamps reported by the platform (by
|
||||
@ -151,12 +146,11 @@ public abstract class ExoHostedTest
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = buildDrmSessionManager(userAgent);
|
||||
player = buildExoPlayer(host, surface, trackSelector, drmSessionManager);
|
||||
player.prepare(buildSource(host, Util.getUserAgent(host, userAgent)));
|
||||
player.addAnalyticsListener(this);
|
||||
player.addAnalyticsListener(new EventLogger(trackSelector, tag));
|
||||
if (analyticsListener != null) {
|
||||
player.addAnalyticsListener(analyticsListener);
|
||||
}
|
||||
player.addListener(this);
|
||||
player.addAudioDebugListener(this);
|
||||
player.addVideoDebugListener(this);
|
||||
player.setPlayWhenReady(true);
|
||||
actionHandler = Clock.DEFAULT.createHandler(Looper.myLooper(), /* callback= */ null);
|
||||
// Schedule any pending actions.
|
||||
@ -199,10 +193,11 @@ public abstract class ExoHostedTest
|
||||
assertPassed(audioDecoderCounters, videoDecoderCounters);
|
||||
}
|
||||
|
||||
// Player.EventListener
|
||||
// AnalyticsListener
|
||||
|
||||
@Override
|
||||
public final void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
|
||||
public final void onPlayerStateChanged(
|
||||
EventTime eventTime, boolean playWhenReady, int playbackState) {
|
||||
Log.d(tag, "state [" + playWhenReady + ", " + playbackState + "]");
|
||||
playerWasPrepared |= playbackState != Player.STATE_IDLE;
|
||||
if (playbackState == Player.STATE_ENDED
|
||||
@ -219,85 +214,20 @@ public abstract class ExoHostedTest
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void onPlayerError(ExoPlaybackException error) {
|
||||
public final void onPlayerError(EventTime eventTime, ExoPlaybackException error) {
|
||||
playerWasPrepared = true;
|
||||
playerError = error;
|
||||
onPlayerErrorInternal(error);
|
||||
}
|
||||
|
||||
// AudioRendererEventListener
|
||||
|
||||
@Override
|
||||
public void onAudioEnabled(DecoderCounters counters) {
|
||||
Log.d(tag, "audioEnabled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioSessionId(int audioSessionId) {
|
||||
Log.d(tag, "audioSessionId [" + audioSessionId + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioDecoderInitialized(String decoderName, long elapsedRealtimeMs,
|
||||
long initializationDurationMs) {
|
||||
Log.d(tag, "audioDecoderInitialized [" + decoderName + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioInputFormatChanged(Format format) {
|
||||
Log.d(tag, "audioFormatChanged [" + Format.toLogString(format) + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioDisabled(DecoderCounters counters) {
|
||||
Log.d(tag, "audioDisabled");
|
||||
audioDecoderCounters.merge(counters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioSinkUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
|
||||
Log.e(tag, "audioTrackUnderrun [" + bufferSize + ", " + bufferSizeMs + ", "
|
||||
+ elapsedSinceLastFeedMs + "]", null);
|
||||
}
|
||||
|
||||
// VideoRendererEventListener
|
||||
|
||||
@Override
|
||||
public void onVideoEnabled(DecoderCounters counters) {
|
||||
Log.d(tag, "videoEnabled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoDecoderInitialized(String decoderName, long elapsedRealtimeMs,
|
||||
long initializationDurationMs) {
|
||||
Log.d(tag, "videoDecoderInitialized [" + decoderName + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoInputFormatChanged(Format format) {
|
||||
Log.d(tag, "videoFormatChanged [" + Format.toLogString(format) + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoDisabled(DecoderCounters counters) {
|
||||
Log.d(tag, "videoDisabled");
|
||||
videoDecoderCounters.merge(counters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDroppedFrames(int count, long elapsed) {
|
||||
Log.d(tag, "droppedFrames [" + count + "]");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees,
|
||||
float pixelWidthHeightRatio) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRenderedFirstFrame(Surface surface) {
|
||||
// Do nothing.
|
||||
public void onDecoderDisabled(
|
||||
EventTime eventTime, int trackType, DecoderCounters decoderCounters) {
|
||||
if (trackType == C.TRACK_TYPE_AUDIO) {
|
||||
audioDecoderCounters.merge(decoderCounters);
|
||||
} else if (trackType == C.TRACK_TYPE_VIDEO) {
|
||||
videoDecoderCounters.merge(decoderCounters);
|
||||
}
|
||||
}
|
||||
|
||||
// Internal logic
|
||||
|
Loading…
x
Reference in New Issue
Block a user