From cebe6d8ba573c2a636426b18c01837fbec6b00aa Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Wed, 31 Jan 2024 10:04:23 -0800 Subject: [PATCH] HDR: Don't assume that swapping between BT709 and BT601 needs tone-map. VideoFrameProcessor treats BT601 and BT709 as roughly equivalent now, so we shouldn't be making checks that assume BT709 <-> requires tone-mapping. Also, the color transfer is a better determinant for tone-mapping than color range, so use just the transfer to determine if tone-mapping is required. PiperOrigin-RevId: 603083100 --- .../androidx/media3/effect/DefaultVideoFrameProcessor.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 c6fcaa4039..08c2d8731c 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DefaultVideoFrameProcessor.java @@ -869,8 +869,7 @@ public final class DefaultVideoFrameProcessor implements VideoFrameProcessor { checkArgument(outputColorInfo.isDataSpaceValid()); checkArgument(outputColorInfo.colorTransfer != C.COLOR_TRANSFER_LINEAR); - if (inputColorInfo.colorSpace != outputColorInfo.colorSpace - || ColorInfo.isTransferHdr(inputColorInfo) != ColorInfo.isTransferHdr(outputColorInfo)) { + if (ColorInfo.isTransferHdr(inputColorInfo) != ColorInfo.isTransferHdr(outputColorInfo)) { // OpenGL tone mapping is only implemented for BT2020 to BT709 and HDR to SDR. checkArgument(inputColorInfo.colorSpace == C.COLOR_SPACE_BT2020); checkArgument(outputColorInfo.colorSpace != C.COLOR_SPACE_BT2020);