mirror of
https://github.com/androidx/media.git
synced 2025-05-17 12:39:52 +08:00
Add clear methods for VideoDecoderOutputBufferRenderer
Also add some missing Nullable annotations. PiperOrigin-RevId: 280150512
This commit is contained in:
parent
7ca77c6002
commit
bee6294813
@ -217,7 +217,7 @@ public interface Player {
|
||||
*
|
||||
* @param surface The surface to clear.
|
||||
*/
|
||||
void clearVideoSurface(Surface surface);
|
||||
void clearVideoSurface(@Nullable Surface surface);
|
||||
|
||||
/**
|
||||
* Sets the {@link Surface} onto which video will be rendered. The caller is responsible for
|
||||
@ -240,7 +240,7 @@ public interface Player {
|
||||
*
|
||||
* @param surfaceHolder The surface holder.
|
||||
*/
|
||||
void setVideoSurfaceHolder(SurfaceHolder surfaceHolder);
|
||||
void setVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder);
|
||||
|
||||
/**
|
||||
* Clears the {@link SurfaceHolder} that holds the {@link Surface} onto which video is being
|
||||
@ -248,7 +248,7 @@ public interface Player {
|
||||
*
|
||||
* @param surfaceHolder The surface holder to clear.
|
||||
*/
|
||||
void clearVideoSurfaceHolder(SurfaceHolder surfaceHolder);
|
||||
void clearVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder);
|
||||
|
||||
/**
|
||||
* Sets the {@link SurfaceView} onto which video will be rendered. The player will track the
|
||||
@ -256,7 +256,7 @@ public interface Player {
|
||||
*
|
||||
* @param surfaceView The surface view.
|
||||
*/
|
||||
void setVideoSurfaceView(SurfaceView surfaceView);
|
||||
void setVideoSurfaceView(@Nullable SurfaceView surfaceView);
|
||||
|
||||
/**
|
||||
* Clears the {@link SurfaceView} onto which video is being rendered if it matches the one
|
||||
@ -264,7 +264,7 @@ public interface Player {
|
||||
*
|
||||
* @param surfaceView The texture view to clear.
|
||||
*/
|
||||
void clearVideoSurfaceView(SurfaceView surfaceView);
|
||||
void clearVideoSurfaceView(@Nullable SurfaceView surfaceView);
|
||||
|
||||
/**
|
||||
* Sets the {@link TextureView} onto which video will be rendered. The player will track the
|
||||
@ -272,7 +272,7 @@ public interface Player {
|
||||
*
|
||||
* @param textureView The texture view.
|
||||
*/
|
||||
void setVideoTextureView(TextureView textureView);
|
||||
void setVideoTextureView(@Nullable TextureView textureView);
|
||||
|
||||
/**
|
||||
* Clears the {@link TextureView} onto which video is being rendered if it matches the one
|
||||
@ -280,7 +280,7 @@ public interface Player {
|
||||
*
|
||||
* @param textureView The texture view to clear.
|
||||
*/
|
||||
void clearVideoTextureView(TextureView textureView);
|
||||
void clearVideoTextureView(@Nullable TextureView textureView);
|
||||
|
||||
/**
|
||||
* Sets the video decoder output buffer renderer. This is intended for use only with extension
|
||||
@ -293,6 +293,18 @@ public interface Player {
|
||||
*/
|
||||
void setVideoDecoderOutputBufferRenderer(
|
||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer);
|
||||
|
||||
/** Clears the video decoder output buffer renderer. */
|
||||
void clearVideoDecoderOutputBufferRenderer();
|
||||
|
||||
/**
|
||||
* Clears the video decoder output buffer renderer if it matches the one passed. Else does
|
||||
* nothing.
|
||||
*
|
||||
* @param videoDecoderOutputBufferRenderer The video decoder output buffer renderer to clear.
|
||||
*/
|
||||
void clearVideoDecoderOutputBufferRenderer(
|
||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer);
|
||||
}
|
||||
|
||||
/** The text component of a {@link Player}. */
|
||||
|
@ -329,6 +329,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
@Nullable private Format videoFormat;
|
||||
@Nullable private Format audioFormat;
|
||||
|
||||
@Nullable private VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer;
|
||||
@Nullable private Surface surface;
|
||||
private boolean ownsSurface;
|
||||
private @C.VideoScalingMode int videoScalingMode;
|
||||
@ -520,7 +521,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoSurface(Surface surface) {
|
||||
public void clearVideoSurface(@Nullable Surface surface) {
|
||||
verifyApplicationThread();
|
||||
if (surface != null && surface == this.surface) {
|
||||
setVideoSurface(null);
|
||||
@ -537,7 +538,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideoSurfaceHolder(SurfaceHolder surfaceHolder) {
|
||||
public void setVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) {
|
||||
verifyApplicationThread();
|
||||
removeSurfaceCallbacks();
|
||||
this.surfaceHolder = surfaceHolder;
|
||||
@ -559,7 +560,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoSurfaceHolder(SurfaceHolder surfaceHolder) {
|
||||
public void clearVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) {
|
||||
verifyApplicationThread();
|
||||
if (surfaceHolder != null && surfaceHolder == this.surfaceHolder) {
|
||||
setVideoSurfaceHolder(null);
|
||||
@ -567,17 +568,17 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideoSurfaceView(SurfaceView surfaceView) {
|
||||
public void setVideoSurfaceView(@Nullable SurfaceView surfaceView) {
|
||||
setVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoSurfaceView(SurfaceView surfaceView) {
|
||||
public void clearVideoSurfaceView(@Nullable SurfaceView surfaceView) {
|
||||
clearVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVideoTextureView(TextureView textureView) {
|
||||
public void setVideoTextureView(@Nullable TextureView textureView) {
|
||||
verifyApplicationThread();
|
||||
removeSurfaceCallbacks();
|
||||
this.textureView = textureView;
|
||||
@ -602,7 +603,7 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoTextureView(TextureView textureView) {
|
||||
public void clearVideoTextureView(@Nullable TextureView textureView) {
|
||||
verifyApplicationThread();
|
||||
if (textureView != null && textureView == this.textureView) {
|
||||
setVideoTextureView(null);
|
||||
@ -614,14 +615,22 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer) {
|
||||
verifyApplicationThread();
|
||||
setVideoSurface(null);
|
||||
for (Renderer renderer : renderers) {
|
||||
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
|
||||
player
|
||||
.createMessage(renderer)
|
||||
.setType(C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER)
|
||||
.setPayload(videoDecoderOutputBufferRenderer)
|
||||
.send();
|
||||
}
|
||||
setVideoDecoderOutputBufferRendererInternal(videoDecoderOutputBufferRenderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoDecoderOutputBufferRenderer() {
|
||||
verifyApplicationThread();
|
||||
setVideoDecoderOutputBufferRendererInternal(/* videoDecoderOutputBufferRenderer= */ null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearVideoDecoderOutputBufferRenderer(
|
||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer) {
|
||||
verifyApplicationThread();
|
||||
if (videoDecoderOutputBufferRenderer != null
|
||||
&& videoDecoderOutputBufferRenderer == this.videoDecoderOutputBufferRenderer) {
|
||||
setVideoDecoderOutputBufferRendererInternal(/* videoDecoderOutputBufferRenderer= */ null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1486,6 +1495,20 @@ public class SimpleExoPlayer extends BasePlayer
|
||||
this.ownsSurface = ownsSurface;
|
||||
}
|
||||
|
||||
private void setVideoDecoderOutputBufferRendererInternal(
|
||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer) {
|
||||
for (Renderer renderer : renderers) {
|
||||
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
|
||||
player
|
||||
.createMessage(renderer)
|
||||
.setType(C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER)
|
||||
.setPayload(videoDecoderOutputBufferRenderer)
|
||||
.send();
|
||||
}
|
||||
}
|
||||
this.videoDecoderOutputBufferRenderer = videoDecoderOutputBufferRenderer;
|
||||
}
|
||||
|
||||
private void maybeNotifySurfaceSizeChanged(int width, int height) {
|
||||
if (width != surfaceWidth || height != surfaceHeight) {
|
||||
surfaceWidth = width;
|
||||
|
Loading…
x
Reference in New Issue
Block a user