summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-07-08 01:26:13 +0200
committerwm4 <wm4@nowhere>2013-07-08 01:36:02 +0200
commit05ae5afd6249af9770eb1e55104fbd4f510c2342 (patch)
treeed527373fe42a37f24d4eb43a7a7721d7145fd38 /core
parent50808bab8db030acd07433e58465d1e71bca2269 (diff)
downloadmpv-05ae5afd6249af9770eb1e55104fbd4f510c2342.tar.bz2
mpv-05ae5afd6249af9770eb1e55104fbd4f510c2342.tar.xz
demux: remove separate arrays for audio/video/sub streams, simplify
These separate arrays were used by the old demuxers and are not needed anymore. We can simplify track switching as well. One interesting thing is that stream/tv.c (which is a demuxer) won't respect --no-audio anymore. It will probably work as expected, but it will still open an audio device etc. - this is because track selection is now always done with the runtime track switching mechanism. Maybe the TV code could be updated to do proper runtime switching, but I can't test this stuff.
Diffstat (limited to 'core')
-rw-r--r--core/command.c8
-rw-r--r--core/mplayer.c15
2 files changed, 10 insertions, 13 deletions
diff --git a/core/command.c b/core/command.c
index 80f6f5d9d2..fb21d7bc41 100644
--- a/core/command.c
+++ b/core/command.c
@@ -566,13 +566,13 @@ static int mp_property_angle(m_option_t *prop, int action, void *arg,
case M_PROPERTY_SET:
angle = demuxer_set_angle(demuxer, *(int *)arg);
if (angle >= 0) {
- struct sh_video *sh_video = demuxer->video->sh;
+ struct sh_stream *sh_video = demuxer->video->gsh;
if (sh_video)
- resync_video_stream(sh_video);
+ resync_video_stream(sh_video->video);
- struct sh_audio *sh_audio = demuxer->audio->sh;
+ struct sh_stream *sh_audio = demuxer->audio->gsh;
if (sh_audio)
- resync_audio_stream(sh_audio);
+ resync_audio_stream(sh_audio->audio);
}
return M_PROPERTY_OK;
case M_PROPERTY_GET_TYPE: {
diff --git a/core/mplayer.c b/core/mplayer.c
index 16277d2e60..78fb8c9a8e 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -375,7 +375,7 @@ static double get_main_demux_pts(struct MPContext *mpctx)
if (mpctx->demuxer) {
for (int type = 0; type < STREAM_TYPE_COUNT; type++) {
struct demux_stream *ds = mpctx->demuxer->ds[type];
- if (ds->sh && main_new_pos == MP_NOPTS_VALUE) {
+ if (ds->gsh && main_new_pos == MP_NOPTS_VALUE) {
demux_fill_buffer(mpctx->demuxer, ds);
if (ds->first)
main_new_pos = ds->first->pts;
@@ -445,11 +445,11 @@ static void preselect_demux_streams(struct MPContext *mpctx)
static void uninit_subs(struct demuxer *demuxer)
{
- for (int i = 0; i < MAX_S_STREAMS; i++) {
- struct sh_sub *sh = demuxer->s_streams[i];
- if (sh) {
- sub_destroy(sh->dec_sub);
- sh->dec_sub = NULL;
+ for (int i = 0; i < demuxer->num_streams; i++) {
+ struct sh_stream *sh = demuxer->streams[i];
+ if (sh->sub) {
+ sub_destroy(sh->sub->dec_sub);
+ sh->sub->dec_sub = NULL;
}
}
}
@@ -1938,9 +1938,6 @@ static void reinit_subs(struct MPContext *mpctx)
// which makes the demuxer create the sh_stream, and contains the first
// subtitle event.
- // demux_mpg - maps IDs directly to the logical stream number
- track->demuxer->sub->id = track->demuxer_id;
-
// demux_lavf - IDs are essentially random, have to use MPEG IDs
int id = map_id_to_demuxer(track->demuxer, track->type,
track->demuxer_id);