Move usages of allowReleaseFirstFrameBeforeStarted inside sink

PiperOrigin-RevId: 642611061
This commit is contained in:
kimvde 2024-06-12 07:37:05 -07:00 committed by Copybara-Service
parent 0b2bca02ca
commit 6234a8bede
3 changed files with 22 additions and 4 deletions

View File

@ -529,8 +529,8 @@ public final class CompositingVideoSinkProvider implements VideoSinkProvider, Vi
// VideoSink impl // VideoSink impl
@Override @Override
public void onRendererEnabled(boolean releaseFirstFrameBeforeStarted) { public void onRendererEnabled(boolean mayRenderStartOfStream) {
videoFrameReleaseControl.onEnabled(releaseFirstFrameBeforeStarted); videoFrameReleaseControl.onEnabled(mayRenderStartOfStream);
} }
@Override @Override
@ -694,6 +694,11 @@ public final class CompositingVideoSinkProvider implements VideoSinkProvider, Vi
CompositingVideoSinkProvider.this.clearOutputSurfaceInfo(); CompositingVideoSinkProvider.this.clearOutputSurfaceInfo();
} }
@Override
public void enableMayRenderStartOfStream() {
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted();
}
@Override @Override
public long registerInputFrame(long framePresentationTimeUs, boolean isLastFrame) { public long registerInputFrame(long framePresentationTimeUs, boolean isLastFrame) {
checkState(isInitialized()); checkState(isInitialized());

View File

@ -704,7 +704,11 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
@Override @Override
public void enableMayRenderStartOfStream() { public void enableMayRenderStartOfStream() {
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted(); if (videoSink != null) {
videoSink.enableMayRenderStartOfStream();
} else {
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted();
}
} }
@Override @Override

View File

@ -107,7 +107,7 @@ public interface VideoSink {
int INPUT_TYPE_BITMAP = 2; int INPUT_TYPE_BITMAP = 2;
/** Called when the renderer is enabled. */ /** Called when the renderer is enabled. */
void onRendererEnabled(boolean releaseFirstFrameBeforeStarted); void onRendererEnabled(boolean mayRenderStartOfStream);
/** Called when the renderer is disabled. */ /** Called when the renderer is disabled. */
void onRendererDisabled(); void onRendererDisabled();
@ -199,6 +199,15 @@ public interface VideoSink {
/** Clears the set output surface info. */ /** Clears the set output surface info. */
void clearOutputSurfaceInfo(); void clearOutputSurfaceInfo();
/**
* Enables this video sink to render the start of the stream even if the renderer is not
* {@linkplain #onRendererStarted() started} yet.
*
* <p>This is used to update the value of {@code mayRenderStartOfStream} passed to {@link
* #onRendererEnabled(boolean)}.
*/
void enableMayRenderStartOfStream();
/** /**
* Informs the video sink that a new input stream will be queued. * Informs the video sink that a new input stream will be queued.
* *