1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-29 23:07:56 +00:00

Fix an endless loop if all programs are empty.

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29660 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2009-09-08 09:08:05 +00:00
parent 03f08ab010
commit 64c5127103

View File

@ -707,6 +707,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
demux_program_t *prog = arg; demux_program_t *prog = arg;
AVProgram *program; AVProgram *program;
int p, i; int p, i;
int start;
if(priv->avfc->nb_programs < 2) if(priv->avfc->nb_programs < 2)
return DEMUXER_CTRL_NOTIMPL; return DEMUXER_CTRL_NOTIMPL;
@ -728,6 +729,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg)
p = i; p = i;
} }
prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default
start = p;
redo: redo:
program = priv->avfc->programs[p]; program = priv->avfc->programs[p];
for(i=0; i<program->nb_stream_indexes; i++) for(i=0; i<program->nb_stream_indexes; i++)
@ -751,6 +753,8 @@ redo:
if(prog->progid == -1 && prog->vid == -2 && prog->aid == -2) if(prog->progid == -1 && prog->vid == -2 && prog->aid == -2)
{ {
p = (p + 1) % priv->avfc->nb_programs; p = (p + 1) % priv->avfc->nb_programs;
if (p == start)
return DEMUXER_CTRL_DONTKNOW;
goto redo; goto redo;
} }
priv->cur_program = prog->progid = program->id; priv->cur_program = prog->progid = program->id;