From bd90ef38b07860e918a9234b183440067bf4a9be Mon Sep 17 00:00:00 2001 From: dancho Date: Mon, 4 Nov 2024 03:14:56 -0800 Subject: [PATCH] MCVR.hasSurfaceForCodec considers VideoSink This change keeps getSurfaceForCodec and hasSurfaceForCodec in sync. Before this change when ExoPlayer is configured with setVideoEffects and no display surface, codecs that need Set Output Surface Workaround would not be initialized because hasSurfaceForCodec always returns false PiperOrigin-RevId: 692900899 --- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java index d2859b2475..53d0f42468 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/video/MediaCodecVideoRenderer.java @@ -1815,7 +1815,8 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer } private boolean hasSurfaceForCodec(MediaCodecInfo codecInfo) { - return (displaySurface != null && displaySurface.isValid()) + return videoSink != null + || (displaySurface != null && displaySurface.isValid()) || shouldUseDetachedSurface(codecInfo) || shouldUsePlaceholderSurface(codecInfo); }