This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 3f2d4b49e6429be6be87694f4c1fd3cdb8719db3
Author:     Ramiro Polla <[email protected]>
AuthorDate: Thu Jan 15 18:30:59 2026 +0100
Commit:     Ramiro Polla <[email protected]>
CommitDate: Fri Feb 20 16:32:10 2026 +0100

    avcodec/mjpegdec: split mjpeg_find_raw_scan_data() out of 
mjpeg_unescape_sos()
---
 libavcodec/mjpegdec.c | 40 ++++++++++++++++++++++++----------------
 libavcodec/mjpegdec.h |  2 --
 2 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index f37bcbe9a9..f1402fe74e 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -55,6 +55,8 @@
 #include "put_bits.h"
 
 
+static void mjpeg_find_raw_scan_data(MJpegDecodeContext *s,
+                                     const uint8_t **pbuf_ptr, size_t 
*pbuf_size);
 static int mjpeg_unescape_sos(MJpegDecodeContext *s);
 
 static int init_default_huffman_tables(MJpegDecodeContext *s)
@@ -1806,18 +1808,20 @@ int ff_mjpeg_decode_sos(MJpegDecodeContext *s)
     if (s->mjpb_skiptosod)
         bytestream2_skip(&s->gB, s->mjpb_skiptosod);
 
-    ret = mjpeg_unescape_sos(s);
-    if (ret < 0)
-        return ret;
-
     if (s->avctx->hwaccel) {
-        ret = FF_HW_CALL(s->avctx, decode_slice,
-                         s->raw_scan_buffer,
-                         s->raw_scan_buffer_size);
+        const uint8_t *buf_ptr;
+        size_t buf_size;
+
+        mjpeg_find_raw_scan_data(s, &buf_ptr, &buf_size);
+
+        ret = FF_HW_CALL(s->avctx, decode_slice, buf_ptr, buf_size);
         if (ret < 0)
             return ret;
 
     } else {
+        ret = mjpeg_unescape_sos(s);
+        if (ret < 0)
+            return ret;
     if (s->lossless) {
         av_assert0(s->picture_ptr == s->picture);
         if (CONFIG_JPEGLS_DECODER && s->ls) {
@@ -2240,14 +2244,12 @@ found:
     return val;
 }
 
-static int mjpeg_unescape_sos(MJpegDecodeContext *s)
+static void mjpeg_find_raw_scan_data(MJpegDecodeContext *s,
+                                     const uint8_t **pbuf_ptr, size_t 
*pbuf_size)
 {
     const uint8_t *buf_ptr = s->gB.buffer;
     const uint8_t *buf_end = buf_ptr + bytestream2_get_bytes_left(&s->gB);
-    const uint8_t *unescaped_buf_ptr;
-    size_t unescaped_buf_size;
 
-    if (s->avctx->hwaccel) {
         /* Find size of image data buffer (including restart markers).
          * No unescaping is performed. */
         const uint8_t *ptr = buf_ptr;
@@ -2267,11 +2269,17 @@ static int mjpeg_unescape_sos(MJpegDecodeContext *s)
         }
         ptr = buf_end;
 found_hw:
-        s->raw_scan_buffer      = buf_ptr;
-        s->raw_scan_buffer_size = ptr - buf_ptr;
-        bytestream2_skipu(&s->gB, s->raw_scan_buffer_size);
-        return 0;
-    }
+    *pbuf_ptr = buf_ptr;
+    *pbuf_size = ptr - buf_ptr;
+    bytestream2_skipu(&s->gB, *pbuf_size);
+}
+
+static int mjpeg_unescape_sos(MJpegDecodeContext *s)
+{
+    const uint8_t *buf_ptr = s->gB.buffer;
+    const uint8_t *buf_end = buf_ptr + bytestream2_get_bytes_left(&s->gB);
+    const uint8_t *unescaped_buf_ptr;
+    size_t unescaped_buf_size;
 
     if (s->avctx->codec_id == AV_CODEC_ID_MEDIA100 ||
         s->avctx->codec_id == AV_CODEC_ID_MJPEGB ||
diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h
index 084655fd12..04488c1d2d 100644
--- a/libavcodec/mjpegdec.h
+++ b/libavcodec/mjpegdec.h
@@ -162,8 +162,6 @@ typedef struct MJpegDecodeContext {
     // Raw stream data for hwaccel use.
     const uint8_t *raw_image_buffer;
     size_t         raw_image_buffer_size;
-    const uint8_t *raw_scan_buffer;
-    size_t         raw_scan_buffer_size;
 
     uint8_t raw_huffman_lengths[2][4][16];
     uint8_t raw_huffman_values[2][4][256];

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to