• v0.7.9 6c34fbdb9f

    v0.7.9 Stable

    builduser released this 2026-09-07 06:46:37 +02:00 | 4 commits to main since this release

    Fixes a picture of coloured bands that survived the packet-discarding fix in
    0.7.8. This one is a disagreement about how big a frame is.

    What was wrong

    A loopback keeps the format it was given for as long as anything holds it
    open. A consumer that attaches before anything has written settles the format
    itself, on the module's default, and it cannot then be changed. Frames of the
    source's own size written into that are read as though they were the default
    size, which is a picture of coloured bands.

    Relying on being started in the right order is not a fix: nothing enforces it,
    and a consumer reconnecting is enough to undo it.

    The device is now asked what it is set to, and that is what gets sent. The
    picture is correct whoever attached first, at whatever size the consumer
    settled on. A size set explicitly on the source still wins, and with nothing
    attached the source passes through at its own size as before.

    When the size came from a consumer rather than the source, the interface says
    so, names what is holding the device, and gives both ways to change it.

    Seeing it

    streamsink -devices
    

    now reports the format each device is set to and what is holding it open:

    /dev/video10  driver v4l2 loopback  format 640x480 YU12  output true  capture false  "StreamSink 1"
                     held open by obs (pid 4821), so its format cannot change
    

    Neither was visible before, and both decide whether a picture will be right.

    If you want full resolution rather than whatever OBS settled on

    Either remove the source in OBS, confirm StreamSink is publishing, and re-add
    it; or set the per-source Size, which wins over everything.

    Caveat

    v4l2loopback is not installed on the machine this is built on, so this
    behaviour is reasoned from the ioctl semantics rather than observed. -check
    and -devices exist to test it where the module actually is.

    Downloads

    File For
    streamsink-0.7.9-linux-amd64.tar.gz Linux server, client and agent
    streamsink-0.7.9-windows-agent-amd64.zip Windows agent, headless
    streamsink-0.7.9-windows-server-amd64.zip Windows server and client, with the GTK4 runtime
    streamsink-0.7.9-windows-decoder-amd64.zip Windows decoder, for the program view
    SHA256SUMS checksums, used by the updater
    Downloads