Commit 589b4a17 by samrobinson Committed by Ian Baker

Add force silent audio to the transformer demo application.

Adds a modified version of sample.mp4 to the list, which has no audio.

PiperOrigin-RevId: 492993918
parent f3832b33
...@@ -59,6 +59,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -59,6 +59,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
public static final String SHOULD_REMOVE_AUDIO = "should_remove_audio"; public static final String SHOULD_REMOVE_AUDIO = "should_remove_audio";
public static final String SHOULD_REMOVE_VIDEO = "should_remove_video"; public static final String SHOULD_REMOVE_VIDEO = "should_remove_video";
public static final String SHOULD_FLATTEN_FOR_SLOW_MOTION = "should_flatten_for_slow_motion"; public static final String SHOULD_FLATTEN_FOR_SLOW_MOTION = "should_flatten_for_slow_motion";
public static final String FORCE_SILENT_AUDIO = "force_silent_audio";
public static final String AUDIO_MIME_TYPE = "audio_mime_type"; public static final String AUDIO_MIME_TYPE = "audio_mime_type";
public static final String VIDEO_MIME_TYPE = "video_mime_type"; public static final String VIDEO_MIME_TYPE = "video_mime_type";
public static final String RESOLUTION_HEIGHT = "resolution_height"; public static final String RESOLUTION_HEIGHT = "resolution_height";
...@@ -103,6 +104,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -103,6 +104,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"https://storage.googleapis.com/exoplayer-test-media-1/gen/screens/dash-vod-single-segment/manifest-baseline.mpd", "https://storage.googleapis.com/exoplayer-test-media-1/gen/screens/dash-vod-single-segment/manifest-baseline.mpd",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/samsung-s21-hdr-hdr10.mp4", "https://storage.googleapis.com/exoplayer-test-media-1/mp4/samsung-s21-hdr-hdr10.mp4",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/Pixel7Pro_HLG_1080P.mp4", "https://storage.googleapis.com/exoplayer-test-media-1/mp4/Pixel7Pro_HLG_1080P.mp4",
"https://storage.googleapis.com/exoplayer-test-media-1/mp4/sample_video_track_only.mp4",
}; };
private static final String[] PRESET_FILE_URI_DESCRIPTIONS = { // same order as PRESET_FILE_URIS private static final String[] PRESET_FILE_URI_DESCRIPTIONS = { // same order as PRESET_FILE_URIS
"720p H264 video and AAC audio", "720p H264 video and AAC audio",
...@@ -119,6 +121,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -119,6 +121,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"480p DASH (non-square pixels)", "480p DASH (non-square pixels)",
"HDR (HDR10) H265 limited range video (encoding may fail)", "HDR (HDR10) H265 limited range video (encoding may fail)",
"HDR (HLG) H265 limited range video (encoding may fail)", "HDR (HLG) H265 limited range video (encoding may fail)",
"720p H264 video with no audio",
}; };
private static final String[] DEMO_EFFECTS = { private static final String[] DEMO_EFFECTS = {
"Dizzy crop", "Dizzy crop",
...@@ -157,6 +160,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -157,6 +160,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
private @MonotonicNonNull CheckBox removeAudioCheckbox; private @MonotonicNonNull CheckBox removeAudioCheckbox;
private @MonotonicNonNull CheckBox removeVideoCheckbox; private @MonotonicNonNull CheckBox removeVideoCheckbox;
private @MonotonicNonNull CheckBox flattenForSlowMotionCheckbox; private @MonotonicNonNull CheckBox flattenForSlowMotionCheckbox;
private @MonotonicNonNull CheckBox forceSilentAudioCheckbox;
private @MonotonicNonNull Spinner audioMimeSpinner; private @MonotonicNonNull Spinner audioMimeSpinner;
private @MonotonicNonNull Spinner videoMimeSpinner; private @MonotonicNonNull Spinner videoMimeSpinner;
private @MonotonicNonNull Spinner resolutionHeightSpinner; private @MonotonicNonNull Spinner resolutionHeightSpinner;
...@@ -193,7 +197,11 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -193,7 +197,11 @@ public final class ConfigurationActivity extends AppCompatActivity {
findViewById(R.id.transform_button).setOnClickListener(this::startTransformation); findViewById(R.id.transform_button).setOnClickListener(this::startTransformation);
flattenForSlowMotionCheckbox = findViewById(R.id.flatten_for_slow_motion_checkbox); selectPresetFileButton = findViewById(R.id.select_preset_file_button);
selectPresetFileButton.setOnClickListener(this::selectPresetFile);
selectLocalFileButton = findViewById(R.id.select_local_file_button);
selectLocalFileButton.setOnClickListener(this::selectLocalFile);
selectedFileTextView = findViewById(R.id.selected_file_text_view); selectedFileTextView = findViewById(R.id.selected_file_text_view);
selectedFileTextView.setText(PRESET_FILE_URI_DESCRIPTIONS[inputUriPosition]); selectedFileTextView.setText(PRESET_FILE_URI_DESCRIPTIONS[inputUriPosition]);
...@@ -204,11 +212,9 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -204,11 +212,9 @@ public final class ConfigurationActivity extends AppCompatActivity {
removeVideoCheckbox = findViewById(R.id.remove_video_checkbox); removeVideoCheckbox = findViewById(R.id.remove_video_checkbox);
removeVideoCheckbox.setOnClickListener(this::onRemoveVideo); removeVideoCheckbox.setOnClickListener(this::onRemoveVideo);
selectPresetFileButton = findViewById(R.id.select_preset_file_button); flattenForSlowMotionCheckbox = findViewById(R.id.flatten_for_slow_motion_checkbox);
selectPresetFileButton.setOnClickListener(this::selectPresetFile);
selectLocalFileButton = findViewById(R.id.select_local_file_button); forceSilentAudioCheckbox = findViewById(R.id.force_silent_audio_checkbox);
selectLocalFileButton.setOnClickListener(this::selectLocalFile);
ArrayAdapter<String> audioMimeAdapter = ArrayAdapter<String> audioMimeAdapter =
new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item); new ArrayAdapter<>(/* context= */ this, R.layout.spinner_item);
...@@ -315,6 +321,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -315,6 +321,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"removeAudioCheckbox", "removeAudioCheckbox",
"removeVideoCheckbox", "removeVideoCheckbox",
"flattenForSlowMotionCheckbox", "flattenForSlowMotionCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
...@@ -333,6 +340,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -333,6 +340,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
bundle.putBoolean(SHOULD_REMOVE_AUDIO, removeAudioCheckbox.isChecked()); bundle.putBoolean(SHOULD_REMOVE_AUDIO, removeAudioCheckbox.isChecked());
bundle.putBoolean(SHOULD_REMOVE_VIDEO, removeVideoCheckbox.isChecked()); bundle.putBoolean(SHOULD_REMOVE_VIDEO, removeVideoCheckbox.isChecked());
bundle.putBoolean(SHOULD_FLATTEN_FOR_SLOW_MOTION, flattenForSlowMotionCheckbox.isChecked()); bundle.putBoolean(SHOULD_FLATTEN_FOR_SLOW_MOTION, flattenForSlowMotionCheckbox.isChecked());
bundle.putBoolean(FORCE_SILENT_AUDIO, forceSilentAudioCheckbox.isChecked());
String selectedAudioMimeType = String.valueOf(audioMimeSpinner.getSelectedItem()); String selectedAudioMimeType = String.valueOf(audioMimeSpinner.getSelectedItem());
if (!SAME_AS_INPUT_OPTION.equals(selectedAudioMimeType)) { if (!SAME_AS_INPUT_OPTION.equals(selectedAudioMimeType)) {
bundle.putString(AUDIO_MIME_TYPE, selectedAudioMimeType); bundle.putString(AUDIO_MIME_TYPE, selectedAudioMimeType);
...@@ -596,6 +604,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -596,6 +604,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
@RequiresNonNull({ @RequiresNonNull({
"removeVideoCheckbox", "removeVideoCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
...@@ -616,6 +625,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -616,6 +625,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
@RequiresNonNull({ @RequiresNonNull({
"removeAudioCheckbox", "removeAudioCheckbox",
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
...@@ -635,6 +645,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -635,6 +645,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
} }
@RequiresNonNull({ @RequiresNonNull({
"forceSilentAudioCheckbox",
"audioMimeSpinner", "audioMimeSpinner",
"videoMimeSpinner", "videoMimeSpinner",
"resolutionHeightSpinner", "resolutionHeightSpinner",
...@@ -645,6 +656,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ...@@ -645,6 +656,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"selectDemoEffectsButton" "selectDemoEffectsButton"
}) })
private void enableTrackSpecificOptions(boolean isAudioEnabled, boolean isVideoEnabled) { private void enableTrackSpecificOptions(boolean isAudioEnabled, boolean isVideoEnabled) {
forceSilentAudioCheckbox.setEnabled(isVideoEnabled);
audioMimeSpinner.setEnabled(isAudioEnabled); audioMimeSpinner.setEnabled(isAudioEnabled);
videoMimeSpinner.setEnabled(isVideoEnabled); videoMimeSpinner.setEnabled(isVideoEnabled);
resolutionHeightSpinner.setEnabled(isVideoEnabled); resolutionHeightSpinner.setEnabled(isVideoEnabled);
......
...@@ -276,6 +276,8 @@ public final class TransformerActivity extends AppCompatActivity { ...@@ -276,6 +276,8 @@ public final class TransformerActivity extends AppCompatActivity {
.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))
.experimentalSetForceSilentAudio(
bundle.getBoolean(ConfigurationActivity.FORCE_SILENT_AUDIO))
.setEncoderFactory( .setEncoderFactory(
new DefaultEncoderFactory.Builder(this.getApplicationContext()) new DefaultEncoderFactory.Builder(this.getApplicationContext())
.setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK)) .setEnableFallback(bundle.getBoolean(ConfigurationActivity.ENABLE_FALLBACK))
......
...@@ -113,6 +113,15 @@ ...@@ -113,6 +113,15 @@
android:layout_gravity="end" /> android:layout_gravity="end" />
</TableRow> </TableRow>
<TableRow <TableRow
android:layout_weight="1">
<TextView
android:layout_gravity="center_vertical"
android:text="@string/force_silent_audio" />
<CheckBox
android:id="@+id/force_silent_audio_checkbox"
android:layout_gravity="end" />
</TableRow>
<TableRow
android:layout_weight="1" android:layout_weight="1"
android:gravity="center_vertical" > android:gravity="center_vertical" >
<TextView <TextView
......
...@@ -65,4 +65,5 @@ ...@@ -65,4 +65,5 @@
<string name="permission_denied">Permission Denied</string> <string name="permission_denied">Permission Denied</string>
<string name="hide_input_video">Hide input video</string> <string name="hide_input_video">Hide input video</string>
<string name="show_input_video">Show input video</string> <string name="show_input_video">Show input video</string>
<string name="force_silent_audio">Force silent audio</string>
</resources> </resources>
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