summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-06-20 13:57:58 +0200
committerwm4 <wm4@nowhere>2017-06-20 14:22:10 +0200
commit1890529857a3b963df476f53ca41faacab48a6d2 (patch)
treecad31a2b753e5aa2040dd8d8d8adc34ececebea0 /demux/demux.c
parent5bfbe6dfde01704979dd086d5184ea2e697cb510 (diff)
downloadmpv-1890529857a3b963df476f53ca41faacab48a6d2.tar.bz2
mpv-1890529857a3b963df476f53ca41faacab48a6d2.tar.xz
demux: get rid of DEMUXER_CTRL_GET_TIME_LENGTH
Similar purpose as f34e1a0deea45e. Somehow this is much more natural too, and needs less code. This breaks runtime updates to duration. This could easily be fixed, but no important demuxer does this anyway. Only demux_raw and demux_disc might (the latter for BD/DVD). For the latter it might actually have some importance when changing titles at runtime (I guess?), but guess what, I don't care.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 87c9879a59..3a3d9978f9 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -173,7 +173,6 @@ struct demux_internal {
// Cached state.
bool force_cache_update;
- double time_length;
struct mp_tags *stream_metadata;
struct stream_cache_info stream_cache_info;
int64_t stream_size;
@@ -1085,6 +1084,7 @@ static void demux_copy(struct demuxer *dst, struct demuxer *src)
dst->ts_resets_possible = src->ts_resets_possible;
dst->fully_read = src->fully_read;
dst->start_time = src->start_time;
+ dst->duration = src->duration;
dst->is_network = src->is_network;
dst->priv = src->priv;
}
@@ -1572,14 +1572,6 @@ int demuxer_add_chapter(demuxer_t *demuxer, char *name,
return demuxer->num_chapters - 1;
}
-double demuxer_get_time_length(struct demuxer *demuxer)
-{
- double len;
- if (demux_control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH, &len) > 0)
- return len;
- return -1;
-}
-
// must be called not locked
static void update_cache(struct demux_internal *in)
{
@@ -1587,21 +1579,14 @@ static void update_cache(struct demux_internal *in)
struct stream *stream = demuxer->stream;
// Don't lock while querying the stream.
- double time_length = -1;
struct mp_tags *stream_metadata = NULL;
struct stream_cache_info stream_cache_info = {.size = -1};
- if (demuxer->desc->control) {
- demuxer->desc->control(demuxer, DEMUXER_CTRL_GET_TIME_LENGTH,
- &time_length);
- }
-
int64_t stream_size = stream_get_size(stream);
stream_control(stream, STREAM_CTRL_GET_METADATA, &stream_metadata);
stream_control(stream, STREAM_CTRL_GET_CACHE_INFO, &stream_cache_info);
pthread_mutex_lock(&in->lock);
- in->time_length = time_length;
in->stream_size = stream_size;
in->stream_cache_info = stream_cache_info;
if (stream_metadata) {
@@ -1645,11 +1630,6 @@ static int cached_stream_control(struct demux_internal *in, int cmd, void *arg)
static int cached_demux_control(struct demux_internal *in, int cmd, void *arg)
{
switch (cmd) {
- case DEMUXER_CTRL_GET_TIME_LENGTH:
- if (in->time_length < 0)
- return CONTROL_FALSE;
- *(double *)arg = in->time_length;
- return CONTROL_OK;
case DEMUXER_CTRL_STREAM_CTRL: {
struct demux_ctrl_stream_ctrl *c = arg;
int r = cached_stream_control(in, c->ctrl, c->arg);