From 62c98cdd549a44d59d5b01d42dfbe35aed413d37 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 19 Jan 2025 02:02:52 +0100 Subject: [PATCH] avcodec/ffv1enc: Fix RCT for GBR colorspace It performs better when its less buggy Compression changes for rgb_scanline_half_piz_dw_t08 (using float16 with remaping) from 56086 byte to 34371 (with a single slice its 28122 byte) prior remap it was 188186 bytes ACES_OT_VWG_SampleFrames/ACES_OT_VWG_SampleFrames improves too but only by a fraction of a percent Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer --- libavcodec/ffv1enc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index c952065e44..e44316f86a 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1046,6 +1046,10 @@ static void choose_rct_params(const FFV1Context *f, FFV1SliceContext *sc, r = p[0]; g = p[1]; b = p[2]; + } else if (f->use32bit || transparency) { + g = *((const uint16_t *)(src[0] + x*2 + stride[0]*y)); + b = *((const uint16_t *)(src[1] + x*2 + stride[1]*y)); + r = *((const uint16_t *)(src[2] + x*2 + stride[2]*y)); } else { b = *((const uint16_t*)(src[0] + x*2 + stride[0]*y)); g = *((const uint16_t*)(src[1] + x*2 + stride[1]*y));