Commit 5b8c4e09 by hschlueter Committed by Ian Baker

Add enable fallback option to transformer demo.

Also invert disableFallback parameter in DefaultEncoderFactory
to enableFallback. Fallback is still enabled by default.

PiperOrigin-RevId: 429253266
parent 34007364
...@@ -54,6 +54,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -54,6 +54,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
public static final String SCALE_X = "scale_x"; public static final String SCALE_X = "scale_x";
public static final String SCALE_Y = "scale_y"; public static final String SCALE_Y = "scale_y";
public static final String ROTATE_DEGREES = "rotate_degrees"; public static final String ROTATE_DEGREES = "rotate_degrees";
public static final String ENABLE_FALLBACK = "enable_fallback";
public static final String ENABLE_HDR_EDITING = "enable_hdr_editing"; public static final String ENABLE_HDR_EDITING = "enable_hdr_editing";
private static final String[] INPUT_URIS = { private static final String[] INPUT_URIS = {
"https://html5demos.com/assets/dizzy.mp4", "https://html5demos.com/assets/dizzy.mp4",
...@@ -80,6 +81,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -80,6 +81,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
private @MonotonicNonNull Spinner translateSpinner; private @MonotonicNonNull Spinner translateSpinner;
private @MonotonicNonNull Spinner scaleSpinner; private @MonotonicNonNull Spinner scaleSpinner;
private @MonotonicNonNull Spinner rotateSpinner; private @MonotonicNonNull Spinner rotateSpinner;
private @MonotonicNonNull CheckBox enableFallbackCheckBox;
private @MonotonicNonNull CheckBox enableHdrEditingCheckBox; private @MonotonicNonNull CheckBox enableHdrEditingCheckBox;
private int inputUriPosition; private int inputUriPosition;
...@@ -154,6 +156,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -154,6 +156,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
rotateSpinner.setAdapter(rotateAdapter); rotateSpinner.setAdapter(rotateAdapter);
rotateAdapter.addAll(SAME_AS_INPUT_OPTION, "0", "10", "45", "60", "90", "180"); rotateAdapter.addAll(SAME_AS_INPUT_OPTION, "0", "10", "45", "60", "90", "180");
enableFallbackCheckBox = findViewById(R.id.enable_fallback_checkbox);
enableHdrEditingCheckBox = findViewById(R.id.hdr_editing_checkbox); enableHdrEditingCheckBox = findViewById(R.id.hdr_editing_checkbox);
} }
...@@ -183,6 +186,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -183,6 +186,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"translateSpinner", "translateSpinner",
"scaleSpinner", "scaleSpinner",
"rotateSpinner", "rotateSpinner",
"enableFallbackCheckBox",
"enableHdrEditingCheckBox" "enableHdrEditingCheckBox"
}) })
private void startTransformation(View view) { private void startTransformation(View view) {
...@@ -221,6 +225,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -221,6 +225,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
if (!SAME_AS_INPUT_OPTION.equals(selectedRotate)) { if (!SAME_AS_INPUT_OPTION.equals(selectedRotate)) {
bundle.putFloat(ROTATE_DEGREES, Float.parseFloat(selectedRotate)); bundle.putFloat(ROTATE_DEGREES, Float.parseFloat(selectedRotate));
} }
bundle.putBoolean(ENABLE_FALLBACK, enableFallbackCheckBox.isChecked());
bundle.putBoolean(ENABLE_HDR_EDITING, enableHdrEditingCheckBox.isChecked()); bundle.putBoolean(ENABLE_HDR_EDITING, enableHdrEditingCheckBox.isChecked());
transformerIntent.putExtras(bundle); transformerIntent.putExtras(bundle);
......
...@@ -36,6 +36,8 @@ import androidx.appcompat.app.AppCompatActivity; ...@@ -36,6 +36,8 @@ import androidx.appcompat.app.AppCompatActivity;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.transformer.DefaultEncoderFactory;
import com.google.android.exoplayer2.transformer.EncoderSelector;
import com.google.android.exoplayer2.transformer.ProgressHolder; import com.google.android.exoplayer2.transformer.ProgressHolder;
import com.google.android.exoplayer2.transformer.TransformationException; import com.google.android.exoplayer2.transformer.TransformationException;
import com.google.android.exoplayer2.transformer.TransformationRequest; import com.google.android.exoplayer2.transformer.TransformationRequest;
...@@ -224,7 +226,11 @@ public final class TransformerActivity extends AppCompatActivity { ...@@ -224,7 +226,11 @@ public final class TransformerActivity extends AppCompatActivity {
transformerBuilder transformerBuilder
.setTransformationRequest(requestBuilder.build()) .setTransformationRequest(requestBuilder.build())
.setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO)) .setRemoveAudio(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_AUDIO))
.setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO)); .setRemoveVideo(bundle.getBoolean(ConfigurationActivity.SHOULD_REMOVE_VIDEO))
.setEncoderFactory(
new DefaultEncoderFactory(
EncoderSelector.DEFAULT,
/* enableFallback= */ bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK)));
} }
return transformerBuilder return transformerBuilder
.addListener( .addListener(
......
...@@ -174,6 +174,16 @@ ...@@ -174,6 +174,16 @@
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" > android:gravity="center_vertical" >
<TextView <TextView
android:text="@string/enable_fallback" />
<CheckBox
android:id="@+id/enable_fallback_checkbox"
android:layout_gravity="right"
android:checked="true"/>
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center_vertical" >
<TextView
android:id="@+id/hdr_editing" android:id="@+id/hdr_editing"
android:text="@string/hdr_editing" /> android:text="@string/hdr_editing" />
<CheckBox <CheckBox
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
<string name="translate" translatable="false">Translate video</string> <string name="translate" translatable="false">Translate video</string>
<string name="scale" translatable="false">Scale video</string> <string name="scale" translatable="false">Scale video</string>
<string name="rotate" translatable="false">Rotate video (degrees)</string> <string name="rotate" translatable="false">Rotate video (degrees)</string>
<string name="enable_fallback" translatable="false">Enable fallback</string>
<string name="transform" translatable="false">Transform</string> <string name="transform" translatable="false">Transform</string>
<string name="hdr_editing" translatable="false">[Experimental] HDR editing</string> <string name="hdr_editing" translatable="false">[Experimental] HDR editing</string>
<string name="debug_preview" translatable="false">Debug preview:</string> <string name="debug_preview" translatable="false">Debug preview:</string>
......
...@@ -48,7 +48,7 @@ public class TransformerEndToEndTest { ...@@ -48,7 +48,7 @@ public class TransformerEndToEndTest {
new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build()) new TransformationRequest.Builder().setVideoMimeType(MimeTypes.VIDEO_H264).build())
.setMuxerFactory(muxerFactory) .setMuxerFactory(muxerFactory)
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* disableFallback= */ true)) new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* enableFallback= */ false))
.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
...@@ -81,7 +81,7 @@ public class TransformerEndToEndTest { ...@@ -81,7 +81,7 @@ public class TransformerEndToEndTest {
.build()) .build())
.setMuxerFactory(muxerFactory) .setMuxerFactory(muxerFactory)
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* disableFallback= */ true)) new DefaultEncoderFactory(EncoderSelector.DEFAULT, /* enableFallback= */ false))
.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
......
...@@ -44,7 +44,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -44,7 +44,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
private static final int DEFAULT_I_FRAME_INTERVAL_SECS = 1; private static final int DEFAULT_I_FRAME_INTERVAL_SECS = 1;
@Nullable private final EncoderSelector videoEncoderSelector; @Nullable private final EncoderSelector videoEncoderSelector;
private final boolean disableFallback; private final boolean enableFallback;
/** /**
* Creates a new instance using the {@link EncoderSelector#DEFAULT default encoder selector}, and * Creates a new instance using the {@link EncoderSelector#DEFAULT default encoder selector}, and
...@@ -56,14 +56,14 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -56,14 +56,14 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
* type}, resolution, {@link Format#bitrate bitrate}, {@link Format#codecs profile/level}, etc. * type}, resolution, {@link Format#bitrate bitrate}, {@link Format#codecs profile/level}, etc.
*/ */
public DefaultEncoderFactory() { public DefaultEncoderFactory() {
this(EncoderSelector.DEFAULT, /* disableFallback= */ false); this(EncoderSelector.DEFAULT, /* enableFallback= */ true);
} }
/** Creates a new instance. */ /** Creates a new instance. */
public DefaultEncoderFactory( public DefaultEncoderFactory(
@Nullable EncoderSelector videoEncoderSelector, boolean disableFallback) { @Nullable EncoderSelector videoEncoderSelector, boolean enableFallback) {
this.videoEncoderSelector = videoEncoderSelector; this.videoEncoderSelector = videoEncoderSelector;
this.disableFallback = disableFallback; this.enableFallback = enableFallback;
} }
@Override @Override
...@@ -72,7 +72,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -72,7 +72,7 @@ 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)) {
if (!disableFallback) { if (enableFallback) {
// TODO(b/210591626): Pick fallback MIME type using same strategy as for encoder // TODO(b/210591626): Pick fallback MIME type using same strategy as for encoder
// capabilities limitations. // capabilities limitations.
format = format.buildUpon().setSampleMimeType(allowedMimeTypes.get(0)).build(); format = format.buildUpon().setSampleMimeType(allowedMimeTypes.get(0)).build();
...@@ -115,7 +115,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -115,7 +115,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
@Nullable @Nullable
Pair<MediaCodecInfo, Format> encoderAndClosestFormatSupport = Pair<MediaCodecInfo, Format> encoderAndClosestFormatSupport =
findEncoderWithClosestFormatSupport( findEncoderWithClosestFormatSupport(
format, videoEncoderSelector, allowedMimeTypes, disableFallback); format, videoEncoderSelector, allowedMimeTypes, enableFallback);
if (encoderAndClosestFormatSupport == null) { if (encoderAndClosestFormatSupport == null) {
throw TransformationException.createForCodec( throw TransformationException.createForCodec(
new IllegalArgumentException("The requested output format is not supported."), new IllegalArgumentException("The requested output format is not supported."),
...@@ -211,11 +211,11 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -211,11 +211,11 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
Format requestedFormat, Format requestedFormat,
EncoderSelector encoderSelector, EncoderSelector encoderSelector,
List<String> allowedMimeTypes, List<String> allowedMimeTypes,
boolean disableFallback) { boolean enableFallback) {
String requestedMimeType = requestedFormat.sampleMimeType; String requestedMimeType = requestedFormat.sampleMimeType;
@Nullable @Nullable
String mimeType = findFallbackMimeType(encoderSelector, requestedMimeType, allowedMimeTypes); String mimeType = findFallbackMimeType(encoderSelector, requestedMimeType, allowedMimeTypes);
if (mimeType == null || (disableFallback && !requestedMimeType.equals(mimeType))) { if (mimeType == null || (!enableFallback && !requestedMimeType.equals(mimeType))) {
return null; return null;
} }
...@@ -223,7 +223,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory { ...@@ -223,7 +223,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
if (encodersForMimeType.isEmpty()) { if (encodersForMimeType.isEmpty()) {
return null; return null;
} }
if (disableFallback) { if (!enableFallback) {
return Pair.create(encodersForMimeType.get(0), requestedFormat); return Pair.create(encodersForMimeType.get(0), requestedFormat);
} }
ImmutableList<MediaCodecInfo> filteredEncoders = ImmutableList<MediaCodecInfo> filteredEncoders =
......
...@@ -105,7 +105,7 @@ public final class TransformerEndToEndTest { ...@@ -105,7 +105,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_videoOnlyPassthrough_completesSuccessfully() throws Exception { public void startTransformation_videoOnlyPassthrough_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -116,7 +116,7 @@ public final class TransformerEndToEndTest { ...@@ -116,7 +116,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_audioOnlyPassthrough_completesSuccessfully() throws Exception { public void startTransformation_audioOnlyPassthrough_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).build();
MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER); MediaItem mediaItem = MediaItem.fromUri(URI_PREFIX + FILE_AUDIO_UNSUPPORTED_BY_ENCODER);
...@@ -130,7 +130,7 @@ public final class TransformerEndToEndTest { ...@@ -130,7 +130,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.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
...@@ -147,7 +147,7 @@ public final class TransformerEndToEndTest { ...@@ -147,7 +147,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_audioAndVideo_completesSuccessfully() throws Exception { public void startTransformation_audioAndVideo_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -159,7 +159,7 @@ public final class TransformerEndToEndTest { ...@@ -159,7 +159,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build()) new TransformationRequest.Builder().setAudioMimeType(MimeTypes.AUDIO_AAC).build())
.build(); .build();
...@@ -174,7 +174,7 @@ public final class TransformerEndToEndTest { ...@@ -174,7 +174,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_successiveTransformations_completesSuccessfully() public void startTransformation_successiveTransformations_completesSuccessfully()
throws Exception { throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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.
...@@ -191,7 +191,7 @@ public final class TransformerEndToEndTest { ...@@ -191,7 +191,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_concurrentTransformations_throwsError() throws Exception { public void startTransformation_concurrentTransformations_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -203,7 +203,7 @@ public final class TransformerEndToEndTest { ...@@ -203,7 +203,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_removeAudio_completesSuccessfully() throws Exception { public void startTransformation_removeAudio_completesSuccessfully() throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setRemoveAudio(true).build(); createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -216,7 +216,7 @@ public final class TransformerEndToEndTest { ...@@ -216,7 +216,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_removeVideo_completesSuccessfully() throws Exception { public void startTransformation_removeVideo_completesSuccessfully() throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setRemoveVideo(true).build(); createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -232,7 +232,7 @@ public final class TransformerEndToEndTest { ...@@ -232,7 +232,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
...@@ -253,7 +253,7 @@ public final class TransformerEndToEndTest { ...@@ -253,7 +253,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
...@@ -280,7 +280,7 @@ public final class TransformerEndToEndTest { ...@@ -280,7 +280,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(/* disableFallback= */ false) createTransformerBuilder(/* enableFallback= */ true)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
...@@ -305,7 +305,7 @@ public final class TransformerEndToEndTest { ...@@ -305,7 +305,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.addListener(mockListener1) .addListener(mockListener1)
.addListener(mockListener2) .addListener(mockListener2)
.addListener(mockListener3) .addListener(mockListener3)
...@@ -324,7 +324,7 @@ public final class TransformerEndToEndTest { ...@@ -324,7 +324,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(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder().setFlattenForSlowMotion(true).build()) new TransformationRequest.Builder().setFlattenForSlowMotion(true).build())
.build(); .build();
...@@ -348,7 +348,7 @@ public final class TransformerEndToEndTest { ...@@ -348,7 +348,7 @@ public final class TransformerEndToEndTest {
} }
}; };
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).addListener(listener).build(); createTransformerBuilder(/* enableFallback= */ false).addListener(listener).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);
...@@ -364,7 +364,7 @@ public final class TransformerEndToEndTest { ...@@ -364,7 +364,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withAudioEncoderFormatUnsupported_completesWithError() public void startTransformation_withAudioEncoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setAudioMimeType( .setAudioMimeType(
...@@ -385,7 +385,7 @@ public final class TransformerEndToEndTest { ...@@ -385,7 +385,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withAudioDecoderFormatUnsupported_completesWithError() public void startTransformation_withAudioDecoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.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
...@@ -405,7 +405,7 @@ public final class TransformerEndToEndTest { ...@@ -405,7 +405,7 @@ public final class TransformerEndToEndTest {
public void startTransformation_withVideoEncoderFormatUnsupported_completesWithError() public void startTransformation_withVideoEncoderFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true) createTransformerBuilder(/* enableFallback= */ false)
.setTransformationRequest( .setTransformationRequest(
new TransformationRequest.Builder() new TransformationRequest.Builder()
.setVideoMimeType(MimeTypes.VIDEO_H263) // unsupported encoder MIME type .setVideoMimeType(MimeTypes.VIDEO_H263) // unsupported encoder MIME type
...@@ -423,7 +423,7 @@ public final class TransformerEndToEndTest { ...@@ -423,7 +423,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_withIoError_completesWithError() throws Exception { public void startTransformation_withIoError_completesWithError() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -436,7 +436,7 @@ public final class TransformerEndToEndTest { ...@@ -436,7 +436,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_withAudioMuxerFormatUnsupported_completesWithError() public void startTransformation_withAudioMuxerFormatUnsupported_completesWithError()
throws Exception { throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -457,7 +457,7 @@ public final class TransformerEndToEndTest { ...@@ -457,7 +457,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(/* disableFallback= */ false).addListener(mockListener).build(); createTransformerBuilder(/* enableFallback= */ true).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);
...@@ -471,7 +471,7 @@ public final class TransformerEndToEndTest { ...@@ -471,7 +471,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_afterCancellation_completesSuccessfully() throws Exception { public void startTransformation_afterCancellation_completesSuccessfully() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -491,7 +491,7 @@ public final class TransformerEndToEndTest { ...@@ -491,7 +491,7 @@ public final class TransformerEndToEndTest {
anotherThread.start(); anotherThread.start();
Looper looper = anotherThread.getLooper(); Looper looper = anotherThread.getLooper();
Transformer transformer = Transformer transformer =
createTransformerBuilder(/* disableFallback= */ true).setLooper(looper).build(); createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -516,7 +516,7 @@ public final class TransformerEndToEndTest { ...@@ -516,7 +516,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void startTransformation_fromWrongThread_throwsError() throws Exception { public void startTransformation_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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<>();
...@@ -543,7 +543,7 @@ public final class TransformerEndToEndTest { ...@@ -543,7 +543,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_knownDuration_returnsConsistentStates() throws Exception { public void getProgress_knownDuration_returnsConsistentStates() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -589,7 +589,7 @@ public final class TransformerEndToEndTest { ...@@ -589,7 +589,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception { public void getProgress_knownDuration_givesIncreasingPercentages() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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 =
...@@ -624,7 +624,7 @@ public final class TransformerEndToEndTest { ...@@ -624,7 +624,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_noCurrentTransformation_returnsNoTransformation() throws Exception { public void getProgress_noCurrentTransformation_returnsNoTransformation() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -638,7 +638,7 @@ public final class TransformerEndToEndTest { ...@@ -638,7 +638,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_unknownDuration_returnsConsistentStates() throws Exception { public void getProgress_unknownDuration_returnsConsistentStates() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -681,7 +681,7 @@ public final class TransformerEndToEndTest { ...@@ -681,7 +681,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void getProgress_fromWrongThread_throwsError() throws Exception { public void getProgress_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -705,7 +705,7 @@ public final class TransformerEndToEndTest { ...@@ -705,7 +705,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void cancel_afterCompletion_doesNotThrow() throws Exception { public void cancel_afterCompletion_doesNotThrow() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -715,7 +715,7 @@ public final class TransformerEndToEndTest { ...@@ -715,7 +715,7 @@ public final class TransformerEndToEndTest {
@Test @Test
public void cancel_fromWrongThread_throwsError() throws Exception { public void cancel_fromWrongThread_throwsError() throws Exception {
Transformer transformer = createTransformerBuilder(/* disableFallback= */ true).build(); Transformer transformer = createTransformerBuilder(/* enableFallback= */ false).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);
...@@ -737,11 +737,11 @@ public final class TransformerEndToEndTest { ...@@ -737,11 +737,11 @@ public final class TransformerEndToEndTest {
assertThat(illegalStateException.get()).isNotNull(); assertThat(illegalStateException.get()).isNotNull();
} }
private Transformer.Builder createTransformerBuilder(boolean disableFallback) { private Transformer.Builder createTransformerBuilder(boolean enableFallback) {
return new Transformer.Builder(context) return new Transformer.Builder(context)
.setClock(clock) .setClock(clock)
.setMuxerFactory(new TestMuxerFactory()) .setMuxerFactory(new TestMuxerFactory())
.setEncoderFactory(new DefaultEncoderFactory(EncoderSelector.DEFAULT, disableFallback)); .setEncoderFactory(new DefaultEncoderFactory(EncoderSelector.DEFAULT, enableFallback));
} }
private static void createEncodersAndDecoders() { private static void createEncodersAndDecoders() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment