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
This commit is contained in:
shahddaghash 2025-04-17 03:49:26 -07:00 committed by Copybara-Service
parent a64d51c909
commit 52db3a240d
7 changed files with 3 additions and 35 deletions

View File

@ -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')
}

View File

@ -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();
}

View File

@ -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 {

View File

@ -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);

View File

@ -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 =

View File

@ -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);

View File

@ -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);