diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2015-09-12 13:25:38 +0200 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2015-09-12 13:25:38 +0200 |
commit | 84d04a0dfa05d170d54585aec8d1ad19cca12410 (patch) | |
tree | 14fadc9b4262303da3dca7202e7c7b4744e3cf70 | |
parent | 6e611a18390690375a60392061fb6177ef24c7a8 (diff) | |
parent | 5788623d29c3e806a7879210986110aced758dc2 (diff) | |
download | ffmpeg-84d04a0dfa05d170d54585aec8d1ad19cca12410.tar.gz |
Merge commit '5788623d29c3e806a7879210986110aced758dc2'
* commit '5788623d29c3e806a7879210986110aced758dc2':
jpeg2000: Split codeblock decoding from the main tile decoding
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
-rw-r--r-- | libavcodec/jpeg2000dec.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c index bb2babb815..68c0a17866 100644 --- a/libavcodec/jpeg2000dec.c +++ b/libavcodec/jpeg2000dec.c @@ -1616,18 +1616,12 @@ static inline void mct_decode(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile) s->dsp.mct_decode[tile->codsty[0].transform](src[0], src[1], src[2], csize); } -static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, - AVFrame *picture) +static void tile_codeblocks(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile) { - const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(s->avctx->pix_fmt); - int compno, reslevelno, bandno; - int x, y; - int planar = !!(pixdesc->flags & AV_PIX_FMT_FLAG_PLANAR); - int pixelsize = planar ? 1 : pixdesc->nb_components; - - uint8_t *line; Jpeg2000T1Context t1; + int compno, reslevelno, bandno; + /* Loop on tile components */ for (compno = 0; compno < s->ncomponents; compno++) { Jpeg2000Component *comp = tile->comp + compno; @@ -1681,6 +1675,21 @@ static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, /* inverse DWT */ ff_dwt_decode(&comp->dwt, codsty->transform == FF_DWT97 ? (void*)comp->f_data : (void*)comp->i_data); } /*end comp */ +} + +static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, + AVFrame *picture) +{ + const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(s->avctx->pix_fmt); + int planar = !!(pixdesc->flags & AV_PIX_FMT_FLAG_PLANAR); + int pixelsize = planar ? 1 : pixdesc->nb_components; + + int compno; + int x, y; + + uint8_t *line; + + tile_codeblocks(s, tile); /* inverse MCT transformation */ if (tile->codsty[0].mct) |