mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/jpeg2000dec: Skip DWT if nothing is coded
Improves speed in uncommon case Fixes: Timeout Fixes: 10964/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEG2000_fuzzer-5132066034286592 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
2bc3811c0d
commit
fe0416f8a1
|
@ -1597,7 +1597,7 @@ static int decode_cblk(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *codsty,
|
|||
cblk->data + cblk->length - 2*(term_cnt < cblk->nb_terminations) - t1->mqc.bp);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* TODO: Verify dequantization for lossless case
|
||||
|
@ -1694,6 +1694,7 @@ static inline void tile_codeblocks(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile
|
|||
for (compno = 0; compno < s->ncomponents; compno++) {
|
||||
Jpeg2000Component *comp = tile->comp + compno;
|
||||
Jpeg2000CodingStyle *codsty = tile->codsty + compno;
|
||||
int coded = 0;
|
||||
|
||||
t1.stride = (1<<codsty->log2_cblk_width) + 2;
|
||||
|
||||
|
@ -1723,11 +1724,12 @@ static inline void tile_codeblocks(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile
|
|||
cblkno++) {
|
||||
int x, y;
|
||||
Jpeg2000Cblk *cblk = prec->cblk + cblkno;
|
||||
decode_cblk(s, codsty, &t1, cblk,
|
||||
int ret = decode_cblk(s, codsty, &t1, cblk,
|
||||
cblk->coord[0][1] - cblk->coord[0][0],
|
||||
cblk->coord[1][1] - cblk->coord[1][0],
|
||||
bandpos);
|
||||
|
||||
if (ret)
|
||||
coded = 1;
|
||||
x = cblk->coord[0][0] - band->coord[0][0];
|
||||
y = cblk->coord[1][0] - band->coord[1][0];
|
||||
|
||||
|
@ -1743,7 +1745,9 @@ static inline void tile_codeblocks(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile
|
|||
} /* end reslevel */
|
||||
|
||||
/* inverse DWT */
|
||||
ff_dwt_decode(&comp->dwt, codsty->transform == FF_DWT97 ? (void*)comp->f_data : (void*)comp->i_data);
|
||||
if (coded)
|
||||
ff_dwt_decode(&comp->dwt, codsty->transform == FF_DWT97 ? (void*)comp->f_data : (void*)comp->i_data);
|
||||
|
||||
} /*end comp */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue