amrparse: a valid amr-wb frame should not have reserved frame type index
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 6 Sep 2010 12:10:11 +0000 (14:10 +0200)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Fri, 8 Apr 2011 17:07:16 +0000 (18:07 +0100)
See #639715.

gst/audioparsers/gstamrparse.c

index a668817ae58a74f02ea9c813d3bb454f7a86f1a8..42481a2b297c97944420fcce0417ba21db1e80fd 100644 (file)
@@ -64,7 +64,7 @@ static const gint block_size_nb[16] =
     { 12, 13, 15, 17, 19, 20, 26, 31, 5, 0, 0, 0, 0, 0, 0, 0 };
 
 static const gint block_size_wb[16] =
-    { 17, 23, 32, 36, 40, 46, 50, 58, 60, 5, 5, 0, 0, 0, 0, 0 };
+    { 17, 23, 32, 36, 40, 46, 50, 58, 60, 5, -1, -1, -1, -1, 0, 0 };
 
 /* AMR has a "hardcoded" framerate of 50fps */
 #define AMR_FRAMES_PER_SECOND 50
@@ -307,8 +307,9 @@ gst_amrparse_check_valid_frame (GstBaseParse * parse,
      *       to contain a valid header as well (and there is enough data to
      *       perform this check)
      */
-    if (GST_BASE_PARSE_FRAME_SYNC (frame) || GST_BASE_PARSE_FRAME_DRAIN (frame)
-        || (dsize > fsize && (data[fsize] & 0x83) == 0)) {
+    if (fsize &&
+        (GST_BASE_PARSE_FRAME_SYNC (frame) || GST_BASE_PARSE_FRAME_DRAIN (frame)
+            || (dsize > fsize && (data[fsize] & 0x83) == 0))) {
       *framesize = fsize;
       return TRUE;
     }