# HG changeset patch # User nicodvb # Date 1193511877 0 # Node ID 2bd6d730782f1bec94fb7b029d88771997218bce # Parent d5f716b49cb4566aacc62f28057d63306042ab7f permit the transititions no stream <-> some streams and viceversa (needed for forthcoming program switching patch) diff -r d5f716b49cb4 -r 2bd6d730782f libmpdemux/demux_lavf.c --- a/libmpdemux/demux_lavf.c Sat Oct 27 19:00:07 2007 +0000 +++ b/libmpdemux/demux_lavf.c Sat Oct 27 19:04:37 2007 +0000 @@ -632,8 +632,14 @@ nstreams = priv->audio_streams; pstreams = priv->astreams; } - if(ds->id == -2) - return DEMUXER_CTRL_NOTIMPL; + if(id == -2) + { + if(ds->id >= 0) + priv->avfc->streams[ds->id]->discard = AVDISCARD_ALL; + ds_free_packs(ds); + *((int*)arg) = ds->id = -2; + return DEMUXER_CTRL_OK; + } for(i = 0; i < nstreams; i++) { if(pstreams[i] == ds->id) //current stream id @@ -659,13 +665,15 @@ } } } - if(newid == -2 || i == curridx) + if(i == curridx) return DEMUXER_CTRL_NOTIMPL; else { ds_free_packs(ds); + if(ds->id >= 0) priv->avfc->streams[ds->id]->discard = AVDISCARD_ALL; *((int*)arg) = ds->id = newid; + if(newid >= 0) priv->avfc->streams[newid]->discard = AVDISCARD_NONE; return DEMUXER_CTRL_OK; }