diff options
author | Uoti Urpala <uau@mplayer2.org> | 2011-03-30 23:22:45 +0300 |
---|---|---|
committer | Uoti Urpala <uau@mplayer2.org> | 2011-03-31 00:13:36 +0300 |
commit | df31b077b485da9084609806a92d5be2c37c1359 (patch) | |
tree | cd3ac8b8090b4368c7e11328b79a6642a53435ed /libmpdemux | |
parent | 5c731e2ea669bbc732e51dc95c1ec68cc41050e6 (diff) | |
download | mpv-df31b077b485da9084609806a92d5be2c37c1359.tar.bz2 mpv-df31b077b485da9084609806a92d5be2c37c1359.tar.xz |
core, demux: fix video index handling in stream switching
Fix bugs in the handling of stream index values in video stream
switching. This is similar to what commit 90bedd0b872b6eea02351aafb62e
did for audio.
Also clean up the corresponding audio code a little bit.
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demuxer.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 6607f2399f..9b38af9452 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -1351,11 +1351,15 @@ int demuxer_switch_audio(demuxer_t *demuxer, int index) int demuxer_switch_video(demuxer_t *demuxer, int index) { int res = demux_control(demuxer, DEMUXER_CTRL_SWITCH_VIDEO, &index); - if (res == DEMUXER_CTRL_NOTIMPL) - index = demuxer->video->id; - if (demuxer->video->id >= 0) - demuxer->video->sh = demuxer->v_streams[demuxer->video->id]; - else + if (res == DEMUXER_CTRL_NOTIMPL) { + struct sh_video *sh_video = demuxer->video->sh; + return sh_video ? sh_video->vid : -2; + } + if (demuxer->video->id >= 0) { + struct sh_video *sh_video = demuxer->v_streams[demuxer->video->id]; + demuxer->video->sh = sh_video; + index = sh_video->vid; // internal MPEG demuxers don't set it right + } else demuxer->video->sh = NULL; return index; } |