Tried to test the functionality standalone, meanwhile measuring each function run time.
For Windows, the numbers are more or less the same, but for macOS, the same code runs 4 times slower with the 0.20.2 version.
The only function which has a significant time difference is `proc.dcraw_process()`, which as I said is 4 times slower than on the v19.2 version. The problem is reproducible only on macOS.
Yes, of course I understand the issue of partial support. But nevertheless it doesn't make sense to pass a raw to LibRaw for decoding when the camera's not supported. So while the camera list isn't perfect (and I do understand that), in the absence of any other means to make that determination, that's what I have to do.
Clearly if there's the possibility of a better solution that could be implemented in the future, I'd be very happy to use that.
I wrote the code to install the callback and the callback gets called when a RAW file is read. Now, from the callback, when the wanted tag is seen, how to I call the datastream read method to read the tag value. The call back receive a pointer to LibRaw_abstract_datastream input stream. The question is how the datastream read method is called from the callback code which is [equivalent to] C code and as such has to use LibRaw C-API. I don't see anything in LibRaw C-API to use a datastream.
That is not a question related to Delphi but related to LibRaw C-API.
The question is: Using LibRaw C-API, how to call the datastream reader to read an EXIF tag value from the exif parser callback.
I have setup an exif parser callback. I correctly receive the copyright tag. I assume I have to read his value using passed ifp argument (The pointer to LibRaw_abstract_datastream input stream, positioned to start of data). But how can I do that using the C API?
Context: My program is written with Delphi which can use any C-API from DLL, but Delphi can't use C++ objects.
That is not suitable because I'm searching for "copyright" and all pages contain that word so there are no result related to message forum containing that word.
We are happy to accept additions if they do not violate the general ideology of the library and solve a problem of interest to more than one user.
Please use github pull requests for such a contributions.
Delphi/other language wrappers are out of our interest because we'll unable to support such improvements.
OK, I understand. Sorry, I'm new to LibRaw.
If I do the changes/additions, will it be merged in the distribution for next revision?
My current work is to create a Delphi wrapper so that LibRaw can be easily used by Delphi developers. This wrapper will be open-source and made available in a GitHub repository (Or even better - if it is possible directly - in the LibRaw repository).
Tested (w/ full recompile for both 0.19 and 0.21) and unable to reproduce.
dcraw_process() is only a glue for other functions in processing pipeline, please narrow your search to specific function or code lines.
Hi,
Tried to test the functionality standalone, meanwhile measuring each function run time.
For Windows, the numbers are more or less the same, but for macOS, the same code runs 4 times slower with the 0.20.2 version.
The only function which has a significant time difference is `proc.dcraw_process()`, which as I said is 4 times slower than on the v19.2 version. The problem is reproducible only on macOS.
Any thoughts about this?
Thanks in advance.
Hrach Martirosyan
Yes, of course I understand the issue of partial support. But nevertheless it doesn't make sense to pass a raw to LibRaw for decoding when the camera's not supported. So while the camera list isn't perfect (and I do understand that), in the absence of any other means to make that determination, that's what I have to do.
Clearly if there's the possibility of a better solution that could be implemented in the future, I'd be very happy to use that.
All the best
Counterquestion:
we list Nikon Z9 as
"Nikon Z 9 (HE/HE* formats are not supported yet)",
Is Z9 supported or not?
So what is the preferred method of determining if the camera is supported if not that.
Thanks
David
$exiftool -Make OM_Systems_OM1_RAW_Image_20mpx_P1010025.ORF
Make : OM Digital Solutions
As discussed many times on this forum pages, comparing camera name with LibRaw::cameraList() doesn't look like a good idea
To solve the issue of reading EXIF copyright data using the C-API, I added a simple function in libraw_c_api.c:
Then from my application I can call that function from the exifparser callback installed using libraw_set_exifparser_handler.
Simple and easy.
Of course other similar functions may be added to call various LibRaw_abstract_datastream methods .
LibRaw datastreams are C++ objects.
I wrote the code to install the callback and the callback gets called when a RAW file is read. Now, from the callback, when the wanted tag is seen, how to I call the datastream read method to read the tag value. The call back receive a pointer to LibRaw_abstract_datastream input stream. The question is how the datastream read method is called from the callback code which is [equivalent to] C code and as such has to use LibRaw C-API. I don't see anything in LibRaw C-API to use a datastream.
Probably one will need to write some code (to install callback(s) and callback code itself)
That is not a question related to Delphi but related to LibRaw C-API.
The question is: Using LibRaw C-API, how to call the datastream reader to read an EXIF tag value from the exif parser callback.
Sorry, know nothing about Delphi
I have setup an exif parser callback. I correctly receive the copyright tag. I assume I have to read his value using passed ifp argument (The pointer to LibRaw_abstract_datastream input stream, positioned to start of data). But how can I do that using the C API?
Context: My program is written with Delphi which can use any C-API from DLL, but Delphi can't use C++ objects.
That is not suitable because I'm searching for "copyright" and all pages contain that word so there are no result related to message forum containing that word.
Thanks. I will try using EXIF callback. I come here again if I can't make it work.
Regards
Followup: but one may use exif callback and parse/retrieve all EXIF tags: https://www.libraw.org/docs/API-datastruct-eng.html#libraw_callbacks_t
Exif tag 0x8298 is not parsed by LibRaw
Please use google with site: specifier
Thanks.
:Jack
Thanks - this was a helpful clue. I tried compiling it using a slightly less old version of Visual Studio - VS 2013 - and it worked perfectly.
Thanks for your help and for your excellent library. Stay safe.
:Jack
return this->operator[](_fpos - _bstart);
We compile 32-bit libraw for 32-bit RawDigger using MSVC 2010 with no such problem.
data() member is listed for std::vector since C++11
We are happy to accept additions if they do not violate the general ideology of the library and solve a problem of interest to more than one user.
Please use github pull requests for such a contributions.
Delphi/other language wrappers are out of our interest because we'll unable to support such improvements.
OK, I understand. Sorry, I'm new to LibRaw.
If I do the changes/additions, will it be merged in the distribution for next revision?
My current work is to create a Delphi wrapper so that LibRaw can be easily used by Delphi developers. This wrapper will be open-source and made available in a GitHub repository (Or even better - if it is possible directly - in the LibRaw repository).
> LibRaw should....
LibRaw is open-source, we welcome contributions from other developers
Pages