From ecb1d9ff671b83bddb0d1c7d31d60ade4b5cdead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= <g...@haerdin.se> Date: Tue, 14 Jun 2022 10:57:45 +0200 Subject: [PATCH 09/11] lavc/jpeg2000: Minimize calls to av_codec_is_encoder()
--- libavcodec/jpeg2000.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libavcodec/jpeg2000.c b/libavcodec/jpeg2000.c index 2574c2b97e..bb6efab72e 100644 --- a/libavcodec/jpeg2000.c +++ b/libavcodec/jpeg2000.c @@ -248,7 +248,7 @@ static void init_band_stepsize(AVCodecContext *avctx, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, - int cbps) + int cbps, int is_enc) { /* TODO: Implementation of quantization step not finished, * see ISO/IEC 15444-1:2002 E.1 and A.6.4. */ @@ -306,7 +306,7 @@ static void init_band_stepsize(AVCodecContext *avctx, /* FIXME: In OpenJPEG code stepsize = stepsize * 0.5. Why? * If not set output of entropic decoder is not correct. */ - if (!av_codec_is_encoder(avctx->codec)) + if (!is_enc) band->f_stepsize *= 0.5; } @@ -317,7 +317,8 @@ static int init_prec(AVCodecContext *avctx, Jpeg2000CodingStyle *codsty, int precno, int bandno, int reslevelno, int log2_band_prec_width, - int log2_band_prec_height) + int log2_band_prec_height, + int is_enc) { Jpeg2000Prec *prec = band->prec + precno; int nb_codeblocks, cblkno, ret; @@ -414,7 +415,7 @@ static int init_prec(AVCodecContext *avctx, cblk->lblock = 3; cblk->length = 0; cblk->npasses = 0; - if (av_codec_is_encoder(avctx->codec)) { + if (is_enc) { av_freep(&cblk->layers); cblk->layers = av_calloc(codsty->nlayers, sizeof(*cblk->layers)); if (!cblk->layers) @@ -431,7 +432,7 @@ static int init_band(AVCodecContext *avctx, Jpeg2000CodingStyle *codsty, Jpeg2000QuantStyle *qntsty, int bandno, int gbandno, int reslevelno, - int cbps, int dx, int dy) + int cbps, int dx, int dy, int is_enc) { Jpeg2000Band *band = reslevel->band + bandno; uint8_t log2_band_prec_width, log2_band_prec_height; @@ -440,7 +441,7 @@ static int init_band(AVCodecContext *avctx, int nb_precincts; int i, j, ret; - init_band_stepsize(avctx, band, codsty, qntsty, bandno, gbandno, reslevelno, cbps); + init_band_stepsize(avctx, band, codsty, qntsty, bandno, gbandno, reslevelno, cbps, is_enc); /* computation of tbx_0, tbx_1, tby_0, tby_1 * see ISO/IEC 15444-1:2002 B.5 eq. B-15 and tbl B.1 @@ -494,7 +495,8 @@ static int init_band(AVCodecContext *avctx, for (precno = 0; precno < nb_precincts; precno++) { ret = init_prec(avctx, band, reslevel, comp, codsty, precno, bandno, reslevelno, - log2_band_prec_width, log2_band_prec_height); + log2_band_prec_width, log2_band_prec_height, + is_enc); if (ret < 0) return ret; } @@ -511,6 +513,7 @@ int ff_jpeg2000_init_component(Jpeg2000Component *comp, int reslevelno, bandno, gbandno = 0, ret, i, j; uint32_t csize; size_t prod; + int is_enc = av_codec_is_encoder(avctx->codec); if (codsty->nreslevels2decode <= 0) { av_log(avctx, AV_LOG_ERROR, "nreslevels2decode %d invalid or uninitialized\n", codsty->nreslevels2decode); @@ -608,7 +611,7 @@ int ff_jpeg2000_init_component(Jpeg2000Component *comp, ret = init_band(avctx, reslevel, comp, codsty, qntsty, bandno, gbandno, reslevelno, - cbps, dx, dy); + cbps, dx, dy, is_enc); if (ret < 0) return ret; } -- 2.30.2
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".