<div dir="ltr">Hello everyone,<div><br></div><div>I'm not used to mailing lists and patchwork process so pardon me if I'm writing this at the wrong place.</div><div><br></div><div>I've been working on Rust bindings for the libcamera and wanted to let everyone know in case someone would be interested. So far I've gotten as far as capturing JPEG image from webcam entirely in safe Rust and I think this already covers ~70% of libcamera API. The wrapper library is currently published at <a href="https://github.com/lit-robotics/libcamera-rs">https://github.com/lit-robotics/libcamera-rs</a>. It consists of 2 main parts: libcamera-sys, which contains raw unsafe bindings to libcamera and libcamera-rs, which implements a higher-level memory-safe API on top of libcamera-sys.<br><br>The most difficult part was C++ not being FFI friendly and most of the automatic binding generation tools break with complex C++ codebases, especially when templates are used. So instead I've written a thin C wrapper around libcamera (under <a href="https://github.com/lit-robotics/libcamera-rs/tree/main/libcamera-sys/c_api">libcamera-sys/c_api</a>), which was used to autogenerate libcamera-sys. We had a discussion in <a href="https://github.com/kbingham/libcamera/issues/58">https://github.com/kbingham/libcamera/issues/58</a> that this C wrapper could be useful not only for Rust bindings, but I'm personally not sure about any uses outside FFI? If it were a part of libcamera, the difficult part would be maintaining documentation as the C API does not map 1:1 with C++, especially anything related to STL containers.<br><br>Anyway, there is quite a lot to these bindings (~5k LoC excluding the auto-generated stuff) and too many design decisions to explain in this introductory email. I'm happy to answer any questions instead.<br><br>Regards,<br>Jurgis</div></div>