# HG changeset patch # User aurel # Date 1173651999 0 # Node ID 1324ae790ee07798eb61e53553f912256b0e16fa # Parent 924bfc59f12cc41f2ceaf97e5b45e2f606766c04 parse clusters until some packets are queued instead of parsing only one cluster diff -r 924bfc59f12c -r 1324ae790ee0 matroska.c --- a/matroska.c Sun Mar 11 22:19:02 2007 +0000 +++ b/matroska.c Sun Mar 11 22:26:39 2007 +0000 @@ -2698,9 +2698,8 @@ int res = 0; uint32_t id; - /* Do we still have a packet queued? */ - if (matroska_deliver_packet(matroska, pkt) == 0) - return 0; + /* Read stream until we have a packet queued. */ + while (matroska_deliver_packet(matroska, pkt)) { /* Have we already reached the end? */ if (matroska->done) @@ -2708,8 +2707,7 @@ while (res == 0) { if (!(id = ebml_peek_id(matroska, &matroska->level_up))) { - res = AVERROR_IO; - break; + return AVERROR_IO; } else if (matroska->level_up) { matroska->level_up--; break; @@ -2737,8 +2735,9 @@ if (res == -1) matroska->done = 1; - - return matroska_deliver_packet(matroska, pkt); + } + + return 0; } static int