From 64c5127103089cc063aa6284e36e8b143ed31b50 Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 8 Sep 2009 09:08:05 +0000 Subject: Fix an endless loop if all programs are empty. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29660 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_lavf.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libmpdemux') diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 392cd591e1..cf38ab41d7 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -707,6 +707,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg) demux_program_t *prog = arg; AVProgram *program; int p, i; + int start; if(priv->avfc->nb_programs < 2) return DEMUXER_CTRL_NOTIMPL; @@ -728,6 +729,7 @@ static int demux_lavf_control(demuxer_t *demuxer, int cmd, void *arg) p = i; } prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default + start = p; redo: program = priv->avfc->programs[p]; for(i=0; inb_stream_indexes; i++) @@ -751,6 +753,8 @@ redo: if(prog->progid == -1 && prog->vid == -2 && prog->aid == -2) { p = (p + 1) % priv->avfc->nb_programs; + if (p == start) + return DEMUXER_CTRL_DONTKNOW; goto redo; } priv->cur_program = prog->progid = program->id; -- cgit v1.2.3