From a772e1525cf8383df17a959c032048ab7cefe21a Mon Sep 17 00:00:00 2001 From: Gilles Khouzam Date: Tue, 13 Aug 2024 12:11:59 -0700 Subject: [PATCH] Add a static rendererSupportsFormat method for MCVR This refactors the `supportsFormat` method on the MediaCodecVideoRenderer to be a static method that can be called from external components to determine if a video format is supported by the device renderers. Since `context` is the only component that is part of the MCVR, it can easily be obtained externally and passed to the method. This can help optimize format support decisions ahead of time of a player having been instantiated, such as removing unsupported representations from a dash manifest. This could also be done for the MCAR but would also require passing in the AudioSink and isn't required at this time. --- .../media3/exoplayer/video/MediaCodecVideoRenderer.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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 e812659768..730f9adbae 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 @@ -486,6 +486,14 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer @Override protected @Capabilities int supportsFormat(MediaCodecSelector mediaCodecSelector, Format format) throws DecoderQueryException { + return rendererSupportsFormat(context, mediaCodecSelector, format); + } + + public static @Capabilities int rendererSupportsFormat( + Context context, + MediaCodecSelector mediaCodecSelector, + Format format) + throws DecoderQueryException { String mimeType = format.sampleMimeType; if (!MimeTypes.isVideo(mimeType)) { return RendererCapabilities.create(C.FORMAT_UNSUPPORTED_TYPE);