YorVeX / xObsBeam

OBS plugin to transmit video and audio feeds between OBS instances, raw, or with lossless or lossy compression. NDI alternative.
https://obsproject.com/forum/resources/beam.1705/
MIT License
93 stars 5 forks source link

[Feature request] Support for alpha when using JPEG compression #36

Open loveolsson opened 2 months ago

loveolsson commented 2 months ago

Is your feature request related to a problem? Please describe. The current compression options that support alpha channel also requires very high bandwidth.

Describe the solution you'd like An additional compression option that sends two JPEG streams in parallel; one for RGB, and a monochrome stream for the alpha. The sender would need to make two separate encodes from the same source image and the receiver would make two separate decodes and combine the result back into a final RGBA image.

Additional context The suggestion was originally made for the Teleport project at https://github.com/fzwoch/obs-teleport/issues/100. I'm not familiar with the libjpeg-turbo library, but with some luck both the dual encoding and decoding can be accomplished by reading from/writing to the same raw image buffer and adjusting the strides for the passes, rather than doing additional copy operation.

YorVeX commented 2 months ago

The OBS part of this could be tricky, a source can be YUV or RGBA, but one over the other can have bigger performance implications in OBS than one would expect, to the point where a smooth YUV feed can be turned into being unusable when converted to RGBA on the receiving end - I have learned that during past tests with various format conversions.

DistroAV aka OBS-NDI seems to utilize a standard filter integrated into OBS instead, probably for that very reason, so I guess I will rather look into implementing a similar solution if possible (it might not be, since they use a a sync source, while Beam uses an async source, which also changes things about the color formats, will have to see).