This seems to be due to the massive amounts of IO needed for realtime video

When I was working with YUV4Linux (basically a DVD stream without encryption or compression) for a 2 GB file I was getting 2 minutes and 18 seconds at PAL DV resolution. Raw rgb should be almost double that and rgba more than double. HD resolutions will double and quadruple the amount of memory/storage needed.

To get data between applications I was using Fifos. Which work, but are difficult to set up and tempremental at the best of times.

I don't think it would be that realistic to work with compression between applications in jack type situation. though colour space compression should be possible

to give some idea of the memory/disk IO requirements needed.
I did some quick calculations

comparing a pal dv sized stream 720 x 576 @ 25 frames a second
vs 48 000 samples per second floating point audio stream.

rgba 32bit float = 864 48k audio streams.
rgba 8bit int = 216 48k audio streams.
rgb 8 bit int =  162  48k audio streams
YCrCb 422 = 108 48k audio streams
YCrCb 420 = 81 48k audio streams

for 720p
rgb 8bit = 360 48k audio streams
YCrCb 420 = 180  " " "

for 1080p
rgb 8bit = 810 48k audio streams

Are there any other color spaces I should be worried about?

Most compositors use RGBA internally either as 8bit int or floats.
FreiOr is a set of video plugins used by a lot of different video editing programs it prefers rgba 8888, (bgra8888 is the other option) so that format must at least be acceptable to a lot of video editors. Effectv is the other shared video plugin set I am aware of and it uses rgb888.
Cinelerra supports RGBA float, RGBA 8888 & YUVA 8888 and non Alpha varients of the above.

Perhaps the most sensible Idea would be to concider purhaps RGB(A) 888(8) and YUV(A) 888(8) as different types of port.


On Wed, Dec 2, 2009 at 11:33 AM, Paul Davis <paul@linuxaudiosystems.com> wrote:
On Tue, Dec 1, 2009 at 8:02 PM, Danni Coy <danni.coy@gmail.com> wrote:
> You would be suprised. RGBA32 is used quite commonly in the compositor
> world, usually stored as a sequence of images, with even higher precisions
> available. Raw RGB24 is reasonably common with the video professionals I
> know, when I questioned them about it they said that they could acheive more
> film like colour grading than they could in any of the YUV colour spaces.
>
> It's probably not the best format for realtime work given the amount of data
> that needs to be transmitted (or maybe it is), I have previously worked with
> piping raw YUV (yuv4linux) between applications and having something like
> jack to manage the connections would be a godsend.

my understanding is that one of the many problems that video faces is
that there truly is no equivalent to "32 bit floating point for
audio". whereas this format for audio samples is pretty much
acceptable for just about all purposes, and the ones not satisfied by
it are corner cases, in video there are many common cases that prefer
quite different data representations. for an audio analogy, imagine a
JACK world where some clients wanted FFT-bin data while others wanted
floating point encoding of PCM.

until or unless someone can step up and authoritatively say "the
interchange format for video is XXXXXX", its hard to imagine a "jack
for video" system really working very usefully for a significant
number of people. those who work entirely in the RGBA32 or YUV spaces
would be happy with just that format; anyone mixing processing that is
better suited to different formats is going to take a hell of a
performance hit.

--p