From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH 1/5] avcodec/apng: Add APNG_FCTL_CHUNK_SIZE define
Date: Mon, 4 Jul 2022 17:24:32 +0200
Message-ID: <DB6PR0101MB221415223D77202876A16D0B8FBE9@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com> (raw)
Also use it where appropriate.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
libavcodec/apng.h | 3 +++
libavcodec/pngdec.c | 2 +-
libavcodec/pngenc.c | 6 +++---
libavformat/apngdec.c | 4 ++--
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/libavcodec/apng.h b/libavcodec/apng.h
index 41249e0df0..abd8795334 100644
--- a/libavcodec/apng.h
+++ b/libavcodec/apng.h
@@ -38,4 +38,7 @@ enum {
APNG_BLEND_OP_OVER = 1,
};
+/* Only the payload data, not including length, fourcc and CRC-32. */
+#define APNG_FCTL_CHUNK_SIZE 26
+
#endif /* AVCODEC_APNG_H */
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
index 6b44af59f2..87b0c639e3 100644
--- a/libavcodec/pngdec.c
+++ b/libavcodec/pngdec.c
@@ -972,7 +972,7 @@ static int decode_fctl_chunk(AVCodecContext *avctx, PNGDecContext *s,
uint32_t sequence_number;
int cur_w, cur_h, x_offset, y_offset, dispose_op, blend_op;
- if (bytestream2_get_bytes_left(gb) != 26)
+ if (bytestream2_get_bytes_left(gb) != APNG_FCTL_CHUNK_SIZE)
return AVERROR_INVALIDDATA;
if (!(s->hdr_state & PNG_IHDR)) {
diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
index d79b4e3895..93463dd341 100644
--- a/libavcodec/pngenc.c
+++ b/libavcodec/pngenc.c
@@ -988,7 +988,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt,
// to have the image data write to the correct place in the buffer
fctl_chunk.sequence_number = s->sequence_number;
++s->sequence_number;
- s->bytestream += 26 + 12;
+ s->bytestream += APNG_FCTL_CHUNK_SIZE + 12;
ret = apng_encode_frame(avctx, pict, &fctl_chunk, &s->last_frame_fctl);
if (ret < 0)
@@ -1002,7 +1002,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt,
if (s->last_frame) {
uint8_t* last_fctl_chunk_start = pkt->data;
- uint8_t buf[26];
+ uint8_t buf[APNG_FCTL_CHUNK_SIZE];
if (!s->extra_data_updated) {
uint8_t *side_data = av_packet_new_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA, s->extra_data_size);
if (!side_data)
@@ -1020,7 +1020,7 @@ static int encode_apng(AVCodecContext *avctx, AVPacket *pkt,
AV_WB16(buf + 22, s->last_frame_fctl.delay_den);
buf[24] = s->last_frame_fctl.dispose_op;
buf[25] = s->last_frame_fctl.blend_op;
- png_write_chunk(&last_fctl_chunk_start, MKTAG('f', 'c', 'T', 'L'), buf, 26);
+ png_write_chunk(&last_fctl_chunk_start, MKTAG('f', 'c', 'T', 'L'), buf, sizeof(buf));
*got_packet = 1;
}
diff --git a/libavformat/apngdec.c b/libavformat/apngdec.c
index e84f74e9d0..47cdbfcbfb 100644
--- a/libavformat/apngdec.c
+++ b/libavformat/apngdec.c
@@ -222,7 +222,7 @@ static int apng_read_header(AVFormatContext *s)
ctx->num_frames, ctx->num_play);
break;
case MKTAG('f', 'c', 'T', 'L'):
- if (!acTL_found || len != 26) {
+ if (!acTL_found || len != APNG_FCTL_CHUNK_SIZE) {
return AVERROR_INVALIDDATA;
}
if ((ret = avio_seek(pb, -8, SEEK_CUR)) < 0)
@@ -336,7 +336,7 @@ static int apng_read_packet(AVFormatContext *s, AVPacket *pkt)
switch (tag) {
case MKTAG('f', 'c', 'T', 'L'):
- if (len != 26)
+ if (len != APNG_FCTL_CHUNK_SIZE)
return AVERROR_INVALIDDATA;
if ((ret = decode_fctl_chunk(s, ctx, pkt)) < 0)
--
2.34.1
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next reply other threads:[~2022-07-04 15:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-04 15:24 Andreas Rheinhardt [this message]
2022-07-04 15:25 ` [FFmpeg-devel] [PATCH 2/5] avformat/apngenc: Check for incomplete chunks Andreas Rheinhardt
2022-07-04 15:25 ` [FFmpeg-devel] [PATCH 3/5] avformat/apngenc: Check fcTL size Andreas Rheinhardt
2022-07-04 15:25 ` [FFmpeg-devel] [PATCH 4/5] avformat/apngenc: Don't modify input packet Andreas Rheinhardt
2022-07-04 15:25 ` [FFmpeg-devel] [PATCH 5/5] avformat/apngenc: Add const where possible Andreas Rheinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DB6PR0101MB221415223D77202876A16D0B8FBE9@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com \
--to=andreas.rheinhardt@outlook.com \
--cc=ffmpeg-devel@ffmpeg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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