Skip to content

Commit

Permalink
HDR: Rename ColorInfo#isHdr to isTransferHdr.
Browse files Browse the repository at this point in the history
While HDR is most closely tied to the color transfer (ex.
COLOR_TRANSFER_SDR is the only one explicitly mentioning dynamic
range), technically color spaces may be associated with HDR as well,
like BT.2020 commonly being used for HDR rather than BT.709 for SDR.

Therefore, it's more specific to mention just that the transfer is HDR.

PiperOrigin-RevId: 466316960
  • Loading branch information
dway123 authored and marcbaechinger committed Oct 19, 2022
1 parent a2166a4 commit 7075f78
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ private synchronized boolean ensureConfigured(int inputWidth, int inputHeight)
SurfaceInfo outputSurfaceInfo = this.outputSurfaceInfo;
@Nullable EGLSurface outputEglSurface = this.outputEglSurface;
if (outputEglSurface == null) {
boolean colorInfoIsHdr = ColorInfo.isHdr(colorInfo);
boolean colorInfoIsHdr = ColorInfo.isTransferHdr(colorInfo);
if (colorInfoIsHdr) {
outputEglSurface = GlUtil.getEglSurfaceRgba1010102(eglDisplay, outputSurfaceInfo.surface);
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private static GlEffectsFrameProcessor createOpenGlObjectsAndFrameProcessor(

// TODO(b/237674316): Delay initialization of things requiring the colorInfo, to
// configure based on the color info from the decoder output media format instead.
boolean useHdr = ColorInfo.isHdr(colorInfo);
boolean useHdr = ColorInfo.isTransferHdr(colorInfo);
EGLDisplay eglDisplay = GlUtil.createEglDisplay();
EGLContext eglContext =
useHdr
Expand Down Expand Up @@ -195,7 +195,7 @@ private static ImmutableList<GlTextureProcessor> getGlTextureProcessorsForGlEffe
sampleFromExternalTexture = false;
}
textureProcessorListBuilder.add(
glEffect.toGlTextureProcessor(context, ColorInfo.isHdr(colorInfo)));
glEffect.toGlTextureProcessor(context, ColorInfo.isTransferHdr(colorInfo)));
}
textureProcessorListBuilder.add(
new FinalMatrixTransformationProcessorWrapper(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,12 @@ public MatrixTransformationProcessor(
* the external texture.
* @param opticalColorInfo The optical {@link ColorInfo}, only used to transform between color
* spaces and transfers, when {@code inputOpticalColorsFromExternalTexture} or {@code
* outputOpticalColors} are {@code true}. If it {@link ColorInfo#isHdr(ColorInfo)},
* outputOpticalColors} are {@code true}. If it {@link ColorInfo#isTransferHdr(ColorInfo)},
* intermediate {@link GlTextureProcessor} colors will be in linear RGB BT.2020. Otherwise,
* these colors will be in gamma RGB BT.709.
* @param outputOpticalColors If {@code true}, outputs {@code opticalColorInfo}. If {@code false},
* outputs intermediate colors of linear RGB BT.2020 if {@code opticalColorInfo} {@link
* ColorInfo#isHdr(ColorInfo)}, and gamma RGB BT.709 otherwise.
* ColorInfo#isTransferHdr(ColorInfo)}, and gamma RGB BT.709 otherwise.
* @throws FrameProcessingException If a problem occurs while reading shader files or an OpenGL
* operation fails or is unsupported.
*/
Expand All @@ -178,11 +178,11 @@ public MatrixTransformationProcessor(
createGlProgram(
context,
inputOpticalColorsFromExternalTexture,
ColorInfo.isHdr(opticalColorInfo),
ColorInfo.isTransferHdr(opticalColorInfo),
outputOpticalColors),
matrixTransformations,
ColorInfo.isHdr(opticalColorInfo));
if (!ColorInfo.isHdr(opticalColorInfo) || !inputOpticalColorsFromExternalTexture) {
ColorInfo.isTransferHdr(opticalColorInfo));
if (!ColorInfo.isTransferHdr(opticalColorInfo) || !inputOpticalColorsFromExternalTexture) {
return;
}
// TODO(b/227624622): Implement YUV to RGB conversions in COLOR_RANGE_LIMITED as well, using
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public final class ColorInfo implements Bundleable {
}

/** Returns whether the {@code ColorInfo} uses an HDR {@link C.ColorTransfer}. */
public static boolean isHdr(@Nullable ColorInfo colorInfo) {
public static boolean isTransferHdr(@Nullable ColorInfo colorInfo) {
return colorInfo != null
&& colorInfo.colorTransfer != Format.NO_VALUE
&& colorInfo.colorTransfer != C.COLOR_TRANSFER_SDR;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ public Codec createForVideoEncoding(Format format, List<String> allowedMimeTypes
}

MediaFormatUtil.maybeSetColorInfo(mediaFormat, encoderSupportedFormat.colorInfo);
if (Util.SDK_INT >= 31 && ColorInfo.isHdr(format.colorInfo)) {
if (Util.SDK_INT >= 31 && ColorInfo.isTransferHdr(format.colorInfo)) {
if (EncoderUtil.getSupportedColorFormats(encoderInfo, mimeType)
.contains(MediaCodecInfo.CodecCapabilities.COLOR_Format32bitABGR2101010)) {
mediaFormat.setInteger(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ protected boolean ensureConfigured() throws TransformationException {
return false;
}
Format inputFormat = checkNotNull(formatHolder.format);
if (SDK_INT < 31 && ColorInfo.isHdr(inputFormat.colorInfo)) {
if (SDK_INT < 31 && ColorInfo.isTransferHdr(inputFormat.colorInfo)) {
throw TransformationException.createForCodec(
new IllegalArgumentException("HDR editing not supported under API 31."),
/* isVideo= */ true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ public void onFrameProcessingEnded() {
decodedWidth, decodedHeight, inputFormat.pixelWidthHeightRatio, streamOffsetUs));

boolean isToneMappingRequired =
ColorInfo.isHdr(inputFormat.colorInfo)
&& !ColorInfo.isHdr(encoderWrapper.getSupportedInputColor());
ColorInfo.isTransferHdr(inputFormat.colorInfo)
&& !ColorInfo.isTransferHdr(encoderWrapper.getSupportedInputColor());
decoder =
decoderFactory.createForVideoDecoding(
inputFormat, frameProcessor.getInputSurface(), isToneMappingRequired);
Expand Down Expand Up @@ -363,7 +363,8 @@ public ColorInfo getSupportedInputColor() {
transformationRequest.enableHdrEditing
&& !transformationRequest.enableRequestSdrToneMapping
&& !supportedEncoderNamesForHdrEditing.isEmpty();
boolean isInputToneMapped = !isHdrEditingEnabled && ColorInfo.isHdr(inputFormat.colorInfo);
boolean isInputToneMapped =
!isHdrEditingEnabled && ColorInfo.isTransferHdr(inputFormat.colorInfo);
if (isInputToneMapped) {
// When tone-mapping HDR to SDR is enabled, assume we get BT.709 to avoid having the encoder
// populate default color info, which depends on the resolution.
Expand Down Expand Up @@ -413,7 +414,7 @@ public SurfaceInfo getSurfaceInfo(int requestedWidth, int requestedHeight)
encoderFactory.createForVideoEncoding(requestedEncoderFormat, allowedOutputMimeTypes);

Format encoderSupportedFormat = encoder.getConfigurationFormat();
if (ColorInfo.isHdr(requestedEncoderFormat.colorInfo)) {
if (ColorInfo.isTransferHdr(requestedEncoderFormat.colorInfo)) {
if (!requestedOutputMimeType.equals(encoderSupportedFormat.sampleMimeType)) {
throw createEncodingException(
new IllegalStateException("MIME type fallback unsupported with HDR editing"),
Expand All @@ -425,8 +426,8 @@ public SurfaceInfo getSurfaceInfo(int requestedWidth, int requestedHeight)
}
}
boolean isInputToneMapped =
ColorInfo.isHdr(inputFormat.colorInfo)
&& !ColorInfo.isHdr(requestedEncoderFormat.colorInfo);
ColorInfo.isTransferHdr(inputFormat.colorInfo)
&& !ColorInfo.isTransferHdr(requestedEncoderFormat.colorInfo);
fallbackListener.onTransformationRequestFinalized(
createFallbackTransformationRequest(
transformationRequest,
Expand Down

0 comments on commit 7075f78

Please sign in to comment.