Tu veux te lancer dans un développement ?
Le plus simple est de s'appuyer d'un exemple cr2 et de le décortiquer une fois manuellement avec les spécifications que tu as donné ici.
en gros :
un cr2 a une entête de 16 octets qui identifie le format.
ensuite tu as le nombre d'ifd, et les ifd qui se suivent par paquets de 12 octets et finalement l'adresse du prochain ifd. (voir ton lien cr2 decoding)
et dans tout ça tu trouves les adresses des exifs, et des makernotes ainsi que les images contenues dans le raw.

Je ne sais pas si c'est cela que tu voulais savoir, mais quoi qu'il en soit, ça peut tjs servir si ça intéresse quelqu'un.