Disable fallback in tests that don't test fallback.

Fallback is only disabled for robolectric and instrumentation tests.
For MH tests, fallback is not disabled, as it may be needed due to
the broad range of devices available.

PiperOrigin-RevId: 426403167
This commit is contained in:
hschlueter 2022-02-04 15:55:29 +00:00 committed by Ian Baker
parent 24749339db
commit b3476e442a
3 changed files with 70 additions and 41 deletions

View File

@ -47,6 +47,8 @@ public class TransformerEndToEndTest {
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build()) new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
.setMuxerFactory(muxerFactory) .setMuxerFactory(muxerFactory)
.setEncoderFactory(
new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* disableFallback= */ true))
.build(); .build();
// Result of the following command: // Result of the following command:
// ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames bear-vp9.webm // ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames bear-vp9.webm
@ -78,6 +80,8 @@ public class TransformerEndToEndTest {
.setTransformationMatrix(transformationMatrix) .setTransformationMatrix(transformationMatrix)
.build()) .build())
.setMuxerFactory(muxerFactory) .setMuxerFactory(muxerFactory)
.setEncoderFactory(
new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* disableFallback= */ true))
.build(); .build();
// Result of the following command: // Result of the following command:
// ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames sample.mp4 // ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames sample.mp4

View File

@ -75,9 +75,18 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
// TODO(b/210591626) Add encoder selection for audio. // TODO(b/210591626) Add encoder selection for audio.
checkArgument(!allowedMimeTypes.isEmpty()); checkArgument(!allowedMimeTypes.isEmpty());
if (!allowedMimeTypes.contains(format.sampleMimeType)) { if (!allowedMimeTypes.contains(format.sampleMimeType)) {
// TODO(b/210591626): Pick fallback MIME type using same strategy as for encoder if (!disableFallback) {
// capabilities limitations. // TODO(b/210591626): Pick fallback MIME type using same strategy as for encoder
format = format.buildUpon().setSampleMimeType(allowedMimeTypes.get(0)).build(); // capabilities limitations.
format = format.buildUpon().setSampleMimeType(allowedMimeTypes.get(0)).build();
} else {
throw createTransformationException(
new IllegalArgumentException("The requested output format is not supported."),
format,
/* isVideo= */ false,
/* isDecoder= */ false,
/* mediaCodecName= */ null);
}
} }
MediaFormat mediaFormat = MediaFormat mediaFormat =
MediaFormat.createAudioFormat( MediaFormat.createAudioFormat(
@ -112,8 +121,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
format, videoEncoderSelector, allowedMimeTypes, disableFallback); format, videoEncoderSelector, allowedMimeTypes, disableFallback);
if (encoderAndClosestFormatSupport == null) { if (encoderAndClosestFormatSupport == null) {
throw createTransformationException( throw createTransformationException(
new IllegalArgumentException( new IllegalArgumentException("The requested output format is not supported."),
"No encoder available that supports the requested output format."),
format, format,
/* isVideo= */ true, /* isVideo= */ true,
/* isDecoder= */ false, /* isDecoder= */ false,

View File

@ -66,7 +66,6 @@ import org.robolectric.shadows.ShadowMediaCodec;
/** End-to-end test for {@link Transformer}. */ /** End-to-end test for {@link Transformer}. */
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public final class TransformerEndToEndTest { public final class TransformerEndToEndTest {
// TODO(b/214973843): Disable fallback for all tests that aren't specifically testing fallback.
private static final String URI_PREFIX = "asset:///media/"; private static final String URI_PREFIX = "asset:///media/";
private static final String FILE_VIDEO_ONLY = "mp4/sample_18byte_nclx_colr.mp4"; private static final String FILE_VIDEO_ONLY = "mp4/sample_18byte_nclx_colr.mp4";
@ -103,7 +102,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_videoOnlyPassthrough_completesSuccessfully() throws Exception { public void startTransformation_videoOnlyPassthrough_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -114,7 +113,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_audioOnlyPassthrough_completesSuccessfully() throws Exception { public void startTransformation_audioOnlyPassthrough_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER);
@ -128,7 +127,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_audioOnlyTranscoding_completesSuccessfully() throws Exception { public void startTransformation_audioOnlyTranscoding_completesSuccessfully() throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer .setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
@ -145,7 +144,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_audioAndVideo_completesSuccessfully() throws Exception { public void startTransformation_audioAndVideo_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -157,7 +156,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_withSubtitles_completesSuccessfully() throws Exception { public void startTransformation_withSubtitles_completesSuccessfully() throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build()) new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build())
.build(); .build();
@ -172,7 +171,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_successiveTransformations_completesSuccessfully() public void startTransformation_successiveTransformations_completesSuccessfully()
throws Exception { throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
// Transform first media item. // Transform first media item.
@ -189,7 +188,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_concurrentTransformations_throwsError() throws Exception { public void startTransformation_concurrentTransformations_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -200,7 +199,8 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_removeAudio_completesSuccessfully() throws Exception { public void startTransformation_removeAudio_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().setRemoveAudio(true).build(); Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setRemoveAudio(true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -212,7 +212,8 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_removeVideo_completesSuccessfully() throws Exception { public void startTransformation_removeVideo_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().setRemoveVideo(true).build(); Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setRemoveVideo(true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -228,7 +229,7 @@ public final class TransformerEndToEndTest {
Transformer.Listener mockListener2 = mock(Transformer.Listener.class); Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
Transformer.Listener mockListener3 = mock(Transformer.Listener.class); Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
@ -249,7 +250,7 @@ public final class TransformerEndToEndTest {
Transformer.Listener mockListener2 = mock(Transformer.Listener.class); Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
Transformer.Listener mockListener3 = mock(Transformer.Listener.class); Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
@ -276,7 +277,7 @@ public final class TransformerEndToEndTest {
TransformationRequest fallbackTransformationRequest = TransformationRequest fallbackTransformationRequest =
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build(); new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build();
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ false)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
@ -301,7 +302,7 @@ public final class TransformerEndToEndTest {
Transformer.Listener mockListener2 = mock(Transformer.Listener.class); Transformer.Listener mockListener2 = mock(Transformer.Listener.class);
Transformer.Listener mockListener3 = mock(Transformer.Listener.class); Transformer.Listener mockListener3 = mock(Transformer.Listener.class);
Transformer transformer1 = Transformer transformer1 =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
@ -320,7 +321,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_flattenForSlowMotion_completesSuccessfully() throws Exception { public void startTransformation_flattenForSlowMotion_completesSuccessfully() throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setFlattenForSlowMotion(true).build()) new TransformationRequest.Builder().setFlattenForSlowMotion(true).build())
.build(); .build();
@ -336,7 +337,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withAudioEncoderFormatUnsupported_completesWithError() public void startTransformation_withAudioEncoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setAudioMimeType( .setAudioMimeType(
@ -357,7 +358,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withAudioDecoderFormatUnsupported_completesWithError() public void startTransformation_withAudioDecoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer .setAudioMimeType(MimeTypes.AUDIO_AAC) // supported by encoder and muxer
@ -377,7 +378,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withVideoEncoderFormatUnsupported_completesWithError() public void startTransformation_withVideoEncoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder() createTransformerBuilder(/* disableFallback= */ true)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setVideoMimeType(MimeTypes.VIDEO_H263) // unsupported encoder MIME type .setVideoMimeType(MimeTypes.VIDEO_H263) // unsupported encoder MIME type
@ -395,7 +396,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_withIoError_completesWithError() throws Exception { public void startTransformation_withIoError_completesWithError() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4"); MediaItem mediaItem = MediaItem.fromUri("asset:///non-existing-path.mp4");
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -405,6 +406,21 @@ public final class TransformerEndToEndTest {
assertThat(exception.errorCode).isEqualTo(TransformationException.ERROR_CODE_IO_FILE_NOT_FOUND); assertThat(exception.errorCode).isEqualTo(TransformationException.ERROR_CODE_IO_FILE_NOT_FOUND);
} }
@Test
public void startTransformation_withAudioMuxerFormatUnsupported_completesWithError()
throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
transformer.startTransformation(mediaItem, outputPath);
TransformationException exception = TransformerTestRunner.runUntilError(transformer);
assertThat(exception).hasCauseThat().isInstanceOf(IllegalArgumentException.class);
assertThat(exception).hasMessageThat().contains("audio");
assertThat(exception.errorCode)
.isEqualTo(TransformationException.ERROR_CODE_OUTPUT_FORMAT_UNSUPPORTED);
}
@Test @Test
public void startTransformation_withAudioMuxerFormatFallback_completesSuccessfully() public void startTransformation_withAudioMuxerFormatFallback_completesSuccessfully()
throws Exception { throws Exception {
@ -413,7 +429,8 @@ public final class TransformerEndToEndTest {
new TransformationRequest.Builder().build(); new TransformationRequest.Builder().build();
TransformationRequest fallbackTransformationRequest = TransformationRequest fallbackTransformationRequest =
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build(); new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build();
Transformer transformer = createTransformerBuilder().addListener(mockListener).build(); Transformer transformer =
createTransformerBuilder(/* disableFallback= */ false).addListener(mockListener).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_MUXER);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -425,13 +442,9 @@ public final class TransformerEndToEndTest {
.onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest); .onFallbackApplied(mediaItem, originalTransformationRequest, fallbackTransformationRequest);
} }
// TODO(b/214012830): Add a test to check that the correct exception is thrown when the muxer
// doesn't support the output sample MIME type inferred from the input once it is possible to
// disable fallback.
@Test @Test
public void startTransformation_afterCancellation_completesSuccessfully() throws Exception { public void startTransformation_afterCancellation_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -450,7 +463,8 @@ public final class TransformerEndToEndTest {
HandlerThread anotherThread = new HandlerThread("AnotherThread"); HandlerThread anotherThread = new HandlerThread("AnotherThread");
anotherThread.start(); anotherThread.start();
Looper looper = anotherThread.getLooper(); Looper looper = anotherThread.getLooper();
Transformer transformer = createTransformerBuilder().setLooper(looper).build(); Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setLooper(looper).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
AtomicReference<Exception> exception = new AtomicReference<>(); AtomicReference<Exception> exception = new AtomicReference<>();
CountDownLatch countDownLatch = new CountDownLatch(1); CountDownLatch countDownLatch = new CountDownLatch(1);
@ -475,7 +489,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_fromWrongThread_throwsError() throws Exception { public void startTransformation_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_VIDEO);
HandlerThread anotherThread = new HandlerThread("AnotherThread"); HandlerThread anotherThread = new HandlerThread("AnotherThread");
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>(); AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
@ -502,7 +516,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_knownDuration_returnsConsistentStates() throws Exception { public void getProgress_knownDuration_returnsConsistentStates() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
AtomicInteger previousProgressState = AtomicInteger previousProgressState =
new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY); new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY);
@ -548,7 +562,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception { public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
List<Integer> progresses = new ArrayList<>(); List<Integer> progresses = new ArrayList<>();
Handler progressHandler = Handler progressHandler =
@ -583,7 +597,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_noCurrentTransformation_returnsNoTransformation() throws Exception { public void getProgress_noCurrentTransformation_returnsNoTransformation() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
@Transformer.ProgressState int stateBeforeTransform = transformer.getProgress(progressHolder); @Transformer.ProgressState int stateBeforeTransform = transformer.getProgress(progressHolder);
@ -597,7 +611,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_unknownDuration_returnsConsistentStates() throws Exception { public void getProgress_unknownDuration_returnsConsistentStates() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_UNKNOWN_DURATION); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_UNKNOWN_DURATION);
AtomicInteger previousProgressState = AtomicInteger previousProgressState =
new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY); new AtomicInteger(PROGRESS_STATE_WAITING_FOR_AVAILABILITY);
@ -640,7 +654,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_fromWrongThread_throwsError() throws Exception { public void getProgress_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
HandlerThread anotherThread = new HandlerThread("AnotherThread"); HandlerThread anotherThread = new HandlerThread("AnotherThread");
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>(); AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
CountDownLatch countDownLatch = new CountDownLatch(1); CountDownLatch countDownLatch = new CountDownLatch(1);
@ -664,7 +678,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void cancel_afterCompletion_doesNotThrow() throws Exception { public void cancel_afterCompletion_doesNotThrow() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_VIDEO_ONLY);
transformer.startTransformation(mediaItem, outputPath); transformer.startTransformation(mediaItem, outputPath);
@ -674,7 +688,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void cancel_fromWrongThread_throwsError() throws Exception { public void cancel_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder().build(); Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build();
HandlerThread anotherThread = new HandlerThread("AnotherThread"); HandlerThread anotherThread = new HandlerThread("AnotherThread");
AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>(); AtomicReference<IllegalStateException> illegalStateException = new AtomicReference<>();
CountDownLatch countDownLatch = new CountDownLatch(1); CountDownLatch countDownLatch = new CountDownLatch(1);
@ -696,8 +710,11 @@ public final class TransformerEndToEndTest {
assertThat(illegalStateException.get()).isNotNull(); assertThat(illegalStateException.get()).isNotNull();
} }
private Transformer.Builder createTransformerBuilder() { private Transformer.Builder createTransformerBuilder(boolean disableFallback) {
return new Transformer.Builder(context).setClock(clock).setMuxerFactory(new TestMuxerFactory()); return new Transformer.Builder(context)
.setClock(clock)
.setMuxerFactory(new TestMuxerFactory())
.setEncoderFactory(new DefaultEncoderFactory(EncoderSelector.DEFAULT, disableFallback));
} }
private static void createEncodersAndDecoders() { private static void createEncodersAndDecoders() {