Add new comment

Where is RAW Image data stored and datatype

I am working with another developer in creating a revised version of a popular astronomical application for analysing starlight.
Many users of the software use a variety of DSLR cameras to capture their scientific star images.
The key requirement, other than being able to handle a wide range of DSLR cameras, is that the data from the camera sensor MUST NOT have ANY processing done. We must only get the unaltered signal from each pixel without any processing of any kind (except what some DSLR cameras do themselves :)). Our software handles all processing of the RAW data.

Whilst our program is written in VB.NET, as I cannot program in C or C++, I have been able to create the various data structures outlined in the libraw doco.

I have been able to use the .NET to access the various exposed functions in the Libraw.dll (I am using libraw_versionNumber = 5122).

I have read the doco and Forums extensively to gain a level of understanding - not yet complete by any means.

In essence, my calls are as follows:

A call to 'libraw_init'
A call to 'libraw_open_file', passing to it the pointer gained from 'libraw_init'
A call to 'libraw_unpack', passing to it the pointer gained from 'libraw_init'
In VB.NET, I am then able to tranfer the unmanaged data from pointer 'libraw_data_t' to data structures I have created in VB.NET which follow the libraw doco.

I can see all sorts of data in the various structures in my VB.NET code, such as:--


In structure 'libraw_rawdata_t', the various pointers refer to memory areas holding data from executing unpack(). Am I correct? If not correct, what are the pointers to the memory areas that contain the RAW sensor data?

My question is this: If I am correct, what are the datatypes used for the various memory areas? I have not been able to get the data from 'libraw_rawdata_t', using any of the pointers contained within 'libraw_rawdata_t'. This may well be a VB.NET issue, but to solve it, I need to understand the datatypes that the 'libraw_rawdata_t' pointers are pointing to.

Many thanks for taking Dave's code and improving and continuing to support Libraw.