View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002231 | libextractor | plugins | public | 2012-03-20 07:23 | 2012-03-20 08:33 |
Reporter | LRN | Assigned To | |||
Priority | low | Severity | feature | Reproducibility | N/A |
Status | new | Resolution | open | ||
Summary | 0002231: RIFF extractor is simply incorrect | ||||
Description | RIFF extractor does the following checks early on:if ((memcmp (&xdata[0], "RIFF", 4) != 0) || (memcmp (&xdata[8], "AVI ", 4) != 0)) return 0; if (memcmp (&xdata[12], "LIST", 4) != 0) return 0; if (memcmp (&xdata[20], "hdrlavih", 8) != 0) return 0; This is wrong. RIFF, like Matroska, consists of separate elements and sub-elements (called "chunks" and "subchunks"). One of the elements is LIST INFO, which contains various generic data (similar to tags), and is globally standardized (meaning that it's the same in all RIFF-based formats, including AVI, WAVE, ANI and others). The order in which chunks appear in a file is usually not standardized, and a robust RIFF parser should handle LIST INFO being both at the beginning and at the end of the file at the least. Current RIFF extractor not only knows nothing about LIST INFO, but looks only for a LIST hdrl that starts with an avih chunk, discarding all other RIFF-based files. | ||||
Tags | No tags attached. | ||||
|
RIFF specs: http://www.tactilemedia.com/info/MCI_Control_Info.html http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Docs/RIFFNEW.pdf generic RIFF-handling library (LGPLv3+): https://gitorious.org/libgriff/libgriff |