diff options
author | wm4 <wm4@nowhere> | 2013-04-29 22:34:36 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-04-29 22:59:15 +0200 |
commit | 1c96f51e36593d43843e8bd41cee49a2bee5e4dc (patch) | |
tree | 599eaf317b1aa29af5c0a5c1b6fc916ac7ab0769 /demux/demux.c | |
parent | 2d8783075f788b9486a13e929871077850faa230 (diff) | |
download | mpv-1c96f51e36593d43843e8bd41cee49a2bee5e4dc.tar.bz2 mpv-1c96f51e36593d43843e8bd41cee49a2bee5e4dc.tar.xz |
demux: simplify stream ID business, fix issue with cover art
The stream ID handling as it was changed in commit 654c34f was still
a little bit insane, and caused a regression with the cover art hack
(the stream set in demux->video->sh was incorrect for demux_lavf).
Simplify by always using stream_index for demux_stream->id, and getting
rid of that tid thing. It turns out that the id for subtitles isn't
special either (maybe demux_ts.c was the only thing left that required
this).
Diffstat (limited to 'demux/demux.c')
-rw-r--r-- | demux/demux.c | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/demux/demux.c b/demux/demux.c index 9347f9a02c..e1bb960e78 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -244,9 +244,9 @@ demuxer_t *new_demuxer(struct MPOpts *opts, stream_t *stream, int type, static struct sh_stream *new_sh_stream_id(demuxer_t *demuxer, enum stream_type type, int stream_index, - int tid) + int demuxer_id) { - if (demuxer->num_streams > MAX_SH_STREAMS) { + if (demuxer->num_streams > MAX_SH_STREAMS || stream_index > MAX_SH_STREAMS) { mp_msg(MSGT_DEMUXER, MSGL_WARN, "Too many streams."); return NULL; } @@ -255,8 +255,7 @@ static struct sh_stream *new_sh_stream_id(demuxer_t *demuxer, .type = type, .demuxer = demuxer, .index = demuxer->num_streams, - .demuxer_id = tid, // may be overwritten by demuxer - .tid = tid, + .demuxer_id = demuxer_id, // may be overwritten by demuxer .stream_index = stream_index, .opts = demuxer->opts, }); @@ -1203,7 +1202,7 @@ void demuxer_switch_track(struct demuxer *demuxer, enum stream_type type, int old_id = demuxer->ds[type]->id; // legacy - int index = stream ? stream->tid : -2; + int index = stream ? stream->stream_index : -2; if (type == STREAM_AUDIO) { if (demux_control(demuxer, DEMUXER_CTRL_SWITCH_AUDIO, &index) == DEMUXER_CTRL_NOTIMPL) @@ -1213,8 +1212,7 @@ void demuxer_switch_track(struct demuxer *demuxer, enum stream_type type, == DEMUXER_CTRL_NOTIMPL) demuxer->video->id = index; } else if (type == STREAM_SUB) { - int index2 = stream ? stream->stream_index : -2; - demuxer->ds[type]->id = index2; + demuxer->ds[type]->id = index; } else { abort(); } @@ -1238,12 +1236,7 @@ void demuxer_switch_track(struct demuxer *demuxer, enum stream_type type, bool demuxer_stream_is_selected(struct demuxer *d, struct sh_stream *stream) { - if (!stream) - return false; - int st_id = stream->tid; - if (stream->type == STREAM_SUB) // major braindeath - st_id = stream->stream_index; - return d->ds[stream->type]->id == st_id; + return stream && d->ds[stream->type]->id == stream->stream_index; } int demuxer_add_attachment(demuxer_t *demuxer, struct bstr name, |