Add example CLUT to demo.

PiperOrigin-RevId: 476390089
(cherry picked from commit 29cf09316e)
This commit is contained in:
leonwind 2022-09-23 16:28:25 +00:00 committed by microkatz
parent 0a1f30aba5
commit 8b807432ca
2 changed files with 28 additions and 10 deletions

View file

@ -112,6 +112,7 @@ public final class ConfigurationActivity extends AppCompatActivity {
"Dizzy crop", "Dizzy crop",
"Edge detector (Media Pipe)", "Edge detector (Media Pipe)",
"Color filters", "Color filters",
"Map White to Green Color Lookup Table",
"RGB Adjustments", "RGB Adjustments",
"HSL Adjustments", "HSL Adjustments",
"Contrast", "Contrast",
@ -121,10 +122,10 @@ public final class ConfigurationActivity extends AppCompatActivity {
"Zoom in start", "Zoom in start",
}; };
private static final int COLOR_FILTERS_INDEX = 2; private static final int COLOR_FILTERS_INDEX = 2;
private static final int RGB_ADJUSTMENTS_INDEX = 3; private static final int RGB_ADJUSTMENTS_INDEX = 4;
private static final int HSL_ADJUSTMENT_INDEX = 4; private static final int HSL_ADJUSTMENT_INDEX = 5;
private static final int CONTRAST_INDEX = 5; private static final int CONTRAST_INDEX = 6;
private static final int PERIODIC_VIGNETTE_INDEX = 6; private static final int PERIODIC_VIGNETTE_INDEX = 7;
private static final String SAME_AS_INPUT_OPTION = "same as input"; private static final String SAME_AS_INPUT_OPTION = "same as input";
private static final float HALF_DIAGONAL = 1f / (float) Math.sqrt(2); private static final float HALF_DIAGONAL = 1f / (float) Math.sqrt(2);

View file

@ -23,6 +23,7 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -44,6 +45,7 @@ import androidx.media3.effect.HslAdjustment;
import androidx.media3.effect.RgbAdjustment; import androidx.media3.effect.RgbAdjustment;
import androidx.media3.effect.RgbFilter; import androidx.media3.effect.RgbFilter;
import androidx.media3.effect.RgbMatrix; import androidx.media3.effect.RgbMatrix;
import androidx.media3.effect.SingleColorLut;
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;
@ -338,6 +340,21 @@ public final class TransformerActivity extends AppCompatActivity {
} }
} }
if (selectedEffects[3]) { if (selectedEffects[3]) {
int length = 3;
int[][][] mapWhiteToGreenLut = new int[length][length][length];
int scale = 255 / (length - 1);
for (int r = 0; r < length; r++) {
for (int g = 0; g < length; g++) {
for (int b = 0; b < length; b++) {
mapWhiteToGreenLut[r][g][b] =
Color.rgb(/* red= */ r * scale, /* green= */ g * scale, /* blue= */ b * scale);
}
}
}
mapWhiteToGreenLut[length - 1][length - 1][length - 1] = Color.GREEN;
effects.add(SingleColorLut.createFromCube(mapWhiteToGreenLut));
}
if (selectedEffects[4]) {
effects.add( effects.add(
new RgbAdjustment.Builder() new RgbAdjustment.Builder()
.setRedScale(bundle.getFloat(ConfigurationActivity.RGB_ADJUSTMENT_RED_SCALE)) .setRedScale(bundle.getFloat(ConfigurationActivity.RGB_ADJUSTMENT_RED_SCALE))
@ -345,7 +362,7 @@ public final class TransformerActivity extends AppCompatActivity {
.setBlueScale(bundle.getFloat(ConfigurationActivity.RGB_ADJUSTMENT_BLUE_SCALE)) .setBlueScale(bundle.getFloat(ConfigurationActivity.RGB_ADJUSTMENT_BLUE_SCALE))
.build()); .build());
} }
if (selectedEffects[4]) { if (selectedEffects[5]) {
effects.add( effects.add(
new HslAdjustment.Builder() new HslAdjustment.Builder()
.adjustHue(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_HUE)) .adjustHue(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_HUE))
@ -354,10 +371,10 @@ public final class TransformerActivity extends AppCompatActivity {
.adjustLightness(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_LIGHTNESS)) .adjustLightness(bundle.getFloat(ConfigurationActivity.HSL_ADJUSTMENTS_LIGHTNESS))
.build()); .build());
} }
if (selectedEffects[5]) { if (selectedEffects[6]) {
effects.add(new Contrast(bundle.getFloat(ConfigurationActivity.CONTRAST_VALUE))); effects.add(new Contrast(bundle.getFloat(ConfigurationActivity.CONTRAST_VALUE)));
} }
if (selectedEffects[6]) { if (selectedEffects[7]) {
effects.add( effects.add(
(GlEffect) (GlEffect)
(Context context, boolean useHdr) -> (Context context, boolean useHdr) ->
@ -372,13 +389,13 @@ public final class TransformerActivity extends AppCompatActivity {
ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS), ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS),
bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS))); bundle.getFloat(ConfigurationActivity.PERIODIC_VIGNETTE_OUTER_RADIUS)));
} }
if (selectedEffects[6]) { if (selectedEffects[8]) {
effects.add(MatrixTransformationFactory.createSpin3dEffect()); effects.add(MatrixTransformationFactory.createSpin3dEffect());
} }
if (selectedEffects[7]) { if (selectedEffects[9]) {
effects.add((GlEffect) BitmapOverlayProcessor::new); effects.add((GlEffect) BitmapOverlayProcessor::new);
} }
if (selectedEffects[8]) { if (selectedEffects[10]) {
effects.add(MatrixTransformationFactory.createZoomInTransition()); effects.add(MatrixTransformationFactory.createZoomInTransition());
} }
transformerBuilder.setVideoEffects(effects.build()); transformerBuilder.setVideoEffects(effects.build());