diff --git a/configure b/configure index 65152f5e24..4afe0dc0ee 100755 --- a/configure +++ b/configure @@ -1750,6 +1750,7 @@ ljpeg_encoder_select="aandcttables mpegvideoenc" loco_decoder_select="golomb" mdec_decoder_select="dsputil error_resilience mpegvideo" mimic_decoder_select="dsputil hpeldsp" +mjpeg_decoder_select="dsputil hpeldsp" mjpeg_encoder_select="aandcttables dsputil mpegvideoenc" mlp_decoder_select="dsputil mlp_parser" motionpixels_decoder_select="dsputil" diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 2f751944da..7a4c78c22b 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -89,6 +89,7 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx) avcodec_get_frame_defaults(&s->picture); s->avctx = avctx; + ff_hpeldsp_init(&s->hdsp, avctx->flags); ff_dsputil_init(&s->dsp, avctx); ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct); s->buffer_size = 0; @@ -992,7 +993,7 @@ static av_always_inline void mjpeg_copy_block(MJpegDecodeContext *s, int linesize, int lowres) { switch (lowres) { - case 0: s->dsp.put_pixels_tab[1][0](dst, src, linesize, 8); + case 0: s->hdsp.put_pixels_tab[1][0](dst, src, linesize, 8); break; case 1: copy_block4(dst, src, linesize, linesize, 4); break; diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h index 01f4323bc7..17665e466c 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -34,6 +34,7 @@ #include "avcodec.h" #include "get_bits.h" #include "dsputil.h" +#include "hpeldsp.h" #define MAX_COMPONENTS 4 @@ -97,6 +98,7 @@ typedef struct MJpegDecodeContext { uint64_t coefs_finished[MAX_COMPONENTS]; ///< bitmask of which coefs have been completely decoded (progressive mode) ScanTable scantable; DSPContext dsp; + HpelDSPContext hdsp; int restart_interval; int restart_count;