flacparse: avoid indefinite extended search for frame end if possible
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 19 Mar 2012 10:58:15 +0000 (11:58 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 19 Mar 2012 11:02:45 +0000 (12:02 +0100)
... which is particularly useful if locked on to the wrong frame start
and/or corrupt frame being crc checked.

gst/audioparsers/gstflacparse.c

index 9cfdb98..942914e 100644 (file)
@@ -691,6 +691,15 @@ gst_flac_parse_frame_is_valid (GstFlacParse * flacparse,
     }
   }
 
+  /* so we searched to expected end and found nothing,
+   * give up on this frame (start) */
+  if (flacparse->max_framesize && i > 2 * flacparse->max_framesize) {
+    GST_LOG_OBJECT (flacparse,
+        "could not determine valid frame end, discarding frame (start)");
+    *ret = 1;
+    return FALSE;
+  }
+
 need_more:
   max = flacparse->max_framesize + 16;
   if (max == 16)