aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2025-01-19 02:02:52 +0100
committerMichael Niedermayer <michael@niedermayer.cc>2025-01-21 21:06:13 +0100
commit62c98cdd549a44d59d5b01d42dfbe35aed413d37 (patch)
treeed434d37d04f5dd30f280041042172f29595012c
parent497b205ad56d05e79533cad9c49bf25d837f4c9f (diff)
downloadffmpeg-62c98cdd549a44d59d5b01d42dfbe35aed413d37.tar.gz
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 <michael@niedermayer.cc>
-rw-r--r--libavcodec/ffv1enc.c4
1 files changed, 4 insertions, 0 deletions
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));