typefind: fix E-AC-3 frame size parsing
authorRené Stadler <rene.stadler@nokia.com>
Fri, 3 Dec 2010 16:08:58 +0000 (18:08 +0200)
committerRené Stadler <rene.stadler@nokia.com>
Tue, 7 Dec 2010 19:28:20 +0000 (21:28 +0200)
Frame size is given in words; it is already multiplied by two where
needed, so the left shift is superfluous. This extra multiplication
caused the code to inspect the third packet instead of the second,
which would fail for files where the second packet has a size
different from the first.

gst/typefind/gsttypefindfunctions.c

index 030f7afdd51a10554af7b6c28912891b7cb4fa37..de843bf0b8f63bb01d1c30b1c54656ef302ecf7d 100644 (file)
@@ -1295,8 +1295,7 @@ ac3_type_find (GstTypeFind * tf, gpointer unused)
         DataScanCtx c_next = c;
         guint frame_size;
 
-        frame_size = ((((c.data[2] & 0x07) << 8) +
-                (c.data[3] & 0xff)) + 1) << 1;
+        frame_size = (((c.data[2] & 0x07) << 8) + (c.data[3] & 0xff)) + 1;
         GST_LOG ("possible E-AC3 frame sync at offset %"
             G_GUINT64_FORMAT ", size=%u", c.offset, frame_size);
         if (data_scan_ctx_ensure_data (tf, &c_next, (frame_size * 2) + 5)) {