[FFmpeg-devel] [PATCH 27/44] avformat/utils: Move ff_get_extradata to demux_utils.c

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sat May 7 14:28:13 EEST 2022


It is only used by demuxers (although it is hypothetically
possible that some day e.g. a protocol might need it, but
that is unlikely given that they don't deal with AVCodecParameters).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
 libavformat/aaxdec.c       |  1 +
 libavformat/acm.c          |  1 +
 libavformat/adxdec.c       |  1 +
 libavformat/aiffdec.c      |  1 +
 libavformat/aixdec.c       |  1 +
 libavformat/anm.c          |  1 +
 libavformat/apc.c          |  2 +-
 libavformat/bfi.c          |  1 +
 libavformat/bink.c         |  1 +
 libavformat/cafdec.c       |  1 +
 libavformat/demux.h        |  9 +++++++++
 libavformat/demux_utils.c  | 17 +++++++++++++++++
 libavformat/internal.h     |  9 ---------
 libavformat/isom.c         |  1 +
 libavformat/mpc.c          |  1 +
 libavformat/nuv.c          |  1 +
 libavformat/riffdec.c      |  1 +
 libavformat/rl2.c          |  1 +
 libavformat/rsd.c          |  1 +
 libavformat/utils.c        | 16 ----------------
 libavformat/vc1test.c      |  1 +
 libavformat/westwood_vqa.c |  1 +
 libavformat/yop.c          |  1 +
 23 files changed, 45 insertions(+), 26 deletions(-)

diff --git a/libavformat/aaxdec.c b/libavformat/aaxdec.c
index 0ae4057a53..e47ab3ad73 100644
--- a/libavformat/aaxdec.c
+++ b/libavformat/aaxdec.c
@@ -22,6 +22,7 @@
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
 #include "avio_internal.h"
+#include "demux.h"
 #include "internal.h"
 
 typedef struct AAXColumn {
diff --git a/libavformat/acm.c b/libavformat/acm.c
index c88152d525..28a040330f 100644
--- a/libavformat/acm.c
+++ b/libavformat/acm.c
@@ -21,6 +21,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "rawdec.h"
 #include "internal.h"
 
diff --git a/libavformat/adxdec.c b/libavformat/adxdec.c
index 31eda4e8b8..982e825426 100644
--- a/libavformat/adxdec.c
+++ b/libavformat/adxdec.c
@@ -25,6 +25,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 #define BLOCK_SIZE    18
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
index 3634bb4960..a70899d765 100644
--- a/libavformat/aiffdec.c
+++ b/libavformat/aiffdec.c
@@ -22,6 +22,7 @@
 #include "libavutil/intreadwrite.h"
 #include "libavutil/dict.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 #include "pcm.h"
 #include "aiff.h"
diff --git a/libavformat/aixdec.c b/libavformat/aixdec.c
index 7cee80eb33..f7d8e17acd 100644
--- a/libavformat/aixdec.c
+++ b/libavformat/aixdec.c
@@ -21,6 +21,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 static int aix_probe(const AVProbeData *p)
diff --git a/libavformat/anm.c b/libavformat/anm.c
index 1c29bbca29..7feba4ed1e 100644
--- a/libavformat/anm.c
+++ b/libavformat/anm.c
@@ -26,6 +26,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 typedef struct Page {
diff --git a/libavformat/apc.c b/libavformat/apc.c
index 1bd5ccf710..b8b18c966c 100644
--- a/libavformat/apc.c
+++ b/libavformat/apc.c
@@ -23,7 +23,7 @@
 
 #include "libavutil/channel_layout.h"
 #include "avformat.h"
-#include "internal.h"
+#include "demux.h"
 
 static int apc_probe(const AVProbeData *p)
 {
diff --git a/libavformat/bfi.c b/libavformat/bfi.c
index a42b78b8c0..6c449a80eb 100644
--- a/libavformat/bfi.c
+++ b/libavformat/bfi.c
@@ -29,6 +29,7 @@
 #include "libavutil/channel_layout.h"
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 typedef struct BFIContext {
diff --git a/libavformat/bink.c b/libavformat/bink.c
index 4f413bd986..f4079dfb1d 100644
--- a/libavformat/bink.c
+++ b/libavformat/bink.c
@@ -33,6 +33,7 @@
 #include "libavutil/channel_layout.h"
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 enum BinkAudFlags {
diff --git a/libavformat/cafdec.c b/libavformat/cafdec.c
index f6c84e0dae..168f69f20b 100644
--- a/libavformat/cafdec.c
+++ b/libavformat/cafdec.c
@@ -28,6 +28,7 @@
 #include <inttypes.h>
 
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 #include "isom.h"
 #include "mov_chan.h"
diff --git a/libavformat/demux.h b/libavformat/demux.h
index 64adaff07d..209cd813ab 100644
--- a/libavformat/demux.h
+++ b/libavformat/demux.h
@@ -217,4 +217,13 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels,
  */
 int ff_generate_avci_extradata(AVStream *st);
 
+/**
+ * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end
+ * which is always set to 0 and fill it from pb.
+ *
+ * @param size size of extradata
+ * @return >= 0 if OK, AVERROR_xxx on error
+ */
+int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size);
+
 #endif /* AVFORMAT_DEMUX_H */
diff --git a/libavformat/demux_utils.c b/libavformat/demux_utils.c
index e42d2f3525..6e894ae28a 100644
--- a/libavformat/demux_utils.c
+++ b/libavformat/demux_utils.c
@@ -25,6 +25,7 @@
 #include "libavcodec/bytestream.h"
 #include "libavcodec/packet_internal.h"
 #include "avformat.h"
+#include "avio_internal.h"
 #include "demux.h"
 #include "internal.h"
 
@@ -350,3 +351,19 @@ int ff_generate_avci_extradata(AVStream *st)
 
     return 0;
 }
+
+int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
+{
+    int ret = ff_alloc_extradata(par, size);
+    if (ret < 0)
+        return ret;
+    ret = ffio_read_size(pb, par->extradata, size);
+    if (ret < 0) {
+        av_freep(&par->extradata);
+        par->extradata_size = 0;
+        av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size);
+        return ret;
+    }
+
+    return ret;
+}
diff --git a/libavformat/internal.h b/libavformat/internal.h
index d46368228c..acda79821a 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -652,15 +652,6 @@ int ff_rename(const char *url_src, const char *url_dst, void *logctx);
  */
 int ff_alloc_extradata(AVCodecParameters *par, int size);
 
-/**
- * Allocate extradata with additional AV_INPUT_BUFFER_PADDING_SIZE at end
- * which is always set to 0 and fill it from pb.
- *
- * @param size size of extradata
- * @return >= 0 if OK, AVERROR_xxx on error
- */
-int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size);
-
 /**
  * Copies the whilelists from one context to the other
  */
diff --git a/libavformat/isom.c b/libavformat/isom.c
index e6569dfb68..38f2f4f2b1 100644
--- a/libavformat/isom.c
+++ b/libavformat/isom.c
@@ -22,6 +22,7 @@
  */
 
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 #include "isom.h"
 #include "libavcodec/mpeg4audio.h"
diff --git a/libavformat/mpc.c b/libavformat/mpc.c
index f36768b5ff..ef16237ab6 100644
--- a/libavformat/mpc.c
+++ b/libavformat/mpc.c
@@ -22,6 +22,7 @@
 #include "libavutil/channel_layout.h"
 
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 #include "apetag.h"
 #include "id3v1.h"
diff --git a/libavformat/nuv.c b/libavformat/nuv.c
index 942ad525d5..12c6c691ee 100644
--- a/libavformat/nuv.c
+++ b/libavformat/nuv.c
@@ -25,6 +25,7 @@
 #include "libavutil/intfloat.h"
 #include "avformat.h"
 #include "avio_internal.h"
+#include "demux.h"
 #include "internal.h"
 #include "riff.h"
 
diff --git a/libavformat/riffdec.c b/libavformat/riffdec.c
index 8cff699a8c..3946ecb72f 100644
--- a/libavformat/riffdec.c
+++ b/libavformat/riffdec.c
@@ -26,6 +26,7 @@
 #include "libavutil/log.h"
 #include "avformat.h"
 #include "avio_internal.h"
+#include "demux.h"
 #include "riff.h"
 
 int ff_get_guid(AVIOContext *s, ff_asf_guid *g)
diff --git a/libavformat/rl2.c b/libavformat/rl2.c
index b8f0523325..669cb0400b 100644
--- a/libavformat/rl2.c
+++ b/libavformat/rl2.c
@@ -37,6 +37,7 @@
 #include "libavutil/intreadwrite.h"
 #include "libavutil/mathematics.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 #define EXTRADATA1_SIZE (6 + 256 * 3) ///< video base, clr, palette
diff --git a/libavformat/rsd.c b/libavformat/rsd.c
index c3b570da22..33aa0e2c0d 100644
--- a/libavformat/rsd.c
+++ b/libavformat/rsd.c
@@ -22,6 +22,7 @@
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
 #include "avio.h"
+#include "demux.h"
 #include "internal.h"
 
 static const AVCodecTag rsd_tags[] = {
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 00c0751195..06401b767c 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -359,22 +359,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size)
     return 0;
 }
 
-int ff_get_extradata(void *logctx, AVCodecParameters *par, AVIOContext *pb, int size)
-{
-    int ret = ff_alloc_extradata(par, size);
-    if (ret < 0)
-        return ret;
-    ret = ffio_read_size(pb, par->extradata, size);
-    if (ret < 0) {
-        av_freep(&par->extradata);
-        par->extradata_size = 0;
-        av_log(logctx, AV_LOG_ERROR, "Failed to read extradata of size %d\n", size);
-        return ret;
-    }
-
-    return ret;
-}
-
 AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s)
 {
     for (unsigned i = 0; i < ic->nb_programs; i++) {
diff --git a/libavformat/vc1test.c b/libavformat/vc1test.c
index 90ea729e0b..67edc699c5 100644
--- a/libavformat/vc1test.c
+++ b/libavformat/vc1test.c
@@ -28,6 +28,7 @@
 
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 #define VC1_EXTRADATA_SIZE 4
diff --git a/libavformat/westwood_vqa.c b/libavformat/westwood_vqa.c
index ed5c1a3416..e3d2e2668c 100644
--- a/libavformat/westwood_vqa.c
+++ b/libavformat/westwood_vqa.c
@@ -32,6 +32,7 @@
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
 #include "avio_internal.h"
+#include "demux.h"
 #include "internal.h"
 
 #define FORM_TAG MKBETAG('F', 'O', 'R', 'M')
diff --git a/libavformat/yop.c b/libavformat/yop.c
index b0aa0bb64b..8fdad6899b 100644
--- a/libavformat/yop.c
+++ b/libavformat/yop.c
@@ -25,6 +25,7 @@
 #include "libavutil/channel_layout.h"
 #include "libavutil/intreadwrite.h"
 #include "avformat.h"
+#include "demux.h"
 #include "internal.h"
 
 typedef struct yop_dec_context {
-- 
2.32.0



More information about the ffmpeg-devel mailing list