From 5d2df8349672a106d7231b353688090e8277b80f Mon Sep 17 00:00:00 2001 From: christosts Date: Wed, 3 Nov 2021 15:45:07 +0000 Subject: [PATCH] Add DefaultMediaCodecFactory.getCodecAdapter() method Add protected method DefaultRenderersFactory.getCodecAdapter(), so that subclasses of DefaultRenderersFactory that override buildVideoRenderers() or buildAudioRenderers() can access the DefaultRenderersFactory codec adapter factory and pass it to MediaCodecRenderer instances they may create. #minor-release PiperOrigin-RevId: 407345431 --- RELEASENOTES.md | 7 +++++++ .../android/exoplayer2/DefaultRenderersFactory.java | 13 +++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ae006ebdde..b53b2f6226 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,6 +2,13 @@ ### dev-v2 (not yet released) +* Core Library: + * Add protected method `DefaultRenderersFactory.getCodecAdapterFactory()` + so that subclasses of `DefaultRenderersFactory` that override + `buildVideoRenderers()` or `buildAudioRenderers()` can access the codec + adapter factory and pass it to `MediaCodecRenderer` instances they + create. + ### 2.16.0 (2021-11-04) * Core Library: diff --git a/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java b/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java index 03ccc297a8..ca205c2901 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java @@ -29,6 +29,7 @@ import com.google.android.exoplayer2.audio.DefaultAudioSink; import com.google.android.exoplayer2.audio.DefaultAudioSink.DefaultAudioProcessorChain; import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer; import com.google.android.exoplayer2.mediacodec.DefaultMediaCodecAdapterFactory; +import com.google.android.exoplayer2.mediacodec.MediaCodecAdapter; import com.google.android.exoplayer2.mediacodec.MediaCodecSelector; import com.google.android.exoplayer2.metadata.MetadataOutput; import com.google.android.exoplayer2.metadata.MetadataRenderer; @@ -368,7 +369,7 @@ public class DefaultRenderersFactory implements RenderersFactory { MediaCodecVideoRenderer videoRenderer = new MediaCodecVideoRenderer( context, - codecAdapterFactory, + getCodecAdapterFactory(), mediaCodecSelector, allowedVideoJoiningTimeMs, enableDecoderFallback, @@ -488,7 +489,7 @@ public class DefaultRenderersFactory implements RenderersFactory { MediaCodecAudioRenderer audioRenderer = new MediaCodecAudioRenderer( context, - codecAdapterFactory, + getCodecAdapterFactory(), mediaCodecSelector, enableDecoderFallback, eventHandler, @@ -655,4 +656,12 @@ public class DefaultRenderersFactory implements RenderersFactory { ? DefaultAudioSink.OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED : DefaultAudioSink.OFFLOAD_MODE_DISABLED); } + + /** + * Returns the {@link MediaCodecAdapter.Factory} that will be used when creating {@link + * com.google.android.exoplayer2.mediacodec.MediaCodecRenderer} instances. + */ + protected MediaCodecAdapter.Factory getCodecAdapterFactory() { + return codecAdapterFactory; + } }