mirror of
https://github.com/androidx/media.git
synced 2025-05-03 21:57:46 +08:00
Use VideoRendererEventListener to resolve unknown resolution.
Some streams don't have the new video resolution in the primary format. Use the subsequent call to videoListener.onVideoInputFormatChanged to resolve this unknown resolution. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=177433618
This commit is contained in:
parent
a367ae0d2b
commit
ef8fa28163
@ -102,6 +102,8 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
private RenderersFactory renderersFactory;
|
private RenderersFactory renderersFactory;
|
||||||
private ActionSchedule actionSchedule;
|
private ActionSchedule actionSchedule;
|
||||||
private Player.EventListener eventListener;
|
private Player.EventListener eventListener;
|
||||||
|
private VideoRendererEventListener videoRendererEventListener;
|
||||||
|
private AudioRendererEventListener audioRendererEventListener;
|
||||||
private Integer expectedPlayerEndedCount;
|
private Integer expectedPlayerEndedCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -258,6 +260,28 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets a {@link VideoRendererEventListener} to be registered.
|
||||||
|
*
|
||||||
|
* @param eventListener A {@link VideoRendererEventListener} to be registered.
|
||||||
|
* @return This builder.
|
||||||
|
*/
|
||||||
|
public Builder setVideoRendererEventListener(VideoRendererEventListener eventListener) {
|
||||||
|
this.videoRendererEventListener = eventListener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets an {@link AudioRendererEventListener} to be registered.
|
||||||
|
*
|
||||||
|
* @param eventListener An {@link AudioRendererEventListener} to be registered.
|
||||||
|
* @return This builder.
|
||||||
|
*/
|
||||||
|
public Builder setAudioRendererEventListener(AudioRendererEventListener eventListener) {
|
||||||
|
this.audioRendererEventListener = eventListener;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the number of times the test runner is expected to reach the {@link Player#STATE_ENDED}
|
* Sets the number of times the test runner is expected to reach the {@link Player#STATE_ENDED}
|
||||||
* or {@link Player#STATE_IDLE}. The default is 1. This affects how long
|
* or {@link Player#STATE_IDLE}. The default is 1. This affects how long
|
||||||
@ -319,8 +343,17 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
if (expectedPlayerEndedCount == null) {
|
if (expectedPlayerEndedCount == null) {
|
||||||
expectedPlayerEndedCount = 1;
|
expectedPlayerEndedCount = 1;
|
||||||
}
|
}
|
||||||
return new ExoPlayerTestRunner(playerFactory, mediaSource, renderersFactory, trackSelector,
|
return new ExoPlayerTestRunner(
|
||||||
loadControl, actionSchedule, eventListener, expectedPlayerEndedCount);
|
playerFactory,
|
||||||
|
mediaSource,
|
||||||
|
renderersFactory,
|
||||||
|
trackSelector,
|
||||||
|
loadControl,
|
||||||
|
actionSchedule,
|
||||||
|
eventListener,
|
||||||
|
videoRendererEventListener,
|
||||||
|
audioRendererEventListener,
|
||||||
|
expectedPlayerEndedCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,6 +364,8 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
private final LoadControl loadControl;
|
private final LoadControl loadControl;
|
||||||
private final @Nullable ActionSchedule actionSchedule;
|
private final @Nullable ActionSchedule actionSchedule;
|
||||||
private final @Nullable Player.EventListener eventListener;
|
private final @Nullable Player.EventListener eventListener;
|
||||||
|
private final @Nullable VideoRendererEventListener videoRendererEventListener;
|
||||||
|
private final @Nullable AudioRendererEventListener audioRendererEventListener;
|
||||||
|
|
||||||
private final HandlerThread playerThread;
|
private final HandlerThread playerThread;
|
||||||
private final Handler handler;
|
private final Handler handler;
|
||||||
@ -347,10 +382,17 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
private TrackGroupArray trackGroups;
|
private TrackGroupArray trackGroups;
|
||||||
private boolean playerWasPrepared;
|
private boolean playerWasPrepared;
|
||||||
|
|
||||||
private ExoPlayerTestRunner(PlayerFactory playerFactory, MediaSource mediaSource,
|
private ExoPlayerTestRunner(
|
||||||
RenderersFactory renderersFactory, MappingTrackSelector trackSelector,
|
PlayerFactory playerFactory,
|
||||||
LoadControl loadControl, @Nullable ActionSchedule actionSchedule,
|
MediaSource mediaSource,
|
||||||
@Nullable Player.EventListener eventListener, int expectedPlayerEndedCount) {
|
RenderersFactory renderersFactory,
|
||||||
|
MappingTrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
@Nullable ActionSchedule actionSchedule,
|
||||||
|
@Nullable Player.EventListener eventListener,
|
||||||
|
@Nullable VideoRendererEventListener videoRendererEventListener,
|
||||||
|
@Nullable AudioRendererEventListener audioRendererEventListener,
|
||||||
|
int expectedPlayerEndedCount) {
|
||||||
this.playerFactory = playerFactory;
|
this.playerFactory = playerFactory;
|
||||||
this.mediaSource = mediaSource;
|
this.mediaSource = mediaSource;
|
||||||
this.renderersFactory = renderersFactory;
|
this.renderersFactory = renderersFactory;
|
||||||
@ -358,6 +400,8 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
this.loadControl = loadControl;
|
this.loadControl = loadControl;
|
||||||
this.actionSchedule = actionSchedule;
|
this.actionSchedule = actionSchedule;
|
||||||
this.eventListener = eventListener;
|
this.eventListener = eventListener;
|
||||||
|
this.videoRendererEventListener = videoRendererEventListener;
|
||||||
|
this.audioRendererEventListener = audioRendererEventListener;
|
||||||
this.timelines = new ArrayList<>();
|
this.timelines = new ArrayList<>();
|
||||||
this.manifests = new ArrayList<>();
|
this.manifests = new ArrayList<>();
|
||||||
this.timelineChangeReasons = new ArrayList<>();
|
this.timelineChangeReasons = new ArrayList<>();
|
||||||
@ -380,25 +424,33 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
* @return This test runner.
|
* @return This test runner.
|
||||||
*/
|
*/
|
||||||
public ExoPlayerTestRunner start() {
|
public ExoPlayerTestRunner start() {
|
||||||
handler.post(new Runnable() {
|
handler.post(
|
||||||
@Override
|
new Runnable() {
|
||||||
public void run() {
|
@Override
|
||||||
try {
|
public void run() {
|
||||||
player = playerFactory.createExoPlayer(renderersFactory, trackSelector, loadControl);
|
try {
|
||||||
player.addListener(ExoPlayerTestRunner.this);
|
player = playerFactory.createExoPlayer(renderersFactory, trackSelector, loadControl);
|
||||||
if (eventListener != null) {
|
player.addListener(ExoPlayerTestRunner.this);
|
||||||
player.addListener(eventListener);
|
if (eventListener != null) {
|
||||||
|
player.addListener(eventListener);
|
||||||
|
}
|
||||||
|
if (videoRendererEventListener != null) {
|
||||||
|
player.addVideoDebugListener(videoRendererEventListener);
|
||||||
|
}
|
||||||
|
if (audioRendererEventListener != null) {
|
||||||
|
player.addAudioDebugListener(audioRendererEventListener);
|
||||||
|
}
|
||||||
|
player.setPlayWhenReady(true);
|
||||||
|
if (actionSchedule != null) {
|
||||||
|
actionSchedule.start(
|
||||||
|
player, trackSelector, null, handler, ExoPlayerTestRunner.this);
|
||||||
|
}
|
||||||
|
player.prepare(mediaSource);
|
||||||
|
} catch (Exception e) {
|
||||||
|
handleException(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
player.setPlayWhenReady(true);
|
});
|
||||||
if (actionSchedule != null) {
|
|
||||||
actionSchedule.start(player, trackSelector, null, handler, ExoPlayerTestRunner.this);
|
|
||||||
}
|
|
||||||
player.prepare(mediaSource);
|
|
||||||
} catch (Exception e) {
|
|
||||||
handleException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user