aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-06 18:28:08 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-05-10 07:37:38 +0200
commit35ec5c819b0f472536eb48e8f3871eb5ca222da6 (patch)
treebaa0423f54594b4d020f38114ff06034cec6707b
parent20ca491664513c936f7960473b833038b0d5ca99 (diff)
downloadffmpeg-35ec5c819b0f472536eb48e8f3871eb5ca222da6.tar.gz
avformat/demux: Add new demux.h header
And move those stuff already in demuxer-only files to it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--libavdevice/libcdio.c1
-rw-r--r--libavformat/aadec.c1
-rw-r--r--libavformat/asfdec_f.c1
-rw-r--r--libavformat/asfdec_o.c2
-rw-r--r--libavformat/avidec.c1
-rw-r--r--libavformat/brstm.c1
-rw-r--r--libavformat/concatdec.c1
-rw-r--r--libavformat/dashdec.c2
-rw-r--r--libavformat/demux.c2
-rw-r--r--libavformat/demux.h145
-rw-r--r--libavformat/hls.c1
-rw-r--r--libavformat/idcin.c1
-rw-r--r--libavformat/imfdec.c2
-rw-r--r--libavformat/internal.h114
-rw-r--r--libavformat/matroskadec.c1
-rw-r--r--libavformat/mca.c1
-rw-r--r--libavformat/mlvdec.c3
-rw-r--r--libavformat/mov.c4
-rw-r--r--libavformat/mp3dec.c3
-rw-r--r--libavformat/mpc8.c1
-rw-r--r--libavformat/mpeg.c1
-rw-r--r--libavformat/mpegts.c1
-rw-r--r--libavformat/mxfdec.c1
-rw-r--r--libavformat/nutdec.c1
-rw-r--r--libavformat/oggdec.c2
-rw-r--r--libavformat/oggdec.h1
-rw-r--r--libavformat/options.c1
-rw-r--r--libavformat/rmdec.c2
-rw-r--r--libavformat/rtpdec_asf.c2
-rw-r--r--libavformat/seek.c1
-rw-r--r--libavformat/tests/seek_utils.c2
-rw-r--r--libavformat/vpk.c1
-rw-r--r--libavformat/wtvdec.c1
33 files changed, 175 insertions, 130 deletions
diff --git a/libavdevice/libcdio.c b/libavdevice/libcdio.c
index 4417523c57..28c339564f 100644
--- a/libavdevice/libcdio.c
+++ b/libavdevice/libcdio.c
@@ -37,6 +37,7 @@
#include "libavutil/opt.h"
#include "libavformat/avformat.h"
+#include "libavformat/demux.h"
#include "libavformat/internal.h"
typedef struct CDIOContext {
diff --git a/libavformat/aadec.c b/libavformat/aadec.c
index 19aa26e099..e7b048b1f9 100644
--- a/libavformat/aadec.c
+++ b/libavformat/aadec.c
@@ -24,6 +24,7 @@
*/
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
#include "libavutil/avstring.h"
#include "libavutil/dict.h"
diff --git a/libavformat/asfdec_f.c b/libavformat/asfdec_f.c
index ff4f91e856..4770a812db 100644
--- a/libavformat/asfdec_f.c
+++ b/libavformat/asfdec_f.c
@@ -33,6 +33,7 @@
#include "avformat.h"
#include "avio_internal.h"
#include "avlanguage.h"
+#include "demux.h"
#include "internal.h"
#include "riff.h"
#include "asf.h"
diff --git a/libavformat/asfdec_o.c b/libavformat/asfdec_o.c
index fb614d42de..907be6de04 100644
--- a/libavformat/asfdec_o.c
+++ b/libavformat/asfdec_o.c
@@ -27,8 +27,8 @@
#include "libavutil/time_internal.h"
#include "avformat.h"
-#include "avio_internal.h"
#include "avlanguage.h"
+#include "demux.h"
#include "internal.h"
#include "riff.h"
#include "asf.h"
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 21fc2b87ff..937d9e6ffb 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -32,6 +32,7 @@
#include "libavutil/mathematics.h"
#include "avformat.h"
#include "avi.h"
+#include "demux.h"
#include "dv.h"
#include "internal.h"
#include "isom.h"
diff --git a/libavformat/brstm.c b/libavformat/brstm.c
index 4fb7920d7c..628c556e66 100644
--- a/libavformat/brstm.c
+++ b/libavformat/brstm.c
@@ -22,6 +22,7 @@
#include "libavutil/intreadwrite.h"
#include "libavcodec/bytestream.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
typedef struct BRSTMCoeffOffset {
diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c
index cfe1329105..e57da59e04 100644
--- a/libavformat/concatdec.c
+++ b/libavformat/concatdec.c
@@ -28,6 +28,7 @@
#include "libavcodec/bsf.h"
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
#include "url.h"
diff --git a/libavformat/dashdec.c b/libavformat/dashdec.c
index 211d77fd02..0b5ff5aeb9 100644
--- a/libavformat/dashdec.c
+++ b/libavformat/dashdec.c
@@ -21,13 +21,13 @@
*/
#include <libxml/parser.h>
#include "libavutil/bprint.h"
-#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "libavutil/time.h"
#include "libavutil/parseutils.h"
#include "internal.h"
#include "avio_internal.h"
#include "dash.h"
+#include "demux.h"
#define INITIAL_BUFFER_SIZE 32768
diff --git a/libavformat/demux.c b/libavformat/demux.c
index ad7b5dbf83..5d83d81665 100644
--- a/libavformat/demux.c
+++ b/libavformat/demux.c
@@ -21,7 +21,6 @@
#include <stdint.h>
-#include "config.h"
#include "config_components.h"
#include "libavutil/avassert.h"
@@ -42,6 +41,7 @@
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "id3v2.h"
#include "internal.h"
#include "url.h"
diff --git a/libavformat/demux.h b/libavformat/demux.h
new file mode 100644
index 0000000000..f003d81f52
--- /dev/null
+++ b/libavformat/demux.h
@@ -0,0 +1,145 @@
+/*
+ * copyright (c) 2001 Fabrice Bellard
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVFORMAT_DEMUX_H
+#define AVFORMAT_DEMUX_H
+
+#include <stdint.h>
+#include "libavutil/rational.h"
+#include "libavcodec/packet.h"
+#include "avformat.h"
+
+#define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48))
+
+static av_always_inline int is_relative(int64_t ts)
+{
+ return ts > (RELATIVE_TS_BASE - (1LL << 48));
+}
+
+/**
+ * Wrap a given time stamp, if there is an indication for an overflow
+ *
+ * @param st stream
+ * @param timestamp the time stamp to wrap
+ * @return resulting time stamp
+ */
+int64_t ff_wrap_timestamp(const AVStream *st, int64_t timestamp);
+
+/**
+ * Read a transport packet from a media file.
+ *
+ * @param s media file handle
+ * @param pkt is filled
+ * @return 0 if OK, AVERROR_xxx on error
+ */
+int ff_read_packet(AVFormatContext *s, AVPacket *pkt);
+
+void ff_read_frame_flush(AVFormatContext *s);
+
+/**
+ * Perform a binary search using av_index_search_timestamp() and
+ * AVInputFormat.read_timestamp().
+ *
+ * @param target_ts target timestamp in the time base of the given stream
+ * @param stream_index stream number
+ */
+int ff_seek_frame_binary(AVFormatContext *s, int stream_index,
+ int64_t target_ts, int flags);
+
+/**
+ * Update cur_dts of all streams based on the given timestamp and AVStream.
+ *
+ * Stream ref_st unchanged, others set cur_dts in their native time base.
+ * Only needed for timestamp wrapping or if (dts not set and pts!=dts).
+ * @param timestamp new dts expressed in time_base of param ref_st
+ * @param ref_st reference stream giving time_base of param timestamp
+ */
+void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp);
+
+int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos,
+ int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
+
+/**
+ * Perform a binary search using read_timestamp().
+ *
+ * @param target_ts target timestamp in the time base of the given stream
+ * @param stream_index stream number
+ */
+int64_t ff_gen_search(AVFormatContext *s, int stream_index,
+ int64_t target_ts, int64_t pos_min,
+ int64_t pos_max, int64_t pos_limit,
+ int64_t ts_min, int64_t ts_max,
+ int flags, int64_t *ts_ret,
+ int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
+
+/**
+ * Internal version of av_index_search_timestamp
+ */
+int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries,
+ int64_t wanted_timestamp, int flags);
+
+/**
+ * Internal version of av_add_index_entry
+ */
+int ff_add_index_entry(AVIndexEntry **index_entries,
+ int *nb_index_entries,
+ unsigned int *index_entries_allocated_size,
+ int64_t pos, int64_t timestamp, int size, int distance, int flags);
+
+void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance);
+
+/**
+ * Ensure the index uses less memory than the maximum specified in
+ * AVFormatContext.max_index_size by discarding entries if it grows
+ * too large.
+ */
+void ff_reduce_index(AVFormatContext *s, int stream_index);
+
+/**
+ * add frame for rfps calculation.
+ *
+ * @param dts timestamp of the i-th frame
+ * @return 0 if OK, AVERROR_xxx on error
+ */
+int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts);
+
+void ff_rfps_calculate(AVFormatContext *ic);
+
+/**
+ * Rescales a timestamp and the endpoints of an interval to which the temstamp
+ * belongs, from a timebase `tb_in` to a timebase `tb_out`.
+ *
+ * The upper (lower) bound of the output interval is rounded up (down) such that
+ * the output interval always falls within the intput interval. The timestamp is
+ * rounded to the nearest integer and halfway cases away from zero, and can
+ * therefore fall outside of the output interval.
+ *
+ * Useful to simplify the rescaling of the arguments of AVInputFormat::read_seek2()
+ *
+ * @param[in] tb_in Timebase of the input `min_ts`, `ts` and `max_ts`
+ * @param[in] tb_out Timebase of the ouput `min_ts`, `ts` and `max_ts`
+ * @param[in,out] min_ts Lower bound of the interval
+ * @param[in,out] ts Timestamp
+ * @param[in,out] max_ts Upper bound of the interval
+ */
+void ff_rescale_interval(AVRational tb_in, AVRational tb_out,
+ int64_t *min_ts, int64_t *ts, int64_t *max_ts);
+
+#endif /* AVFORMAT_DEMUX_H */
diff --git a/libavformat/hls.c b/libavformat/hls.c
index 83ff4cc607..38eb346405 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -39,6 +39,7 @@
#include "libavutil/dict.h"
#include "libavutil/time.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
#include "avio_internal.h"
#include "id3v2.h"
diff --git a/libavformat/idcin.c b/libavformat/idcin.c
index c92ed2c237..1560d58e39 100644
--- a/libavformat/idcin.c
+++ b/libavformat/idcin.c
@@ -72,6 +72,7 @@
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
#define HUFFMAN_TABLE_SIZE (64 * 1024)
diff --git a/libavformat/imfdec.c b/libavformat/imfdec.c
index 2fe79dfbad..4019249f3e 100644
--- a/libavformat/imfdec.c
+++ b/libavformat/imfdec.c
@@ -63,6 +63,7 @@
*/
#include "avio_internal.h"
+#include "demux.h"
#include "imf.h"
#include "internal.h"
#include "libavcodec/packet.h"
@@ -71,7 +72,6 @@
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "mxf.h"
-#include "url.h"
#include <inttypes.h>
#include <libxml/parser.h>
diff --git a/libavformat/internal.h b/libavformat/internal.h
index 16f84374f7..c123c8d1ae 100644
--- a/libavformat/internal.h
+++ b/libavformat/internal.h
@@ -460,21 +460,6 @@ do {\
} while(0)
#endif
-#define RELATIVE_TS_BASE (INT64_MAX - (1LL << 48))
-
-static av_always_inline int is_relative(int64_t ts)
-{
- return ts > (RELATIVE_TS_BASE - (1LL << 48));
-}
-
-/**
- * Wrap a given time stamp, if there is an indication for an overflow
- *
- * @param st stream
- * @param timestamp the time stamp to wrap
- * @return resulting time stamp
- */
-int64_t ff_wrap_timestamp(const AVStream *st, int64_t timestamp);
void ff_flush_packet_queue(AVFormatContext *s);
@@ -509,8 +494,6 @@ char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase);
*/
int ff_hex_to_data(uint8_t *data, const char *p);
-void ff_read_frame_flush(AVFormatContext *s);
-
#define NTP_OFFSET 2208988800ULL
#define NTP_OFFSET_US (NTP_OFFSET * 1000000ULL)
@@ -612,22 +595,6 @@ void ff_parse_key_value(const char *str, ff_parse_key_val_cb callback_get_buf,
int ff_find_stream_index(const AVFormatContext *s, int id);
/**
- * Internal version of av_index_search_timestamp
- */
-int ff_index_search_timestamp(const AVIndexEntry *entries, int nb_entries,
- int64_t wanted_timestamp, int flags);
-
-/**
- * Internal version of av_add_index_entry
- */
-int ff_add_index_entry(AVIndexEntry **index_entries,
- int *nb_index_entries,
- unsigned int *index_entries_allocated_size,
- int64_t pos, int64_t timestamp, int size, int distance, int flags);
-
-void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance);
-
-/**
* Add a new chapter.
*
* @param s media file handle
@@ -641,52 +608,10 @@ void ff_configure_buffers_for_index(AVFormatContext *s, int64_t time_tolerance);
AVChapter *avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base,
int64_t start, int64_t end, const char *title);
-/**
- * Ensure the index uses less memory than the maximum specified in
- * AVFormatContext.max_index_size by discarding entries if it grows
- * too large.
- */
-void ff_reduce_index(AVFormatContext *s, int stream_index);
-
enum AVCodecID ff_guess_image2_codec(const char *filename);
const AVCodec *ff_find_decoder(AVFormatContext *s, const AVStream *st,
enum AVCodecID codec_id);
-/**
- * Perform a binary search using av_index_search_timestamp() and
- * AVInputFormat.read_timestamp().
- *
- * @param target_ts target timestamp in the time base of the given stream
- * @param stream_index stream number
- */
-int ff_seek_frame_binary(AVFormatContext *s, int stream_index,
- int64_t target_ts, int flags);
-
-/**
- * Update cur_dts of all streams based on the given timestamp and AVStream.
- *
- * Stream ref_st unchanged, others set cur_dts in their native time base.
- * Only needed for timestamp wrapping or if (dts not set and pts!=dts).
- * @param timestamp new dts expressed in time_base of param ref_st
- * @param ref_st reference stream giving time_base of param timestamp
- */
-void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp);
-
-int ff_find_last_ts(AVFormatContext *s, int stream_index, int64_t *ts, int64_t *pos,
- int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
-
-/**
- * Perform a binary search using read_timestamp().
- *
- * @param target_ts target timestamp in the time base of the given stream
- * @param stream_index stream number
- */
-int64_t ff_gen_search(AVFormatContext *s, int stream_index,
- int64_t target_ts, int64_t pos_min,
- int64_t pos_max, int64_t pos_limit,
- int64_t ts_min, int64_t ts_max,
- int flags, int64_t *ts_ret,
- int64_t (*read_timestamp)(struct AVFormatContext *, int , int64_t *, int64_t ));
/**
* Set the time base and wrapping info for a given stream. This will be used
@@ -718,15 +643,6 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels,
int ff_framehash_write_header(AVFormatContext *s);
/**
- * Read a transport packet from a media file.
- *
- * @param s media file handle
- * @param pkt is filled
- * @return 0 if OK, AVERROR_xxx on error
- */
-int ff_read_packet(AVFormatContext *s, AVPacket *pkt);
-
-/**
* Add an attached pic to an AVStream.
*
* @param st if set, the stream to add the attached pic to;
@@ -820,16 +736,6 @@ int ff_alloc_extradata(AVCodecParameters *par, int size);
int ff_get_extradata(AVFormatContext *s, AVCodecParameters *par, AVIOContext *pb, int size);
/**
- * add frame for rfps calculation.
- *
- * @param dts timestamp of the i-th frame
- * @return 0 if OK, AVERROR_xxx on error
- */
-int ff_rfps_add_frame(AVFormatContext *ic, AVStream *st, int64_t dts);
-
-void ff_rfps_calculate(AVFormatContext *ic);
-
-/**
* Copies the whilelists from one context to the other
*/
int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src);
@@ -880,24 +786,4 @@ void ff_format_set_url(AVFormatContext *s, char *url);
void avpriv_register_devices(const AVOutputFormat * const o[], const AVInputFormat * const i[]);
-/**
- * Rescales a timestamp and the endpoints of an interval to which the temstamp
- * belongs, from a timebase `tb_in` to a timebase `tb_out`.
- *
- * The upper (lower) bound of the output interval is rounded up (down) such that
- * the output interval always falls within the intput interval. The timestamp is
- * rounded to the nearest integer and halfway cases away from zero, and can
- * therefore fall outside of the output interval.
- *
- * Useful to simplify the rescaling of the arguments of AVInputFormat::read_seek2()
- *
- * @param[in] tb_in Timebase of the input `min_ts`, `ts` and `max_ts`
- * @param[in] tb_out Timebase of the ouput `min_ts`, `ts` and `max_ts`
- * @param[in,out] min_ts Lower bound of the interval
- * @param[in,out] ts Timestamp
- * @param[in,out] max_ts Upper bound of the interval
- */
-void ff_rescale_interval(AVRational tb_in, AVRational tb_out,
- int64_t *min_ts, int64_t *ts, int64_t *max_ts);
-
#endif /* AVFORMAT_INTERNAL_H */
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index d97fc33d44..4715f1b7d4 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -55,6 +55,7 @@
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "dovi_isom.h"
#include "internal.h"
#include "isom.h"
diff --git a/libavformat/mca.c b/libavformat/mca.c
index d8278ebe72..74654c3b39 100644
--- a/libavformat/mca.c
+++ b/libavformat/mca.c
@@ -22,6 +22,7 @@
#include "libavutil/intreadwrite.h"
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
typedef struct MCADemuxContext {
diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c
index a02b190620..db3b77bb9b 100644
--- a/libavformat/mlvdec.c
+++ b/libavformat/mlvdec.c
@@ -24,12 +24,11 @@
* Magic Lantern Video (MLV) demuxer
*/
-#include "libavutil/eval.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/rational.h"
#include "avformat.h"
-#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
#include "riff.h"
diff --git a/libavformat/mov.c b/libavformat/mov.c
index c85b6e1915..d7be593a86 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -36,11 +36,9 @@
#include "libavutil/intreadwrite.h"
#include "libavutil/intfloat.h"
#include "libavutil/mathematics.h"
-#include "libavutil/time_internal.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/dict.h"
-#include "libavutil/display.h"
#include "libavutil/opt.h"
#include "libavutil/aes.h"
#include "libavutil/aes_ctr.h"
@@ -49,7 +47,6 @@
#include "libavutil/spherical.h"
#include "libavutil/stereo3d.h"
#include "libavutil/timecode.h"
-#include "libavutil/dovi_meta.h"
#include "libavcodec/ac3tab.h"
#include "libavcodec/flac.h"
#include "libavcodec/hevc.h"
@@ -58,6 +55,7 @@
#include "avformat.h"
#include "internal.h"
#include "avio_internal.h"
+#include "demux.h"
#include "dovi_isom.h"
#include "riff.h"
#include "isom.h"
diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c
index f617348b2e..458d6dbd03 100644
--- a/libavformat/mp3dec.c
+++ b/libavformat/mp3dec.c
@@ -20,14 +20,13 @@
*/
#include "libavutil/opt.h"
-#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
-#include "libavutil/crc.h"
#include "libavutil/dict.h"
#include "libavutil/mathematics.h"
#include "avformat.h"
#include "internal.h"
#include "avio_internal.h"
+#include "demux.h"
#include "id3v2.h"
#include "id3v1.h"
#include "replaygain.h"
diff --git a/libavformat/mpc8.c b/libavformat/mpc8.c
index 03c67907b9..2822a08b55 100644
--- a/libavformat/mpc8.c
+++ b/libavformat/mpc8.c
@@ -23,6 +23,7 @@
#include "libavcodec/unary.h"
#include "apetag.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
#include "avio_internal.h"
diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c
index d696183a73..864b08d8f8 100644
--- a/libavformat/mpeg.c
+++ b/libavformat/mpeg.c
@@ -24,6 +24,7 @@
#include "libavutil/channel_layout.h"
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
#include "mpeg.h"
diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c
index 49f7735123..6e761c07f1 100644
--- a/libavformat/mpegts.c
+++ b/libavformat/mpegts.c
@@ -39,6 +39,7 @@
#include "mpegts.h"
#include "internal.h"
#include "avio_internal.h"
+#include "demux.h"
#include "mpeg.h"
#include "isom.h"
#if CONFIG_ICONV
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 30dd40749c..6a22c33995 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -59,6 +59,7 @@
#include "libavutil/opt.h"
#include "avformat.h"
#include "avlanguage.h"
+#include "demux.h"
#include "internal.h"
#include "mxf.h"
diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c
index 6611fbc1d7..0db3d03f6c 100644
--- a/libavformat/nutdec.c
+++ b/libavformat/nutdec.c
@@ -29,6 +29,7 @@
#include "libavutil/tree.h"
#include "libavcodec/bytestream.h"
#include "avio_internal.h"
+#include "demux.h"
#include "isom.h"
#include "nut.h"
#include "riff.h"
diff --git a/libavformat/oggdec.c b/libavformat/oggdec.c
index 87f178bb7b..3b19e0bd89 100644
--- a/libavformat/oggdec.c
+++ b/libavformat/oggdec.c
@@ -32,10 +32,10 @@
#include "libavutil/avassert.h"
#include "libavutil/intreadwrite.h"
#include "avio_internal.h"
+#include "demux.h"
#include "oggdec.h"
#include "avformat.h"
#include "internal.h"
-#include "vorbiscomment.h"
#define MAX_PAGE_SIZE 65307
#define DECODER_BUFFER_SIZE MAX_PAGE_SIZE
diff --git a/libavformat/oggdec.h b/libavformat/oggdec.h
index 1d28e50aa8..43df23f4cb 100644
--- a/libavformat/oggdec.h
+++ b/libavformat/oggdec.h
@@ -26,7 +26,6 @@
#define AVFORMAT_OGGDEC_H
#include "avformat.h"
-#include "metadata.h"
struct ogg_codec {
const int8_t *magic;
diff --git a/libavformat/options.c b/libavformat/options.c
index 14ae55e3fd..d306c86c63 100644
--- a/libavformat/options.c
+++ b/libavformat/options.c
@@ -19,6 +19,7 @@
*/
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
#include "libavcodec/avcodec.h"
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index cb0ca31f40..881d7002ad 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -22,13 +22,13 @@
#include <inttypes.h>
#include "libavutil/avassert.h"
-#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/dict.h"
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
#include "rmsipr.h"
#include "rm.h"
diff --git a/libavformat/rtpdec_asf.c b/libavformat/rtpdec_asf.c
index eb19e85351..72ead6975a 100644
--- a/libavformat/rtpdec_asf.c
+++ b/libavformat/rtpdec_asf.c
@@ -28,11 +28,11 @@
#include "libavutil/base64.h"
#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
-#include "rtp.h"
#include "rtpdec_formats.h"
#include "rtsp.h"
#include "asf.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
/**
diff --git a/libavformat/seek.c b/libavformat/seek.c
index 890aea7f8a..3b1c75f1b1 100644
--- a/libavformat/seek.c
+++ b/libavformat/seek.c
@@ -27,6 +27,7 @@
#include "avformat.h"
#include "avio_internal.h"
+#include "demux.h"
#include "internal.h"
void avpriv_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp)
diff --git a/libavformat/tests/seek_utils.c b/libavformat/tests/seek_utils.c
index cc679dca05..4cb94ad685 100644
--- a/libavformat/tests/seek_utils.c
+++ b/libavformat/tests/seek_utils.c
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include "libavformat/internal.h"
+#include "libavformat/demux.h"
int main(void)
{
diff --git a/libavformat/vpk.c b/libavformat/vpk.c
index 10c4cf0ebe..bfd49c6307 100644
--- a/libavformat/vpk.c
+++ b/libavformat/vpk.c
@@ -21,6 +21,7 @@
#include "libavutil/intreadwrite.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
typedef struct VPKDemuxContext {
diff --git a/libavformat/wtvdec.c b/libavformat/wtvdec.c
index 087b44273e..98128b7201 100644
--- a/libavformat/wtvdec.c
+++ b/libavformat/wtvdec.c
@@ -32,6 +32,7 @@
#include "libavutil/intfloat.h"
#include "libavutil/time_internal.h"
#include "avformat.h"
+#include "demux.h"
#include "internal.h"
#include "wtv.h"
#include "mpegts.h"