From d4a23e664018740fecbbf11643832a69709421f5 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 25 Mar 2025 12:30:41 +0100 Subject: [PATCH] avcodec/ffv1enc: Fix end handling This also produces smaller files Sponsored-by: Sovereign Tech Fund Signed-off-by: Michael Niedermayer --- libavcodec/ffv1enc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index 162bf7b804..f8db3dc2c7 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -1315,7 +1315,9 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, if (s.last_val == 0xFFFFFFFF) { break; } else { - val = 1LL<<32; + val = s.last_val + ((1LL<<32) - s.last_val + current_mul - 1) / current_mul * current_mul; + av_assert2(val >= (1LL<<32)); + val += s.lu * current_mul; //ensure a run1 ends } } else val = sc->unit[s.p][s.i].val; @@ -1379,6 +1381,7 @@ static int encode_float32_remap_segment(FFV1SliceContext *sc, if (!s.run || s.run1final) { av_assert2(s.mul[ s.current_mul_index ]); if (s.mul[ s.current_mul_index ] < 0) { + av_assert2(s.i < s.pixel_num); s.mul[ s.current_mul_index ] *= -1; put_symbol_inline(&s.rc, s.state[0][2], s.mul[ s.current_mul_index ], 0, NULL, NULL); }