惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
雷峰网
雷峰网
博客园 - 聂微东
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园_首页
博客园 - 司徒正美
博客园 - 叶小钗
IT之家
IT之家
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
V
V2EX
The Cloudflare Blog

Hub's wlog

Hub's wlog - Dia with GTK 3 Hub's wlog - Dev Log August 2023 Hub's wlog - libopenraw Rust with C API Hub's wlog - Niepce July 2023 updates Hub's wlog - Niepce June 2023 updates Hub's wlog - Life update Hub's wlog - Niepce May 2023 updates Hub's wlog - Niepce March 2023 updates Hub's wlog - Integrating the RawTherapee engine Hub's wlog - Niepce February 2023 updates Hub's wlog - Implementing i18n-format, a Rust procedural macro Hub's wlog - Niepce January 2023 updates Hub's wlog - i18n-format for Rust Hub's wlog - Introducing Toot That! Hub's wlog - Niepce December 2022 updates Hub's wlog - Niepce November 2022 updates Hub's wlog - Fall of releases Hub's wlog - Introducing Compiano Hub's wlog - RTKit, portals, and Pipewire Hub's wlog - Release day Hub's wlog - Update on Niepce Hub's wlog - New Again
Hub's wlog - Niepce April 2023 updates
:: Hubert Figuière · 2023-05-03 · via Hub's wlog

2023.05.03

This is the April 2023 update for Niepce. Between outages caused by an unseasonbly ice storm, squirrels chewing cable, I discovered how painful is being off the grid. This is not the excuse, just the events that lead to downtime and April not being very productive.

The importer moved a little bit forward. I tried to use the brand new "sort by date" importer tool, that is used to test and exercise the logic. The improved importer address a few long standing issues, including not using libgphoto2 for USB Mass Storage, including flash card readers. This was a shortcut I had taken and the result was suboptimal. The new approach is to use libgphoto2 to find the device, and then switch to pure filesystem operations. That was issue 26.

I picked up my camera which I haden't done much since the pandemic started. After a firmware upgrade on the Fujifilm X-T3 (it's a 4 year old model, and the firmware is from this year, unlike most smartphones), I notice a new feature that allow setting a picture as favourite. My first question was "how is it stored?". I put that on my list for later.

After taking some pictures of the newly bloomed spring flowers, I tried the importer. The new files cause a bug with metadata making the importer unable to determine the creation date ; I hit this when trying to sort these new pictures.

Metadata parsing relies on exempi2 and rexiv2. The former are the Rust bindings for Exempi, the latter are the Rust bindings for gexiv2 which is itself C bindings on top of exiv2 C++ API.

The algorithm work this way: try to load an XMP from a file, and if not, fallback on rexiv2. Given that Exempi isn't aware of raw files, it should always fallback, except it doesn't, and the XMP it finds only contains one value: Rating. I think I just answered the question as to where the camera store if the image is favourited or not: in an XMP packet in the raw file ; packet found by Exempi's packet scanner. So I need to fix the logic by making sure that camera raw files are always parsed by the rexiv2 fallback.

libopenraw

And looking at Fujifilm RAF files I ended up peeling the onion and improving support for parsing these. Things are a bit more robust.

I released libopenraw 0.3.5. One of the key changes is that the tarball vendor the Rust crates.

I also moved further along with the Rust port by resyncing camera support with the main branch and adding support for Minolta MRW that was left behind so far, bringing the same support between the C++ mainline and the Rust port. And this keep uncovering bugs in the C++ implementation.

User interface

To integrate everything, the UI needed to be adjusted. We can now tell the directory importer to copy on import. I also cleaned up a few leftovers from great ideas from a decade ago that no longer make sense.

In conclusion

There are so many things to do that I try to focus on specific tasks from the user standpoint and implement what is necessary to perform them, which often means working on a solid foundation to support it. But in the end, I still haven't run the importer successfully on these pictures.

Until next month...