From 20518cc151d121a8d34e632105c86eb59f8c9f27 Mon Sep 17 00:00:00 2001 From: leonwind Date: Fri, 23 Sep 2022 15:11:52 +0000 Subject: [PATCH] Add HSL Adjustments to the demo. PiperOrigin-RevId: 476373520 (cherry picked from commit 7626f70cef1e6a431fbe2773a3a930904a67c803) --- .../transformer/ConfigurationActivity.java | 40 +++++++++- .../demo/transformer/TransformerActivity.java | 12 ++- .../res/layout/hsl_adjustment_options.xml | 73 +++++++++++++++++++ .../src/main/res/values/strings.xml | 4 + 4 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 demos/transformer/src/main/res/layout/hsl_adjustment_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 d68050b966..1e633f1425 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 @@ -72,6 +72,9 @@ public final class ConfigurationActivity extends AppCompatActivity { public static final String RGB_ADJUSTMENT_RED_SCALE = "rgb_adjustment_red_scale"; public static final String RGB_ADJUSTMENT_GREEN_SCALE = "rgb_adjustment_green_scale"; public static final String RGB_ADJUSTMENT_BLUE_SCALE = "rgb_adjustment_blue_scale"; + public static final String HSL_ADJUSTMENTS_HUE = "hsl_adjustments_hue"; + public static final String HSL_ADJUSTMENTS_SATURATION = "hsl_adjustments_saturation"; + public static final String HSL_ADJUSTMENTS_LIGHTNESS = "hsl_adjustments_lightness"; public static final int COLOR_FILTER_GRAYSCALE = 0; public static final int COLOR_FILTER_INVERTED = 1; public static final int COLOR_FILTER_SEPIA = 2; @@ -110,6 +113,7 @@ public final class ConfigurationActivity extends AppCompatActivity { "Edge detector (Media Pipe)", "Color filters", "RGB Adjustments", + "HSL Adjustments", "Contrast", "Periodic vignette", "3D spin", @@ -118,8 +122,9 @@ public final class ConfigurationActivity extends AppCompatActivity { }; private static final int COLOR_FILTERS_INDEX = 2; private static final int RGB_ADJUSTMENTS_INDEX = 3; - private static final int CONTRAST_INDEX = 4; - private static final int PERIODIC_VIGNETTE_INDEX = 5; + private static final int HSL_ADJUSTMENT_INDEX = 4; + private static final int CONTRAST_INDEX = 5; + private static final int PERIODIC_VIGNETTE_INDEX = 6; private static final String SAME_AS_INPUT_OPTION = "same as input"; private static final float HALF_DIAGONAL = 1f / (float) Math.sqrt(2); @@ -148,6 +153,9 @@ public final class ConfigurationActivity extends AppCompatActivity { private float rgbAdjustmentGreenScale; private float rgbAdjustmentBlueScale; private float contrastValue; + private float hueAdjustment; + private float saturationAdjustment; + private float lightnessAdjustment; private float periodicVignetteCenterX; private float periodicVignetteCenterY; private float periodicVignetteInnerRadius; @@ -308,6 +316,9 @@ public final class ConfigurationActivity extends AppCompatActivity { bundle.putFloat(RGB_ADJUSTMENT_RED_SCALE, rgbAdjustmentRedScale); bundle.putFloat(RGB_ADJUSTMENT_GREEN_SCALE, rgbAdjustmentGreenScale); bundle.putFloat(RGB_ADJUSTMENT_BLUE_SCALE, rgbAdjustmentBlueScale); + bundle.putFloat(HSL_ADJUSTMENTS_HUE, hueAdjustment); + bundle.putFloat(HSL_ADJUSTMENTS_SATURATION, saturationAdjustment); + bundle.putFloat(HSL_ADJUSTMENTS_LIGHTNESS, lightnessAdjustment); bundle.putFloat(PERIODIC_VIGNETTE_CENTER_X, periodicVignetteCenterX); bundle.putFloat(PERIODIC_VIGNETTE_CENTER_Y, periodicVignetteCenterY); bundle.putFloat(PERIODIC_VIGNETTE_INNER_RADIUS, periodicVignetteInnerRadius); @@ -384,6 +395,9 @@ public final class ConfigurationActivity extends AppCompatActivity { case CONTRAST_INDEX: controlContrastSettings(); break; + case HSL_ADJUSTMENT_INDEX: + controlHslAdjustmentSettings(); + break; case PERIODIC_VIGNETTE_INDEX: controlPeriodicVignetteSettings(); break; @@ -441,6 +455,28 @@ public final class ConfigurationActivity extends AppCompatActivity { .show(); } + private void controlHslAdjustmentSettings() { + View dialogView = + getLayoutInflater().inflate(R.layout.hsl_adjustment_options, /* root= */ null); + Slider hueAdjustmentSlider = checkNotNull(dialogView.findViewById(R.id.hsl_adjustments_hue)); + Slider saturationAdjustmentSlider = + checkNotNull(dialogView.findViewById(R.id.hsl_adjustments_saturation)); + Slider lightnessAdjustmentSlider = + checkNotNull(dialogView.findViewById(R.id.hsl_adjustment_lightness)); + new AlertDialog.Builder(/* context= */ this) + .setTitle(R.string.hsl_adjustment_options) + .setView(dialogView) + .setPositiveButton( + android.R.string.ok, + (DialogInterface dialogInterface, int i) -> { + hueAdjustment = hueAdjustmentSlider.getValue(); + saturationAdjustment = saturationAdjustmentSlider.getValue(); + lightnessAdjustment = lightnessAdjustmentSlider.getValue(); + }) + .create() + .show(); + } + private void controlPeriodicVignetteSettings() { View dialogView = getLayoutInflater().inflate(R.layout.periodic_vignette_options, /* root= */ null); 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 eb0dde452f..0428d301af 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 @@ -44,6 +44,7 @@ import androidx.media3.common.util.Util; import androidx.media3.effect.Contrast; import androidx.media3.effect.GlEffect; import androidx.media3.effect.GlTextureProcessor; +import androidx.media3.effect.HslAdjustment; import androidx.media3.effect.RgbAdjustment; import androidx.media3.effect.RgbFilter; import androidx.media3.effect.RgbMatrix; @@ -344,9 +345,18 @@ public final class TransformerActivity extends AppCompatActivity { .build()); } if (selectedEffects[4]) { - effects.add(new Contrast(bundle.getFloat(ConfigurationActivity.CONTRAST_VALUE))); + effects.add( + new HslAdjustment.Builder() + .adjustHue(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_HUE)) + .adjustSaturation( + bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_SATURATION)) + .adjustLightness(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_LIGHTNESS)) + .build()); } if (selectedEffects[5]) { + effects.add(new Contrast(bundle.getFloat(ConfigurationActivity.CONTRAST_VALUE))); + } + if (selectedEffects[6]) { effects.add( (GlEffect) (Context context, boolean useHdr) -> diff --git a/demos/transformer/src/main/res/layout/hsl_adjustment_options.xml b/demos/transformer/src/main/res/layout/hsl_adjustment_options.xml new file mode 100644 index 0000000000..7b847ad871 --- /dev/null +++ b/demos/transformer/src/main/res/layout/hsl_adjustment_options.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + diff --git a/demos/transformer/src/main/res/values/strings.xml b/demos/transformer/src/main/res/values/strings.xml index db04cb5885..8f94de797c 100644 --- a/demos/transformer/src/main/res/values/strings.xml +++ b/demos/transformer/src/main/res/values/strings.xml @@ -55,4 +55,8 @@ Center X Center Y Radius range + HSL Adjustment Options + Hue Adjustment + Saturation Adjustment + Lightness Adjustment