At Wed, 18 Apr 2007 07:14:42 -0700 (PDT), Ciaccia wrote: > > 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? Yes, this would work. But, I'm not sure whether all apps work well with this setting because this feature is used by only few drivers. So, I recommend first try to use the stereo only, then try this after that. Takashi > Ciao > Andrea > > --- Takashi Iwai <tiwai@xxxxxxx> 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 > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel