From 3fae9df8a9a1ab844d65a2336fc75a57e53d78d2 Mon Sep 17 00:00:00 2001 From: leonwind Date: Fri, 29 Jul 2022 11:30:44 +0000 Subject: [PATCH] Add slider option for contrast in demo app PiperOrigin-RevId: 464050072 --- .../transformer/ConfigurationActivity.java | 35 +++++++++++-- .../demo/transformer/TransformerActivity.java | 13 +++-- .../src/main/res/layout/contrast_options.xml | 49 +++++++++++++++++++ .../src/main/res/values/strings.xml | 3 +- 4 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 demos/transformer/src/main/res/layout/contrast_options.xml diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/ConfigurationActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/ConfigurationActivity.java index 3f21bcdcfb..b6fd239d2c 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/ConfigurationActivity.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/ConfigurationActivity.java @@ -67,6 +67,7 @@ public final class ConfigurationActivity extends AppCompatActivity { public static final String PERIODIC_VIGNETTE_CENTER_Y = "periodic_vignette_center_y"; public static final String PERIODIC_VIGNETTE_INNER_RADIUS = "periodic_vignette_inner_radius"; public static final String PERIODIC_VIGNETTE_OUTER_RADIUS = "periodic_vignette_outer_radius"; + public static final String CONTRAST_VALUE = "contrast_value"; private static final String[] INPUT_URIS = { "https://storage.googleapis.com/exoplayer-test-media-1/mp4/android-screens-10s.mp4", "https://storage.googleapis.com/exoplayer-test-media-0/android-block-1080-hevc.mp4", @@ -100,13 +101,14 @@ public final class ConfigurationActivity extends AppCompatActivity { private static final String[] DEMO_EFFECTS = { "Dizzy crop", "Edge detector (Media Pipe)", + "Contrast", "Periodic vignette", "3D spin", "Overlay logo & timer", "Zoom in start", - "Increase contrast" }; - private static final int PERIODIC_VIGNETTE_INDEX = 2; + private static final int CONTRAST_INDEX = 2; + private static final int PERIODIC_VIGNETTE_INDEX = 3; private static final String SAME_AS_INPUT_OPTION = "same as input"; private static final float HALF_DIAGONAL = 1f / (float) Math.sqrt(2); @@ -130,6 +132,7 @@ public final class ConfigurationActivity extends AppCompatActivity { private int inputUriPosition; private long trimStartMs; private long trimEndMs; + private float contrastValue; private float periodicVignetteCenterX; private float periodicVignetteCenterY; private float periodicVignetteInnerRadius; @@ -285,6 +288,7 @@ public final class ConfigurationActivity extends AppCompatActivity { ENABLE_REQUEST_SDR_TONE_MAPPING, enableRequestSdrToneMappingCheckBox.isChecked()); bundle.putBoolean(ENABLE_HDR_EDITING, enableHdrEditingCheckBox.isChecked()); bundle.putBooleanArray(DEMO_EFFECTS_SELECTIONS, demoEffectsSelections); + bundle.putFloat(CONTRAST_VALUE, contrastValue); bundle.putFloat(PERIODIC_VIGNETTE_CENTER_X, periodicVignetteCenterX); bundle.putFloat(PERIODIC_VIGNETTE_CENTER_Y, periodicVignetteCenterY); bundle.putFloat(PERIODIC_VIGNETTE_INNER_RADIUS, periodicVignetteInnerRadius); @@ -347,10 +351,35 @@ public final class ConfigurationActivity extends AppCompatActivity { @RequiresNonNull("demoEffectsSelections") private void selectDemoEffect(DialogInterface dialog, int which, boolean isChecked) { demoEffectsSelections[which] = isChecked; - if (!isChecked || which != PERIODIC_VIGNETTE_INDEX) { + if (!isChecked) { return; } + switch (which) { + case CONTRAST_INDEX: + controlContrastSettings(); + break; + case PERIODIC_VIGNETTE_INDEX: + controlPeriodicVignetteSettings(); + break; + } + } + + private void controlContrastSettings() { + View dialogView = getLayoutInflater().inflate(R.layout.contrast_options, /* root= */ null); + Slider contrastSlider = checkNotNull(dialogView.findViewById(R.id.contrast_slider)); + new AlertDialog.Builder(/* context= */ this) + .setView(dialogView) + .setPositiveButton( + android.R.string.ok, + (DialogInterface dialogInterface, int i) -> { + contrastValue = contrastSlider.getValue(); + }) + .create() + .show(); + } + + private void controlPeriodicVignetteSettings() { View dialogView = getLayoutInflater().inflate(R.layout.periodic_vignette_options, /* root= */ null); Slider centerXSlider = diff --git a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java index bc0e3fdfb9..d9ae5d5a3a 100644 --- a/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java +++ b/demos/transformer/src/main/java/androidx/media3/demo/transformer/TransformerActivity.java @@ -301,6 +301,9 @@ public final class TransformerActivity extends AppCompatActivity { } } if (selectedEffects[2]) { + effects.add(new Contrast(bundle.getFloat(ConfigurationActivity.CONTRAST_VALUE))); + } + if (selectedEffects[3]) { effects.add( (GlEffect) (Context context, boolean useHdr) -> @@ -315,18 +318,14 @@ public final class TransformerActivity extends AppCompatActivity { ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS), bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS))); } - if (selectedEffects[3]) { + if (selectedEffects[4]) { effects.add(MatrixTransformationFactory.createSpin3dEffect()); } - if (selectedEffects[4]) { + if (selectedEffects[5]) { effects.add((GlEffect) BitmapOverlayProcessor::new); } - if (selectedEffects[5]) { - effects.add(MatrixTransformationFactory.createZoomInTransition()); - } if (selectedEffects[6]) { - // TODO(b/238630175): Add slider for contrast adjustments. - effects.add(new Contrast(0.75f)); + effects.add(MatrixTransformationFactory.createZoomInTransition()); } transformerBuilder.setVideoEffects(effects.build()); } diff --git a/demos/transformer/src/main/res/layout/contrast_options.xml b/demos/transformer/src/main/res/layout/contrast_options.xml new file mode 100644 index 0000000000..4ccfdc0db5 --- /dev/null +++ b/demos/transformer/src/main/res/layout/contrast_options.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + diff --git a/demos/transformer/src/main/res/values/strings.xml b/demos/transformer/src/main/res/values/strings.xml index 69b68cded8..a1d40b5c0b 100644 --- a/demos/transformer/src/main/res/values/strings.xml +++ b/demos/transformer/src/main/res/values/strings.xml @@ -41,8 +41,9 @@ Transformation started %d seconds ago. Transformation completed in %d seconds. Transformation error + Bounds in seconds + Contrast value Center X Center Y Radius range - Bounds in seconds