Just a short update.
I'm able to compile now, and I've tried a few different builds on my camera successfully. I've been navigating around in the code, the wiki and the forum to get a grip on everything, but I find it hard.
To comment on my previous post I found that using "dcraw - 4- D" instead of "dcraw -4 -E" would give me images with the same resolution.
My FRSPs are a bit odd (
download this DNG ). They seem to consist of two vertically split halfs (atleast the two halfs have differnt "faults" compared to the
uncomressed DNG). I would expect them to be two horizontaly splits looking at this code from lossless.c:
/* trick the encoder so it configures slice width = image width */
/* we'll have two slices on top of each other; this will give
* valid lossless DNG as well, if we prepend a header :)
*/
TTL_Args.xRes = width;
TTL_Args.yRes = height;
.
.
.
/* need to read the image data in 2 slices
* default configuration is 2 vertical slices;
* however, using 2 horizontal slices makes it easy
* to just slap a DNG header, resulting in valid output.
*
* => the input EDMAC will simply read the image as usual.
*/
struct edmac_info RD1_info = {
.xb = width * 14/8,
.yb = height - 1,
.off1b = src_width * 14/8 - width * 14/8,
Could someone explain this part?
if (is_camera("5D3", "*"))
{
/* resolution is hardcoded in some places; patch them */
EngDrvOut(0xC0F375B4, PACK32(width - 1, height/2 - 1)); /* 0xF6D0B8F */
EngDrvOut(0xC0F13068, PACK32(width*2 - 1, height/2 - 1)); /* 0xF6D171F */
EngDrvOut(0xC0F12010, width - 1 ); /* 0xB8F */
EngDrvOut(0xC0F12014, PACK32(width - 1, height/2 - 1)); /* 0xF6D0B8F */
EngDrvOut(0xC0F1201C, width/10 - 1 ); /* 0x127 */
EngDrvOut(0xC0F12020, PACK32(width/10 - 1, height/20 - 1)); /* 0x18A0127 */
}
What's going on here, and why don't we have to do this for any other cameras?