Add a method to change the frame rate strategy from the VideoSink
PiperOrigin-RevId: 644373231
This commit is contained in:
parent
1d8b2e3f43
commit
ada7271974
@ -697,6 +697,12 @@ public final class CompositingVideoSinkProvider implements VideoSinkProvider, Vi
|
||||
CompositingVideoSinkProvider.this.clearOutputSurfaceInfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChangeFrameRateStrategy(
|
||||
@C.VideoChangeFrameRateStrategy int changeFrameRateStrategy) {
|
||||
videoFrameReleaseControl.setChangeFrameRateStrategy(changeFrameRateStrategy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enableMayRenderStartOfStream() {
|
||||
videoFrameReleaseControl.allowReleaseFirstFrameBeforeStarted();
|
||||
|
@ -161,6 +161,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
||||
private Size outputResolution;
|
||||
private boolean haveReportedFirstFrameRenderedForCurrentSurface;
|
||||
private @C.VideoScalingMode int scalingMode;
|
||||
private @C.VideoChangeFrameRateStrategy int changeFrameRateStrategy;
|
||||
private long droppedFrameAccumulationStartTimeMs;
|
||||
private int droppedFrames;
|
||||
private int consecutiveDroppedFrameCount;
|
||||
@ -408,6 +409,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
||||
deviceNeedsNoPostProcessWorkaround = deviceNeedsNoPostProcessWorkaround();
|
||||
outputResolution = Size.UNKNOWN;
|
||||
scalingMode = C.VIDEO_SCALING_MODE_DEFAULT;
|
||||
changeFrameRateStrategy = C.VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS;
|
||||
decodedVideoSize = VideoSize.UNKNOWN;
|
||||
tunnelingAudioSessionId = C.AUDIO_SESSION_ID_UNSET;
|
||||
reportedVideoSize = null;
|
||||
@ -691,6 +693,7 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
||||
if (displaySurface != null && !outputResolution.equals(Size.UNKNOWN)) {
|
||||
videoSink.setOutputSurfaceInfo(displaySurface, outputResolution);
|
||||
}
|
||||
videoSink.setChangeFrameRateStrategy(changeFrameRateStrategy);
|
||||
videoSink.setPlaybackSpeed(getPlaybackSpeed());
|
||||
if (videoEffects != null) {
|
||||
videoSink.setVideoEffects(videoEffects);
|
||||
@ -833,7 +836,12 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
||||
}
|
||||
break;
|
||||
case MSG_SET_CHANGE_FRAME_RATE_STRATEGY:
|
||||
videoFrameReleaseControl.setChangeFrameRateStrategy((int) checkNotNull(message));
|
||||
changeFrameRateStrategy = (int) checkNotNull(message);
|
||||
if (videoSink != null) {
|
||||
videoSink.setChangeFrameRateStrategy(changeFrameRateStrategy);
|
||||
} else {
|
||||
videoFrameReleaseControl.setChangeFrameRateStrategy(changeFrameRateStrategy);
|
||||
}
|
||||
break;
|
||||
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
frameMetadataListener = (VideoFrameMetadataListener) checkNotNull(message);
|
||||
|
@ -389,8 +389,10 @@ public final class VideoFrameReleaseControl {
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the {@link C.VideoChangeFrameRateStrategy}, used when calling {@link
|
||||
* Changes the {@link C.VideoChangeFrameRateStrategy} used when calling {@link
|
||||
* Surface#setFrameRate}.
|
||||
*
|
||||
* <p>The default value is {@link C#VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS}.
|
||||
*/
|
||||
public void setChangeFrameRateStrategy(
|
||||
@C.VideoChangeFrameRateStrategy int changeFrameRateStrategy) {
|
||||
|
@ -142,8 +142,10 @@ public final class VideoFrameReleaseHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the {@link C.VideoChangeFrameRateStrategy} used when calling {@link
|
||||
* Changes the {@link C.VideoChangeFrameRateStrategy} used when calling {@link
|
||||
* Surface#setFrameRate}.
|
||||
*
|
||||
* <p>The default value is {@link C#VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS}.
|
||||
*/
|
||||
public void setChangeFrameRateStrategy(
|
||||
@C.VideoChangeFrameRateStrategy int changeFrameRateStrategy) {
|
||||
|
@ -201,6 +201,14 @@ public interface VideoSink {
|
||||
/** Clears the set output surface info. */
|
||||
void clearOutputSurfaceInfo();
|
||||
|
||||
/**
|
||||
* Changes the {@link C.VideoChangeFrameRateStrategy} used when calling {@link
|
||||
* Surface#setFrameRate}.
|
||||
*
|
||||
* <p>The default value is {@link C#VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS}.
|
||||
*/
|
||||
void setChangeFrameRateStrategy(@C.VideoChangeFrameRateStrategy int changeFrameRateStrategy);
|
||||
|
||||
/**
|
||||
* Enables this video sink to render the start of the stream even if the renderer is not
|
||||
* {@linkplain #onRendererStarted() started} yet.
|
||||
|
Loading…
x
Reference in New Issue
Block a user