From 0bc5ac24b0663b4f50ac300988a022d629034d82 Mon Sep 17 00:00:00 2001 From: tofunmi Date: Fri, 19 Apr 2024 10:16:06 -0700 Subject: [PATCH] Effect: remove duplicate inputColorInfo checks We currently check certain properties about inputColorInfo twice: once in checkColors in the DVFP and once when creating the samplers in the defaultshaderprogam. The inputcolorinfo shouldn't change between these two components so removing the checks in the shader program to have one source of truth for inputColorInfo checks, which will make the code simpler when it comes to adding to color-related features (like the ones related to removing de-gamma-ing) PiperOrigin-RevId: 626400960 --- .../java/androidx/media3/effect/DefaultShaderProgram.java | 4 ---- .../androidx/media3/effect/DefaultVideoFrameProcessor.java | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java b/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java index a5d5354a1a..905da71400 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultShaderProgram.java @@ -346,7 +346,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; checkArgument( outputColorTransfer == C.COLOR_TRANSFER_HLG || outputColorTransfer == C.COLOR_TRANSFER_ST2084); - checkArgument(enableColorTransfers); glProgram.setIntUniform("uOutputColorTransfer", outputColorTransfer); } else if (enableColorTransfers) { checkArgument( @@ -375,8 +374,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; && outputColorInfo.colorSpace == C.COLOR_SPACE_BT2020; @C.ColorTransfer int outputColorTransfer = outputColorInfo.colorTransfer; if (isInputTransferHdr) { - checkArgument(inputColorInfo.colorSpace == C.COLOR_SPACE_BT2020); - checkArgument(enableColorTransfers); // TODO(b/239735341): Add a setBooleanUniform method to GlProgram. checkArgument(outputColorTransfer != Format.NO_VALUE); if (outputColorTransfer == C.COLOR_TRANSFER_SDR) { @@ -386,7 +383,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } glProgram.setIntUniform("uOutputColorTransfer", outputColorTransfer); } else if (isExpandingColorGamut) { - checkArgument(enableColorTransfers); glProgram.setIntUniform("uOutputColorTransfer", outputColorTransfer); } else { glProgram.setIntUniform("uEnableColorTransfer", enableColorTransfers ? GL_TRUE : GL_FALSE); diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java index e05c807707..56c90579ca 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java @@ -889,6 +889,9 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor { private static void checkColors( ColorInfo inputColorInfo, ColorInfo outputColorInfo, boolean enableColorTransfers) throws VideoFrameProcessingException { + if (ColorInfo.isTransferHdr(inputColorInfo)) { + checkArgument(inputColorInfo.colorSpace == C.COLOR_SPACE_BT2020); + } if ((ColorInfo.isTransferHdr(inputColorInfo) || ColorInfo.isTransferHdr(outputColorInfo))) { checkArgument(enableColorTransfers); long glVersion;