From 02bf7594e23098807cebf2418a76206142ccf0b0 Mon Sep 17 00:00:00 2001 From: claincly Date: Mon, 5 Dec 2022 21:42:47 +0000 Subject: [PATCH] Change argument order to match API council suggestion By putting Listener as the last argument. PiperOrigin-RevId: 493100906 --- .../media3/common/FrameProcessor.java | 10 +++--- ...EffectsFrameProcessorFrameReleaseTest.java | 18 +++++----- .../GlEffectsFrameProcessorPixelTest.java | 12 +++---- .../FinalMatrixTextureProcessorWrapper.java | 14 ++++---- .../effect/GlEffectsFrameProcessor.java | 36 +++++++++---------- .../VideoTranscodingSamplePipeline.java | 20 +++++------ 6 files changed, 55 insertions(+), 55 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java b/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java index 2227b8b6c3..8a06ab1b63 100644 --- a/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java +++ b/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java @@ -45,8 +45,6 @@ public interface FrameProcessor { * Creates a new {@link FrameProcessor} instance. * * @param context A {@link Context}. - * @param listener A {@link Listener}. - * @param executor The {@link Executor} on which the {@code listener} is invoked. * @param effects The {@link Effect} instances to apply to each frame. * @param debugViewProvider A {@link DebugViewProvider}. * @param colorInfo The {@link ColorInfo} for input and output frames. @@ -55,18 +53,20 @@ public interface FrameProcessor { * automatically as {@link FrameProcessor} is done processing them. If {@code false}, the * {@link FrameProcessor} will block until {@link #releaseOutputFrame(long)} is called, to * render or drop the frame. + * @param executor The {@link Executor} on which the {@code listener} is invoked. + * @param listener A {@link Listener}. * @return A new instance. * @throws FrameProcessingException If a problem occurs while creating the {@link * FrameProcessor}. */ FrameProcessor create( Context context, - Listener listener, - Executor executor, List effects, DebugViewProvider debugViewProvider, ColorInfo colorInfo, - boolean releaseFramesAutomatically) + boolean releaseFramesAutomatically, + Executor executor, + Listener listener) throws FrameProcessingException; } diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java index 7c9caed531..8cf5215dc7 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java @@ -281,6 +281,14 @@ public final class GlEffectsFrameProcessorFrameReleaseTest { new GlEffectsFrameProcessor.Factory() .create( getApplicationContext(), + ImmutableList.of( + (GlEffect) + (context, useHdr) -> + new BlankFrameProducer(inputPresentationTimesUs, useHdr)), + DebugViewProvider.NONE, + ColorInfo.SDR_BT709_LIMITED, + releaseFramesAutomatically, + MoreExecutors.directExecutor(), new FrameProcessor.Listener() { @Override public void onOutputSizeChanged(int width, int height) { @@ -314,15 +322,7 @@ public final class GlEffectsFrameProcessorFrameReleaseTest { @Override public void onFrameProcessingEnded() {} - }, - MoreExecutors.directExecutor(), - ImmutableList.of( - (GlEffect) - (context, useHdr) -> - new BlankFrameProducer(inputPresentationTimesUs, useHdr)), - DebugViewProvider.NONE, - ColorInfo.SDR_BT709_LIMITED, - releaseFramesAutomatically)); + })); glEffectsFrameProcessor.setInputFrameInfo( new FrameInfo(WIDTH, HEIGHT, /* pixelWidthHeightRatio= */ 1, /* streamOffsetUs= */ 0)); diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java index 80f49e5e2c..fa41e19ee5 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorPixelTest.java @@ -416,6 +416,11 @@ public final class GlEffectsFrameProcessorPixelTest { new GlEffectsFrameProcessor.Factory() .create( getApplicationContext(), + effects, + DebugViewProvider.NONE, + ColorInfo.SDR_BT709_LIMITED, + /* releaseFramesAutomatically= */ true, + MoreExecutors.directExecutor(), new FrameProcessor.Listener() { @Override public void onOutputSizeChanged(int width, int height) { @@ -441,12 +446,7 @@ public final class GlEffectsFrameProcessorPixelTest { public void onFrameProcessingEnded() { frameProcessingEnded = true; } - }, - MoreExecutors.directExecutor(), - effects, - DebugViewProvider.NONE, - ColorInfo.SDR_BT709_LIMITED, - /* releaseFramesAutomatically= */ true)); + })); DecodeOneFrameUtil.decodeOneAssetFileFrame( INPUT_MP4_ASSET_STRING, new DecodeOneFrameUtil.Listener() { diff --git a/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTextureProcessorWrapper.java b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTextureProcessorWrapper.java index f7fb6d0660..d10071274c 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTextureProcessorWrapper.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/FinalMatrixTextureProcessorWrapper.java @@ -69,11 +69,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private final EGLDisplay eglDisplay; private final EGLContext eglContext; private final DebugViewProvider debugViewProvider; - private final FrameProcessor.Listener frameProcessorListener; - private final Executor frameProcessorListenerExecutor; private final boolean sampleFromExternalTexture; private final ColorInfo colorInfo; private final boolean releaseFramesAutomatically; + private final Executor frameProcessorListenerExecutor; + private final FrameProcessor.Listener frameProcessorListener; private final float[] textureTransformMatrix; private final Queue streamOffsetUsQueue; private final Queue> availableFrames; @@ -102,23 +102,23 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; EGLContext eglContext, ImmutableList matrixTransformations, ImmutableList rgbMatrices, - FrameProcessor.Listener frameProcessorListener, - Executor frameProcessorListenerExecutor, DebugViewProvider debugViewProvider, boolean sampleFromExternalTexture, ColorInfo colorInfo, - boolean releaseFramesAutomatically) { + boolean releaseFramesAutomatically, + Executor frameProcessorListenerExecutor, + FrameProcessor.Listener frameProcessorListener) { this.context = context; this.matrixTransformations = matrixTransformations; this.rgbMatrices = rgbMatrices; this.eglDisplay = eglDisplay; this.eglContext = eglContext; this.debugViewProvider = debugViewProvider; - this.frameProcessorListener = frameProcessorListener; - this.frameProcessorListenerExecutor = frameProcessorListenerExecutor; this.sampleFromExternalTexture = sampleFromExternalTexture; this.colorInfo = colorInfo; this.releaseFramesAutomatically = releaseFramesAutomatically; + this.frameProcessorListenerExecutor = frameProcessorListenerExecutor; + this.frameProcessorListener = frameProcessorListener; textureTransformMatrix = GlUtil.create4x4IdentityMatrix(); streamOffsetUsQueue = new ConcurrentLinkedQueue<>(); diff --git a/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java index 29acf40bf7..f59c3045ff 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java @@ -68,12 +68,12 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { @Override public GlEffectsFrameProcessor create( Context context, - Listener listener, - Executor listenerExecutor, List effects, DebugViewProvider debugViewProvider, ColorInfo colorInfo, - boolean releaseFramesAutomatically) + boolean releaseFramesAutomatically, + Executor listenerExecutor, + Listener listener) throws FrameProcessingException { // TODO(b/261188041) Add tests to verify the Listener is invoked on the given Executor. ExecutorService singleThreadExecutorService = Util.newSingleThreadExecutor(THREAD_NAME); @@ -83,13 +83,13 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { () -> createOpenGlObjectsAndFrameProcessor( context, - listener, - listenerExecutor, effects, debugViewProvider, colorInfo, releaseFramesAutomatically, - singleThreadExecutorService)); + singleThreadExecutorService, + listenerExecutor, + listener)); try { return glFrameProcessorFuture.get(); @@ -115,13 +115,13 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { @WorkerThread private static GlEffectsFrameProcessor createOpenGlObjectsAndFrameProcessor( Context context, - Listener listener, - Executor executor, List effects, DebugViewProvider debugViewProvider, ColorInfo colorInfo, boolean releaseFramesAutomatically, - ExecutorService singleThreadExecutorService) + ExecutorService singleThreadExecutorService, + Executor executor, + Listener listener) throws GlUtil.GlException, FrameProcessingException { checkState(Thread.currentThread().getName().equals(THREAD_NAME)); @@ -140,11 +140,11 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { effects, eglDisplay, eglContext, - listener, - executor, debugViewProvider, colorInfo, - releaseFramesAutomatically); + releaseFramesAutomatically, + executor, + listener); FrameProcessingTaskExecutor frameProcessingTaskExecutor = new FrameProcessingTaskExecutor(singleThreadExecutorService, listener); chainTextureProcessorsWithListeners( @@ -174,11 +174,11 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { List effects, EGLDisplay eglDisplay, EGLContext eglContext, - Listener listener, - Executor executor, DebugViewProvider debugViewProvider, ColorInfo colorInfo, - boolean releaseFramesAutomatically) + boolean releaseFramesAutomatically, + Executor executor, + Listener listener) throws FrameProcessingException { ImmutableList.Builder textureProcessorListBuilder = new ImmutableList.Builder<>(); @@ -232,12 +232,12 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { eglContext, matrixTransformationListBuilder.build(), rgbMatrixListBuilder.build(), - listener, - executor, debugViewProvider, sampleFromExternalTexture, colorInfo, - releaseFramesAutomatically)); + releaseFramesAutomatically, + executor, + listener)); return textureProcessorListBuilder.build(); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java index 9b1821b9b2..7e76461790 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java @@ -159,6 +159,15 @@ import org.checkerframework.dataflow.qual.Pure; frameProcessor = frameProcessorFactory.create( context, + effectsListBuilder.build(), + debugViewProvider, + // HDR colors are only used if the MediaCodec encoder supports FEATURE_HdrEditing. + // This implies that the OpenGL EXT_YUV_target extension is supported and hence the + // default FrameProcessor, GlEffectsFrameProcessor, also supports HDR. Otherwise, tone + // mapping is applied, which ensures the decoder outputs SDR output for an HDR input. + encoderWrapper.getSupportedInputColor(), + /* releaseFramesAutomatically= */ true, + MoreExecutors.directExecutor(), new FrameProcessor.Listener() { private long lastProcessedFramePresentationTimeUs; @@ -195,16 +204,7 @@ import org.checkerframework.dataflow.qual.Pure; listener.onTransformationError(exception); } } - }, - MoreExecutors.directExecutor(), - effectsListBuilder.build(), - debugViewProvider, - // HDR colors are only used if the MediaCodec encoder supports FEATURE_HdrEditing. - // This implies that the OpenGL EXT_YUV_target extension is supported and hence the - // default FrameProcessor, GlEffectsFrameProcessor, also supports HDR. Otherwise, tone - // mapping is applied, which ensures the decoder outputs SDR output for an HDR input. - encoderWrapper.getSupportedInputColor(), - /* releaseFramesAutomatically= */ true); + }); } catch (FrameProcessingException e) { throw TransformationException.createForFrameProcessingException( e, TransformationException.ERROR_CODE_FRAME_PROCESSING_FAILED);