[alsa-devel] snd_pcm_hardware_t.info question
Ciaccia
ciacciax at yahoo.com
Wed Apr 18 16:14:42 CEST 2007
Takashi,
I look through the code, I found some interesting
examples...
Instead of defining a 2 as a min number of channel,
could I use the following code?
static int ep93xx_ioctl(struct snd_pcm_substream
*substream, unsigned int cmd, void *arg)
{
if (cmd == SNDRV_PCM_IOCTL1_CHANNEL_INFO )
{
struct snd_pcm_channel_info *info=arg;
info->offset = 0;
info->first = info->channel * 32;
info->step = 64;
return 0;
}
return snd_pcm_lib_ioctl(substream, cmd, arg);
}
Would that work? Or should I always support stereo
even when not needed?
Ciao
Andrea
--- Takashi Iwai <tiwai at suse.de> wrote:
> At Tue, 17 Apr 2007 04:36:28 -0700 (PDT),
> Ciaccia wrote:
> >
> > Hi Takashi,
> > Thanks for your explanation. My request was not
> clear,
> > since my understanding of ALSA is lacking and I
> need
> > to understand more...
> >
> > The driver I currently have is here:
> > http://www.pecore.ch/test/ep93xx-i2s.c.txt
> >
> > It's really messy, it performs all the format
> > conversions in the driver (they could be done in
> the
> > alsa-lib) and it lacks some functionalities, so I
> > would like to make it shorter, better and more
> > readable.
> >
> > The driver does not currently define
> > SNDRV_PCM_INFO_MMAP and the memory is copied in
> the
> > copy callback. I would like to delete the copy
> > callback (which is not really used), since the
> samples
> > could be written directly to the dma buffer by
> > alsa-lib.
> >
> > How does alsa-lib know how to store the samples in
> the
> > dma-buffer?
>
> Based on the information the driver gives: access,
> formats, channels,
> etc.
>
> > How does alsa-lib know that the samples
> > are interleaved,
>
> access has SNDRV_PCM_ACCESS_{MMAP|RW}_INTERLEAVED.
>
> > occupy 32 bits each one (even if the
> > format is 24 bits) and that the left channel
> samples
> > are at index #0 and the left ones at index #1?
>
> formats has SNDRV_PCM_FMTBIT_S16_{LE|BE}.
>
> > Or that
> > between two consecutive samples in mono there
> should
> > be a 4 bytes gap?
>
> It's possible to support a non-standard stream like
> that, but it's a
> bit complicated. So, I recommend not to support
> this first
> (i.e. channels_max = channels_min = 2). Then
> alsa-lib will copy the
> mono stream automatically to stereo.
>
>
> Takashi
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the Alsa-devel
mailing list