Du scheinst einen DNG => CR2-Kodierer geschrieben zu haben? CR2 ist, soweit ich gesehen habe, Lossless JPEG (Quelle: dcraw im Debugger). Ich habe die Quelle mal etwas zerhackt und umformatiert (läßt sich jetzt als C++ übersetzen). Leider sind die Kotzbeutel mittlerweile verbraucht. Wie kann man nur so programmieren ???
Nicht DNG > CR2 sondern nur nen Umkodierer für CR2 (CR2 rein, RAW manipulieren, RAW-Teil neu schreiben; der Rest wie Exifs wird einfach kopiert). Basis war "Cr2Codec" funktionierte aber weder für 40D noch 50D. Source kann ich Dir gerne zukommen lassen, is aber halt Experimentierphase...
Weiß nicht ob ichs lizenztechnisch einfach so auf den Server legen kann.
Die DNGs hab ich dann mit dem Adobe Converter gemacht, wobei sich das sicher integrieren ließe. Intern liegt praktisch ein einfaches Array mit 16-Bit-Werten vor. So wie mit "dcraw -D -4 -t 0" nur ohne Beschnitt.
Ohne Kotzbeutel is aber auch CR2 nicht zu empfehlen. Lossless JPEG ist richtig. Bei der 50D siehts etwa so aus:
- JPEG mit 1208*3224 und 4 Komponenten (Sampling Faktor 1) dekomprimieren.
- Die 4 Komponenten alternierend nebeneinander setzen (4 Streifen quasi). Leider nicht das endgültige RAW...
- Jetzt betrachten wir das ganze nicht als Bild sondern als Bytestream (zeilenweise) und füllen das ganze in einen vertikalen Streifen des fertigen Bildes mit 1616 Pixel Breite.
- Dann gehts weiter mit nem 2. Streifen mit 1616 Pixel. Der Rest kommt in nen 3. Streifen mit 1600 Pixeln.
Muss jedenfalls ein genialer Mensch gewesen sein der sich das ausgedacht hat.
Deine restlichen Erläuterungen werd ich mir die nächsten Tage mal genauer zu Gemüte führen. Dauert n bischen ums zu durchdringen...