Some code I am working on uses file i/o redirection and calls the old dcraw under the covers.
Depending on the processing options passed to dcraw, the ouput is passed to the code by the following:
// Intercept the fprintf calls in write_ppm_tiff() for PGM/PPM file output.
int Printf(const char *format, va_list va) // intercepts the fprintf calls in write_ppm_tiff()
{
int nResult;
CString strText;
strText.FormatV(format, va);
nResult = strText.GetLength();
AddToBuffer(strText.GetBuffer(10000), nResult);
return nResult;
};
// Intercept the fwrite calls in write_ppm_tiff()
size_t Write (const void *buffer, size_t size, size_t count)
{
AddToBuffer(buffer, (DWORD)size*(DWORD)count);
return count;
};
I would like conceptually to do the same sort of thing using libraw but without the need to use the i/o re-direction.
I can (I think) determine whether the data is for PGM or PPM based upon imgdata.idata.colors, and the image rows/columns from imgdata.sizes. I'm not so clear where I can locate the output_bps (to use dcraw terminology).
What I don't know is the best way to get at the image data itself. I assume that I need to call LibRaw::unpack() and then LibRaw::dcraw_process() but I'm bit puzzled as what I do after that.
Thanks in advance
David
Most likely, this link will
Most likely, this link will help: https://www.libraw.org/docs/API-CXX.html#memwrite
-- Alex Tutubalin @LibRaw LLC