summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2018-08-24 12:56:41 +0200
committerwm4 <wm4@nowhere>2018-08-24 12:56:41 +0200
commit120dcdf5ccac8f7ea7d4c5de34d5a28c90bc521b (patch)
tree58fdda9617c490eddf6487aed45bf324faa8dfbf /demux
parent9467e90c5bc1c15245acf27afd6dc83287beba9d (diff)
downloadmpv-120dcdf5ccac8f7ea7d4c5de34d5a28c90bc521b.tar.bz2
mpv-120dcdf5ccac8f7ea7d4c5de34d5a28c90bc521b.tar.xz
demux: allow cache sizes > 2GB
There was no reason to limit this. Only some int fields had to be changed to size_t.
Diffstat (limited to 'demux')
-rw-r--r--demux/demux.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/demux/demux.c b/demux/demux.c
index c31dfcf809..3e9d897bb2 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -98,11 +98,15 @@ struct demux_opts {
#define OPT_BASE_STRUCT struct demux_opts
+#define MAX_BYTES MPMIN(INT64_MAX, (size_t)-1 / 2)
+
const struct m_sub_options demux_conf = {
.opts = (const struct m_option[]){
OPT_DOUBLE("demuxer-readahead-secs", min_secs, M_OPT_MIN, .min = 0),
- OPT_BYTE_SIZE("demuxer-max-bytes", max_bytes, 0, 0, INT_MAX),
- OPT_BYTE_SIZE("demuxer-max-back-bytes", max_bytes_bw, 0, 0, INT_MAX),
+ // (The MAX_BYTES sizes may not be accurate because the max field is
+ // of double type.)
+ OPT_BYTE_SIZE("demuxer-max-bytes", max_bytes, 0, 0, MAX_BYTES),
+ OPT_BYTE_SIZE("demuxer-max-back-bytes", max_bytes_bw, 0, 0, MAX_BYTES),
OPT_FLAG("force-seekable", force_seekable, 0),
OPT_DOUBLE("cache-secs", min_secs_cache, M_OPT_MIN, .min = 0),
OPT_FLAG("access-references", access_references, 0),
@@ -164,8 +168,8 @@ struct demux_internal {
bool idle;
bool autoselect;
double min_secs;
- int max_bytes;
- int max_bytes_bw;
+ size_t max_bytes;
+ size_t max_bytes_bw;
bool seekable_cache;
// At least one decoder actually requested data since init or the last seek.