From 6d266bfc0d29254cedf24907cfaecae7fcb68765 Mon Sep 17 00:00:00 2001 From: kimvde Date: Mon, 14 Nov 2022 10:38:05 +0000 Subject: [PATCH] Remove asyncErrorListener PiperOrigin-RevId: 488310077 --- .../transformer/ExoPlayerAssetLoader.java | 18 +++------- .../ExoPlayerAssetLoaderRenderer.java | 7 ++-- .../exoplayer2/transformer/MuxerWrapper.java | 9 ++--- .../exoplayer2/transformer/Transformer.java | 26 ++++---------- .../transformer/TransformerInternal.java | 34 +++++++++---------- .../VideoTranscodingSamplePipeline.java | 9 ++--- 6 files changed, 40 insertions(+), 63 deletions(-) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java index 94a0793bd7..f39d62e382 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoader.java @@ -92,8 +92,7 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; progressState = PROGRESS_STATE_NO_TRANSFORMATION; } - public void start( - MediaItem mediaItem, Listener listener, Transformer.AsyncErrorListener asyncErrorListener) { + public void start(MediaItem mediaItem, Listener listener) { DefaultTrackSelector trackSelector = new DefaultTrackSelector(context); trackSelector.setParameters( new DefaultTrackSelector.Parameters.Builder(context) @@ -110,9 +109,7 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; DEFAULT_BUFFER_FOR_PLAYBACK_AFTER_REBUFFER_MS / 10) .build(); ExoPlayer.Builder playerBuilder = - new ExoPlayer.Builder( - context, - new RenderersFactoryImpl(removeAudio, removeVideo, listener, asyncErrorListener)) + new ExoPlayer.Builder(context, new RenderersFactoryImpl(removeAudio, removeVideo, listener)) .setMediaSourceFactory(mediaSourceFactory) .setTrackSelector(trackSelector) .setLoadControl(loadControl) @@ -156,17 +153,14 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; private final boolean removeAudio; private final boolean removeVideo; private final ExoPlayerAssetLoader.Listener assetLoaderListener; - private final Transformer.AsyncErrorListener asyncErrorListener; public RenderersFactoryImpl( boolean removeAudio, boolean removeVideo, - ExoPlayerAssetLoader.Listener assetLoaderListener, - Transformer.AsyncErrorListener asyncErrorListener) { + ExoPlayerAssetLoader.Listener assetLoaderListener) { this.removeAudio = removeAudio; this.removeVideo = removeVideo; this.assetLoaderListener = assetLoaderListener; - this.asyncErrorListener = asyncErrorListener; mediaClock = new TransformerMediaClock(); } @@ -182,14 +176,12 @@ import com.google.android.exoplayer2.video.VideoRendererEventListener; int index = 0; if (!removeAudio) { renderers[index] = - new ExoPlayerAssetLoaderRenderer( - C.TRACK_TYPE_AUDIO, mediaClock, assetLoaderListener, asyncErrorListener); + new ExoPlayerAssetLoaderRenderer(C.TRACK_TYPE_AUDIO, mediaClock, assetLoaderListener); index++; } if (!removeVideo) { renderers[index] = - new ExoPlayerAssetLoaderRenderer( - C.TRACK_TYPE_VIDEO, mediaClock, assetLoaderListener, asyncErrorListener); + new ExoPlayerAssetLoaderRenderer(C.TRACK_TYPE_VIDEO, mediaClock, assetLoaderListener); index++; } return renderers; diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java index c1b22102af..951e373eea 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/ExoPlayerAssetLoaderRenderer.java @@ -40,7 +40,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; private final TransformerMediaClock mediaClock; private final ExoPlayerAssetLoader.Listener assetLoaderListener; - private final Transformer.AsyncErrorListener asyncErrorListener; private final DecoderInputBuffer decoderInputBuffer; private boolean isTransformationRunning; @@ -51,12 +50,10 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; public ExoPlayerAssetLoaderRenderer( int trackType, TransformerMediaClock mediaClock, - ExoPlayerAssetLoader.Listener assetLoaderListener, - Transformer.AsyncErrorListener asyncErrorListener) { + ExoPlayerAssetLoader.Listener assetLoaderListener) { super(trackType); this.mediaClock = mediaClock; this.assetLoaderListener = assetLoaderListener; - this.asyncErrorListener = asyncErrorListener; decoderInputBuffer = new DecoderInputBuffer(BUFFER_REPLACEMENT_MODE_DISABLED); } @@ -104,7 +101,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; while (samplePipeline.processData() || feedPipelineFromInput()) {} } catch (TransformationException e) { isTransformationRunning = false; - asyncErrorListener.onTransformationError(e); + assetLoaderListener.onError(e); } } diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java index 71f86747c5..83040add44 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/MuxerWrapper.java @@ -28,6 +28,7 @@ import android.util.SparseLongArray; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.util.Consumer; import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.Util; import com.google.common.collect.ImmutableList; @@ -57,7 +58,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @Nullable private final String outputPath; @Nullable private final ParcelFileDescriptor outputParcelFileDescriptor; private final Muxer.Factory muxerFactory; - private final Transformer.AsyncErrorListener asyncErrorListener; + private final Consumer errorConsumer; private final SparseIntArray trackTypeToIndex; private final SparseIntArray trackTypeToSampleCount; private final SparseLongArray trackTypeToTimeUs; @@ -77,7 +78,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @Nullable String outputPath, @Nullable ParcelFileDescriptor outputParcelFileDescriptor, Muxer.Factory muxerFactory, - Transformer.AsyncErrorListener asyncErrorListener) { + Consumer errorConsumer) { if (outputPath == null && outputParcelFileDescriptor == null) { throw new NullPointerException("Both output path and ParcelFileDescriptor are null"); } @@ -85,7 +86,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; this.outputPath = outputPath; this.outputParcelFileDescriptor = outputParcelFileDescriptor; this.muxerFactory = muxerFactory; - this.asyncErrorListener = asyncErrorListener; + this.errorConsumer = errorConsumer; trackTypeToIndex = new SparseIntArray(); trackTypeToSampleCount = new SparseIntArray(); @@ -306,7 +307,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; return; } isAborted = true; - asyncErrorListener.onTransformationError( + errorConsumer.accept( TransformationException.createForMuxer( new IllegalStateException( "No output sample written in the last " diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java index fa528e8903..7250c0e64c 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/Transformer.java @@ -713,22 +713,19 @@ public final class Transformer { throw new IllegalStateException("There is already a transformation in progress."); } transformationInProgress = true; - ComponentListener componentListener = new ComponentListener(mediaItem, looper); + TransformerInternalListener transformerInternalListener = + new TransformerInternalListener(mediaItem, looper); MuxerWrapper muxerWrapper = new MuxerWrapper( outputPath, outputParcelFileDescriptor, muxerFactory, - /* asyncErrorListener= */ componentListener); + /* errorConsumer= */ transformerInternalListener::onTransformationError); this.muxerWrapper = muxerWrapper; FallbackListener fallbackListener = new FallbackListener(mediaItem, listeners, transformationRequest); transformerInternal.start( - mediaItem, - muxerWrapper, - /* listener= */ componentListener, - fallbackListener, - /* asyncErrorListener= */ componentListener); + mediaItem, muxerWrapper, transformerInternalListener, fallbackListener); } /** @@ -822,23 +819,12 @@ public final class Transformer { return fileSize; } - /** Listener for exceptions that occur during a transformation. */ - /* package */ interface AsyncErrorListener { - /** - * Called when a {@link TransformationException} occurs. - * - *

Can be called from any thread. - */ - void onTransformationError(TransformationException exception); - } - - private final class ComponentListener - implements TransformerInternal.Listener, AsyncErrorListener { + private final class TransformerInternalListener implements TransformerInternal.Listener { private final MediaItem mediaItem; private final Handler handler; - public ComponentListener(MediaItem mediaItem, Looper looper) { + public TransformerInternalListener(MediaItem mediaItem, Looper looper) { this.mediaItem = mediaItem; handler = new Handler(looper); } diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java index cc9aab52f3..41c6602401 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerInternal.java @@ -80,12 +80,10 @@ import com.google.common.collect.ImmutableList; MediaItem mediaItem, MuxerWrapper muxerWrapper, Listener listener, - FallbackListener fallbackListener, - Transformer.AsyncErrorListener asyncErrorListener) { - ComponentListener componentListener = - new ComponentListener( - mediaItem, muxerWrapper, listener, fallbackListener, asyncErrorListener); - exoPlayerAssetLoader.start(mediaItem, componentListener, asyncErrorListener); + FallbackListener fallbackListener) { + AssetLoaderListener assetLoaderListener = + new AssetLoaderListener(mediaItem, muxerWrapper, listener, fallbackListener); + exoPlayerAssetLoader.start(mediaItem, assetLoaderListener); } public @Transformer.ProgressState int getProgress(ProgressHolder progressHolder) { @@ -96,27 +94,24 @@ import com.google.common.collect.ImmutableList; exoPlayerAssetLoader.release(); } - private class ComponentListener implements ExoPlayerAssetLoader.Listener { + private class AssetLoaderListener implements ExoPlayerAssetLoader.Listener { private final MediaItem mediaItem; private final MuxerWrapper muxerWrapper; private final TransformerInternal.Listener listener; private final FallbackListener fallbackListener; - private final Transformer.AsyncErrorListener asyncErrorListener; private volatile boolean trackRegistered; - public ComponentListener( + public AssetLoaderListener( MediaItem mediaItem, MuxerWrapper muxerWrapper, Listener listener, - FallbackListener fallbackListener, - Transformer.AsyncErrorListener asyncErrorListener) { + FallbackListener fallbackListener) { this.mediaItem = mediaItem; this.muxerWrapper = muxerWrapper; this.listener = listener; this.fallbackListener = fallbackListener; - this.asyncErrorListener = asyncErrorListener; } @Override @@ -142,10 +137,15 @@ import com.google.common.collect.ImmutableList; @Override public void onError(Exception e) { - TransformationException transformationException = - e instanceof PlaybackException - ? TransformationException.createForPlaybackException((PlaybackException) e) - : TransformationException.createForUnexpected(e); + TransformationException transformationException; + if (e instanceof TransformationException) { + transformationException = (TransformationException) e; + } else if (e instanceof PlaybackException) { + transformationException = + TransformationException.createForPlaybackException((PlaybackException) e); + } else { + transformationException = TransformationException.createForUnexpected(e); + } listener.onTransformationError(transformationException); } @@ -181,7 +181,7 @@ import com.google.common.collect.ImmutableList; encoderFactory, muxerWrapper, fallbackListener, - asyncErrorListener, + listener::onTransformationError, debugViewProvider); } else { return new PassthroughSamplePipeline( diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java index 45d51c6778..dca2590429 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoTranscodingSamplePipeline.java @@ -31,6 +31,7 @@ import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.decoder.DecoderInputBuffer; import com.google.android.exoplayer2.effect.Presentation; import com.google.android.exoplayer2.effect.ScaleToFitTransformation; +import com.google.android.exoplayer2.util.Consumer; import com.google.android.exoplayer2.util.DebugViewProvider; import com.google.android.exoplayer2.util.Effect; import com.google.android.exoplayer2.util.FrameInfo; @@ -75,7 +76,7 @@ import org.checkerframework.dataflow.qual.Pure; Codec.EncoderFactory encoderFactory, MuxerWrapper muxerWrapper, FallbackListener fallbackListener, - Transformer.AsyncErrorListener asyncErrorListener, + Consumer errorConsumer, DebugViewProvider debugViewProvider) throws TransformationException { super( @@ -154,7 +155,7 @@ import org.checkerframework.dataflow.qual.Pure; checkNotNull(frameProcessor) .setOutputSurfaceInfo(encoderWrapper.getSurfaceInfo(width, height)); } catch (TransformationException exception) { - asyncErrorListener.onTransformationError(exception); + errorConsumer.accept(exception); } } @@ -165,7 +166,7 @@ import org.checkerframework.dataflow.qual.Pure; @Override public void onFrameProcessingError(FrameProcessingException exception) { - asyncErrorListener.onTransformationError( + errorConsumer.accept( TransformationException.createForFrameProcessingException( exception, TransformationException.ERROR_CODE_FRAME_PROCESSING_FAILED)); } @@ -175,7 +176,7 @@ import org.checkerframework.dataflow.qual.Pure; try { encoderWrapper.signalEndOfInputStream(); } catch (TransformationException exception) { - asyncErrorListener.onTransformationError(exception); + errorConsumer.accept(exception); } } },