From f67569d2dddeb1a6d775f22b3248b35740703e0c Mon Sep 17 00:00:00 2001 From: tofunmi Date: Fri, 3 Feb 2023 17:21:18 +0000 Subject: [PATCH] Update `FrameProcessor.create()` to accept an input track type. Based on [this conversation thread](https://chat.google.com/room/AAAA--f88ao/76Rem_cRCK8), I've opted to update the existing FrameProcessor.create() rather than deprecate it, as it is unlikely to be in use by apps outside google3. PiperOrigin-RevId: 506920930 --- .../src/main/java/androidx/media3/common/FrameProcessor.java | 3 +++ .../media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java | 2 ++ .../java/androidx/media3/effect/GlEffectsFrameProcessor.java | 1 + .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 1 + .../androidx/media3/test/utils/FrameProcessorTestRunner.java | 2 ++ .../java/androidx/media3/transformer/VideoSamplePipeline.java | 1 + 6 files changed, 10 insertions(+) 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 178a30c285..a2a73bdef0 100644 --- a/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java +++ b/libraries/common/src/main/java/androidx/media3/common/FrameProcessor.java @@ -50,6 +50,8 @@ public interface FrameProcessor { * @param debugViewProvider A {@link DebugViewProvider}. * @param inputColorInfo The {@link ColorInfo} for input frames. * @param outputColorInfo The {@link ColorInfo} for output frames. + * @param inputTrackType The {@link C.TrackType} of the input. Supported track types are {@link + * C#TRACK_TYPE_VIDEO} and {@link C#TRACK_TYPE_IMAGE}. * @param releaseFramesAutomatically If {@code true}, the {@link FrameProcessor} will render * output frames to the {@linkplain #setOutputSurfaceInfo(SurfaceInfo) output surface} * automatically as {@link FrameProcessor} is done processing them. If {@code false}, the @@ -67,6 +69,7 @@ public interface FrameProcessor { DebugViewProvider debugViewProvider, ColorInfo inputColorInfo, ColorInfo outputColorInfo, + @C.TrackType int inputTrackType, boolean releaseFramesAutomatically, Executor executor, Listener listener) 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 01826012f7..381a759511 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/GlEffectsFrameProcessorFrameReleaseTest.java @@ -24,6 +24,7 @@ import android.graphics.PixelFormat; import android.media.Image; import android.media.ImageReader; import androidx.annotation.Nullable; +import androidx.media3.common.C; import androidx.media3.common.ColorInfo; import androidx.media3.common.DebugViewProvider; import androidx.media3.common.FrameInfo; @@ -295,6 +296,7 @@ public final class GlEffectsFrameProcessorFrameReleaseTest { DebugViewProvider.NONE, /* inputColorInfo= */ ColorInfo.SDR_BT709_LIMITED, /* outputColorInfo= */ ColorInfo.SDR_BT709_LIMITED, + C.TRACK_TYPE_VIDEO, releaseFramesAutomatically, MoreExecutors.directExecutor(), new FrameProcessor.Listener() { 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 f9eeed315b..b0aea12cf6 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/GlEffectsFrameProcessor.java @@ -96,6 +96,7 @@ public final class GlEffectsFrameProcessor implements FrameProcessor { DebugViewProvider debugViewProvider, ColorInfo inputColorInfo, ColorInfo outputColorInfo, + @C.TrackType int inputTrackType, boolean releaseFramesAutomatically, Executor listenerExecutor, Listener listener) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index 42eaeb956a..85def948c5 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -1986,6 +1986,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer { DebugViewProvider.NONE, inputColorInfo, outputColorInfo, + C.TRACK_TYPE_VIDEO, /* releaseFramesAutomatically= */ false, /* executor= */ handler::post, new FrameProcessor.Listener() { diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FrameProcessorTestRunner.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FrameProcessorTestRunner.java index 150878ffca..173bc45d84 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FrameProcessorTestRunner.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FrameProcessorTestRunner.java @@ -28,6 +28,7 @@ import android.media.Image; import android.media.ImageReader; import android.media.MediaFormat; import androidx.annotation.RequiresApi; +import androidx.media3.common.C; import androidx.media3.common.ColorInfo; import androidx.media3.common.DebugViewProvider; import androidx.media3.common.Effect; @@ -225,6 +226,7 @@ public final class FrameProcessorTestRunner { DebugViewProvider.NONE, inputColorInfo, outputColorInfo, + C.TRACK_TYPE_VIDEO, /* releaseFramesAutomatically= */ true, MoreExecutors.directExecutor(), new FrameProcessor.Listener() { diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoSamplePipeline.java b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoSamplePipeline.java index 3a306d4862..cf71c2526f 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/VideoSamplePipeline.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/VideoSamplePipeline.java @@ -154,6 +154,7 @@ import org.checkerframework.dataflow.qual.Pure; debugViewProvider, frameProcessorInputColor, frameProcessorOutputColor, + MimeTypes.getTrackType(firstInputFormat.sampleMimeType), /* releaseFramesAutomatically= */ true, MoreExecutors.directExecutor(), new FrameProcessor.Listener() {