CR2 files are generated by Canon cameras, starting the 20D, 350D/Digital Rebel Xt and 1D. They supersede the older Canon CRW.
MIME type
image/x-canon-cr2
Organisation
Canon CR2 files are TIFF files. All is organised in a TIFF / IFD file.
On of the differenciation with the CR2 files is that they have a header before the IFD0. This does not violate the TIFF spec.
offset |
length |
description |
0 |
8 |
TIFF header |
8 |
2 |
litteral 'CR' |
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.
Compression
Canon CR2 files use the old original Lossless_JPEG standard for the RAW data. The same used by Adobe DNG.
Source: http://www.adobeforums.com/cgi-bin/webx/.3bc36454/0
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)
Modified files
Apparently Canon's proprietary software modifies the RAW file. Other proprietary software seems to choke on said modified files (http://www.prophotohome.com/forum/raw-photo-processing-software-technique/62864-cr2-raws-converted-dpp-wont-open-aperture.html).
ExifTool has some info:
References
http://crousseau.free.fr/imgfmt_raw.htm (in French, by one of the developers of DxO)

