whatdoineed2do / exiv2-raw-preview-rating-plugins Goto Github PK
View Code? Open in Web Editor NEWExiv2 based plugins to view embedded RAW previews (gdk pixbuf loader) and EXIF/XMP rating utils for Eye of Mate (eom) and Eye of Gnome (eog)
Exiv2 based plugins to view embedded RAW previews (gdk pixbuf loader) and EXIF/XMP rating utils for Eye of Mate (eom) and Eye of Gnome (eog)
unlikely to be fixable
Exif of the RAW files are not shown by EOG since it currently used libexif.
Furthermore, when the statusbar
is enabled, the dimensions of the RAW image being displayed is also incorrect - it will show the dimensions of the preview image presented to EOG via the pixbuf
as generated by the our loader. For images that are scaled, a small text box is generated and overlayed onto the bottom left of the image to provide original dimensions as well as minimal exif info
Using EOM, scrolling through images that include a.jpg, b.nef, c.dng, d.jpg is fine. If we set rating on the DNG and move to next image (it hsould be d.jpg) we are jumped to a.jpg and c.dng is not available anymore.
This behaviour is not seen with the other file types.
This can occur if the embedded preview is a TIFF wrapping a jpeg - this is an error from within libtiff and not a pixbuf loader since it has correctly identified the raw file , extracted the preview image and then tried to give this tiff to the tiff pixbuf loader
I have observed this with DNGs that have had their preview images updated via exiftool
, with jpegs produced via rawtherapee. However similar DNGs processed by rawtherapee seem to generate jpegs with 2:1 and 2:2 subsampling that when embedded cause the problem seen above
Using F28's libexiv2.so.26
the plugin core dumps when performing a readMetadata()
. Within the libexiv2
code the
exiv2-libs-0.26-12.fc28.x86_64
#0 0x00007efd47cd35b8 in XMPMeta::RegisterNamespace(char const*, char const*) () at /lib64/libexiv2.so.26
#1 0x00007efd47cb1537 in WXMPMeta_RegisterNamespace_1 () at /lib64/libexiv2.so.26
#2 0x00007efd47ca0ed8 in TXMPMeta<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::RegisterNamespace(char const*, char const*) () at /lib64/libexiv2.so.26
#3 0x00007efd47c9cf76 in Exiv2::XmpParser::initialize(void (*)(void*, bool), void*) ()
at /lib64/libexiv2.so.26
#4 0x00007efd47c9f779 in Exiv2::XmpParser::decode(Exiv2::XmpData&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () at /lib64/libexiv2.so.26
#5 0x00007efd47c87939 in Exiv2::Internal::TiffDecoder::decodeXmp(Exiv2::Internal::TiffEntryBase const*) ()
at /lib64/libexiv2.so.26
#6 0x00007efd47c7091e in Exiv2::Internal::TiffDirectory::doAccept(Exiv2::Internal::TiffVisitor&) ()
at /lib64/libexiv2.so.26
#7 0x00007efd47c79653 in Exiv2::Internal::TiffParserWorker::decode(Exiv2::ExifData&, Exiv2::IptcData&, Exiv2::XmpData&, unsigned char const*, unsigned int, unsigned int, void (Exiv2::Internal::TiffDecoder::*(*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, Exiv2::Internal::IfdId))(Exiv2::Internal::TiffEntryBase const*), Exiv2::Internal::TiffHeaderBase*) ()
at /lib64/libexiv2.so.26
#8 0x00007efd47c7978b in Exiv2::TiffParser::decode(Exiv2::ExifData&, Exiv2::IptcData&, Exiv2::XmpData&, unsigned char const*, unsigned int) () at /lib64/libexiv2.so.26
#9 0x00007efd47c79851 in Exiv2::TiffImage::readMetadata() () at /lib64/libexiv2.so.26
#10 0x00007efd544ceecc in _ExifProxy::ref(_EogImage&) (this=0x55cc5edaba90, ei_=...)
at eog_plugin_exiv2_ratings.cc:157
#11 0x00007efd544cdf67 in _ExifProxy::ref(_EogThumbView&) (ev_=..., this=0x55cc5edaba90)
at eog_plugin_exiv2_ratings.cc:122
#12 0x00007efd544cdf67 in eog_exiv2_ratings_plugin_update_action_state(_EogExiv2RatingPlugin*, _EogThumbView*) (plugin=0x55cc5ec42d90, view=<optimized out>) at eog_plugin_exiv2_ratings.cc:487
where sNamespaceURIToPrefixMap
is null ptr
XMPMeta::RegisterNamespace ( XMP_StringPtr namespaceURI,
XMP_StringPtr prefix )
{
if ( (*namespaceURI == 0) || (*prefix == 0) ) {
XMP_Throw ( "Empty namespace URI or prefix", kXMPErr_BadParam );
}
XMP_VarString nsURI ( namespaceURI );
XMP_VarString prfix ( prefix );
if ( prfix[prfix.size()-1] != ':' ) prfix += ':';
VerifySimpleXMLName ( prefix, prefix+prfix.size()-1 ); // Exclude the colon.
// Set the new namespace in both maps.
(*sNamespaceURIToPrefixMap)[nsURI] = prfix;
(*sNamespacePrefixToURIMap)[prfix] = nsURI;
} // RegisterNamespace
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.