shithub: opusfile

Download patch

ref: efc0d57af6862fb77b3a0fad21d32c6fd42106d8
parent: 2862e2eaf4d655d6aaa358f8dc76068f4f49a1fb
author: Timothy B. Terriberry <tterribe@xiph.org>
date: Tue May 7 16:20:44 EDT 2013

Fix 255 packet assertion.

If we actually have 255 packets on a page, this assertion always
 triggers, because ogg_stream_packetout doesn't fail until we ask
 for the _next_ packet.

--- a/src/opusfile.c
+++ b/src/opusfile.c
@@ -768,9 +768,6 @@
   total_duration=0;
   for(;;){
     int ret;
-    /*Unless libogg is broken, we can't get more than 255 packets from a
-       single page.*/
-    OP_ASSERT(op_count<255);
     /*This takes advantage of undocumented libogg behavior that returned
        ogg_packet buffers are valid at least until the next page is
        submitted.
@@ -788,6 +785,9 @@
       total_duration=OP_HOLE;
       break;
     }
+    /*Unless libogg is broken, we can't get more than 255 packets from a
+       single page.*/
+    OP_ASSERT(op_count<255);
     _durations[op_count]=op_get_packet_duration(_of->op[op_count].packet,
      _of->op[op_count].bytes);
     if(OP_LIKELY(_durations[op_count]>0)){