LibRaw 202202 snapshot
LibRaw 202502 snapshot is just published in our Github repository. Changes are:
Camera format support
- OM System 14-bit high-resolution files.
Note: the new decoder supports old (12-bit) Olympus/OM-System files
too and slightly faster (about 5%), so the old one is removed. - Nikon NEFX (4/8/16/32 shots in PixelShift mode merged via Nikon software)
Camera support
- Canon EOS R5 C
- Hasselblad CFV-50c, CFV-100c
- Leica SL3
- Nikon Z f (standard/lossless compression only)
- Olympus/OM System OM-1 Mark II, TG-7
- Pentax KF, K III Monochrome
- Samsung S23+, S23 Ultra
- Sony A9-III, ILX-LR1
API Changes/improvements
- Exif callback is called from CR3 parser before calling parse_makernotes()
parameters are the same as usual, except tag parameter value.
tag values:
(0x70000 | 0x927c) - if called from CMT3 tag
(__type << 20) | 0x80000 | 0x927c - if called from CTMD record with type __type - Exif callback is called for Sony SR2 tag with tag parameter set to 0x60000 | tagID
- Makernotes callback implemented for TIFF-like (IFD structure makernotes)
Callback is very similar to exif_callback.
To set callback use LibRaw::set_makernotes_handler(exif_parser_callback cb, void *data)
Callback is called (if set) with tag value set to (uptag << 16)|makernotes_tag
where uptag is- EXIF tag: if called from EXIF makernotes parser
- 0: if called from CR3 metadata parser
- tag-ID if parse_makernotes() is called from some specific tag context (see parse_makernotes calls in source code).
- New metadata field makernotes.pentax.DynamicRangeExpansion[4]
if DynamicRangeExpansion[1] is non-zero, DynamicRangeExpansion[0] should be added
to BaselineExposure - New API call (static) int LibRaw::simplify_make_model(unsigned * mkindex, char *mkbuf, unsigned mkbuf_size, char *modelbuf, unsigned modelbuf_size):
This call can be used to simplify/standardize vendor name/model received
from external source (e.g. EXIF block in JPEG file).
mkindex: pointer to received maker index (LibRaw_CAMERAMAKER_...)
mkbuf, mkbuf_size: buffer with make string, buffer size
modelbuf, modelbuf_size: buffer with model string.
simplify_make_model(..) simplifies/re-writes vendor name/model in place, in provided buffers.
return values:
0 - mkindex is set (if non-null pointer provided), data simplified;
1 - mkindex is not set, while some data processing is done;
-1 - incorrect parameters; - All file offsets are 64-bit now;
Note: data callback signature has changed - New LibRaw_abstract_datastream (and derived classes) methods:
bool is_buffered() - returns current buffering mode (if implemented);
void buffering_on() - turns buffering on.
These methods complement the (existing) buffering_off() method - New bits in imgdata.process_warnings:
LIBRAW_WARN_DNG_NOT_PROCESSED - RAW file was passed to DNG SDK, but not processed.
LIBRAW_WARN_DNG_NOT_PARSED - DNG parse error or non-valid DNG at valid_for_dngsdk() stage - New compile-time define: LIBRAW_MAX_CR3_RAW_FILE_SIZE
Default: value of LIBRAW_MAX_NONDNG_RAW_FILE_SIZE
CR3 file size is limited by 4GB (max MP4 container size), so it may be needed
to set the limit above non-DNG 2GB file size limit.
Minor improvements
- Adobe DNG SDK 1.7.1 compatibility
- restored compatibility with pre-1.7 Adobe DNG SDK
- RawSpeed1/3: do not pass files larger then 2GB
- Jpeg XL preview file writer
- Jpeg XL preview support in simple_dcraw -E/-e
- DNG 1.7 JpegXL DNG/GoPro DNG: do not refuse files at open_file() if LibRaw is not built with DNG SDK/GoPro SDK
Note: LibRaw::get_decoder_info() will return decoder flag bit set to LIBRAW_DECODER_UNSUPPORTED_FORMAT if
LibRaw is not built with corresponding SDK. - All implicit type conversion *excluding INT64<=>int/uint* conversions are made explicit
to remove C++ compiler type conversion warnings. - libraw_dng_stream: underlying LibRaw_abstract_datastream buffering restored in
destructor call.
Bug/problem fixes
- Fix for PanasonicV8 decoder compile with OpenMP
- Fix for incorrect 32-bit shift in Pana8 decoder generated by gcc11+
- DNG SDK Integration: clear imdata.color.linear_max[] if Stage3 opcodes are applied.
- Fixed possible buffer overrun in LibRaw::remove_trailing_spaces call
- CR3 decoder: workaround for possible incorrect generation of 64-bit code
- Improved Sony metadata processing
- fixed possible static table read overrun (if specially crafted image
data passed to LibRaw) - Fix for monochrome DNG files compressed as 2-color component LJPEG
- Fixed integer overflow in largest DNG frame selection code
- Additional out-of range checks to better handle specially crafted files
- Prevent out-of-buffer access in phase_one_correct()
- Prevent one-off read in Fuji WB table parsing
- Prevent one-off read in phase_one_correct()
- Do not apply Canon metadata crop values to DNG files
- Adjust profile_length to allocated data size.
Recent comments