home.social

#libobscura — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #libobscura, aggregated by home.social.

fetched live
  1. Remember ?

    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 , I try to explain it on my :

    dorotac.eu/posts/DMABUF/

    Thanks to all the people who explained it to me. Some parts are really confusing.

    (Please report mistakes.)

  2. 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 :

    dorotac.eu/posts/DMABUF/

    Thanks to all the people who explained it to me. Some parts are really confusing.

    (Please report mistakes.)

    #linux #kernel #graphics #camera

  3. 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 :

    dorotac.eu/posts/DMABUF/

    Thanks to all the people who explained it to me. Some parts are really confusing.

    (Please report mistakes.)

    #linux #kernel #graphics #camera

  4. 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 :

    dorotac.eu/posts/DMABUF/

    Thanks to all the people who explained it to me. Some parts are really confusing.

    (Please report mistakes.)

    #linux #kernel #graphics #camera

  5. Hey 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 fan:

    - error-backtrace (can you guess what it does?) libobscura.codeberg.page/priva
    - const_enum for easier bindings gneration libobscura.codeberg.page/priva
    - crispy, a bunch of for image processing libobscura.codeberg.page/priva

    Check them out too!

  6. 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?) libobscura.codeberg.page/priva
    - const_enum for easier bindings gneration libobscura.codeberg.page/priva
    - crispy, a bunch of #shaders for image processing libobscura.codeberg.page/priva

    Check them out too!

    #rustlang #rust

  7. 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?) libobscura.codeberg.page/priva
    - const_enum for easier bindings gneration libobscura.codeberg.page/priva
    - crispy, a bunch of #shaders for image processing libobscura.codeberg.page/priva

    Check them out too!

    #rustlang #rust

  8. 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?) libobscura.codeberg.page/priva
    - const_enum for easier bindings gneration libobscura.codeberg.page/priva
    - crispy, a bunch of #shaders for image processing libobscura.codeberg.page/priva

    Check them out too!

    #rustlang #rust

  9. Woohoo, returned an image from the !

    ```
    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 still works.

    But first, clean up and publish.

  10. 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.

    #images #camera #linuxmobile #linux #rust

  11. 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.

    #images #camera #linuxmobile #linux #rust

  12. 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.

    #images #camera #linuxmobile #linux #rust

  13. 77 commits later, and has a scripting system good enough to initialize a

    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 works the same way.

  14. 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.

  15. 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.

  16. 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.

  17. @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 to make configurations like these work right now.

  18. @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.

  19. @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.

  20. @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.

  21. @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 .

    Also can't wait for to federate. Without the help of network effects I am not sure Github can be dethroned.

  22. @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.

  23. @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.

  24. @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.

  25. Looking forward to :)
    I'm on a spree, so I'm excited about the room. Maybe I can learn how to use or without crashing them. For now it's though.

    Also, anyone with experience printing transparent pieces?
    I already solved several problems, but I still leave fingerprints on the objects XD

    Sorry for bad photo quality, doesn't support this laptop yet. Those are (going to be) board game pyramids btw.

  26. 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 XD

    Sorry for bad photo quality, #libobscura doesn't support this laptop yet. Those are (going to be) board game pyramids btw.

    #fosdem2025 #boardgames #cad

  27. 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 XD

    Sorry for bad photo quality, #libobscura doesn't support this laptop yet. Those are (going to be) board game pyramids btw.

    #fosdem2025 #boardgames #cad

  28. 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 XD

    Sorry for bad photo quality, #libobscura doesn't support this laptop yet. Those are (going to be) board game pyramids btw.

    #fosdem2025 #boardgames #cad

  29. I'm writing a hardware access library: .

    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 for .

    Is anyone else doing it? Is it a good idea?

  30. 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?

    #drivers #Rust #rustlang #AskFedi

  31. 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?

    #drivers #Rust #rustlang #AskFedi

  32. 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?

    #drivers #Rust #rustlang #AskFedi

  33. Another month, another conference.

    will be a topic at !

    fosdem.org/2025/schedule/event

    I'll dive a bit deeper into the mobile side of the camera problem compared to my talk. If I have time left, there will be a quick demo of -driven capability querying :D

  34. Another month, another conference.

    #libobscura will be a topic at #FOSDEM !

    fosdem.org/2025/schedule/event

    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

    #fosdem2025

  35. Another month, another conference.

    #libobscura will be a topic at #FOSDEM !

    fosdem.org/2025/schedule/event

    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

    #fosdem2025

  36. Another month, another conference.

    #libobscura will be a topic at #FOSDEM !

    fosdem.org/2025/schedule/event

    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

    #fosdem2025

  37. Huh, power of .

    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 , I spent 2 hours trying.

  38. 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.

    #coding

  39. 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.

    #coding

  40. 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.

    #coding

  41. Just watched the talk from @dcz. I especially liked the idea form, very visual explanation of feedback loop and credits roll. Great project and awesome presentation! 😀

    media.ccc.de/v/38c3-libobscura

  42. 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! 😀

    media.ccc.de/v/38c3-libobscura

  43. 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! 😀

    media.ccc.de/v/38c3-libobscura

  44. 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! 😀

    media.ccc.de/v/38c3-libobscura

  45. Who's going to ?

    You? Then you have a chance to listen to my talk!

    fahrplan.events.ccc.de/congres

    2024-12-27 11:00–11:40, Saal GLITCH

    about and in general stuck to .

    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 :)

  46. Who's going to #38C3 ?

    You? Then you have a chance to listen to my talk!

    fahrplan.events.ccc.de/congres

    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 :)

    #ccc

  47. Who's going to #38C3 ?

    You? Then you have a chance to listen to my talk!

    fahrplan.events.ccc.de/congres

    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 :)

    #ccc

  48. Who's going to #38C3 ?

    You? Then you have a chance to listen to my talk!

    fahrplan.events.ccc.de/congres

    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 :)

    #ccc

  49. Help, there's in my !

    $ ./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 in the incoming feature.

    The above query returns supported formats and frame rates at 640px wide.

    This API is optional, but do learn some Prolog anyway.

  50. 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.

    #logicprogramming

  51. 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.

    #logicprogramming

  52. 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.

    #logicprogramming