Coder Social home page Coder Social logo

whatdoineed2do / exiv2-raw-preview-rating-plugins Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 238 KB

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)

Makefile 2.78% C++ 91.90% C 3.27% Shell 0.05% M4 2.01%
exif-metadata eye-of-gnome gdk-pixbuf eye-of-mate

exiv2-raw-preview-rating-plugins's People

Contributors

whatdoineed2do avatar

Stargazers

 avatar

Watchers

 avatar  avatar

exiv2-raw-preview-rating-plugins's Issues

raw viewer - exif info

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

EOM and DNG

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.

pixbuf: DNGs with mismatched jpeg subsampling

image

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

F28 - core dump in system libexiv2.so xmp handling

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.