# HG changeset patch # User reimar # Date 1165001082 0 # Node ID a120cda87e3e34fec046e6344ffb17ce042471c9 # Parent 896a8210ed9fa5f6157c5e533a498c6cf96d4a30 Proper fix for last demux_avi commit, stream switching now really should not hang anymore diff -r 896a8210ed9f -r a120cda87e3e libmpdemux/demux_avi.c --- a/libmpdemux/demux_avi.c Fri Dec 01 18:51:44 2006 +0000 +++ b/libmpdemux/demux_avi.c Fri Dec 01 19:24:42 2006 +0000 @@ -775,18 +775,19 @@ if (*(int *)arg >= 0) ds->id = *(int *)arg; else { - int id = ds->id; - do { - if (++id >= maxid) id = 0; - if (id == ds->id) // no streams available - return DEMUXER_CTRL_NOTIMPL; - } while (!streams[id]); - ds->id = id; + int i; + for (i = 0; i < maxid; i++) { + if (++ds->id >= maxid) ds->id = 0; + if (streams[ds->id]) break; + } } chunkid = (ds->id / 10 + '0') | (ds->id % 10 + '0') << 8; ds->sh = NULL; - demux_avi_select_stream(demuxer, chunkid); + if (!streams[ds->id]) // stream not available + ds->id = -1; + else + demux_avi_select_stream(demuxer, chunkid); *(int *)arg = ds->id; return DEMUXER_CTRL_OK; }