summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-09-08 09:08:05 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-09-08 09:08:05 +0000
commit64c5127103089cc063aa6284e36e8b143ed31b50 (patch)
tree4d0be17cc1e57f5ca80a783d11bfb18168da7b6f /libmpdemux
parent03f08ab010ecc58a7f57e25718c7a3d2547f9fd1 (diff)
downloadmpv-64c5127103089cc063aa6284e36e8b143ed31b50.tar.bz2
mpv-64c5127103089cc063aa6284e36e8b143ed31b50.tar.xz
Fix an endless loop if all programs are empty.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29660 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_lavf.c4
1 files changed, 4 insertions, 0 deletions
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; i<program->nb_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;