libavcodec/mjpeg: preserve unclipped last_dc value

Perform av_clip_int16(val) _after_ copying the value to last_dc.

This change ensures that clipping is applied only within the context of
the current block, preventing the propagation of clipped values to
subsequent DC components.

Related commits: c28f648b19 and dffae122d0
Related ticket: 4683

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Ramiro Polla 2024-06-07 21:26:54 +02:00 committed by Paul B Mahol
parent c8e6ab8654
commit ed091b37c5
2 changed files with 2 additions and 3 deletions

View File

@ -843,9 +843,8 @@ static int decode_block(MJpegDecodeContext *s, int16_t *block, int component,
return AVERROR_INVALIDDATA;
}
val = val * (unsigned)quant_matrix[0] + s->last_dc[component];
val = av_clip_int16(val);
s->last_dc[component] = val;
block[0] = val;
block[0] = av_clip_int16(val);
/* AC coefs */
i = 0;
{OPEN_READER(re, &s->gb);

View File

@ -3,4 +3,4 @@
#codec_id 0: rawvideo
#dimensions 0: 999x749
#sar 0: 1/1
0, 0, 0, 1, 1496502, 0xd91deb4b
0, 0, 0, 1, 1496502, 0x44efc0af