disable transfer colors in DefaultShaderProgram.createApplyingOetf

PiperOrigin-RevId: 522347729
This commit is contained in:
tofunmi 2023-04-06 16:53:40 +01:00 committed by Ian Baker
parent 24ca6828eb
commit 54ebfa986a
2 changed files with 22 additions and 9 deletions

View File

@ -294,7 +294,8 @@ import java.util.List;
Context context,
List<GlMatrixTransformation> matrixTransformations,
List<RgbMatrix> rgbMatrices,
ColorInfo outputColorInfo)
ColorInfo outputColorInfo,
boolean enableColorTransfers)
throws VideoFrameProcessingException {
boolean outputIsHdr = ColorInfo.isTransferHdr(outputColorInfo);
String vertexShaderFilePath =
@ -303,6 +304,9 @@ import java.util.List;
outputIsHdr
? FRAGMENT_SHADER_OETF_ES3_PATH
: FRAGMENT_SHADER_TRANSFORMATION_SDR_OETF_ES2_PATH;
if (!enableColorTransfers) {
fragmentShaderFilePath = FRAGMENT_SHADER_TRANSFORMATION_PATH;
}
GlProgram glProgram = createGlProgram(context, vertexShaderFilePath, fragmentShaderFilePath);
@C.ColorTransfer int outputColorTransfer = outputColorInfo.colorTransfer;
@ -310,8 +314,9 @@ import java.util.List;
checkArgument(
outputColorTransfer == C.COLOR_TRANSFER_HLG
|| outputColorTransfer == C.COLOR_TRANSFER_ST2084);
checkArgument(enableColorTransfers);
glProgram.setIntUniform("uOutputColorTransfer", outputColorTransfer);
} else {
} else if (enableColorTransfers) {
checkArgument(
outputColorTransfer == C.COLOR_TRANSFER_SDR
|| outputColorTransfer == C.COLOR_TRANSFER_GAMMA_2_2);

View File

@ -509,7 +509,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
} else {
defaultShaderProgram =
DefaultShaderProgram.createApplyingOetf(
context, expandedMatrixTransformations, rgbMatrices, outputColorInfo);
context,
expandedMatrixTransformations,
rgbMatrices,
outputColorInfo,
enableColorTransfers);
}
defaultShaderProgram.setTextureTransformMatrix(textureTransformMatrix);
@ -527,12 +531,16 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
.maybeRenderToSurfaceView(
() -> {
GlUtil.clearOutputFrame();
if (enableColorTransfers) {
@C.ColorTransfer
int configuredColorTransfer = defaultShaderProgram.getOutputColorTransfer();
defaultShaderProgram.setOutputColorTransfer(
debugSurfaceViewWrapper.outputColorTransfer);
defaultShaderProgram.drawFrame(inputTexture.texId, presentationTimeUs);
defaultShaderProgram.setOutputColorTransfer(configuredColorTransfer);
} else {
defaultShaderProgram.drawFrame(inputTexture.texId, presentationTimeUs);
}
},
glObjectsProvider);
} catch (VideoFrameProcessingException | GlUtil.GlException e) {