diff options
author | wm4 <wm4@nowhere> | 2019-12-03 21:04:53 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2019-12-03 21:04:53 +0100 |
commit | 370ed5777c6f0b7e89542bcd3357270b88e09e93 (patch) | |
tree | 01cab3defe78fd1a50de0586947f713da34fb7f6 /demux/demux.c | |
parent | b6f605285caaebedfb8882c36609099fdebc424f (diff) | |
download | mpv-370ed5777c6f0b7e89542bcd3357270b88e09e93.tar.bz2 mpv-370ed5777c6f0b7e89542bcd3357270b88e09e93.tar.xz |
demux: do not make up demuxer_id
The demuxer_id (exported in as "src-id" property) is supposed to be the
native stream ID, as it exists in the file, or -1 if that does not exist
(actually any negative value), or if it is unknown.
Until now, an ID was made up if it was missing. That seems like strange
non-sense, and I can't find the reason why it was done. But it was
probably for convenience by the EDL stuff or so.
Stop doing this. Fortunately, the src-id property was documented as
being unavailable if the ID is not known. Even the code for this was
present, it was just inactive until now. Extend input.rst with some
explanations.
Also fixing 3 other places where negative demuxer_id was ignored or
avoided.
Diffstat (limited to 'demux/demux.c')
-rw-r--r-- | demux/demux.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/demux/demux.c b/demux/demux.c index 40439b32a8..813cb1aa23 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -980,13 +980,6 @@ static void demux_add_sh_stream_locked(struct demux_internal *in, if (sh->ff_index < 0) sh->ff_index = sh->index; - if (sh->demuxer_id < 0) { - sh->demuxer_id = 0; - for (int n = 0; n < in->num_streams; n++) { - if (in->streams[n]->type == sh->type) - sh->demuxer_id += 1; - } - } MP_TARRAY_APPEND(in, in->streams, in->num_streams, sh); assert(in->streams[sh->index] == sh); @@ -3762,6 +3755,8 @@ static bool queue_seek(struct demux_internal *in, double seek_pts, int flags, struct sh_stream *demuxer_stream_by_demuxer_id(struct demuxer *d, enum stream_type t, int id) { + if (id < 0) + return NULL; int num = demux_get_num_stream(d); for (int n = 0; n < num; n++) { struct sh_stream *s = demux_get_stream(d, n); |