diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java index 2532d7fc7f..50d7de6323 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java @@ -41,6 +41,7 @@ import androidx.media3.common.util.Log; import androidx.media3.common.util.Util; import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.util.DebugTextViewHelper; +import androidx.media3.transformer.DebugViewProvider; import androidx.media3.transformer.DefaultEncoderFactory; import androidx.media3.transformer.GlEffect; import androidx.media3.transformer.GlTextureProcessor; @@ -417,7 +418,7 @@ public final class TransformerActivity extends AppCompatActivity { Toast.makeText(getApplicationContext(), getString(messageResource), Toast.LENGTH_LONG).show(); } - private final class DemoDebugViewProvider implements Transformer.DebugViewProvider { + private final class DemoDebugViewProvider implements DebugViewProvider { private @MonotonicNonNull SurfaceView surfaceView; private int width; diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java index 06512ca0e9..c6c9f6fc56 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/GlEffectsFrameProcessorPixelTest.java @@ -378,7 +378,7 @@ public final class GlEffectsFrameProcessorPixelTest { }, /* streamOffsetUs= */ 0L, effects, - Transformer.DebugViewProvider.NONE, + DebugViewProvider.NONE, /* enableExperimentalHdrEditing= */ false)); glEffectsFrameProcessor.setInputFrameInfo( new FrameInfo(inputWidth, inputHeight, pixelWidthHeightRatio)); diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DebugViewProvider.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DebugViewProvider.java new file mode 100644 index 0000000000..9ef2ecb4fb --- /dev/null +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DebugViewProvider.java @@ -0,0 +1,37 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package androidx.media3.transformer; + +import android.view.SurfaceView; +import androidx.annotation.Nullable; +import androidx.media3.common.util.UnstableApi; + +/** Provider for views to show diagnostic information during a transformation, for debugging. */ +@UnstableApi +public interface DebugViewProvider { + + /** Debug view provider that doesn't show any debug info. */ + DebugViewProvider NONE = (int width, int height) -> null; + + /** + * Returns a new surface view to show a preview of transformer output with the given width/height + * in pixels, or {@code null} if no debug information should be shown. + * + *

This method may be called on an arbitrary thread. + */ + @Nullable + SurfaceView getDebugPreviewSurfaceView(int width, int height); +} diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java index a927c5ce3c..44b890d903 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FinalMatrixTransformationProcessorWrapper.java @@ -59,7 +59,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private final EGLDisplay eglDisplay; private final EGLContext eglContext; private final long streamOffsetUs; - private final Transformer.DebugViewProvider debugViewProvider; + private final DebugViewProvider debugViewProvider; private final FrameProcessor.Listener frameProcessorListener; private final boolean enableExperimentalHdrEditing; @@ -85,7 +85,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ImmutableList matrixTransformations, long streamOffsetUs, FrameProcessor.Listener frameProcessorListener, - Transformer.DebugViewProvider debugViewProvider, + DebugViewProvider debugViewProvider, boolean enableExperimentalHdrEditing) { this.context = context; this.matrixTransformations = matrixTransformations; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java index af27f46a9f..ce418d8281 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/GlEffectsFrameProcessor.java @@ -52,7 +52,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * @param context A {@link Context}. * @param listener A {@link Listener}. * @param effects The {@link GlEffect GlEffects} to apply to each frame. - * @param debugViewProvider A {@link Transformer.DebugViewProvider}. + * @param debugViewProvider A {@link DebugViewProvider}. * @param enableExperimentalHdrEditing Whether to attempt to process the input as an HDR signal. * @return A new instance. * @throws FrameProcessingException If reading shader files fails, or an OpenGL error occurs while @@ -63,7 +63,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; FrameProcessor.Listener listener, long streamOffsetUs, List effects, - Transformer.DebugViewProvider debugViewProvider, + DebugViewProvider debugViewProvider, boolean enableExperimentalHdrEditing) throws FrameProcessingException { @@ -105,7 +105,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; FrameProcessor.Listener listener, long streamOffsetUs, List effects, - Transformer.DebugViewProvider debugViewProvider, + DebugViewProvider debugViewProvider, boolean enableExperimentalHdrEditing, ExecutorService singleThreadExecutorService) throws GlUtil.GlException, FrameProcessingException { @@ -181,7 +181,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; EGLContext eglContext, long streamOffsetUs, FrameProcessor.Listener listener, - Transformer.DebugViewProvider debugViewProvider, + DebugViewProvider debugViewProvider, boolean enableExperimentalHdrEditing) throws FrameProcessingException { ImmutableList.Builder textureProcessorListBuilder = diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java index 7c3036437f..8332cbc4c5 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -29,7 +29,6 @@ import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.ParcelFileDescriptor; -import android.view.SurfaceView; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; @@ -495,22 +494,6 @@ public final class Transformer { TransformationRequest fallbackTransformationRequest) {} } - /** Provider for views to show diagnostic information during transformation, for debugging. */ - public interface DebugViewProvider { - - /** Debug view provider that doesn't show any debug info. */ - DebugViewProvider NONE = (int width, int height) -> null; - - /** - * Returns a new surface view to show a preview of transformer output with the given - * width/height in pixels, or {@code null} if no debug information should be shown. - * - *

This method may be called on an arbitrary thread. - */ - @Nullable - SurfaceView getDebugPreviewSurfaceView(int width, int height); - } - /** * Progress state. One of {@link #PROGRESS_STATE_WAITING_FOR_AVAILABILITY}, {@link * #PROGRESS_STATE_AVAILABLE}, {@link #PROGRESS_STATE_UNAVAILABLE}, {@link @@ -549,7 +532,7 @@ public final class Transformer { private final ImmutableList videoEffects; private final Looper looper; private final Clock clock; - private final Transformer.DebugViewProvider debugViewProvider; + private final DebugViewProvider debugViewProvider; private final ListenerSet listeners; @VisibleForTesting /* package */ final Codec.DecoderFactory decoderFactory; @VisibleForTesting /* package */ final Codec.EncoderFactory encoderFactory; @@ -573,7 +556,7 @@ public final class Transformer { Clock clock, Codec.EncoderFactory encoderFactory, Codec.DecoderFactory decoderFactory, - Transformer.DebugViewProvider debugViewProvider) { + DebugViewProvider debugViewProvider) { checkState(!removeAudio || !removeVideo, "Audio and video cannot both be removed."); this.context = context; this.mediaSourceFactory = mediaSourceFactory; @@ -850,7 +833,7 @@ public final class Transformer { private final Codec.DecoderFactory decoderFactory; private final FallbackListener fallbackListener; private final AsyncErrorListener asyncErrorListener; - private final Transformer.DebugViewProvider debugViewProvider; + private final DebugViewProvider debugViewProvider; public TransformerRenderersFactory( Context context, @@ -864,7 +847,7 @@ public final class Transformer { Codec.DecoderFactory decoderFactory, FallbackListener fallbackListener, AsyncErrorListener asyncErrorListener, - Transformer.DebugViewProvider debugViewProvider) { + DebugViewProvider debugViewProvider) { this.context = context; this.muxerWrapper = muxerWrapper; this.removeAudio = removeAudio; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java index 03902a400d..a9ae8307b2 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/TransformerVideoRenderer.java @@ -39,7 +39,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; private final ImmutableList effects; private final Codec.EncoderFactory encoderFactory; private final Codec.DecoderFactory decoderFactory; - private final Transformer.DebugViewProvider debugViewProvider; + private final DebugViewProvider debugViewProvider; private final DecoderInputBuffer decoderInputBuffer; private @MonotonicNonNull SefSlowMotionFlattener sefSlowMotionFlattener; @@ -55,7 +55,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; Codec.DecoderFactory decoderFactory, Transformer.AsyncErrorListener asyncErrorListener, FallbackListener fallbackListener, - Transformer.DebugViewProvider debugViewProvider) { + DebugViewProvider debugViewProvider) { super( C.TRACK_TYPE_VIDEO, muxerWrapper, 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 44301842fb..2bd3311656 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoTranscodingSamplePipeline.java @@ -60,7 +60,7 @@ import org.checkerframework.dataflow.qual.Pure; List allowedOutputMimeTypes, FallbackListener fallbackListener, Transformer.AsyncErrorListener asyncErrorListener, - Transformer.DebugViewProvider debugViewProvider) + DebugViewProvider debugViewProvider) throws TransformationException { decoderInputBuffer = new DecoderInputBuffer(DecoderInputBuffer.BUFFER_REPLACEMENT_MODE_DISABLED);