Allow sink provider speed to be set at any time

VideoSink.initialize will be added in a next CL and we want to allow
setPlaybackSpeed to be called at any time.

PiperOrigin-RevId: 624942845
This commit is contained in:
kimvde 2024-04-15 06:44:44 -07:00 committed by Copybara-Service
parent 42335893da
commit 0a741cad36

View File

@ -212,14 +212,16 @@ public final class CompositingVideoSinkProvider
@Nullable private Pair<Surface, Size> currentSurfaceAndSize;
private int pendingFlushCount;
private @State int state;
private float playbackSpeed;
private CompositingVideoSinkProvider(Builder builder) {
this.context = builder.context;
context = builder.context;
videoEffects = ImmutableList.of();
previewingVideoGraphFactory = checkStateNotNull(builder.previewingVideoGraphFactory);
listeners = new CopyOnWriteArraySet<>();
clock = Clock.DEFAULT;
state = STATE_CREATED;
playbackSpeed = 1f;
}
/**
@ -248,6 +250,7 @@ public final class CompositingVideoSinkProvider
this.videoFrameReleaseControl = videoFrameReleaseControl;
videoFrameRenderControl =
new VideoFrameRenderControl(/* frameRenderer= */ this, videoFrameReleaseControl);
videoFrameRenderControl.setPlaybackSpeed(playbackSpeed);
}
@Override
@ -524,7 +527,10 @@ public final class CompositingVideoSinkProvider
}
private void setPlaybackSpeed(float speed) {
checkStateNotNull(videoFrameRenderControl).setPlaybackSpeed(speed);
this.playbackSpeed = speed;
if (videoFrameRenderControl != null) {
videoFrameRenderControl.setPlaybackSpeed(speed);
}
}
private void onStreamOffsetChange(long bufferPresentationTimeUs, long streamOffsetUs) {