Re: [LAD] jack_ringbuffer or port_buffer ?

From: Gabriel M. Beddingfield <gabriel@email-addr-hidden>
Date: Mon May 18 2009 - 16:45:25 EEST

Hi Hermann,

On Mon, May 18, 2009 8:31 am, hermann meyer wrote:
>> they are totally unrelated.
>
> do I get it right, so, if there is no other thread then the
> process_callback involved in the midi data collection,then there is no
> need to use the ringbuffer ?

A ringbuffer is like an array that never ends. It's like a C++
std::vector<> or std::list<>. It's a container that you can use if you
want a never-ending array where the memory is pre-allocated. The
ringbuffer in jack could be used in any program, anywhere. Here is a
Wikipedia article on the subject:

   http://en.wikipedia.org/wiki/Circular_buffer

You would use a ringbuffer when you have an audio (real-time) thread that
MUST NOT wait... but you need to share data with a GUI thread or some
other thread that will do heavy processing.

JACK does not require, nor does it even expect, that you will have a
ringbuffer anywhere in your application... even if you have more than one
thread. If you use an normal array/buffer for transferring data, that
will be just fine as long as you have appropriate read/write controls.

On the other hand, a port_buffer is just the interface you use from JACK
to read/write data from/to the JACK bus. It is owned and operated by
JACK, so you don't have to allocate it, nor worry about whether it's a
ring buffer or some other kind of buffer.

Hope this helps,
Gabriel

-- 
               G a b r i e l   M   B e d d i n g f i e l d
_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
Received on Mon May 18 20:15:03 2009

This archive was generated by hypermail 2.1.8 : Mon May 18 2009 - 20:15:03 EEST