On Wed, 5 Feb 2003, Maarten de Boer wrote:

> Hello,
> 
> I am trying to write a pcm_jack plugin, which would allow existing alsa
> applications to use jack as input/output, without changing any code. The
> plugin will use some internal circular buffer for the data transfer
> between the alsa read/write calls and the async jack process callback.
> 
> I have been studying the code of the various plugins, had some private
> communication on the subject with Paul Davis and Abramo, and written
> some code, but I am rather stuck... Your help would be greatly
> appreciated.
> 
> As far as I understand, the easiest solution would be to have a pcm_plug
> plugin inbetween the alsa application and the pcm_jack plugin, to take
> care of sample rate and data format conversion. Then the pcm_jack plugin
> simply restrict it configuration space to the sample rate and data format
> (float) supplied by the jack server. Is this the right approach? Then,

Yep.

> what would be the right place to do this? In the hw_refine or in the
> hw_param function? Or somewhere else even? And how - what _snd_pcm helper
> functions should I best use?

Well, I think that it needs a bit deeper introduction to the alsa-lib 
plugin system. I'm actually working on dmix plugin and facing with same 
problems.

hw_refine must refine the given configuration to closest valid value (see 
refine callback in dmix plugin)

hw_params receives only a valid configuration (validated via refine); it 
might fail, but only when some necessary resources are allocated between
refine and hw_params calls with some other application or other event

> Jack will allow to open as many ports as necesary, so I will open one
> port for each channel. Is the prepare function the correct place to do
> so?

It depends, if you want to offer static or dynamic configuration. You may 
start with static (you'll tell the user the static channel count and 
preallocate these ports in jack).

> Most pcm plugins use a slave, but as the pcm_jack plugin will be an
> end-point, it will not have any slave. Do I see this correctly? 

Yep. There are only few "terminate" plugins in ALSA like null, hw and shm.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs



-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to