[alsa-devel] non-interleaved mode

Takashi Iwai tiwai at suse.de
Wed Jul 11 15:35:44 CEST 2007


At Wed, 11 Jul 2007 09:13:24 -0400,
J. Scott Merritt wrote:
> 
> On Wed, 11 Jul 2007 10:47:56 +0200
> Takashi Iwai <tiwai at suse.de> wrote:
> 
> > At Tue, 10 Jul 2007 11:08:01 -0700,
> > Steve Longerbeam wrote:
> > > 
> > > Hi,
> > > 
> > > The driver for the sound engine I'm working on requires NONINTERLEAVED. 
> > > Will ALSA core give my driver a full period of left-only samples, 
> > > followed by a full period of right-only samples? Or are left/right 
> > > samples split within a single period (ie. first half of period is left 
> > > samples, second half is right samples)?
> > 
> > The former case.  The standard non-interleaved buffer consists of
> > (the same buffer-size of) full-length of mono-streams.
> > 
> > 
> > Takashi
> 
> Doesn't this depend upon the driver implementation ?  IIRC, I tried to
> request NON-INTERLEAVED on the PXA270 AC97 driver and it told me that
> wasn't a permitted operation (one of the reasons that I needed to use
> mmap access in SALSA-Lib).

The latter case, "multi-streams in each period" style, cannot be
represented in ALSA API, more specifically, snd_pcm_channel_info
struct.  Thus, it has to be remapped virtually to the normal
non-interleaved streams (each with full periods), or to avoid mmap and
copy the data inside the driver.

There is another COMPLEX_MMAP access type, but it's also for linear
frames with constant increments, where each channel can be represented
with snd_pcm_channel_info record.  The "multi-streams in each period"
is non-linear.


Takashi


More information about the Alsa-devel mailing list