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

推荐订阅源

宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Security @ Cisco Blogs
小众软件
小众软件
D
Docker
博客园_首页
A
About on SuperTechFans
P
Privacy International News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
Arctic Wolf
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Latest news
Latest news
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
大猫的无限游戏
大猫的无限游戏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
V2EX - 技术
V2EX - 技术
SecWiki News
SecWiki News
U
Unit 42
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LINUX DO - 热门话题
S
Security Affairs
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
T
Tenable Blog
W
WeLiveSecurity
Cloudbric
Cloudbric
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
N
News and Events Feed by Topic
D
DataBreaches.Net
P
Proofpoint News Feed
B
Blog RSS Feed
B
Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

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 April 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 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 December 2022 updates
:: Hubert Figuière · 2023-01-02 · via Hub's wlog

2023.01.02

Happy new year !

Here is some udpdate on Niepce work done in December 2022. Mostly changes under the hood, but important ones to move forward with improving the features. The short version: it feels great to remove C++ code.

Build system

I have now switched the build system from autotools to meson. It's faster, and is more lenient when I forget to pass -j to build on my 12 core workstation: it does it by itself.

This was work I had around to finish as I mentionned in the November update.

I will remove the autotools files in the future.

Drag and drop, and albums

This is the only visible (new feature or UI) change this cycle.

Implemented drag and drop between the grid view and strip view to the workspace. You can now add images to an album that way. Also albums can be created, renamed, deleted, using the contextual menu on the workspace.

This closed issue 40.

Importer

One of my big todo list item is to finish the import. But when testing it, I fell into crashes that I believe are related to the multithreading nature of the feature. So I decided it was time to actually port the whole import machinery to Rust as I still have to "finish" it.

There are currently two importers: directories and camera. The latter uses gphoto2 to download from the camera, and is the more complex of the two.

For starter it seemed to be logical to port the gphoto layer for the import. The Rust gphoto2-rs bindings are a good candidate. I was using the direct C API and these bindings provide a bit of a higher level API. I ended up having to fix two things: the missing GP_ERROR_IO_USB_CLAIM error (merged) and the not being able to download the thumbnails. The former is important because GVFS tries to want to monopolise the camera, and that the error you get. The other is need to download the previews so they can be show in the UI.

Testing this with my now defective1 Canon G7X MkII leads to interesting issues, like 0 bytes files left over in case of error, as the device disappear from the bus. I wrote some cleanup code. Further down the read I need to make this more robust, possibly recovering from the error, and being able to import by finding "duplicates" so that in the case of failure, if we import again, it excludes already imported images.

Other issues

Testing the imported code, I found that some RAW files where ignored. One is mime_guess didn't know about RAW file (PR submitted), the other is, by rethinking the logic, to add the list of extension to the libopenraw-rs API (it's in the C API) so that I can prioritize them. Released versiom 0.1.2 of the latter. And while I'm at it, released libopenraw 0.3.3, but this was unrelated.

I'm sure I'll run into more problems, but here the goal is to have a self contained detection.

Moving forward

This code is still used from C++, until I land the upcoming changes of rewriting the importer in Rust.2

After that, the import flow can be improved: automatic folder creation, metadata presets, deduplicating (I keep importing the same pictures over and over).

Thank you for reading.