diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-09-04 19:49:35 +0300 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2009-09-04 19:49:35 +0300 |
commit | 0e1b7765be878491565cf5e471f22b15e106164c (patch) | |
tree | 422e500c289335182a2a64934dcabf10b95e32dc /libmpdemux/demux_demuxers.c | |
parent | a9618c1c6fe9424dfaeb1677348e0382d7252554 (diff) | |
parent | dcfd043ea8d0c46929aad78596314d837c290d39 (diff) | |
download | mpv-0e1b7765be878491565cf5e471f22b15e106164c.tar.bz2 mpv-0e1b7765be878491565cf5e471f22b15e106164c.tar.xz |
Merge svn changes up to r29644
Diffstat (limited to 'libmpdemux/demux_demuxers.c')
-rw-r--r-- | libmpdemux/demux_demuxers.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/libmpdemux/demux_demuxers.c b/libmpdemux/demux_demuxers.c index 483dd02c30..3b4f958394 100644 --- a/libmpdemux/demux_demuxers.c +++ b/libmpdemux/demux_demuxers.c @@ -55,6 +55,9 @@ demuxer_t* new_demuxers_demuxer(demuxer_t* vd, demuxer_t* ad, demuxer_t* sd) { ret->video = vd->video; ret->audio = ad->audio; ret->sub = sd->sub; + if (vd) vd->video->demuxer = ret; + if (ad) ad->audio->demuxer = ret; + if (sd) sd->sub->demuxer = ret; // HACK?, necessary for subtitle (and audio and video when implemented) switching memcpy(ret->v_streams, vd->v_streams, sizeof(ret->v_streams)); @@ -71,11 +74,15 @@ static int demux_demuxers_fill_buffer(demuxer_t *demux,demux_stream_t *ds) { priv=demux->priv; - if(ds->demuxer == priv->vd) + // HACK: make sure the subtitles get properly interleaved if with -subfile + if (priv->sd && priv->sd->sub != ds && + priv->sd != priv->vd && priv->sd != priv->ad) + ds_get_next_pts(priv->sd->sub); + if(priv->vd && priv->vd->video == ds) return demux_fill_buffer(priv->vd,ds); - else if(ds->demuxer == priv->ad) + else if(priv->ad && priv->ad->audio == ds) return demux_fill_buffer(priv->ad,ds); - else if(ds->demuxer == priv->sd) + else if(priv->sd && priv->sd->sub == ds) return demux_fill_buffer(priv->sd,ds); mp_tmsg(MSGT_DEMUX,MSGL_WARN,"fill_buffer error: bad demuxer: not vd, ad or sd.\n"); |