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]
