1- From c00008ca039260f7dca9d8c06f599197a96a75cf Mon Sep 17 00:00:00 2001
1+ From 83a84dc1fc30d9e48f486489299feb9be4cde432 Mon Sep 17 00:00:00 2001
22From: qianlongxu <
[email protected] >
3- Date: Mon, 8 Sep 2025 15:24:55 +0800
3+ Date: Thu, 9 Oct 2025 14:28:49 +0800
44Subject: [PATCH] add webp demuxer and libwebp decoder
55
66---
7- configure | 7 +-
8- libavcodec/Makefile | 1 +
9- libavcodec/allcodecs.c | 2 +-
10- libavcodec/codec_desc.c | 11 +-
11- libavcodec/codec_id.h | 2 +-
12- libavcodec/libwebpdec.c | 376 +++++++++++++++++++++++++++++++++++++++
13- libavformat/Makefile | 1 +
14- libavformat/allformats.c | 3 +
15- libavformat/webpdec.c | 296 ++++++++++++++++++++++++++++++
16- 9 files changed, 695 insertions(+), 4 deletions(-)
7+ configure | 7 +-
8+ libavcodec/Makefile | 1 +
9+ libavcodec/allcodecs.c | 1 +
10+ libavcodec/codec_desc.c | 9 +
11+ libavcodec/codec_id.h | 1 +
12+ libavcodec/libwebpdec.c | 376 +++++++++++++++++++++++++++++++++++
13+ libavformat/Makefile | 1 +
14+ libavformat/allformats.c | 1 +
15+ libavformat/allformats.c.rej | 9 -
16+ libavformat/webpdec.c | 296 +++++++++++++++++++++++++++
17+ 10 files changed, 692 insertions(+), 10 deletions(-)
1718 create mode 100644 libavcodec/libwebpdec.c
19+ delete mode 100644 libavformat/allformats.c.rej
1820 create mode 100644 libavformat/webpdec.c
1921
2022diff --git a/configure b/configure
@@ -48,20 +50,19 @@ index 03e80a2..441d4ee 100644
4850 OBJS-$(CONFIG_WEBVTT_ENCODER) += webvttenc.o ass_split.o
4951 OBJS-$(CONFIG_WMALOSSLESS_DECODER) += wmalosslessdec.o wma_common.o
5052diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
51- index aa0fc47..7098f1d 100644
53+ index aa0fc47..fa448b8 100644
5254--- a/libavcodec/allcodecs.c
5355+++ b/libavcodec/allcodecs.c
54- @@ -900,7 +900,7 @@ extern const FFCodec ff_vnull_decoder;
55- extern const FFCodec ff_vnull_encoder;
56- extern const FFCodec ff_anull_decoder;
57- extern const FFCodec ff_anull_encoder;
58- -
56+ @@ -416,6 +416,7 @@ extern const FFCodec ff_zlib_encoder;
57+ extern const FFCodec ff_zlib_decoder;
58+ extern const FFCodec ff_zmbv_encoder;
59+ extern const FFCodec ff_zmbv_decoder;
5960+ extern const FFCodec ff_libwebp_decoder;
60- // The iterate API is not usable with ossfuzz due to the excessive size of binaries created
61- #if CONFIG_OSSFUZZ
62- const FFCodec * codec_list[] = {
61+
62+ /* audio codecs */
63+ extern const FFCodec ff_aac_encoder;
6364diff --git a/libavcodec/codec_desc.c b/libavcodec/codec_desc.c
64- index 38cab26..30af1ac 100644
65+ index 38cab26..9a56d7c 100644
6566--- a/libavcodec/codec_desc.c
6667+++ b/libavcodec/codec_desc.c
6768@@ -1959,6 +1959,15 @@ static const AVCodecDescriptor codec_descriptors[] = {
@@ -80,17 +81,8 @@ index 38cab26..30af1ac 100644
8081
8182 /* various PCM "codecs" */
8283 {
83- @@ -3734,7 +3743,7 @@ static const AVCodecDescriptor codec_descriptors[] = {
84- .name = "av3a",
85- .long_name = NULL_IF_CONFIG_SMALL("Audio Vivid"),
86- .props = AV_CODEC_PROP_LOSSY,
87- - },
88- + }
89- };
90-
91- static int descriptor_compare(const void *key, const void *member)
9284diff --git a/libavcodec/codec_id.h b/libavcodec/codec_id.h
93- index 8c724a0..041015e 100644
85+ index 8c724a0..b0a9274 100644
9486--- a/libavcodec/codec_id.h
9587+++ b/libavcodec/codec_id.h
9688@@ -323,6 +323,7 @@ enum AVCodecID {
@@ -101,14 +93,6 @@ index 8c724a0..041015e 100644
10193 /* various PCM "codecs" */
10294 AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
10395 AV_CODEC_ID_PCM_S16LE = 0x10000,
104- @@ -592,7 +593,6 @@ enum AVCodecID {
105- AV_CODEC_ID_LCEVC,
106- AV_CODEC_ID_AVS3DA,
107-
108- -
109- AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
110-
111- AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
11296diff --git a/libavcodec/libwebpdec.c b/libavcodec/libwebpdec.c
11397new file mode 100644
11498index 0000000..17b69d0
@@ -504,7 +488,7 @@ index 1f32e4c..90aef47 100644
504488 OBJS-$(CONFIG_WEBVTT_MUXER) += webvttenc.o
505489 OBJS-$(CONFIG_WSAUD_DEMUXER) += westwood_aud.o
506490diff --git a/libavformat/allformats.c b/libavformat/allformats.c
507- index dbae42e..d736732 100644
491+ index 31a9509..fbe7967 100644
508492--- a/libavformat/allformats.c
509493+++ b/libavformat/allformats.c
510494@@ -564,6 +564,7 @@ extern const FFInputFormat ff_image_svg_pipe_demuxer;
@@ -515,15 +499,21 @@ index dbae42e..d736732 100644
515499 extern const FFInputFormat ff_image_webp_pipe_demuxer;
516500 extern const FFInputFormat ff_image_xbm_pipe_demuxer;
517501 extern const FFInputFormat ff_image_xpm_pipe_demuxer;
518- @@ -585,6 +586,8 @@ extern AVInputFormat ff_ijkplaceholder2_demuxer;
519- extern AVInputFormat ff_ijkplaceholder3_demuxer;
520- extern AVInputFormat ff_ijkplaceholder4_demuxer;
521-
522- +
523- +
524- #include "libavformat/muxer_list.c"
525- #include "libavformat/demuxer_list.c"
526-
502+ diff --git a/libavformat/allformats.c.rej b/libavformat/allformats.c.rej
503+ deleted file mode 100644
504+ index 623b4c4..0000000
505+ --- a/libavformat/allformats.c.rej
506+ +++ /dev/null
507+ @@ -1,9 +0,0 @@
508+ - diff a/libavformat/allformats.c b/libavformat/allformats.c (rejected hunks)
509+ - @@ -86,6 +86,7 @@ extern const FFOutputFormat ff_asf_stream_muxer;
510+ - extern const AVInputFormat ff_au_demuxer;
511+ - extern const FFOutputFormat ff_au_muxer;
512+ - extern const AVInputFormat ff_av1_demuxer;
513+ - +extern const AVInputFormat ff_av3a_demuxer;
514+ - extern const AVInputFormat ff_avi_demuxer;
515+ - extern const FFOutputFormat ff_avi_muxer;
516+ - extern const FFOutputFormat ff_avif_muxer;
527517diff --git a/libavformat/webpdec.c b/libavformat/webpdec.c
528518new file mode 100644
529519index 0000000..df4a3af
0 commit comments