Re: Q1: Linked streams and drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Fri, 2 Feb 2007 09:19:34 +1300,
Eliot Blennerhassett wrote:
> 
> On Friday 02 February 2007 03:03, Takashi Iwai wrote:
> > At Thu, 01 Feb 2007 16:31:01 +1300,
> 
> >
> > A PCM substream has a linked list of link members (via struct
> > snd_pcm_group).  The macro, snd_pcm_group_for_each(), gives you the
> > loop for checking each list memeber.
> >
> > When a driver supports the hardware-linked substreams, it needs to
> > check whether multiple streams exist in that substream.  Set
> > snd_pcm_trigger_done() at each stream, and trigger once.
> >
> > You can see examples in the driver implementations.  Grep
> > snd_pcm_group_for_each() under alsa-kernel/pci directory.
> 
> Thanks Takashi,
> 
> I see that the above loops are in the trigger callbacks of the drivers.
> 
> But I wonder if the linked status known at hwparams or prepare callback.

Not at the prepare time.  Since snd_pcm_hw_params() in alsa-lib
invokes the prepare too, and usually snd_pcm_link() is called after
hw_params set up, the link state is practically unknown before
trigger.

> This is because I need to send a message to our card to group each pair of 
> streams,  I think this should not be in the trigger callback.
> 
> I.e.  group(stream0,stream1); group(stream0,stream2) etc
> 
> After this, start and stop commands on any stream in the group operate on them 
> all simultaneously, and the simultaneous start is sample accurate.
> 
> I'd prefer to do this earlier in the setup process than at trigger callback.

We'd need to introduce some notification in this case.

One way is to add a new callback for link notification.  This is
cleaner but would affect all drivers.

Another way is to call ops->ioctl callback from snd_pcm_link() with a
special type, SNDRV_PCM_IOCTL1_LINK, for example.

In both cases, handling an error from the notify callback is a bit
difficult because of complex locking and linked lists.  Otherwise, the
implementation would be relatively easy, I guess.

Anyways, snd_pcm_link() should check the PCM state more carefully,
accept linking only in either SETUP and PREPARE state, too.


Takashi

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux