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@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