[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