summaryrefslogtreecommitdiffstats
path: root/player/sub.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-12-23 20:14:54 +0100
committerwm4 <wm4@nowhere>2013-12-24 17:44:34 +0100
commitb796f2bb7693676056d0de98a9a95258909d799b (patch)
treea7c23c5a39b7cb817c911b68854e6304bfe7ea19 /player/sub.c
parent96e6f3f4b6a7379fac6b61c741c57ccfc062f915 (diff)
downloadmpv-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/sub.c')
-rw-r--r--player/sub.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/player/sub.c b/player/sub.c
index ba8f7d70eb..a2455589db 100644
--- a/player/sub.c
+++ b/player/sub.c
@@ -57,9 +57,10 @@ static bool is_interleaved(struct MPContext *mpctx, struct track *track)
return false;
struct demuxer *demuxer = track->demuxer;
- for (int type = 0; type < STREAM_TYPE_COUNT; type++) {
- struct track *other = mpctx->current_track[type];
- if (other && other != track && other->demuxer && other->demuxer == demuxer)
+ for (int t = 0; t < mpctx->num_tracks; t++) {
+ struct track *other = mpctx->tracks[t];
+ if (other != track && other->selected && other->demuxer == demuxer &&
+ (other->type == STREAM_VIDEO || other->type == STREAM_AUDIO))
return true;
}
return false;
@@ -175,8 +176,7 @@ void reinit_subs(struct MPContext *mpctx)
assert(!(mpctx->initialized_flags & INITIALIZED_SUB));
- init_demux_stream(mpctx, STREAM_SUB);
- struct sh_stream *sh = mpctx->sh[STREAM_SUB];
+ struct sh_stream *sh = init_demux_stream(mpctx, track);
// No track selected, or lazily added DVD track (will actually be created
// on first sub packet)