2005/11.01 @11:38 (aperture, blog, photography, software)

Make OS X 10.4.3 understand Canon EOS 350D RAW files

Update 11jan06 @ 11:33 OS X 10.4.4 is now available, and fixes this problem.

Update 03nov05 @ 12:04: Right, Phil Chapman appears to have sorted out the correct codes for 350D support by utilising values from the Canon PowerShot G6 entry in the Raw.plist file, so rather than post a new entry I’m updating this one so that it shows correct and useful information (the downloadable file has also been updated).

I’ve been annoyed with the lack of RAW support for the Canon EOS 350D for a long time, and had high hopes that 10.4.3 would fix this as it seemed to be the OS version that Aperture was waiting for, and was dismayed to find that 10.4.3 still hadn’t got it right. After some prodding from Ben I went and delved into the update pax file and found an interesting file called Raw.plist which has a list of all the RAW formats that the system supports.

To my astonishment there is already support for the Canon EOS Digital Rebel XT which is simply the US name for the 350D: looking closely at the <key> statements showed that it was likely to be the ASCII string that the RAW importer was searching for, so after a quick strings over one of my RAW files I simply copied the XT section and renamed the initial key to Canon-EOS 350D DIGITAL and now both iPhoto and Preview understand my files.

I don’t think this will work on earlier versions of 10.4 (10.4.2 has a much smaller file size) but if you add the following chunk to the file Raw.plist in the directory: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources (you will need Administrator rights to alter this file) then you can have support too, or if you are a trusting soul, then you can simply download a new Raw.plist and simply replace the existing one.

NB 1: If you do download this file, please ensure you are running 10.4.3 first as this file has not been checked on any other version of {Mac OS X}

NB 2: The data here is an exact copy of the Digital Rebel XT code block, with the addition of the three premul values at the start of the data that have been taken from the G6 data block, as found by Phil Chapman. Read more at the Apple Discussion on RAW support in iPhoto.

<key>Canon-EOS 350D DIGITAL</key>
        <dict>
                <key>black</key> <integer>3</integer>
                <key>max</key> <integer>4095</integer>
                <key>white</key> <integer>4095</integer>
                <key>premul0</key> <real>2.30</real>
                <key>premul1</key> <real>1.00</real>
                <key>premul2</key> <real>1.35</real>
                <key>m1</key>
                <array>
                        <real>0.6159</real> <real>-0.0945</real> <real>-0.0745</real>
                        <real>-0.6846</real> <real>1.3563</real> <real>0.3684</real>
                        <real>-0.0802</real> <real>0.1086</real> <real>0.7555</real>
                </array>
                <key>m2</key>
                <array>
                        <real>0.6018</real> <real>-0.0617</real> <real>-0.0965</real>
                        <real>-0.8645</real> <real>1.5881</real> <real>0.2975</real>
                        <real>-0.1530</real> <real>0.1719</real> <real>0.7642</real>
                </array>
                <key>mc</key>
                <array>
                        <real>1.23345</real> <real>0.03700</real> <real>-0.03700</real>
                        <real>0.00000</real> <real>1.20878</real> <real>0.00000</real>
                        <real>0.00000</real> <real>0.00000</real> <real>1.23345</real>
                </array>
                <key>otrc</key>
                <array>
                        <real>0.233</real> <real>0.127</real> <real>2.303</real>
                        <real>0.324</real> <real>1.543</real> <real>0.649</real>
                        <real>0.851</real> <real>0.571</real>
                </array>
                <key>esint</key> <real>0.52</real>
                <key>esein</key> <real>2.24</real>
                <key>eseth</key> <real>1.48</real>
                <key>gresc</key> <real>2.81</real>
                <key>scal1</key> <real>0.24</real>
                <key>scal2</key> <real>0.22</real>
        </dict>