diff options
author | wm4 <wm4@nowhere> | 2013-12-23 20:14:54 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-12-24 17:44:34 +0100 |
commit | b796f2bb7693676056d0de98a9a95258909d799b (patch) | |
tree | a7c23c5a39b7cb817c911b68854e6304bfe7ea19 /player/playloop.c | |
parent | 96e6f3f4b6a7379fac6b61c741c57ccfc062f915 (diff) | |
download | mpv-b796f2bb7693676056d0de98a9a95258909d799b.tar.bz2 mpv-b796f2bb7693676056d0de98a9a95258909d799b.tar.xz |
player: redo demuxer stream selection
Use struct track to decide what stream to select.
Add a "selected" field and use that in some places instead of
checking mpctx->current_track.
Diffstat (limited to 'player/playloop.c')
-rw-r--r-- | player/playloop.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/player/playloop.c b/player/playloop.c index 9078853fb5..1a38f74cd8 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -301,9 +301,10 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek, // If audio or demuxer subs come from different files, seek them too: bool have_external_tracks = false; - for (int type = 0; type < STREAM_TYPE_COUNT; type++) { - struct track *track = mpctx->current_track[type]; - have_external_tracks |= track && track->is_external && track->demuxer; + for (int t = 0; t < mpctx->num_tracks; t++) { + struct track *track = mpctx->tracks[t]; + have_external_tracks |= track->selected && track->is_external && + track->demuxer; } if (have_external_tracks) { double main_new_pos; @@ -312,9 +313,9 @@ static int mp_seek(MPContext *mpctx, struct seek_params seek, } else { main_new_pos = get_main_demux_pts(mpctx); } - for (int type = 0; type < STREAM_TYPE_COUNT; type++) { - struct track *track = mpctx->current_track[type]; - if (track && track->is_external && track->demuxer) + for (int t = 0; t < mpctx->num_tracks; t++) { + struct track *track = mpctx->tracks[t]; + if (track->selected && track->is_external && track->demuxer) demux_seek(track->demuxer, main_new_pos, SEEK_ABSOLUTE); } } @@ -1027,7 +1028,6 @@ void run_playloop(struct MPContext *mpctx) if (!opts->force_vo) uninit |= INITIALIZED_VO; uninit_player(mpctx, uninit); - mpctx->current_track[STREAM_VIDEO] = NULL; if (!mpctx->current_track[STREAM_AUDIO]) mpctx->stop_play = PT_NEXT_ENTRY; mpctx->error_playing = true; |