* [FFmpeg-devel] [PR] avcodec/mjpegdec: remove start_code field from MJpegDecodeContext (PR #21405)
@ 2026-01-07 4:06 Ramiro Polla via ffmpeg-devel
0 siblings, 0 replies; only message in thread
From: Ramiro Polla via ffmpeg-devel @ 2026-01-07 4:06 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Ramiro Polla
PR #21405 opened by Ramiro Polla (ramiro)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21405
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21405.patch
Instead, pass it as a parameter to the only function that uses it.
>From 40593b5a3c81b580cbd6de1819473e6375a18952 Mon Sep 17 00:00:00 2001
From: Ramiro Polla <ramiro.polla@gmail.com>
Date: Thu, 11 Sep 2025 17:45:47 +0200
Subject: [PATCH] avcodec/mjpegdec: remove start_code field from
MJpegDecodeContext
Instead, pass it as a parameter to the only function that uses it.
---
libavcodec/mjpegbdec.c | 4 ----
libavcodec/mjpegdec.c | 14 ++++++--------
libavcodec/mjpegdec.h | 1 -
3 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/libavcodec/mjpegbdec.c b/libavcodec/mjpegbdec.c
index 79eed6eaa6..5a21ea47fc 100644
--- a/libavcodec/mjpegbdec.c
+++ b/libavcodec/mjpegbdec.c
@@ -85,7 +85,6 @@ read_header:
av_log(avctx, AV_LOG_DEBUG, "dqt offs: 0x%"PRIx32"\n", dqt_offs);
if (dqt_offs) {
bytestream2_init(&s->gB, buf_ptr+dqt_offs, buf_end - (buf_ptr+dqt_offs));
- s->start_code = DQT;
ret = ff_mjpeg_decode_dqt(s);
if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))
return ret;
@@ -95,7 +94,6 @@ read_header:
av_log(avctx, AV_LOG_DEBUG, "dht offs: 0x%"PRIx32"\n", dht_offs);
if (dht_offs) {
bytestream2_init(&s->gB, buf_ptr+dht_offs, buf_end - (buf_ptr+dht_offs));
- s->start_code = DHT;
ff_mjpeg_decode_dht(s);
}
@@ -103,7 +101,6 @@ read_header:
av_log(avctx, AV_LOG_DEBUG, "sof offs: 0x%"PRIx32"\n", sof_offs);
if (sof_offs) {
bytestream2_init(&s->gB, buf_ptr+sof_offs, buf_end - (buf_ptr+sof_offs));
- s->start_code = SOF0;
if ((ret = ff_mjpeg_decode_sof(s)) < 0)
return ret;
}
@@ -116,7 +113,6 @@ read_header:
bytestream2_init(&s->gB, buf_ptr+sos_offs,
FFMIN(field_size, buf_end - buf_ptr - sos_offs));
s->mjpb_skiptosod = (sod_offs - sos_offs - bytestream2_peek_be16(&s->gB));
- s->start_code = SOS;
if (avctx->skip_frame == AVDISCARD_ALL) {
bytestream2_skipu(&s->gB, bytestream2_get_bytes_left(&s->gB));
} else {
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 417cedae4a..ada98b0174 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -135,7 +135,6 @@ av_cold int ff_mjpeg_decode_init(AVCodecContext *avctx)
init_idct(avctx);
s->buffer_size = 0;
s->buffer = NULL;
- s->start_code = -1;
s->first_picture = 1;
s->got_picture = 0;
s->orig_height = avctx->coded_height;
@@ -1871,7 +1870,7 @@ static int mjpeg_decode_dri(MJpegDecodeContext *s)
return 0;
}
-static int mjpeg_decode_app(MJpegDecodeContext *s)
+static int mjpeg_decode_app(MJpegDecodeContext *s, int start_code)
{
int len, id, i;
@@ -2016,7 +2015,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
/* JPS extension by VRex */
- if (s->start_code == APP3 && id == AV_RB32("_JPS") && len >= 10) {
+ if (start_code == APP3 && id == AV_RB32("_JPS") && len >= 10) {
int flags, layout, type;
if (s->avctx->debug & FF_DEBUG_PICT_INFO)
av_log(s->avctx, AV_LOG_INFO, "_JPSJPS_\n");
@@ -2056,7 +2055,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
/* EXIF metadata */
- if (s->start_code == APP1 && id == AV_RB32("Exif") && len >= 2) {
+ if (start_code == APP1 && id == AV_RB32("Exif") && len >= 2) {
int ret;
bytestream2_skipu(&s->gB, 2); // skip padding
@@ -2075,7 +2074,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
/* Apple MJPEG-A */
- if ((s->start_code == APP1) && (len > (0x28 - 8))) {
+ if ((start_code == APP1) && (len > (0x28 - 8))) {
id = bytestream2_get_be32u(&s->gB);
len -= 4;
/* Apple MJPEG-A */
@@ -2095,7 +2094,7 @@ static int mjpeg_decode_app(MJpegDecodeContext *s)
}
}
- if (s->start_code == APP2 && id == AV_RB32("ICC_") && len >= 10) {
+ if (start_code == APP2 && id == AV_RB32("ICC_") && len >= 10) {
int id2;
unsigned seqno;
unsigned nummarkers;
@@ -2421,7 +2420,6 @@ redo_for_pal8:
bytestream2_init(&s->gB, unescaped_buf_ptr, unescaped_buf_size);
- s->start_code = start_code;
if (avctx->debug & FF_DEBUG_STARTCODE)
av_log(avctx, AV_LOG_DEBUG, "startcode: %X\n", start_code);
@@ -2431,7 +2429,7 @@ redo_for_pal8:
"restart marker: %d\n", start_code & 0x0f);
/* APP fields */
} else if (start_code >= APP0 && start_code <= APP15) {
- if ((ret = mjpeg_decode_app(s)) < 0)
+ if ((ret = mjpeg_decode_app(s, start_code)) < 0)
av_log(avctx, AV_LOG_ERROR, "unable to decode APP fields: %s\n",
av_err2str(ret));
/* Comment */
diff --git a/libavcodec/mjpegdec.h b/libavcodec/mjpegdec.h
index 4f4139dcc4..4d391ff9f9 100644
--- a/libavcodec/mjpegdec.h
+++ b/libavcodec/mjpegdec.h
@@ -60,7 +60,6 @@ typedef struct MJpegDecodeContext {
GetByteContext gB;
int buf_size;
- int start_code; /* current start code */
int buffer_size;
uint8_t *buffer;
--
2.49.1
_______________________________________________
ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org
To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-01-07 4:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-07 4:06 [FFmpeg-devel] [PR] avcodec/mjpegdec: remove start_code field from MJpegDecodeContext (PR #21405) Ramiro Polla via ffmpeg-devel
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git