From 6da70c842e9cccf0d644107e711e728a0c32320a Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 25 Aug 2023 09:58:03 -0700 Subject: [PATCH] Overlay: Rename alpha to alphaScale. The actual logic scales the alpha, instead of setting it, so rename this to what it does. We would also prefer alpha to be scaled here, to not lose alpha information (for example for PNGs with transparent regions). PiperOrigin-RevId: 560121708 --- .../demo/transformer/TransformerActivity.java | 4 ++-- .../effect/OverlayShaderProgramPixelTest.java | 6 ++--- .../media3/effect/OverlaySettings.java | 22 +++++++++---------- .../media3/effect/OverlayShaderProgram.java | 7 +++--- 4 files changed, 20 insertions(+), 19 deletions(-) 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 b3f6204814..61a23601dc 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 @@ -617,7 +617,7 @@ public final class TransformerActivity extends AppCompatActivity { if (selectedEffects[ConfigurationActivity.BITMAP_OVERLAY_INDEX]) { OverlaySettings overlaySettings = new OverlaySettings.Builder() - .setAlpha( + .setAlphaScale( bundle.getFloat( ConfigurationActivity.BITMAP_OVERLAY_ALPHA, /* defaultValue= */ 1)) .build(); @@ -631,7 +631,7 @@ public final class TransformerActivity extends AppCompatActivity { if (selectedEffects[ConfigurationActivity.TEXT_OVERLAY_INDEX]) { OverlaySettings overlaySettings = new OverlaySettings.Builder() - .setAlpha( + .setAlphaScale( bundle.getFloat(ConfigurationActivity.TEXT_OVERLAY_ALPHA, /* defaultValue= */ 1)) .build(); SpannableString overlayText = diff --git a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java index 7722a9a246..a9a46867ee 100644 --- a/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java +++ b/libraries/effect/src/androidTest/java/androidx/media3/effect/OverlayShaderProgramPixelTest.java @@ -253,7 +253,7 @@ public class OverlayShaderProgramPixelTest { @RequiresNonNull("testId") public void drawFrame_translucentBitmapOverlay_blendsBitmapIntoFrame() throws Exception { Bitmap bitmap = readBitmap(OVERLAY_PNG_ASSET_PATH); - OverlaySettings overlaySettings = new OverlaySettings.Builder().setAlpha(0.5f).build(); + OverlaySettings overlaySettings = new OverlaySettings.Builder().setAlphaScale(0.5f).build(); BitmapOverlay translucentBitmapOverlay = BitmapOverlay.createStaticBitmapOverlay(bitmap, overlaySettings); overlayShaderProgram = @@ -277,7 +277,7 @@ public class OverlayShaderProgramPixelTest { @RequiresNonNull("testId") public void drawFrame_transparentTextOverlay_blendsBitmapIntoFrame() throws Exception { SpannableString overlayText = new SpannableString(/* source= */ "Text styling"); - OverlaySettings overlaySettings = new OverlaySettings.Builder().setAlpha(0f).build(); + OverlaySettings overlaySettings = new OverlaySettings.Builder().setAlphaScale(0f).build(); overlayText.setSpan( new ForegroundColorSpan(Color.GRAY), /* start= */ 0, @@ -400,7 +400,7 @@ public class OverlayShaderProgramPixelTest { new OverlaySettings.Builder().setVideoFrameAnchor(0.5f, 0.5f).build(); TextOverlay textOverlay = TextOverlay.createStaticTextOverlay(overlayText, overlaySettings1); Bitmap bitmap = readBitmap(OVERLAY_PNG_ASSET_PATH); - OverlaySettings overlaySettings2 = new OverlaySettings.Builder().setAlpha(0.5f).build(); + OverlaySettings overlaySettings2 = new OverlaySettings.Builder().setAlphaScale(0.5f).build(); BitmapOverlay bitmapOverlay = BitmapOverlay.createStaticBitmapOverlay(bitmap, overlaySettings2); overlayShaderProgram = new OverlayEffect(ImmutableList.of(textOverlay, bitmapOverlay)) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/OverlaySettings.java b/libraries/effect/src/main/java/androidx/media3/effect/OverlaySettings.java index 35e947c7e8..18b3f5881c 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/OverlaySettings.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/OverlaySettings.java @@ -26,7 +26,7 @@ import com.google.errorprone.annotations.CanIgnoreReturnValue; @UnstableApi public final class OverlaySettings { public final boolean useHdr; - public final float alpha; + public final float alphaScale; public final Pair videoFrameAnchor; public final Pair overlayAnchor; public final Pair scale; @@ -34,13 +34,13 @@ public final class OverlaySettings { private OverlaySettings( boolean useHdr, - float alpha, + float alphaScale, Pair videoFrameAnchor, Pair overlayAnchor, Pair scale, float rotationDegrees) { this.useHdr = useHdr; - this.alpha = alpha; + this.alphaScale = alphaScale; this.videoFrameAnchor = videoFrameAnchor; this.overlayAnchor = overlayAnchor; this.scale = scale; @@ -50,7 +50,7 @@ public final class OverlaySettings { /** A builder for {@link OverlaySettings} instances. */ public static final class Builder { private boolean useHdr; - private float alpha; + private float alphaScale; private Pair videoFrameAnchor; private Pair overlayAnchor; private Pair scale; @@ -58,7 +58,7 @@ public final class OverlaySettings { /** Creates a new {@link Builder}. */ public Builder() { - alpha = 1f; + alphaScale = 1f; videoFrameAnchor = Pair.create(0f, 0f); overlayAnchor = Pair.create(0f, 0f); scale = Pair.create(1f, 1f); @@ -80,15 +80,15 @@ public final class OverlaySettings { /** * Sets the alpha scale value of the overlay, altering its translucency. * - *

An {@code alpha} value of {@code 1} means no change is applied. A value below {@code 1} - * increases translucency, and a value above {@code 1} reduces translucency. + *

An {@code alphaScale} value of {@code 1} means no change is applied. A value below {@code + * 1} increases translucency, and a value above {@code 1} reduces translucency. * *

Set to always return {@code 1} by default. */ @CanIgnoreReturnValue - public Builder setAlpha(@FloatRange(from = 0) float alpha) { - checkArgument(0 <= alpha, "Alpha needs to be more than or equal to zero."); - this.alpha = alpha; + public Builder setAlphaScale(@FloatRange(from = 0) float alphaScale) { + checkArgument(0 <= alphaScale, "alphaScale needs to be greater than or equal to zero."); + this.alphaScale = alphaScale; return this; } @@ -165,7 +165,7 @@ public final class OverlaySettings { /** Creates an instance of {@link OverlaySettings}, using defaults if values are unset. */ public OverlaySettings build() { return new OverlaySettings( - useHdr, alpha, videoFrameAnchor, overlayAnchor, scale, rotationDegrees); + useHdr, alphaScale, videoFrameAnchor, overlayAnchor, scale, rotationDegrees); } } } diff --git a/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java index f1faa82cb3..3346cdbd8e 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/OverlayShaderProgram.java @@ -276,7 +276,8 @@ import com.google.common.collect.ImmutableList; Util.formatInvariant("uTransformationMatrix%d", texUnitIndex), transformationMatrix); glProgram.setFloatUniform( - Util.formatInvariant("uOverlayAlpha%d", texUnitIndex), overlaySettings.alpha); + Util.formatInvariant("uOverlayAlphaScale%d", texUnitIndex), + overlaySettings.alphaScale); } } glProgram.setSamplerTexIdUniform("uVideoTexSampler0", inputTexId, /* texUnitIndex= */ 0); @@ -387,7 +388,7 @@ import com.google.common.collect.ImmutableList; for (int texUnitIndex = 1; texUnitIndex <= numOverlays; texUnitIndex++) { shader .append(Util.formatInvariant("uniform sampler2D uOverlayTexSampler%d;\n", texUnitIndex)) - .append(Util.formatInvariant("uniform float uOverlayAlpha%d;\n", texUnitIndex)) + .append(Util.formatInvariant("uniform float uOverlayAlphaScale%d;\n", texUnitIndex)) .append(Util.formatInvariant("varying vec2 vOverlayTexSamplingCoord%d;\n", texUnitIndex)); } @@ -405,7 +406,7 @@ import com.google.common.collect.ImmutableList; texUnitIndex)) .append( Util.formatInvariant( - " uOverlayTexSampler%d, vOverlayTexSamplingCoord%d, uOverlayAlpha%d);\n", + " uOverlayTexSampler%d, vOverlayTexSamplingCoord%d, uOverlayAlphaScale%d);\n", texUnitIndex, texUnitIndex, texUnitIndex)) .append(Util.formatInvariant(" vec4 opticalOverlayColor%d = vec4(\n", texUnitIndex)) .append(