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.
|
* @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
|
* 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.
|
* @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
|
* 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.
|
* @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
|
* 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.
|
* @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
|
* 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.
|
* @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
|
* 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.
|
* @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
|
* 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.
|
* @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
|
* Sets the video decoder output buffer renderer. This is intended for use only with extension
|
||||||
@ -293,6 +293,18 @@ public interface Player {
|
|||||||
*/
|
*/
|
||||||
void setVideoDecoderOutputBufferRenderer(
|
void setVideoDecoderOutputBufferRenderer(
|
||||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer);
|
@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}. */
|
/** The text component of a {@link Player}. */
|
||||||
|
@ -329,6 +329,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
@Nullable private Format videoFormat;
|
@Nullable private Format videoFormat;
|
||||||
@Nullable private Format audioFormat;
|
@Nullable private Format audioFormat;
|
||||||
|
|
||||||
|
@Nullable private VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer;
|
||||||
@Nullable private Surface surface;
|
@Nullable private Surface surface;
|
||||||
private boolean ownsSurface;
|
private boolean ownsSurface;
|
||||||
private @C.VideoScalingMode int videoScalingMode;
|
private @C.VideoScalingMode int videoScalingMode;
|
||||||
@ -520,7 +521,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearVideoSurface(Surface surface) {
|
public void clearVideoSurface(@Nullable Surface surface) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
if (surface != null && surface == this.surface) {
|
if (surface != null && surface == this.surface) {
|
||||||
setVideoSurface(null);
|
setVideoSurface(null);
|
||||||
@ -537,7 +538,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setVideoSurfaceHolder(SurfaceHolder surfaceHolder) {
|
public void setVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
removeSurfaceCallbacks();
|
removeSurfaceCallbacks();
|
||||||
this.surfaceHolder = surfaceHolder;
|
this.surfaceHolder = surfaceHolder;
|
||||||
@ -559,7 +560,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearVideoSurfaceHolder(SurfaceHolder surfaceHolder) {
|
public void clearVideoSurfaceHolder(@Nullable SurfaceHolder surfaceHolder) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
if (surfaceHolder != null && surfaceHolder == this.surfaceHolder) {
|
if (surfaceHolder != null && surfaceHolder == this.surfaceHolder) {
|
||||||
setVideoSurfaceHolder(null);
|
setVideoSurfaceHolder(null);
|
||||||
@ -567,17 +568,17 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setVideoSurfaceView(SurfaceView surfaceView) {
|
public void setVideoSurfaceView(@Nullable SurfaceView surfaceView) {
|
||||||
setVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
setVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearVideoSurfaceView(SurfaceView surfaceView) {
|
public void clearVideoSurfaceView(@Nullable SurfaceView surfaceView) {
|
||||||
clearVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
clearVideoSurfaceHolder(surfaceView == null ? null : surfaceView.getHolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setVideoTextureView(TextureView textureView) {
|
public void setVideoTextureView(@Nullable TextureView textureView) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
removeSurfaceCallbacks();
|
removeSurfaceCallbacks();
|
||||||
this.textureView = textureView;
|
this.textureView = textureView;
|
||||||
@ -602,7 +603,7 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearVideoTextureView(TextureView textureView) {
|
public void clearVideoTextureView(@Nullable TextureView textureView) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
if (textureView != null && textureView == this.textureView) {
|
if (textureView != null && textureView == this.textureView) {
|
||||||
setVideoTextureView(null);
|
setVideoTextureView(null);
|
||||||
@ -614,14 +615,22 @@ public class SimpleExoPlayer extends BasePlayer
|
|||||||
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer) {
|
@Nullable VideoDecoderOutputBufferRenderer videoDecoderOutputBufferRenderer) {
|
||||||
verifyApplicationThread();
|
verifyApplicationThread();
|
||||||
setVideoSurface(null);
|
setVideoSurface(null);
|
||||||
for (Renderer renderer : renderers) {
|
setVideoDecoderOutputBufferRendererInternal(videoDecoderOutputBufferRenderer);
|
||||||
if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
|
}
|
||||||
player
|
|
||||||
.createMessage(renderer)
|
@Override
|
||||||
.setType(C.MSG_SET_VIDEO_DECODER_OUTPUT_BUFFER_RENDERER)
|
public void clearVideoDecoderOutputBufferRenderer() {
|
||||||
.setPayload(videoDecoderOutputBufferRenderer)
|
verifyApplicationThread();
|
||||||
.send();
|
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;
|
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) {
|
private void maybeNotifySurfaceSizeChanged(int width, int height) {
|
||||||
if (width != surfaceWidth || height != surfaceHeight) {
|
if (width != surfaceWidth || height != surfaceHeight) {
|
||||||
surfaceWidth = width;
|
surfaceWidth = width;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user