From 52db3a240de6353416055a307aa88e91bfd9556b Mon Sep 17 00:00:00 2001 From: shahddaghash Date: Thu, 17 Apr 2025 03:49:26 -0700 Subject: [PATCH] Clear cached encoders in ShadowMediaCodecConfig#after() Instead of calling it in the tests setup, the change modifies ShadowMediaCodecConfig#after() method to call EncoderUtil#clearCachedEncoders(). PiperOrigin-RevId: 748625111 --- libraries/test_utils_robolectric/build.gradle | 1 + .../test/utils/robolectric/ShadowMediaCodecConfig.java | 2 ++ .../androidx/media3/transformer/CompositionExportTest.java | 7 ------- .../androidx/media3/transformer/MediaItemExportTest.java | 7 ------- .../media3/transformer/ParameterizedAudioExportTest.java | 7 ------- .../media3/transformer/ParameterizedItemExportTest.java | 7 ------- .../androidx/media3/transformer/SequenceExportTest.java | 7 ------- 7 files changed, 3 insertions(+), 35 deletions(-) diff --git a/libraries/test_utils_robolectric/build.gradle b/libraries/test_utils_robolectric/build.gradle index a88e7cff34..5d737f72f1 100644 --- a/libraries/test_utils_robolectric/build.gradle +++ b/libraries/test_utils_robolectric/build.gradle @@ -30,6 +30,7 @@ dependencies { implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion implementation 'org.robolectric:robolectric:' + robolectricVersion api project(modulePrefix + 'lib-exoplayer') + api project(modulePrefix + 'lib-transformer') api project(modulePrefix + 'test-utils') } diff --git a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.java b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.java index f38153060b..a172852e5c 100644 --- a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.java +++ b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.java @@ -23,6 +23,7 @@ import android.media.MediaFormat; import androidx.media3.common.MimeTypes; import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.mediacodec.MediaCodecUtil; +import androidx.media3.transformer.EncoderUtil; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.primitives.Ints; @@ -327,6 +328,7 @@ public final class ShadowMediaCodecConfig extends ExternalResource { @Override protected void after() { MediaCodecUtil.clearDecoderInfoCache(); + EncoderUtil.clearCachedEncoders(); ShadowMediaCodecList.reset(); ShadowMediaCodec.clearCodecs(); } diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java index 8bb1063882..ab305a25a5 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionExportTest.java @@ -40,7 +40,6 @@ import androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; -import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -62,12 +61,6 @@ public class CompositionExportTest { /* decoders= */ ImmutableList.of(CODEC_INFO_RAW), /* encoders= */ ImmutableList.of(CODEC_INFO_AAC)); - @After - public void tearDown() { - // TODO(b/406463016): Investigate moving this call to ShadowMediaCodecConfig#after() method. - EncoderUtil.clearCachedEncoders(); - } - @Test public void start_audioVideoTransmuxedFromDifferentSequences_matchesSingleSequenceResult() throws Exception { diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java index bd9ee8f8e0..6aea122b99 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/MediaItemExportTest.java @@ -105,7 +105,6 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import org.junit.After; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -152,12 +151,6 @@ public final class MediaItemExportTest { ShadowMediaCodecConfig.withCodecs( /* decoders= */ ImmutableList.of(CODEC_INFO_RAW), /* encoders= */ ImmutableList.of()); - @After - public void tearDown() { - // TODO(b/406463016): Investigate moving this call to ShadowMediaCodecConfig#after() method. - EncoderUtil.clearCachedEncoders(); - } - @Test public void start_gapOnlyExport_outputsSilence() throws Exception { shadowMediaCodecConfig.addEncoders(CODEC_INFO_AAC); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java index 29a84c221d..3dbf026a00 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedAudioExportTest.java @@ -44,7 +44,6 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.Set; -import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -137,12 +136,6 @@ public final class ParameterizedAudioExportTest { private final CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ true); - @After - public void tearDown() { - // TODO(b/406463016): Investigate moving this call to ShadowMediaCodecConfig#after() method. - EncoderUtil.clearCachedEncoders(); - } - @Test public void export() throws Exception { Transformer transformer = diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedItemExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedItemExportTest.java index c5bfacc4fe..bf50421100 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedItemExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/ParameterizedItemExportTest.java @@ -38,7 +38,6 @@ import androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig; import androidx.test.core.app.ApplicationProvider; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import org.junit.After; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -99,12 +98,6 @@ public final class ParameterizedItemExportTest { /* decoders= */ ImmutableList.of(CODEC_INFO_RAW), /* encoders= */ ImmutableList.of(CODEC_INFO_AAC)); - @After - public void tearDown() { - // TODO(b/406463016): Investigate moving this call to ShadowMediaCodecConfig#after() method. - EncoderUtil.clearCachedEncoders(); - } - @Test public void export() throws Exception { boolean handleAudioAsPcm = !ENCODED_AUDIO_ASSETS.contains(assetFile); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java index f67214cdfd..ef3f0ee1af 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/SequenceExportTest.java @@ -43,7 +43,6 @@ import androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; -import org.junit.After; import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -73,12 +72,6 @@ public final class SequenceExportTest { /* decoders= */ ImmutableList.of(CODEC_INFO_RAW), /* encoders= */ ImmutableList.of(CODEC_INFO_AAC)); - @After - public void tearDown() { - // TODO(b/406463016): Investigate moving this call to ShadowMediaCodecConfig#after() method. - EncoderUtil.clearCachedEncoders(); - } - @Test public void start_concatenateSameMediaItemWithTransmux_completesSuccessfully() throws Exception { CapturingMuxer.Factory muxerFactory = new CapturingMuxer.Factory(/* handleAudioAsPcm= */ false);