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]

Reply via email to