diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-04-28 14:43:19 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2005-04-28 14:43:19 +0000 |
commit | be54f4813fdc9f5714f3b010a46b962d37e27b2b (patch) | |
tree | ac769f2d59029f42db18c8a24a7175465a944e26 /libmpdemux/demux_mpg.c | |
parent | 68f4daf93b9921a1614fe9bfd349af20a3f5b63d (diff) | |
download | mpv-be54f4813fdc9f5714f3b010a46b962d37e27b2b.tar.bz2 mpv-be54f4813fdc9f5714f3b010a46b962d37e27b2b.tar.xz |
adds a parameter to the switch_audio command to directly select a track.
Patch by kiriuja mplayer-patches at en-directo net
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15286 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mpg.c')
-rw-r--r-- | libmpdemux/demux_mpg.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c index acd70c6562..7f975b9589 100644 --- a/libmpdemux/demux_mpg.c +++ b/libmpdemux/demux_mpg.c @@ -643,6 +643,8 @@ int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ sh_audio_t *sh_audio = d_audio->sh; sh_audio_t *sh_a; int i; + if (*((int*)arg) < 0) + { for (i = 0; i < mpg_d->num_a_streams; i++) { if (d_audio->id == mpg_d->a_stream_ids[i]) break; } @@ -650,13 +652,22 @@ int demux_mpg_control(demuxer_t *demuxer,int cmd, void *arg){ i = (i+1) % mpg_d->num_a_streams; sh_a = (sh_audio_t*)demuxer->a_streams[mpg_d->a_stream_ids[i]]; } while (sh_a->format != sh_audio->format); - if (d_audio->id != mpg_d->a_stream_ids[i]) { + } + else { + for (i = 0; i < mpg_d->num_a_streams; i++) + if (*((int*)arg) == mpg_d->a_stream_ids[i]) break; + if (i < mpg_d->num_a_streams) + sh_a = (sh_audio_t*)demuxer->a_streams[*((int*)arg)]; + if (sh_a->format != sh_audio->format) + i = mpg_d->num_a_streams; + } + if (i < mpg_d->num_a_streams && d_audio->id != mpg_d->a_stream_ids[i]) { d_audio->id = mpg_d->a_stream_ids[i]; d_audio->sh = sh_a; ds_free_packs(d_audio); } - *((int *)arg)=(int)d_audio->id; } + *((int*)arg) = demuxer->audio->id; return DEMUXER_CTRL_OK; default: |