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
@Override
public void onRendererEnabled(boolean releaseFirstFrameBeforeStarted) {
videoFrameReleaseControl.onEnabled(releaseFirstFrameBeforeStarted);
public void onRendererEnabled(boolean mayRenderStartOfStream) {
videoFrameReleaseControl.onEnabled(mayRenderStartOfStream);
}
@Override
@ -694,6 +694,11 @@ public final class CompositingVideoSinkProvider implements VideoSinkProvider, Vi
CompositingVideoSinkProvider.this.clearOutputSurfaceInfo();
}
@Override
public void enableMayRenderStartOfStream() {
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted();
}
@Override
public long registerInputFrame(long framePresentationTimeUs, boolean isLastFrame) {
checkState(isInitialized());

View File

@ -704,8 +704,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
@Override
public void enableMayRenderStartOfStream() {
if (videoSink != null) {
videoSink.enableMayRenderStartOfStream();
} else {
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted();
}
}
@Override
protected void onPositionReset(long positionUs, boolean joining) throws ExoPlaybackException {

View File

@ -107,7 +107,7 @@ public interface VideoSink {
int INPUT_TYPE_BITMAP = 2;
/** Called when the renderer is enabled. */
void onRendererEnabled(boolean releaseFirstFrameBeforeStarted);
void onRendererEnabled(boolean mayRenderStartOfStream);
/** Called when the renderer is disabled. */
void onRendererDisabled();
@ -199,6 +199,15 @@ public interface VideoSink {
/** Clears the set output surface info. */
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.
*