mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-30 22:00:51 +08:00
avcodec/jpeg2000dec: move cdef default check into get_siz()
This way cdef is at its final value earlier
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 104d6846c1)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
@@ -346,6 +346,17 @@ static int get_siz(Jpeg2000DecoderContext *s)
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
for (i = 0; i < s->ncomponents; i++) {
|
||||
if (s->cdef[i] < 0) {
|
||||
for (i = 0; i < s->ncomponents; i++) {
|
||||
s->cdef[i] = i + 1;
|
||||
}
|
||||
if ((s->ncomponents & 1) == 0)
|
||||
s->cdef[s->ncomponents-1] = 0;
|
||||
}
|
||||
}
|
||||
// after here we no longer have to consider negative cdef
|
||||
|
||||
for (i = 0; i < s->ncomponents; i++) { // Ssiz_i XRsiz_i, YRsiz_i
|
||||
uint8_t x = bytestream2_get_byteu(&s->g);
|
||||
s->cbps[i] = (x & 0x7f) + 1;
|
||||
@@ -2539,17 +2550,6 @@ static int jpeg2000_decode_frame(AVCodecContext *avctx, AVFrame *picture,
|
||||
if (ret = jpeg2000_read_bitstream_packets(s))
|
||||
goto end;
|
||||
|
||||
for (int x = 0; x < s->ncomponents; x++) {
|
||||
if (s->cdef[x] < 0) {
|
||||
for (x = 0; x < s->ncomponents; x++) {
|
||||
s->cdef[x] = x + 1;
|
||||
}
|
||||
if ((s->ncomponents & 1) == 0)
|
||||
s->cdef[s->ncomponents-1] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
avctx->execute2(avctx, jpeg2000_decode_tile, picture, NULL, s->numXtiles * s->numYtiles);
|
||||
|
||||
jpeg2000_dec_cleanup(s);
|
||||
|
||||
Reference in New Issue
Block a user