Re: How do I tell ALSA that my driver supports every possible sample rate?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Wed, 25 Jul 2007 17:08:41 +0200,
I wrote:
> 
> At Wed, 25 Jul 2007 09:37:34 -0500,
> Timur Tabi wrote:
> > 
> > Takashi Iwai wrote:
> > 
> > >> So can I do this?
> > >>
> > >> static const struct snd_pcm_hardware mpc86xx_pcm_hardware = {
> > >>
> > >> 	.rates			= SNDRV_PCM_RATE_CONTINUOUS,
> > >> 	.rate_min		= 1,
> > >> 	.rate_max		= (unsigned int) -1,
> > > 
> > > In theory, yes, but these rate_min and rate_max are nothing but
> > > confusing in practice.  Your hardware won't support definitely such
> > > rates, but the application can't know.  Set some reasonable values
> > > there.
> > 
> > This is an ASOC driver.  My understanding is that ASOC will take all
> > the values from the machine, PCM, I2S, and codec drivers and create
> > the subset that matches all drivers.  That's the point I was trying
> > to make: my PCM driver does *not* decide what the capabilities of
> > the system are, because my DMA controller can handle all speeds.  So
> > I don't want to put some arbitrary limits in the PCM driver, and
> > then perhaps one day it gets attached to a codec driver that can
> > handle 4000Hz, but ASOC won't allow it because I used
> > SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATES_5512 in my PCM driver.
> > ASOC would incorrectly believe that the PCM driver can't handle
> > 4000Hz. 
> 
> Then,
> 	rates = -1U,
> 	rate_min = 0,
> 	rate_max = -1U,
> are the correct values.

... of course, this assumes that codec and platform have the sane rate
setting.  ASoC should do some sanity checks...


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux