HDR: Rename ColorInfo#isHdr to isTransferHdr.
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
This commit is contained in:
parent
7dc05edbab
commit
35161c7489
@ -90,7 +90,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;
|
||||
|
@ -218,7 +218,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
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 {
|
||||
|
@ -119,7 +119,7 @@ public final class GlEffectsFrameProcessor implements FrameProcessor {
|
||||
|
||||
// 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
|
||||
@ -197,7 +197,7 @@ public final class GlEffectsFrameProcessor implements FrameProcessor {
|
||||
sampleFromExternalTexture = false;
|
||||
}
|
||||
textureProcessorListBuilder.add(
|
||||
glEffect.toGlTextureProcessor(context, ColorInfo.isHdr(colorInfo)));
|
||||
glEffect.toGlTextureProcessor(context, ColorInfo.isTransferHdr(colorInfo)));
|
||||
}
|
||||
textureProcessorListBuilder.add(
|
||||
new FinalMatrixTransformationProcessorWrapper(
|
||||
|
@ -160,12 +160,12 @@ import java.util.Arrays;
|
||||
* 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.
|
||||
*/
|
||||
@ -180,11 +180,11 @@ import java.util.Arrays;
|
||||
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
|
||||
|
@ -283,7 +283,7 @@ public final class DefaultEncoderFactory implements Codec.EncoderFactory {
|
||||
}
|
||||
|
||||
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(
|
||||
|
@ -99,7 +99,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
|
||||
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,
|
||||
|
@ -156,8 +156,8 @@ import org.checkerframework.dataflow.qual.Pure;
|
||||
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);
|
||||
@ -363,7 +363,8 @@ import org.checkerframework.dataflow.qual.Pure;
|
||||
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.
|
||||
@ -413,7 +414,7 @@ import org.checkerframework.dataflow.qual.Pure;
|
||||
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"),
|
||||
@ -425,8 +426,8 @@ import org.checkerframework.dataflow.qual.Pure;
|
||||
}
|
||||
}
|
||||
boolean isInputToneMapped =
|
||||
ColorInfo.isHdr(inputFormat.colorInfo)
|
||||
&& !ColorInfo.isHdr(requestedEncoderFormat.colorInfo);
|
||||
ColorInfo.isTransferHdr(inputFormat.colorInfo)
|
||||
&& !ColorInfo.isTransferHdr(requestedEncoderFormat.colorInfo);
|
||||
fallbackListener.onTransformationRequestFinalized(
|
||||
createFallbackTransformationRequest(
|
||||
transformationRequest,
|
||||
|
Loading…
x
Reference in New Issue
Block a user