I am using libraw for a CR2toFits conversion program i wrote. It extracts either a raw CFA image or a debayered RGB colour image and creates a FITs file. And since it's just for me, it only handles the Canon T2i CR2 files. I had been using libraw v0.19.2 but just upgraded to libraw v0.20.0.
I use librawFile.unpack() to load the raw data.
Then access the raw data use librawFile.imgdata.rawdata.raw_image[b] to read the sensor pixel values.
I note that there was a change in reporting the margins for the Canon T2i. In v0.19.2, top_margin = 51 and left_margin = 142. With v0.20.0 top_margin = 51 and left_margin = 142. (Curiously the exif meta data from the CR2 file reports topMargin = 56, leftMargin = 152. Why not use the exif data?).
So, with this shift in top_margin, the bayer pattern is also shifted. The first 2x2 group using v0.19.2 was RG1G2B. With v0.20.0 the bayer pattern is now G2BRG1.
I had hard coded the RGGB bayer pattern in my 1st implementation, but now i would to automate the process to i don't get caught again if margins change. But i can't find a place where the bayer pattern and/or raw pixel colour is identified.
I checked librawFile.imgdata.idata.cdesc but it is "RGBG" in both v0.19.20 and v0.20.0. I was expecting it to reflect actual bayer pattern. It does not reflect the bayer pattern for the 1st 2x2 square using either version.
I checked LibRaw::COLOR(row, col) but again the 1st 2x2 square is always "3 2 0 1" in both libraw versions.
So, how i can i recover the bayer pattern and colour of a pixel from the raw data?