Remove dependency on muxer from ExoPlayerAssetLoader
PiperOrigin-RevId: 487487259
This commit is contained in:
parent
40c6c43197
commit
07f0589ce7
@ -49,7 +49,6 @@ import androidx.media3.exoplayer.source.MediaSource;
|
||||
import androidx.media3.exoplayer.text.TextOutput;
|
||||
import androidx.media3.exoplayer.trackselection.DefaultTrackSelector;
|
||||
import androidx.media3.exoplayer.video.VideoRendererEventListener;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
/* package */ final class ExoPlayerAssetLoader {
|
||||
|
||||
@ -57,6 +56,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
void onTrackRegistered();
|
||||
|
||||
void onAllTracksRegistered();
|
||||
|
||||
SamplePipeline onTrackAdded(Format format, long streamStartPositionUs, long streamOffsetUs)
|
||||
throws TransformationException;
|
||||
|
||||
@ -72,7 +73,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
private final Looper looper;
|
||||
private final Clock clock;
|
||||
|
||||
private @MonotonicNonNull MuxerWrapper muxerWrapper;
|
||||
@Nullable private ExoPlayer player;
|
||||
private @Transformer.ProgressState int progressState;
|
||||
|
||||
@ -93,19 +93,14 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
}
|
||||
|
||||
public void start(
|
||||
MediaItem mediaItem,
|
||||
MuxerWrapper muxerWrapper,
|
||||
Listener listener,
|
||||
Transformer.AsyncErrorListener asyncErrorListener) {
|
||||
this.muxerWrapper = muxerWrapper;
|
||||
|
||||
MediaItem mediaItem, Listener listener, Transformer.AsyncErrorListener asyncErrorListener) {
|
||||
DefaultTrackSelector trackSelector = new DefaultTrackSelector(context);
|
||||
trackSelector.setParameters(
|
||||
new DefaultTrackSelector.Parameters.Builder(context)
|
||||
.setForceHighestSupportedBitrate(true)
|
||||
.build());
|
||||
// Arbitrarily decrease buffers for playback so that samples start being sent earlier to the
|
||||
// muxer (rebuffers are less problematic for the transformation use case).
|
||||
// pipelines (rebuffers are less problematic for the transformation use case).
|
||||
DefaultLoadControl loadControl =
|
||||
new DefaultLoadControl.Builder()
|
||||
.setBufferDurationsMs(
|
||||
@ -238,9 +233,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
@Override
|
||||
public void onTracksChanged(Tracks tracks) {
|
||||
if (checkNotNull(muxerWrapper).getTrackCount() == 0) {
|
||||
listener.onError(new IllegalStateException("The output does not contain any tracks."));
|
||||
}
|
||||
listener.onAllTracksRegistered();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -235,11 +235,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the number of {@link #registerTrack() registered} tracks. */
|
||||
public int getTrackCount() {
|
||||
return trackCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the average bitrate of data written to the track of the provided {@code trackType}, or
|
||||
* {@link C#RATE_UNSET_INT} if there is no track data.
|
||||
|
@ -85,7 +85,7 @@ import com.google.common.collect.ImmutableList;
|
||||
ComponentListener componentListener =
|
||||
new ComponentListener(
|
||||
mediaItem, muxerWrapper, listener, fallbackListener, asyncErrorListener);
|
||||
exoPlayerAssetLoader.start(mediaItem, muxerWrapper, componentListener, asyncErrorListener);
|
||||
exoPlayerAssetLoader.start(mediaItem, componentListener, asyncErrorListener);
|
||||
}
|
||||
|
||||
public @Transformer.ProgressState int getProgress(ProgressHolder progressHolder) {
|
||||
@ -104,6 +104,8 @@ import com.google.common.collect.ImmutableList;
|
||||
private final FallbackListener fallbackListener;
|
||||
private final Transformer.AsyncErrorListener asyncErrorListener;
|
||||
|
||||
private volatile boolean trackRegistered;
|
||||
|
||||
public ComponentListener(
|
||||
MediaItem mediaItem,
|
||||
MuxerWrapper muxerWrapper,
|
||||
@ -119,10 +121,18 @@ import com.google.common.collect.ImmutableList;
|
||||
|
||||
@Override
|
||||
public void onTrackRegistered() {
|
||||
trackRegistered = true;
|
||||
muxerWrapper.registerTrack();
|
||||
fallbackListener.registerTrack();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAllTracksRegistered() {
|
||||
if (!trackRegistered) {
|
||||
onError(new IllegalStateException("The output does not contain any tracks."));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SamplePipeline onTrackAdded(
|
||||
Format format, long streamStartPositionUs, long streamOffsetUs)
|
||||
|
Loading…
x
Reference in New Issue
Block a user