mirror of
https://github.com/samsonjs/media.git
synced 2026-03-30 10:15:48 +00:00
Set VideoFrameMetadataListener on VideoSink
PiperOrigin-RevId: 627652670
This commit is contained in:
parent
3322092070
commit
579386ff27
4 changed files with 20 additions and 9 deletions
|
|
@ -306,11 +306,6 @@ public final class CompositingVideoSinkProvider
|
|||
currentSurfaceAndSize = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideoFrameMetadataListener(VideoFrameMetadataListener videoFrameMetadataListener) {
|
||||
this.videoFrameMetadataListener = videoFrameMetadataListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
if (state == STATE_RELEASED) {
|
||||
|
|
@ -516,6 +511,11 @@ public final class CompositingVideoSinkProvider
|
|||
checkStateNotNull(videoFrameRenderControl).flush();
|
||||
}
|
||||
|
||||
private void setVideoFrameMetadataListener(
|
||||
VideoFrameMetadataListener videoFrameMetadataListener) {
|
||||
this.videoFrameMetadataListener = videoFrameMetadataListener;
|
||||
}
|
||||
|
||||
private void setPlaybackSpeed(float speed) {
|
||||
this.playbackSpeed = speed;
|
||||
if (videoFrameRenderControl != null) {
|
||||
|
|
@ -758,6 +758,12 @@ public final class CompositingVideoSinkProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideoFrameMetadataListener(
|
||||
VideoFrameMetadataListener videoFrameMetadataListener) {
|
||||
CompositingVideoSinkProvider.this.setVideoFrameMetadataListener(videoFrameMetadataListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPlaybackSpeed(@FloatRange(from = 0, fromInclusive = false) float speed) {
|
||||
CompositingVideoSinkProvider.this.setPlaybackSpeed(speed);
|
||||
|
|
|
|||
|
|
@ -756,7 +756,9 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
|||
break;
|
||||
case MSG_SET_VIDEO_FRAME_METADATA_LISTENER:
|
||||
frameMetadataListener = (VideoFrameMetadataListener) checkNotNull(message);
|
||||
videoSinkProvider.setVideoFrameMetadataListener(frameMetadataListener);
|
||||
if (videoSink != null) {
|
||||
videoSink.setVideoFrameMetadataListener(frameMetadataListener);
|
||||
}
|
||||
break;
|
||||
case MSG_SET_AUDIO_SESSION_ID:
|
||||
int tunnelingAudioSessionId = (int) checkNotNull(message);
|
||||
|
|
@ -1112,6 +1114,9 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer
|
|||
// Pass a direct executor since the callback handling involves posting on the app looper
|
||||
// again, so there's no need to do two hops.
|
||||
directExecutor());
|
||||
if (frameMetadataListener != null) {
|
||||
videoSink.setVideoFrameMetadataListener(frameMetadataListener);
|
||||
}
|
||||
if (enableEffectsForOwnSinkProvider) {
|
||||
if (displaySurface != null && outputResolution != null) {
|
||||
videoSinkProvider.setOutputSurfaceInfo(displaySurface, outputResolution);
|
||||
|
|
|
|||
|
|
@ -150,6 +150,9 @@ public interface VideoSink {
|
|||
*/
|
||||
Surface getInputSurface();
|
||||
|
||||
/** Sets the {@link VideoFrameMetadataListener}. */
|
||||
void setVideoFrameMetadataListener(VideoFrameMetadataListener videoFrameMetadataListener);
|
||||
|
||||
/** Sets the playback speed. */
|
||||
void setPlaybackSpeed(@FloatRange(from = 0, fromInclusive = false) float speed);
|
||||
|
||||
|
|
|
|||
|
|
@ -79,9 +79,6 @@ public interface VideoSinkProvider {
|
|||
/** Clears the set output surface info. */
|
||||
void clearOutputSurfaceInfo();
|
||||
|
||||
/** Sets a {@link VideoFrameMetadataListener} which is used in the returned {@link VideoSink}. */
|
||||
void setVideoFrameMetadataListener(VideoFrameMetadataListener videoFrameMetadataListener);
|
||||
|
||||
/** Releases the sink provider. */
|
||||
void release();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue