diff --git a/library/common/src/main/java/com/google/android/exoplayer2/util/FrameProcessor.java b/library/common/src/main/java/com/google/android/exoplayer2/util/FrameProcessor.java index 7cf05d11fa..133b5de38e 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/util/FrameProcessor.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/util/FrameProcessor.java @@ -20,7 +20,6 @@ import android.graphics.Bitmap; import android.opengl.EGLExt; import android.view.Surface; import androidx.annotation.Nullable; -import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.video.ColorInfo; import java.util.List; import java.util.concurrent.Executor; @@ -51,8 +50,10 @@ 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 isInputTextureExternal Whether the input frames are produced externally (e.g. from a + * video) or not (e.g. from a {@link Bitmap}). See the + * SurfaceTexture docs for more information on external textures. * @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 @@ -70,7 +71,7 @@ public interface FrameProcessor { DebugViewProvider debugViewProvider, ColorInfo inputColorInfo, ColorInfo outputColorInfo, - @C.TrackType int inputTrackType, + boolean isInputTextureExternal, boolean releaseFramesAutomatically, Executor executor, Listener listener) @@ -127,8 +128,8 @@ public interface FrameProcessor { /** * Provides an input {@link Bitmap} to the {@link FrameProcessor}. * - *
This method should only be used for when the {@link FrameProcessor} was created with {@link - * C#TRACK_TYPE_IMAGE} as the {@code inputTrackType}. + *
This method should only be used for when the {@link FrameProcessor}'s {@code + * isInputTextureExternal} parameter is set to {@code false}. * *
Can be called on any thread. * @@ -143,8 +144,8 @@ public interface FrameProcessor { /** * Returns the input {@link Surface}, where {@link FrameProcessor} consumes input frames from. * - *
This method should only be used for when the {@link FrameProcessor} was created with {@link - * C#TRACK_TYPE_VIDEO} as the {@code inputTrackType}. + *
This method should only be used for when the {@link FrameProcessor}'s {@code + * isInputTextureExternal} parameter is set to {@code true}. * *
Can be called on any thread. */ @@ -172,8 +173,8 @@ public interface FrameProcessor { * *
Must be called before rendering a frame to the frame processor's input surface. * - *
This method should only be used for when the {@link FrameProcessor} was created with {@link - * C#TRACK_TYPE_VIDEO} as the {@code inputTrackType}. + *
This method should only be used for when the {@link FrameProcessor}'s {@code + * isInputTextureExternal} parameter is set to {@code true}. * *
Can be called on any thread. * @@ -186,8 +187,8 @@ public interface FrameProcessor { * Returns the number of input frames that have been {@linkplain #registerInputFrame() registered} * but not processed off the {@linkplain #getInputSurface() input surface} yet. * - *
This method should only be used for when the {@link FrameProcessor} was created with {@link - * C#TRACK_TYPE_VIDEO} as the {@code inputTrackType}. + *
This method should only be used for when the {@link FrameProcessor}'s {@code + * isInputTextureExternal} parameter is set to {@code true}. * *
Can be called on any thread. */ @@ -246,8 +247,8 @@ public interface FrameProcessor { *
All the frames that are {@linkplain #registerInputFrame() registered} prior to calling this * method are no longer considered to be registered when this method returns. * - *
This method should only be used for when the {@link FrameProcessor} was created with {@link - * C#TRACK_TYPE_VIDEO} as the {@code inputTrackType}. + *
This method should only be used for when the {@link FrameProcessor}'s {@code + * isInputTextureExternal} parameter is set to {@code true}. * *
{@link Listener} methods invoked prior to calling this method should be ignored.
*/
diff --git a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
index 6c2ea05c57..468278e4ea 100644
--- a/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
+++ b/library/core/src/main/java/com/google/android/exoplayer2/video/MediaCodecVideoRenderer.java
@@ -1988,7 +1988,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
DebugViewProvider.NONE,
inputColorInfo,
outputColorInfo,
- C.TRACK_TYPE_VIDEO,
+ /* isInputTextureExternal= */ true,
/* releaseFramesAutomatically= */ false,
/* executor= */ handler::post,
new FrameProcessor.Listener() {
diff --git a/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorFrameReleaseTest.java b/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorFrameReleaseTest.java
index 1f6bcdbb8a..4001ec68a7 100644
--- a/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorFrameReleaseTest.java
+++ b/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorFrameReleaseTest.java
@@ -25,7 +25,6 @@ import android.media.Image;
import android.media.ImageReader;
import androidx.annotation.Nullable;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.util.DebugViewProvider;
import com.google.android.exoplayer2.util.FrameInfo;
import com.google.android.exoplayer2.util.FrameProcessingException;
@@ -296,7 +295,7 @@ public final class GlEffectsFrameProcessorFrameReleaseTest {
DebugViewProvider.NONE,
/* inputColorInfo= */ ColorInfo.SDR_BT709_LIMITED,
/* outputColorInfo= */ ColorInfo.SDR_BT709_LIMITED,
- C.TRACK_TYPE_VIDEO,
+ /* isInputTextureExternal= */ true,
releaseFramesAutomatically,
MoreExecutors.directExecutor(),
new FrameProcessor.Listener() {
diff --git a/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorPixelTest.java b/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorPixelTest.java
index 59c951a265..c26c0b1ac4 100644
--- a/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorPixelTest.java
+++ b/library/effect/src/androidTest/java/com/google/android/exoplayer2/effect/GlEffectsFrameProcessorPixelTest.java
@@ -15,7 +15,6 @@
*/
package com.google.android.exoplayer2.effect;
-import static com.google.android.exoplayer2.C.TRACK_TYPE_IMAGE;
import static com.google.android.exoplayer2.effect.OverlayShaderProgramPixelTest.OVERLAY_PNG_ASSET_PATH;
import static com.google.android.exoplayer2.testutil.BitmapPixelTestUtil.MAXIMUM_AVERAGE_PIXEL_ABSOLUTE_DIFFERENCE;
import static com.google.android.exoplayer2.testutil.BitmapPixelTestUtil.getBitmapAveragePixelAbsoluteDifferenceArgb8888;
@@ -107,9 +106,7 @@ public final class GlEffectsFrameProcessorPixelTest {
public void noEffects_withImageInput_matchesGoldenFile() throws Exception {
String testId = "noEffects_withImageInput_matchesGoldenFile";
frameProcessorTestRunner =
- getDefaultFrameProcessorTestRunnerBuilder(testId)
- .setInputTrackType(TRACK_TYPE_IMAGE)
- .build();
+ getDefaultFrameProcessorTestRunnerBuilder(testId).setIsInputTextureExternal(false).build();
Bitmap expectedBitmap = readBitmap(ORIGINAL_PNG_ASSET_PATH);
Bitmap actualBitmap = frameProcessorTestRunner.processImageFrameAndEnd(expectedBitmap);
@@ -125,7 +122,7 @@ public final class GlEffectsFrameProcessorPixelTest {
String testId = "wrappedCrop_withImageInput_matchesGoldenFile";
frameProcessorTestRunner =
getDefaultFrameProcessorTestRunnerBuilder(testId)
- .setInputTrackType(TRACK_TYPE_IMAGE)
+ .setIsInputTextureExternal(false)
.setEffects(
new GlEffectWrapper(
new Crop(
diff --git a/library/effect/src/main/java/com/google/android/exoplayer2/effect/FinalMatrixShaderProgramWrapper.java b/library/effect/src/main/java/com/google/android/exoplayer2/effect/FinalMatrixShaderProgramWrapper.java
index 807f5082d7..e2e9239779 100644
--- a/library/effect/src/main/java/com/google/android/exoplayer2/effect/FinalMatrixShaderProgramWrapper.java
+++ b/library/effect/src/main/java/com/google/android/exoplayer2/effect/FinalMatrixShaderProgramWrapper.java
@@ -72,7 +72,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private final EGLContext eglContext;
private final DebugViewProvider debugViewProvider;
private final boolean sampleFromInputTexture;
- private final boolean isInputExternal;
+ private final boolean isInputTextureExternal;
private final ColorInfo inputColorInfo;
private final ColorInfo outputColorInfo;
private final boolean releaseFramesAutomatically;
@@ -110,7 +110,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
ColorInfo inputColorInfo,
ColorInfo outputColorInfo,
boolean sampleFromInputTexture,
- boolean isInputExternal,
+ boolean isInputTextureExternal,
boolean releaseFramesAutomatically,
Executor frameProcessorListenerExecutor,
FrameProcessor.Listener frameProcessorListener) {
@@ -121,7 +121,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
this.eglContext = eglContext;
this.debugViewProvider = debugViewProvider;
this.sampleFromInputTexture = sampleFromInputTexture;
- this.isInputExternal = isInputExternal;
+ this.isInputTextureExternal = isInputTextureExternal;
this.inputColorInfo = inputColorInfo;
this.outputColorInfo = outputColorInfo;
this.releaseFramesAutomatically = releaseFramesAutomatically;
@@ -406,7 +406,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
ImmutableList This method should only be used for when the {@link FrameProcessor} was created with {@link
- * C#TRACK_TYPE_VIDEO} as the {@code inputTrackType}.
+ * This method should only be used for when the {@link FrameProcessor}'s {@code
+ * isInputTextureExternal} parameter is set to {@code true}.
*
* @param width The default width for input buffers, in pixels.
* @param height The default height for input buffers, in pixels.
diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java
index 19c4a05324..e871d5350e 100644
--- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java
+++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/VideoSamplePipeline.java
@@ -140,7 +140,7 @@ import org.checkerframework.dataflow.qual.Pure;
debugViewProvider,
frameProcessorInputColor,
frameProcessorOutputColor,
- MimeTypes.getTrackType(firstInputFormat.sampleMimeType),
+ MimeTypes.isVideo(firstInputFormat.sampleMimeType),
/* releaseFramesAutomatically= */ true,
MoreExecutors.directExecutor(),
new FrameProcessor.Listener() {
diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FrameProcessorTestRunner.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FrameProcessorTestRunner.java
index 215f0ae27e..4a45bfae7a 100644
--- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FrameProcessorTestRunner.java
+++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FrameProcessorTestRunner.java
@@ -60,12 +60,12 @@ public final class FrameProcessorTestRunner {
private float pixelWidthHeightRatio;
private @MonotonicNonNull ColorInfo inputColorInfo;
private @MonotonicNonNull ColorInfo outputColorInfo;
- private @C.TrackType int inputTrackType;
+ private boolean isInputTextureExternal;
/** Creates a new instance with default values. */
public Builder() {
pixelWidthHeightRatio = DEFAULT_PIXEL_WIDTH_HEIGHT_RATIO;
- inputTrackType = C.TRACK_TYPE_VIDEO;
+ isInputTextureExternal = true;
}
/**
@@ -171,11 +171,11 @@ public final class FrameProcessorTestRunner {
/**
* Sets the input track type. See {@link FrameProcessor.Factory#create}.
*
- * The default value is {@link C#TRACK_TYPE_VIDEO}.
+ * The default value is {@code true}.
*/
@CanIgnoreReturnValue
- public Builder setInputTrackType(@C.TrackType int inputTrackType) {
- this.inputTrackType = inputTrackType;
+ public Builder setIsInputTextureExternal(boolean isInputTextureExternal) {
+ this.isInputTextureExternal = isInputTextureExternal;
return this;
}
@@ -193,7 +193,7 @@ public final class FrameProcessorTestRunner {
pixelWidthHeightRatio,
inputColorInfo == null ? ColorInfo.SDR_BT709_LIMITED : inputColorInfo,
outputColorInfo == null ? ColorInfo.SDR_BT709_LIMITED : outputColorInfo,
- inputTrackType);
+ isInputTextureExternal);
}
}
@@ -223,7 +223,7 @@ public final class FrameProcessorTestRunner {
float pixelWidthHeightRatio,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo,
- @C.TrackType int inputTrackType)
+ boolean isInputTextureExternal)
throws FrameProcessingException {
this.testId = testId;
this.videoAssetPath = videoAssetPath;
@@ -238,7 +238,7 @@ public final class FrameProcessorTestRunner {
DebugViewProvider.NONE,
inputColorInfo,
outputColorInfo,
- inputTrackType,
+ isInputTextureExternal,
/* releaseFramesAutomatically= */ true,
MoreExecutors.directExecutor(),
new FrameProcessor.Listener() {