permit the transititions no stream <-> some streams and viceversa (needed for forthcoming program switching patch)

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24871 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
nicodvb 2007-10-27 19:04:37 +00:00
parent 15ad71420f
commit d936414dc1
1 changed files with 11 additions and 3 deletions

View File

@ -632,8 +632,14 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
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 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
}
}
}
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;
}