Re: 6-channel output and i2s

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

 



At Wed, 29 Apr 2009 10:37:17 -0400,
Jon Smirl wrote:
> 
> On Wed, Apr 29, 2009 at 10:35 AM, Jon Smirl <jonsmirl@xxxxxxxxx> wrote:
> > On Wed, Apr 29, 2009 at 9:04 AM, Takashi Iwai <tiwai@xxxxxxx> wrote:
> >> At Wed, 29 Apr 2009 08:58:52 -0400,
> >> Jon Smirl wrote:
> >>>
> >>> My hardware was has three stereo i2s lines. These three lines are all
> >>> tied to the same external clock so they are synchronized. Because
> >>> there are three i2s lines, each with it's own DMA queue and FIFO, I
> >>> need three independent output buffers. What is the correct way to set
> >>> this up in ALSA?
> >>
> >> So I suppose it's three streams of 2-ch interleaved format?
> >
> > Yes
> >
> >> If so, an easier way would be to provide three substreams in a PCM,
> >> and bind 6 channels with alsa-lib plugin.
> >
> > How does ALSA start the streams synchronously?
> 
> I can start the streams synchronously at the low level by waiting for
> the frame clock and then enabling the three DMA channels.

If the hardware supports the simultaneous triggering of multiple
streams, add the sync support to the driver.  Namely,
- Add SNDRV_PCM_INFO_SYNC_START flag to PCM info field
- Call snd_pcm_set_sync(substream) at each open callback
- In the trigger callback, check all bundled streams via
  snd_pcm_group_for_each_entry().  Mark all the streams but the
  current one via snd_pcm_trigger_done().
  Then start all streams at once.
  Ditto for stop and pause.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/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