diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ExternallyLoadedImagePlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ExternallyLoadedImagePlaybackTest.java index c30ea0aa45..dd04be12af 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ExternallyLoadedImagePlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ExternallyLoadedImagePlaybackTest.java @@ -70,7 +70,7 @@ public final class ExternallyLoadedImagePlaybackTest { throws Exception { Context applicationContext = ApplicationProvider.getApplicationContext(); CapturingRenderersFactory renderersFactory = - new CapturingRenderersFactory(applicationContext, /* addImageRenderer= */ true) + new CapturingRenderersFactory(applicationContext) .setImageDecoderFactory(new CustomImageDecoderFactory()); Clock clock = new FakeClock(/* isAutoAdvancing= */ true); AtomicInteger externalLoaderCallCount = new AtomicInteger(); @@ -113,7 +113,7 @@ public final class ExternallyLoadedImagePlaybackTest { public void imagePlayback_externalLoaderFutureFails_propagatesFailure() throws Exception { Context applicationContext = ApplicationProvider.getApplicationContext(); CapturingRenderersFactory renderersFactory = - new CapturingRenderersFactory(applicationContext, /* addImageRenderer= */ true) + new CapturingRenderersFactory(applicationContext) .setImageDecoderFactory(new CustomImageDecoderFactory()); ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()); @@ -146,7 +146,7 @@ public final class ExternallyLoadedImagePlaybackTest { public void imagePlayback_loadingCompletedWhenFutureCompletes() throws Exception { Context applicationContext = ApplicationProvider.getApplicationContext(); CapturingRenderersFactory renderersFactory = - new CapturingRenderersFactory(applicationContext, /* addImageRenderer= */ true) + new CapturingRenderersFactory(applicationContext) .setImageDecoderFactory(new CustomImageDecoderFactory()); ListeningExecutorService listeningExecutorService = MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor()); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ImagePlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ImagePlaybackTest.java index 26a52576d7..34cbdc74ff 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ImagePlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/ImagePlaybackTest.java @@ -70,8 +70,7 @@ public class ImagePlaybackTest { @Test public void test() throws Exception { Context applicationContext = ApplicationProvider.getApplicationContext(); - CapturingRenderersFactory renderersFactory = - new CapturingRenderersFactory(applicationContext, /* addImageRenderer= */ true); + CapturingRenderersFactory renderersFactory = new CapturingRenderersFactory(applicationContext); Clock clock = new FakeClock(/* isAutoAdvancing= */ true); ExoPlayer player = new ExoPlayer.Builder(applicationContext, renderersFactory).setClock(clock).build(); diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingImageOutput.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingImageOutput.java index b3475e0419..3d2187b11f 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingImageOutput.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingImageOutput.java @@ -64,11 +64,13 @@ public final class CapturingImageOutput implements Dumpable, ImageOutput { @Override public void dump(Dumper dumper) { - dumper.startBlock("ImageOutput"); - dumper.add("rendered image count", imageCount); - for (Dumpable dumpable : renderedBitmaps) { - dumpable.dump(dumper); + if (imageCount > 0) { + dumper.startBlock("ImageOutput"); + dumper.add("rendered image count", imageCount); + for (Dumpable dumpable : renderedBitmaps) { + dumpable.dump(dumper); + } + dumper.endBlock(); } - dumper.endBlock(); } } diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingRenderersFactory.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingRenderersFactory.java index ff0947077f..1be920f8f5 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingRenderersFactory.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/CapturingRenderersFactory.java @@ -69,7 +69,6 @@ import java.util.concurrent.atomic.AtomicBoolean; public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpable { private final Context context; - private final boolean addImageRenderer; private final CapturingMediaCodecAdapter.Factory mediaCodecAdapterFactory; private final CapturingAudioSink audioSink; private final CapturingImageOutput imageOutput; @@ -78,40 +77,24 @@ public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpa /** * Creates an instance. * - *

The factory will not include an {@link ImageRenderer}. + * @param context The {@link Context}. */ public CapturingRenderersFactory(Context context) { - this(context, /* addImageRenderer= */ false); - } - - /** - * Creates an instance. - * - * @param context The {@link Context}. - * @param addImageRenderer Whether to add the image renderer to the list of renderers created in - * {@link #createRenderers}. - */ - public CapturingRenderersFactory(Context context, boolean addImageRenderer) { this.context = context; this.mediaCodecAdapterFactory = new CapturingMediaCodecAdapter.Factory(); this.audioSink = new CapturingAudioSink(new DefaultAudioSink.Builder(context).build()); this.imageOutput = new CapturingImageOutput(); - this.addImageRenderer = addImageRenderer; this.imageDecoderFactory = ImageDecoder.Factory.DEFAULT; } /** * Sets the {@link ImageDecoder.Factory} used by the {@link ImageRenderer}. * - *

Must {@code addImageRenderer} when creating the {@link - * CapturingRenderersFactory#CapturingRenderersFactory(Context, boolean)}. - * * @param imageDecoderFactory The {@link ImageDecoder.Factory}. * @return This factory, for convenience. */ public CapturingRenderersFactory setImageDecoderFactory( ImageDecoder.Factory imageDecoderFactory) { - checkState(addImageRenderer); this.imageDecoderFactory = imageDecoderFactory; return this; } @@ -123,8 +106,8 @@ public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpa AudioRendererEventListener audioRendererEventListener, TextOutput textRendererOutput, MetadataOutput metadataRendererOutput) { - ArrayList temp = new ArrayList<>(); - temp.add( + ArrayList renderers = new ArrayList<>(); + renderers.add( new MediaCodecVideoRenderer( context, mediaCodecAdapterFactory, @@ -154,7 +137,7 @@ public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpa return false; } }); - temp.add( + renderers.add( new MediaCodecAudioRenderer( context, mediaCodecAdapterFactory, @@ -163,22 +146,18 @@ public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpa eventHandler, audioRendererEventListener, audioSink)); - temp.add(new TextRenderer(textRendererOutput, eventHandler.getLooper())); - temp.add(new MetadataRenderer(metadataRendererOutput, eventHandler.getLooper())); + renderers.add(new TextRenderer(textRendererOutput, eventHandler.getLooper())); + renderers.add(new MetadataRenderer(metadataRendererOutput, eventHandler.getLooper())); + renderers.add(new ImageRenderer(imageDecoderFactory, imageOutput)); - if (addImageRenderer) { - temp.add(new ImageRenderer(imageDecoderFactory, imageOutput)); - } - return temp.toArray(new Renderer[] {}); + return renderers.toArray(new Renderer[] {}); } @Override public void dump(Dumper dumper) { mediaCodecAdapterFactory.dump(dumper); audioSink.dump(dumper); - if (addImageRenderer) { - imageOutput.dump(dumper); - } + imageOutput.dump(dumper); } /**