Posts
5612
Following
352
Followers
551
.
@Aissen @jani At least I think I got it right in the implementation despite apparently existentially wrong ;-)

Next, as a sidekick kernel project I'm going to take a look at dhowell's container object patch set from 2017, which was discarded back then w/o much discussion. I pick the best fights apparently...
1
0
3
@jani NP, it was anyway good learnings. There are worse ways to waste your week :-) It was my own choice.
1
0
1

Jarkko Sakkinen

Edited 3 months ago
Not posting this any time soon but now I think swcam has a decent uAPI where vidioc configuration is decoupled from producer of the stream. The producer provides a dataset of <pix_format, frame_rate> pairs that constraint the vidioc API upon creation and via SWCAM_IOC_WAIT gets the specs for the currently playing stream, always in the expected space of configurations.

The streaming pipeline itself has remained the same from the get go.

See:

https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd.git/tree/include/uapi/linux/swcam.h?h=vcam

Just wanted to put this to rebasable and complete state just in case (and I will continue to rebase the branch).
1
0
0

Jarkko Sakkinen

drafted my first ever himmelblau idm patch for dynamic user credential resolution :-) will take a while before any prs result.
0
0
0

Jarkko Sakkinen

-MODULE_DESCRIPTION("V4L2 virtual camera driver");+MODULE_DESCRIPTION("V4L2 software camera driver");

a cosmetic change but describes better the scope and purpose. I.e. vcam -> swcam
0
0
0

Jarkko Sakkinen

Edited 4 months ago
the next item in my backlog (i have a project to do something to every item in my personal backlog) are container objects. expected outcome is similar as for vcam initially i.e. "fuck no".

but since these are totally sidechannel things and nothing i take too personally i can still work on these topics if nothing else for my own entertainment :-) two years in a review cycle - i have zero problems with that.

i do give up on patch sets even if i've made myself a fool promoting them every single time when objective facts fight against them that i can understand with my limited brain capacity. up until that i go against the wind :-)
0
0
1

Jarkko Sakkinen

It is good to remark libcamerify from libcamera-tools is LD_PRELOAD based solution for "virtual camera", not ubiquitos solution really. It is also across the board much more stressing and higher latency solution for system than a well-designed loopback device.
0
0
0

Jarkko Sakkinen

Edited 4 months ago
Given that it seems a stretch to insure maintainers that people actually need this feature, I'm looking into https://docs.rs/hylarana/0.3.0/hylarana/. I try to understand how much effort it would take to implement a PoC service for video streaming from phone.
0
0
0
@pinkforest oh, not on purpose :D a genuine human made typo
1
0
0
And despite perhaps a bit ugly/dirty approach this is also very macro and generator friendly way to go (e.g. with Rust I think this can be fluently supported via syntax tree macros).
0
0
0
And I think I cap in the driver size states to 128 i.e. exactly 4KiB. It's like the driver definition blob sort of.
1
0
0

Jarkko Sakkinen

For the v2 I think I have sane way to constrain the state i.e., in VCAM_IOC_CREATE:

__u32 nr_states;
__u32 states;

Each state (32 bytes per state) specifies configuration with pixel format, geometry, stride etc.

Obviously this means some redundancy perhaps because one has to address e.g. same width and height in different configurations but I think in the end this database approach is the most robust pick.
1
0
0
the reason for using fixed-point math is to keep it -lm free and secondly i was bored :-)
0
0
0

Jarkko Sakkinen

Edited 4 months ago
Test code I have cleaned up relocated:

https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/vcam-test.git

From this i spin off at least some kind of initial kselftest.
1
0
0
E.g., it might be actually a good idea that status and wait would return same data as creation instead of just flags, and there needs to be ability to limit choices (from three currently available options) for pixel format.
0
0
0

Jarkko Sakkinen

Edited 4 months ago
Despite the feedback does not look very accepting, continuing with vcam makes common sense to me enough that I continue improving and rebasing it.

In order to lift it up from RFC phase at least property negotiation needs some rework, there's some compliance suites for V4L2 to try out and of course some test code needs to be supplemented.

Up side with resistance is at least that it is antidote for a loose send-finger :-) I'll focus on making each iteration considerably better than N - 1.
1
0
0

Jarkko Sakkinen

v4l2loopback has highly scattered but at the same time wide base. It even includes stuff like scientific research. Here's one recent'ish example: https://dl.acm.org/doi/epdf/10.1145/3664647.3681007. This also implies that it is a tainted driver likely deployed to multiple critical organizations and environments.

This type of feature is also quite robust tool for many uses where emulation is required but we still need sufficient figures for latency and throughput. It could be applied e.g., to drone platform testing where vision can be mocked with virtual devices providing simulated environment or pre-recorded environment (for training AI).

It is also good to keep in mind not every single piece of legacy software can be magically turned into PipeWire clients, and neither it is a great fit all possible deployments of Linux.
0
0
1

Jarkko Sakkinen

OK, there's 6.19-rc8. Has not happened for a while, or at least don't recall
0
0
0

Jarkko Sakkinen

IMHO vcam is a bit like ntsync. In other words, it is somewhat use case optimized but the use case is just relevant enough to make it sense to have the feature in the mainline kernel.
0
0
0
Show older