Effect: Remove inputColorInfo from create() methods.

Transformer export and ExoPlayer previewing both read inputColorInfo from
registerInputStream now, instead of maintaining a consistent input color
throughout multiple streams in a sequence.

Therefore, we can remove inputColor-related arguments and methods now.

PiperOrigin-RevId: 603423509
This commit is contained in:
huangdarwin 2024-02-01 11:06:38 -08:00 committed by Copybara-Service
parent dd7846ee1c
commit a27511cc50
13 changed files with 3 additions and 73 deletions

View File

@ -31,7 +31,6 @@ public interface PreviewingVideoGraph extends VideoGraph {
* Creates a new {@link PreviewingVideoGraph} instance. * Creates a new {@link PreviewingVideoGraph} instance.
* *
* @param context A {@link Context}. * @param context A {@link Context}.
* @param inputColorInfo The {@link ColorInfo} for the input frames.
* @param outputColorInfo The {@link ColorInfo} for the output frames. * @param outputColorInfo The {@link ColorInfo} for the output frames.
* @param debugViewProvider A {@link DebugViewProvider}. * @param debugViewProvider A {@link DebugViewProvider}.
* @param listener A {@link Listener}. * @param listener A {@link Listener}.
@ -44,7 +43,6 @@ public interface PreviewingVideoGraph extends VideoGraph {
*/ */
PreviewingVideoGraph create( PreviewingVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,

View File

@ -67,7 +67,6 @@ public abstract class MultipleInputVideoGraph implements VideoGraph {
private final Context context; private final Context context;
private final ColorInfo inputColorInfo;
private final ColorInfo outputColorInfo; private final ColorInfo outputColorInfo;
private final GlObjectsProvider glObjectsProvider; private final GlObjectsProvider glObjectsProvider;
private final DebugViewProvider debugViewProvider; private final DebugViewProvider debugViewProvider;
@ -98,16 +97,14 @@ public abstract class MultipleInputVideoGraph implements VideoGraph {
protected MultipleInputVideoGraph( protected MultipleInputVideoGraph(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
VideoGraph.Listener listener, Listener listener,
Executor listenerExecutor, Executor listenerExecutor,
VideoCompositorSettings videoCompositorSettings, VideoCompositorSettings videoCompositorSettings,
List<Effect> compositionEffects, List<Effect> compositionEffects,
long initialTimestampOffsetUs) { long initialTimestampOffsetUs) {
this.context = context; this.context = context;
this.inputColorInfo = inputColorInfo;
this.outputColorInfo = outputColorInfo; this.outputColorInfo = outputColorInfo;
this.debugViewProvider = debugViewProvider; this.debugViewProvider = debugViewProvider;
this.listener = listener; this.listener = listener;
@ -311,10 +308,6 @@ public abstract class MultipleInputVideoGraph implements VideoGraph {
released = true; released = true;
} }
protected ColorInfo getInputColorInfo() {
return inputColorInfo;
}
protected long getInitialTimestampOffsetUs() { protected long getInitialTimestampOffsetUs() {
return initialTimestampOffsetUs; return initialTimestampOffsetUs;
} }

View File

@ -59,7 +59,6 @@ public final class PreviewingSingleInputVideoGraph extends SingleInputVideoGraph
@Override @Override
public PreviewingVideoGraph create( public PreviewingVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,
@ -76,7 +75,6 @@ public final class PreviewingSingleInputVideoGraph extends SingleInputVideoGraph
return new PreviewingSingleInputVideoGraph( return new PreviewingSingleInputVideoGraph(
context, context,
videoFrameProcessorFactory, videoFrameProcessorFactory,
inputColorInfo,
outputColorInfo, outputColorInfo,
debugViewProvider, debugViewProvider,
listener, listener,
@ -89,7 +87,6 @@ public final class PreviewingSingleInputVideoGraph extends SingleInputVideoGraph
private PreviewingSingleInputVideoGraph( private PreviewingSingleInputVideoGraph(
Context context, Context context,
VideoFrameProcessor.Factory videoFrameProcessorFactory, VideoFrameProcessor.Factory videoFrameProcessorFactory,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,
@ -99,7 +96,6 @@ public final class PreviewingSingleInputVideoGraph extends SingleInputVideoGraph
super( super(
context, context,
videoFrameProcessorFactory, videoFrameProcessorFactory,
inputColorInfo,
outputColorInfo, outputColorInfo,
listener, listener,
debugViewProvider, debugViewProvider,

View File

@ -43,7 +43,6 @@ public abstract class SingleInputVideoGraph implements VideoGraph {
private final Context context; private final Context context;
private final VideoFrameProcessor.Factory videoFrameProcessorFactory; private final VideoFrameProcessor.Factory videoFrameProcessorFactory;
private final ColorInfo inputColorInfo;
private final ColorInfo outputColorInfo; private final ColorInfo outputColorInfo;
private final Listener listener; private final Listener listener;
private final DebugViewProvider debugViewProvider; private final DebugViewProvider debugViewProvider;
@ -63,11 +62,9 @@ public abstract class SingleInputVideoGraph implements VideoGraph {
* *
* <p>{@code videoCompositorSettings} must be {@link VideoCompositorSettings#DEFAULT}. * <p>{@code videoCompositorSettings} must be {@link VideoCompositorSettings#DEFAULT}.
*/ */
// TODO: b/307952514 - Remove inputColorInfo reference in VideoGraph constructor.
public SingleInputVideoGraph( public SingleInputVideoGraph(
Context context, Context context,
VideoFrameProcessor.Factory videoFrameProcessorFactory, VideoFrameProcessor.Factory videoFrameProcessorFactory,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
Listener listener, Listener listener,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
@ -82,7 +79,6 @@ public abstract class SingleInputVideoGraph implements VideoGraph {
+ " VideoCompositorSettings"); + " VideoCompositorSettings");
this.context = context; this.context = context;
this.videoFrameProcessorFactory = videoFrameProcessorFactory; this.videoFrameProcessorFactory = videoFrameProcessorFactory;
this.inputColorInfo = inputColorInfo;
this.outputColorInfo = outputColorInfo; this.outputColorInfo = outputColorInfo;
this.listener = listener; this.listener = listener;
this.debugViewProvider = debugViewProvider; this.debugViewProvider = debugViewProvider;
@ -197,10 +193,6 @@ public abstract class SingleInputVideoGraph implements VideoGraph {
released = true; released = true;
} }
protected ColorInfo getInputColorInfo() {
return inputColorInfo;
}
protected long getInitialTimestampOffsetUs() { protected long getInitialTimestampOffsetUs() {
return initialTimestampOffsetUs; return initialTimestampOffsetUs;
} }

View File

@ -203,7 +203,6 @@ public final class CompositingVideoSinkProvider
videoGraph = videoGraph =
previewingVideoGraphFactory.create( previewingVideoGraphFactory.create(
context, context,
inputColorInfo,
outputColorInfo, outputColorInfo,
DebugViewProvider.NONE, DebugViewProvider.NONE,
/* listener= */ thisRef, /* listener= */ thisRef,
@ -785,7 +784,6 @@ public final class CompositingVideoSinkProvider
@Override @Override
public PreviewingVideoGraph create( public PreviewingVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
VideoGraph.Listener listener, VideoGraph.Listener listener,
@ -803,7 +801,6 @@ public final class CompositingVideoSinkProvider
.newInstance(videoFrameProcessorFactory); .newInstance(videoFrameProcessorFactory);
return factory.create( return factory.create(
context, context,
inputColorInfo,
outputColorInfo, outputColorInfo,
debugViewProvider, debugViewProvider,
listener, listener,

View File

@ -182,7 +182,6 @@ public final class CompositingVideoSinkProviderTest {
@Override @Override
public PreviewingVideoGraph create( public PreviewingVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
VideoGraph.Listener listener, VideoGraph.Listener listener,

View File

@ -21,7 +21,6 @@ import android.graphics.Bitmap;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.media3.common.ColorInfo;
import androidx.media3.common.OnInputFrameProcessedListener; import androidx.media3.common.OnInputFrameProcessedListener;
import androidx.media3.common.util.TimestampIterator; import androidx.media3.common.util.TimestampIterator;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
@ -156,15 +155,6 @@ public interface SampleConsumer {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
/**
* Returns the expected input {@link ColorInfo}.
*
* <p>Should only be used for raw video data.
*/
default ColorInfo getExpectedInputColorInfo() {
throw new UnsupportedOperationException();
}
/** /**
* Returns the number of input video frames pending in the consumer. Pending input frames are * Returns the number of input video frames pending in the consumer. Pending input frames are
* frames that have been {@linkplain #registerVideoFrame(long) registered} but not processed off * frames that have been {@linkplain #registerVideoFrame(long) registered} but not processed off

View File

@ -28,7 +28,6 @@ import android.os.Looper;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.media3.common.C; import androidx.media3.common.C;
import androidx.media3.common.ColorInfo;
import androidx.media3.common.Format; import androidx.media3.common.Format;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;
import androidx.media3.common.MimeTypes; import androidx.media3.common.MimeTypes;
@ -454,11 +453,6 @@ import java.util.concurrent.atomic.AtomicInteger;
return sampleConsumer.getInputSurface(); return sampleConsumer.getInputSurface();
} }
@Override
public ColorInfo getExpectedInputColorInfo() {
return sampleConsumer.getExpectedInputColorInfo();
}
@Override @Override
public int getPendingVideoFrameCount() { public int getPendingVideoFrameCount() {
return sampleConsumer.getPendingVideoFrameCount(); return sampleConsumer.getPendingVideoFrameCount();

View File

@ -39,7 +39,6 @@ import java.util.concurrent.Executor;
@Override @Override
public TransformerMultipleInputVideoGraph create( public TransformerMultipleInputVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
VideoGraph.Listener listener, VideoGraph.Listener listener,
@ -49,7 +48,6 @@ import java.util.concurrent.Executor;
long initialTimestampOffsetUs) { long initialTimestampOffsetUs) {
return new TransformerMultipleInputVideoGraph( return new TransformerMultipleInputVideoGraph(
context, context,
inputColorInfo,
outputColorInfo, outputColorInfo,
debugViewProvider, debugViewProvider,
listener, listener,
@ -62,7 +60,6 @@ import java.util.concurrent.Executor;
private TransformerMultipleInputVideoGraph( private TransformerMultipleInputVideoGraph(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,
@ -72,7 +69,6 @@ import java.util.concurrent.Executor;
long initialTimestampOffsetUs) { long initialTimestampOffsetUs) {
super( super(
context, context,
inputColorInfo,
outputColorInfo, outputColorInfo,
debugViewProvider, debugViewProvider,
listener, listener,
@ -86,9 +82,6 @@ import java.util.concurrent.Executor;
public GraphInput createInput() throws VideoFrameProcessingException { public GraphInput createInput() throws VideoFrameProcessingException {
int inputId = registerInput(); int inputId = registerInput();
return new VideoFrameProcessingWrapper( return new VideoFrameProcessingWrapper(
getProcessor(inputId), getProcessor(inputId), /* presentation= */ null, getInitialTimestampOffsetUs());
getInputColorInfo(),
/* presentation= */ null,
getInitialTimestampOffsetUs());
} }
} }

View File

@ -51,7 +51,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
public TransformerSingleInputVideoGraph create( public TransformerSingleInputVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,
@ -69,7 +68,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
return new TransformerSingleInputVideoGraph( return new TransformerSingleInputVideoGraph(
context, context,
videoFrameProcessorFactory, videoFrameProcessorFactory,
inputColorInfo,
outputColorInfo, outputColorInfo,
listener, listener,
debugViewProvider, debugViewProvider,
@ -86,7 +84,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private TransformerSingleInputVideoGraph( private TransformerSingleInputVideoGraph(
Context context, Context context,
VideoFrameProcessor.Factory videoFrameProcessorFactory, VideoFrameProcessor.Factory videoFrameProcessorFactory,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
Listener listener, Listener listener,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
@ -98,7 +95,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
super( super(
context, context,
videoFrameProcessorFactory, videoFrameProcessorFactory,
inputColorInfo,
outputColorInfo, outputColorInfo,
listener, listener,
debugViewProvider, debugViewProvider,
@ -115,10 +111,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
int inputId = registerInput(); int inputId = registerInput();
videoFrameProcessingWrapper = videoFrameProcessingWrapper =
new VideoFrameProcessingWrapper( new VideoFrameProcessingWrapper(
getProcessor(inputId), getProcessor(inputId), getPresentation(), getInitialTimestampOffsetUs());
getInputColorInfo(),
getPresentation(),
getInitialTimestampOffsetUs());
return videoFrameProcessingWrapper; return videoFrameProcessingWrapper;
} }
} }

View File

@ -36,7 +36,6 @@ import java.util.concurrent.Executor;
* Creates a new {@link TransformerVideoGraph} instance. * Creates a new {@link TransformerVideoGraph} instance.
* *
* @param context A {@link Context}. * @param context A {@link Context}.
* @param inputColorInfo The {@link ColorInfo} for the input frames.
* @param outputColorInfo The {@link ColorInfo} for the output frames. * @param outputColorInfo The {@link ColorInfo} for the output frames.
* @param debugViewProvider A {@link DebugViewProvider}. * @param debugViewProvider A {@link DebugViewProvider}.
* @param listener A {@link Listener}. * @param listener A {@link Listener}.
@ -51,7 +50,6 @@ import java.util.concurrent.Executor;
*/ */
TransformerVideoGraph create( TransformerVideoGraph create(
Context context, Context context,
ColorInfo inputColorInfo,
ColorInfo outputColorInfo, ColorInfo outputColorInfo,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
Listener listener, Listener listener,

View File

@ -24,7 +24,6 @@ import static androidx.media3.common.util.Assertions.checkNotNull;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.view.Surface; import android.view.Surface;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.media3.common.ColorInfo;
import androidx.media3.common.Effect; import androidx.media3.common.Effect;
import androidx.media3.common.Format; import androidx.media3.common.Format;
import androidx.media3.common.FrameInfo; import androidx.media3.common.FrameInfo;
@ -42,19 +41,15 @@ import java.util.concurrent.atomic.AtomicLong;
/* package */ final class VideoFrameProcessingWrapper implements GraphInput { /* package */ final class VideoFrameProcessingWrapper implements GraphInput {
private final VideoFrameProcessor videoFrameProcessor; private final VideoFrameProcessor videoFrameProcessor;
private final AtomicLong mediaItemOffsetUs; private final AtomicLong mediaItemOffsetUs;
private final ColorInfo inputColorInfo;
private final long initialTimestampOffsetUs; private final long initialTimestampOffsetUs;
@Nullable final Presentation presentation; @Nullable final Presentation presentation;
public VideoFrameProcessingWrapper( public VideoFrameProcessingWrapper(
VideoFrameProcessor videoFrameProcessor, VideoFrameProcessor videoFrameProcessor,
ColorInfo inputColorInfo,
@Nullable Presentation presentation, @Nullable Presentation presentation,
long initialTimestampOffsetUs) { long initialTimestampOffsetUs) {
this.videoFrameProcessor = videoFrameProcessor; this.videoFrameProcessor = videoFrameProcessor;
this.mediaItemOffsetUs = new AtomicLong(); this.mediaItemOffsetUs = new AtomicLong();
// TODO: b/307952514 - Remove inputColorInfo reference.
this.inputColorInfo = inputColorInfo;
this.initialTimestampOffsetUs = initialTimestampOffsetUs; this.initialTimestampOffsetUs = initialTimestampOffsetUs;
this.presentation = presentation; this.presentation = presentation;
} }
@ -106,11 +101,6 @@ import java.util.concurrent.atomic.AtomicLong;
return videoFrameProcessor.getInputSurface(); return videoFrameProcessor.getInputSurface();
} }
@Override
public ColorInfo getExpectedInputColorInfo() {
return inputColorInfo;
}
@Override @Override
public int getPendingVideoFrameCount() { public int getPendingVideoFrameCount() {
return videoFrameProcessor.getPendingInputFrameCount(); return videoFrameProcessor.getPendingInputFrameCount();

View File

@ -156,7 +156,6 @@ import org.checkerframework.dataflow.qual.Pure;
hasMultipleInputs hasMultipleInputs
? new TransformerMultipleInputVideoGraph.Factory() ? new TransformerMultipleInputVideoGraph.Factory()
: new TransformerSingleInputVideoGraph.Factory(videoFrameProcessorFactory), : new TransformerSingleInputVideoGraph.Factory(videoFrameProcessorFactory),
videoGraphInputColor,
videoGraphOutputColor, videoGraphOutputColor,
errorConsumer, errorConsumer,
debugViewProvider, debugViewProvider,
@ -484,7 +483,6 @@ import org.checkerframework.dataflow.qual.Pure;
public VideoGraphWrapper( public VideoGraphWrapper(
Context context, Context context,
TransformerVideoGraph.Factory videoGraphFactory, TransformerVideoGraph.Factory videoGraphFactory,
ColorInfo videoFrameProcessorInputColor,
ColorInfo videoFrameProcessorOutputColor, ColorInfo videoFrameProcessorOutputColor,
Consumer<ExportException> errorConsumer, Consumer<ExportException> errorConsumer,
DebugViewProvider debugViewProvider, DebugViewProvider debugViewProvider,
@ -500,7 +498,6 @@ import org.checkerframework.dataflow.qual.Pure;
videoGraph = videoGraph =
videoGraphFactory.create( videoGraphFactory.create(
context, context,
videoFrameProcessorInputColor,
videoFrameProcessorOutputColor, videoFrameProcessorOutputColor,
debugViewProvider, debugViewProvider,
/* listener= */ thisRef, /* listener= */ thisRef,