On Thursday 11 April 2002 16:37, SIMON Benjamin wrote:
> First, thank you for your answer.
> I see your point.
>
> However, I was wondering:
> Is it clever or completely stupid to envisage the following issue:
> - reading and writting audio data is done by a non-RT process and uses
> the linux driver of the soundcard.
> - a realtime thread processes the audio signal.
> -  RT and non-RT threads communicate using RTFifos.
>
> What are the limits of such an implementation?

Well, latency is dictated by the "determinism" of standard Linux. In 
other words, there isn't much point in using RTL for the processing at 
all, unless the I/O is done entirely in RTL context as well.


> What I mean is that in
> case of high rates, high sampling frequency (which implies to read and
> write more Data), would it slow the RT-processing part of the
> application down?

I'm not quite sure what you mean. The CPU isn't magically faster in RTL 
context or anything ;-), so there shouldn't be a difference... What 
matters is whether or not you manage to read, process and write the data 
all the time without getting buffer xruns.


Anyway, there's another thing to keep in mind here: Most sound cards 
(read: all PCI sound cards, and a few ISA cards) have rather noticable 
h/w restrictions WRT latency. Don't expect to get much lower than some .3 
ms *digital* latency - and then consider the AD/DA filter latency, which 
adds anything between .5 and several ms to the latency!

In short, there isn't much point in using RTLinux for audio, unless you 
need extremely high reliability, or maximum CPU utilization on SMP 
systems in multithreaded DSP applications.

For "normal" use, including serious studio use (where Windows and Mac OS 
based solutions have to resort to dedicated DSP hardware), some form of 
Linux/lowlatency and/or kpreempt patched kernel should do just fine. It's 
possible to achieve "guaranteed" worst case scheduling latencies in the < 
.5 ms range, which is sufficient for most audio processing applications, 
even when most of the available CPU time is needed for processing. ("80% 
for DSP" is a common benchmark setting during extreme system stress... 
Works fine.) Check out:

        http://www2.linuxaudiodev.org/audio/lad/resourceslatency.php3


The good old 2.2.10-lowlatency still seems to be one of the best, but 
some people have achieved very promising performance with both kpreempt 
(2.5.x) and lowlatency applied. (kpreempt in itself is far from 
sufficient, as there's much more work to do in the kernel WRT locking and 
stuff; preemption just turns out to be prevented all to often, so there 
will be occasional latency peaks in the 5-10 ms range. Results so far 
seem to indicate that chances are good that all of this will be fixed in 
2.6, though.)


//David Olofson --- Programmer, Reologica Instruments AB

.- M A I A -------------------------------------------------.
|      Multimedia Application Integration Architecture      |
| A Free/Open Source Plugin API for Professional Multimedia |
`----------------------------> http://www.linuxdj.com/maia -'
.- David Olofson -------------------------------------------.
| Audio Hacker - Open Source Advocate - Singer - Songwriter |
`-------------------------------------> http://olofson.net -'
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to