diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index b47d7f58ca..3082031ba4 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -1427,7 +1427,7 @@ static av_always_inline void mjpeg_copy_block(MJpegDecodeContext *s, int linesize, int lowres) { switch (lowres) { - case 0: s->hdsp.put_pixels_tab[1][0](dst, src, linesize, 8); + case 0: s->copy_block(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 8b9ed67856..ce688482cf 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -119,8 +119,8 @@ typedef struct MJpegDecodeContext { int force_pal8; uint8_t permutated_scantable[64]; BlockDSPContext bdsp; - HpelDSPContext hdsp; IDCTDSPContext idsp; + op_pixels_func copy_block; ///< only set and used by mxpeg int restart_interval; int restart_count; diff --git a/libavcodec/mxpegdec.c b/libavcodec/mxpegdec.c index 8054d016be..9a5110a814 100644 --- a/libavcodec/mxpegdec.c +++ b/libavcodec/mxpegdec.c @@ -65,8 +65,10 @@ static av_cold int mxpeg_decode_end(AVCodecContext *avctx) static av_cold int mxpeg_decode_init(AVCodecContext *avctx) { MXpegDecodeContext *s = avctx->priv_data; + HpelDSPContext hdsp; - ff_hpeldsp_init(&s->jpg.hdsp, avctx->flags); + ff_hpeldsp_init(&hdsp, avctx->flags); + s->jpg.copy_block = hdsp.put_pixels_tab[1][0]; s->picture[0] = av_frame_alloc(); s->picture[1] = av_frame_alloc();