This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 179db32777e8f38484b8278403b23ea3eb7f3775 Author: Ramiro Polla <[email protected]> AuthorDate: Thu Jan 15 18:15:19 2026 +0100 Commit: Ramiro Polla <[email protected]> CommitDate: Fri Feb 20 16:32:10 2026 +0100 avcodec/mjpegdec: move MxPEG parameters from mjpeg_decode_scan() to MJpegDecodeContext --- libavcodec/mjpegbdec.c | 2 +- libavcodec/mjpegdec.c | 21 ++++++++++++--------- libavcodec/mjpegdec.h | 8 +++++--- libavcodec/mxpegdec.c | 9 +++++++-- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c index 5a21ea47fc..2c1747f502 100644 --- a/libavcodec/mjpegbdec.c +++ b/libavcodec/mjpegbdec.c @@ -116,7 +116,7 @@ read_header: if (avctx->skip_frame == AVDISCARD_ALL) { bytestream2_skipu(&s->gB, bytestream2_get_bytes_left(&s->gB)); } else { - ret = ff_mjpeg_decode_sos(s, NULL, 0, NULL); + ret = ff_mjpeg_decode_sos(s); if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) return ret; } diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index f2a097093d..efe3cb3c2c 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -1475,14 +1475,13 @@ static void shift_output(MJpegDecodeContext *s, uint8_t *ptr, int linesize) } } -static int mjpeg_decode_scan(MJpegDecodeContext *s, - const uint8_t *mb_bitmask, - int mb_bitmask_size, - const AVFrame *reference) +static int mjpeg_decode_scan(MJpegDecodeContext *s) { int nb_components = s->nb_components_sos; int Ah = s->Ah; int Al = s->Al; + const uint8_t *mb_bitmask = NULL; + const AVFrame *reference = NULL; int i, mb_x, mb_y, chroma_h_shift, chroma_v_shift, chroma_width, chroma_height; uint8_t *data[MAX_COMPONENTS]; const uint8_t *reference_data[MAX_COMPONENTS]; @@ -1490,8 +1489,13 @@ static int mjpeg_decode_scan(MJpegDecodeContext *s, GetBitContext mb_bitmask_gb = {0}; // initialize to silence gcc warning int bytes_per_pixel = 1 + (s->bits > 8); + if (s->avctx->codec_id == AV_CODEC_ID_MXPEG) { + mb_bitmask = s->mb_bitmask; + reference = s->reference; + } + if (mb_bitmask) { - if (mb_bitmask_size != (s->mb_width * s->mb_height + 7)>>3) { + if (s->mb_bitmask_size != (s->mb_width * s->mb_height + 7)>>3) { av_log(s->avctx, AV_LOG_ERROR, "mb_bitmask_size mismatches\n"); return AVERROR_INVALIDDATA; } @@ -1708,8 +1712,7 @@ static void mjpeg_idct_scan_progressive_ac(MJpegDecodeContext *s) } } -int ff_mjpeg_decode_sos(MJpegDecodeContext *s, const uint8_t *mb_bitmask, - int mb_bitmask_size, const AVFrame *reference) +int ff_mjpeg_decode_sos(MJpegDecodeContext *s) { int len, i, h, v; int index, id, ret; @@ -1834,7 +1837,7 @@ int ff_mjpeg_decode_sos(MJpegDecodeContext *s, const uint8_t *mb_bitmask, if ((ret = mjpeg_decode_scan_progressive_ac(s)) < 0) return ret; } else { - if ((ret = mjpeg_decode_scan(s, mb_bitmask, mb_bitmask_size, reference)) < 0) + if ((ret = mjpeg_decode_scan(s)) < 0) return ret; } } @@ -2599,7 +2602,7 @@ eoi_parser: case SOS: s->cur_scan++; - if ((ret = ff_mjpeg_decode_sos(s, NULL, 0, NULL)) < 0 && + if ((ret = ff_mjpeg_decode_sos(s)) < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) goto fail; break; diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h index b5520522f9..084655fd12 100644 --- a/libavcodec/mjpegdec.h +++ b/libavcodec/mjpegdec.h @@ -172,6 +172,10 @@ typedef struct MJpegDecodeContext { enum AVPixelFormat hwaccel_pix_fmt; void *hwaccel_picture_private; struct JLSState *jls_state; + + const uint8_t *mb_bitmask; + size_t mb_bitmask_size; + const AVFrame *reference; } MJpegDecodeContext; int ff_mjpeg_build_vlc(VLC *vlc, const uint8_t *bits_table, @@ -187,9 +191,7 @@ int ff_mjpeg_decode_frame_from_buf(AVCodecContext *avctx, int ff_mjpeg_decode_dqt(MJpegDecodeContext *s); int ff_mjpeg_decode_dht(MJpegDecodeContext *s); int ff_mjpeg_decode_sof(MJpegDecodeContext *s); -int ff_mjpeg_decode_sos(MJpegDecodeContext *s, - const uint8_t *mb_bitmask,int mb_bitmask_size, - const AVFrame *reference); +int ff_mjpeg_decode_sos(MJpegDecodeContext *s); int ff_mjpeg_find_marker(const uint8_t **buf_ptr, const uint8_t *buf_end); #endif /* AVCODEC_MJPEGDEC_H */ diff --git a/libavcodec/mxpegdec.c b/libavcodec/mxpegdec.c index de374a8904..2a8e583988 100644 --- a/libavcodec/mxpegdec.c +++ b/libavcodec/mxpegdec.c @@ -311,11 +311,16 @@ static int mxpeg_decode_frame(AVCodecContext *avctx, AVFrame *rframe, AV_GET_BUFFER_FLAG_REF)) < 0) return ret; - ret = ff_mjpeg_decode_sos(jpg, s->mxm_bitmask, s->bitmask_size, reference_ptr); + jpg->mb_bitmask = s->mxm_bitmask; + jpg->mb_bitmask_size = s->bitmask_size; + jpg->reference = reference_ptr; + ret = ff_mjpeg_decode_sos(jpg); if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) return ret; } else { - ret = ff_mjpeg_decode_sos(jpg, NULL, 0, NULL); + jpg->mb_bitmask = NULL; + jpg->reference = NULL; + ret = ff_mjpeg_decode_sos(jpg); if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE)) return ret; } _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
