Canon RAW 2
Canon CR2 files are TIFF files. All is organised in a TIFF / IFD file.
On of the differentiation with the CR2 files is that they have a header before the IFD0. This does not violate the TIFF spec.
|10||1||major version (2)|
|11||1||minor version (0)|
|12||4||(long) for the offset of the IFD3 that contain the RAW data. (in the TIFF byte order)|
Exif is attached to the ExifIFD of IFD0. The CFA data is in IFD3.
Source: http://www.adobeforums.com/cgi-bin/webx/.3bc36454/0 (link dead)
The width dimension specified in the JPEG stream is actually half the reality because it takes into account 2 channels per sample (the dimension of the CFA pattern).
350D, 5D and 30D files have a different layout. IFD3 (where the CFA is located) has the tag 0xc640 that contains 3 SHORT. 1, x, y. x is the number of column of the first "slice" of the image, y is for the second "slice". I don't know what the 1 mean.
The slicing means that the output scanlines have to be reorganised as they are shorter to have a top -> bottom then left -> right, a bit like columns of text. (TODO: do a nice diagram)
Apparently Canon's proprietary software modifies the RAW file. Other proprietary software seems to choke on said modified files (https://web.archive.org/web/20150512011452/http://www.prophotohome.com/forum/raw-photo-processing-software-technique/62864-cr2-raws-converted-dpp-won-t-open-aperture.html).
ExifTool has some info:
- http://web.archive.org/web/20061125031802/http://crousseau.free.fr/imgfmt_raw.htm (in French, by one of the developers of DxO) - Using the wayback machine !
- CR2 format documentation poster
- Format poster image
- Canon's CR2 Raw File Format Specification