#libobscura — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #libobscura, aggregated by home.social.
-
Remember #libobscura ?
The project didn't attract a huge community, but it did teach me stuff so obscure that few people apart from the authors understand it.
So I started writing it down, for everyone's benefit.
If you had questions about #DMABUF, I try to explain it on my #blog :
https://dorotac.eu/posts/DMABUF/
Thanks to all the people who explained it to me. Some parts are really confusing.
(Please report mistakes.)
-
Hey #libobscura fans!
Did you know that the project is actually made up of 11 crates maintained here?
Some new ones, some heavily modified forks.
There are several crates for video hardware support, but even if you're not a #camera fan:
- error-backtrace (can you guess what it does?) https://libobscura.codeberg.page/private-api/error_backtrace/
- const_enum for easier bindings gneration https://libobscura.codeberg.page/private-api/const_enum/
- crispy, a bunch of #shaders for image processing https://libobscura.codeberg.page/private-api/crispy/Check them out too!
-
Weekly GNU-like #MobileLinux Update (08/2025): Cameras and Project Updates
https://linmob.net/weekly-update-08-2025/
#LinuxMobile #Mobian #UbuntuTouch #SailfishOS #postmarketOS #libobscura #FuriLabsFLX1 #PinePhone #Librem5
-
Woohoo, #libobscura returned an image from the #librem5 !
```
Buffer size: 823296, seq: 0, timestamp: 18178.362439 [s]
Writing to frame.GRBG
```Now I'm scared to look at the data. It's probably garbage.
But the proof of concept is there: you can treat the Media Controller API as a database and query it for valid image pipeline configurations.
I wonder if the debayering #shader still works.
But first, clean up and publish.
-
77 commits later, and #libobscura has a scripting system good enough to initialize a #USB #Camera
So it's back to the same functionality, except with extra complexity, lol.
Next up: organize the commits (don't leave a mess if you want contributors) and make sure #librem5 works the same way.
-
@martijnbraam Hey, there's someone else who invented everything :>
Hint hint.
More seriously, which module and Pi is that?
I have bought Module 2.0 and a Pi, uh, 4 B I think. Fighting #libobscura to make configurations like these work right now.
-
@janvlug @conservancy @karen I got sage advice from Karen: create something on Github for your project so you can lead people to your real repo and inform people about the problem.
I'll do that for #libobscura .
Also can't wait for #forgejo to federate. Without the help of network effects I am not sure Github can be dethroned.
-
libobscura: Cameras are STILL difficult by @dcz
https://fosdem.org/2025/schedule/event/fosdem-2025-6184-libobscura-cameras-are-still-difficult/ -
Looking forward to #FOSDEM :)
I'm on a #3dprinting spree, so I'm excited about the #CAD room. Maybe I can learn how to use #Freecad or #Blender without crashing them. For now it's #OpenSCAD though.Also, anyone with experience printing transparent pieces?
I already solved several problems, but I still leave fingerprints on the objects XDSorry for bad photo quality, #libobscura doesn't support this laptop yet. Those are (going to be) board game pyramids btw.
-
I'm writing a hardware access library: #libobscura .
A new idea just popped into my mind: use a special structure for anything that does I/O.
struct Io;
impl Io {
fn device_exists(&self) -> io::Result<bool>;
...
}I'm thinking if I had an Io trait, I could abstract it and use a #mock for #testing.
Is anyone else doing it? Is it a good idea?
-
Another month, another conference.
#libobscura will be a topic at #FOSDEM !
https://fosdem.org/2025/schedule/event/fosdem-2025-6184-libobscura-cameras-are-still-difficult/
I'll dive a bit deeper into the mobile side of the camera problem compared to my #ccc38 talk. If I have time left, there will be a quick demo of #Prolog-driven capability querying :D
-
Huh, power of #prolog .
I need to find all leaves (interfaces) of a digraph (of entities).
That's 8 lines of Prolog:
next_entity(Eid, EidNext) :-
pad(Pid, Eid, source, _, _),
link(_, Pid, PidSink, _),
pad(PidSink, EidNext, sink, _, _).next_interface(Eid, Iid) :-
interfacelink(_, Iid, Eid, _).
next_interface(Eid, Iid) :-
next_entity(Eid, EidNext), interfacelink(_, Iid, EidNext, _).Before I integrated Prolog into #libobscura, I spent 2 hours trying.
-
Just watched the #38c3 #libobscura talk from @dcz. I especially liked the idea form, very visual explanation of feedback loop and credits roll. Great project and awesome presentation! 😀
https://media.ccc.de/v/38c3-libobscura-cameras-are-difficult
-
Who's going to #38C3 ?
You? Then you have a chance to listen to my talk!
https://fahrplan.events.ccc.de/congress/2024/fahrplan/talk/QSC7YF/
2024-12-27 11:00–11:40, Saal GLITCH
about #libobscura and in general #cameras stuck to #computers .
It's a unique opportunity because my talks are made primarily for the people in the room. But if you miss it, you can catch me for a chat later :)
-
Help, there's #logic in my #camera!
$ ./config_query 'eq(A, config(_, 640, _, _)), A.'
camera.get_id() = "uvc:Integrated Camera"
Solution: "A = config(fourcc_YUYV, 640, 480, fraction(1, 30)),"
Solution: "A = config(fourcc_MJPG, 640, 480, fraction(1, 30)),"
fraction(1, 30)),"Oh wait, it's just #Prolog in the incoming #libobscura feature.
The above query returns supported #image formats and frame rates at 640px wide.
This API is optional, but do learn some Prolog anyway.
-
Irregular reminder: floating point calculations are not exact.
Take your program to a different #hardware and your tests may start failing:
https://codeberg.org/libobscura/libobscura/src/branch/master/crates/conv/tests/convtest.rs#L40
https://codeberg.org/libobscura/libobscura/actions/runs/30#jobstep-7-431
-
Hey #linuxmobile people.
Maybe you heard about my little #libobscura project.
Which phone should #libobscura support after #Librem5 ?
I'm looking for one which has the kernel drivers but cameras still don't work great.
-
#libobscura grand opening!
Libobscura is a friendly library to use cameras on Linux.
At least that's the goal.
The objectives are:
- hard to use it wrong
- get a RGB buffer in ten lines of code
- easy to add support for new devices
- no mailing list :PI want #linuxmobile and other #photo and #video workflows to become easy, and manufacturers to spend less time adding support (hi me 2 years ago).
More info on my #blog: https://dorotac.eu/posts/libobscura/
-
#libobscura is going through the final crunch... I mean, touches, before release.
I just realized the project page and the #readme are like continuous announcement posts. For some people, it's going to be the first contact with your work, so tell them;
- are they the intended audience?
- how do they benefit from this?
- where is the project going?
- how far along is it?
- how to try it out?/me goes back to rewriting
-
Installing #Fedora on a #Surface go 2. For #libobscura, because it has a special #camera setup (IPU3).
Set BIOS to boot from USB stick? Still boots windows.
You have to boot Windows with the stick in and select a special "Linpus Lite" reboot option.
Except if the stick is in while Windows is running, it will get corrupted and fail verification.
And then the installer aborts while formatting 'device is in use'.
#Windows resists being removed → fsck #Microsoft ,.
-
#libobscura, your friendly safe #camera library will be published this week.
But where do you want to see it?
-
Weekly GNU-like #MobileLinux Update (44/2024): Forking #Flutter
https://linmob.net/weekly-update-44-2024/
#LinuxMobile #postmarketOS #Mobian #PinePhone #Librem5 #SailfishOS #UbuntuTouch #libobscura #GNOMEMobile #PlasmaMobile
-
If you're having trouble wrapping your head around EGL and #OpenGL, try using DMABUFs as textures. You'll learn.
Not fast, and rather painfully, but you'll learn.
/me goes back to restructuring piles of early hacks
-
#libobscura progress: a demo camera app!
So I've proved (some of) the concepts:
- API without segfaults
- zero-copy image passing
- GPU accelerated decodingYes, the picture is mirrored upside-down, why do you ask?
Next: clean up #GPU abstractions and publish a website.
-
Once this demo application is bug-free, It's official announcement time, with a public repo, fanfares, and a blog post.
-
Working on #libobscura today.
#OpenGL , #EGL , #glium , #glutin , #Rust , #v4l2 .
After 2 weeks of effort, the #GPU decoder COMPILES!
...The screen is green.
But hey, I actually know how to debug this :D It's almost as if 10 years of #debugging and #ReverseEngineering paid off!
-
Remember #libobscura ?
I applied to have the project as part of #freedesktop_org @XOrgFoundation .
I'd like to start publishing docs and sources ASAP!
So can I get some acks from people who know about #cameras ?
-
#ccc38 here I come! Thanks @PrototypeFund for the voucher :)
I hope to meet people from #linuxmobile and #OSM and #QGIS and maybe @libcamera !
I also hope my talk about #libobscura gets accepted. Cameras are harder than you might guess.