summaryrefslogtreecommitdiffstats
path: root/demux/demux.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-06-07 17:09:22 +0200
committerwm4 <wm4@nowhere>2019-09-19 20:37:05 +0200
commite8147843fc072c5056d99b6c162216d82f1eedc7 (patch)
tree6e171dd19e5a439804e4de349874f7aa7f20312b /demux/demux.h
parent5d6b7c39abab4fc4dd7d5fb11af6439715064c98 (diff)
downloadmpv-e8147843fc072c5056d99b6c162216d82f1eedc7.tar.bz2
mpv-e8147843fc072c5056d99b6c162216d82f1eedc7.tar.xz
demux: really disable cache for sub-demuxers
It seems the so called demuxer cache wasn't really disabled for sub-demuxers (timeline stuff). This was relatively harmless, since the actual packet data was shared anyway via refcounting. But with the addition of a mmap cache backend, this may change a lot. So strictly disable any caching for sub-demuxers. This assumes that users of sub-demuxers (only demux_timeline.c by now?) strictly use demux_read_any_packet(), since demux_read_packet_async() will require some minor read-ahead if a low level packet read returned a packet for a different stream. This requires some awkward messing with this fucking heap of trash. The thing that is really wrong here is that the demuxer API mixes different concepts, and sub-demuxers get the same API as decoders, and use the cache code.
Diffstat (limited to 'demux/demux.h')
-rw-r--r--demux/demux.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/demux/demux.h b/demux/demux.h
index da315adebb..63897c342d 100644
--- a/demux/demux.h
+++ b/demux/demux.h
@@ -158,6 +158,7 @@ typedef struct demux_attachment
} demux_attachment_t;
struct demuxer_params {
+ bool is_top_level; // if true, it's not a sub-demuxer (enables cache etc.)
char *force_format;
int matroska_num_wanted_uids;
struct matroska_segment_uid *matroska_wanted_uids;