---------- Forwarded message ---------- From: klondike <franxisco1988@xxxxxxxxx> Date: 2008/7/1 Subject: Re: which are the pieces of ALSA source code responsible for setting sample rate ? To: stan <ghjeold_i_mwee@xxxxxxx> on asoundrc you can fix the rate when you set the slave: slave.pcm "hw:0,0" # slave { # pcm "hw:0,0" # you cannot use a "plug" device here, darn. # period_time 0 # period_size 1024 # must be power of 2 # buffer_size 8192 # dito. It # format "S32_LE" # periods 128 # dito. # rate 192000 # with rate 8000 you *will* hear, # if ossmix is used :) # } 2008/7/1 stan <ghjeold_i_mwee@xxxxxxx>: > Sergei Steshenko wrote: >> -----Original Message----- >> From: stan <ghjeold_i_mwee@xxxxxxx> >> To: Sergei Steshenko <steshenko_sergei@xxxxxxx> >> Date: Tue, 01 Jul 2008 06:50:50 -0700 >> Subject: Re: which are the ieces of ALSA source code responsiblefor setting sample rate ? >> >> >>> Sergei Steshenko wrote: >>> >>>> Hello All, >>>> >>>> as already known, I am one of those who advocate the possibility to mandate sample rate and not let applications to change it. >>>> >>>> I think a possible, though ugly, solution is like this: >>>> >>>> 1) to locate pieces of ALSA code responsible for setting sample rate; >>>> 2) to change (in my own copy) the pieces so they would know only one sample rate; >>>> 3) to compile and install the modified code. >>>> >>>> I also think that I would like to have an ALSA snapshot per sample rate and will uninstall/install the snapshot I need >>>> - most likely the two most used will be for 44100Hz and 48000Hz sample rates. >>>> >>>> So, which are the pieces ? >>>> >>>> Thanks, >>>> Sergei. >>>> >>>> >>>> >>> Why not write a small program that calls the alsa interface and sets the >>> rate to whatever you want. This must be how the applications you are >>> concerned about are doing it. The api call is snd_pcm_hw_params_set_rate. >>> >>> From the alsa-project api >>> >>> int snd_pcm_hw_params_set_rate ( snd_pcm_t >>> <http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#gb5676348e7618b444e28907607660cef> >>> * /pcm/, >>> >>> >>> snd_pcm_hw_params_t >>> <http://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html#g232a2e2b6bb7bb2dca2885eec2e095b3> >>> * /params/, >>> >>> >>> unsigned int /val/, >>> >>> >>> int /dir/ >>> >>> ) >>> >>> >>> >>> Restrict a configuration space to contain only one rate. >>> >>> *Parameters:* >>> >>> /pcm/ PCM handle >>> >>> /params/ Configuration space >>> >>> /val/ approximate rate >>> >>> /dir/ Sub unit direction >>> >>> *Returns:* >>> 0 otherwise a negative error code if configuration space would >>> become empty >>> >>> Wanted exact value is <,=,> val following dir (-1,0,1) >>> >>> >>> >> >> As was many times explained in this list, applications can change the rate. >> >> So, if I write and run such a program, and then start an application that can change sample rate, it will, and this is what I want >> to avoid. >> >> I was thinking of modifying the piece of code which reports audio card capabilities - if such a piece exists. >> >> For each version (for each sample rate) the piece of code will report just _one_ sample rate, so hopefully the rest of ALSA won't >> even try to set a different sample rate. >> >> Thanks, >> Sergei. >> >> > I remember seeing the rates hard coded somewhere in the alsa tree. I > can't remember if it was in the lib code or the driver code. You could > have alternate versions of the routine with those rates. Load the > alternate when you want to lock the rate. Just follow the set...rate > call above to see where it is looking, and change the return from that > to only return the rate you want. > > There might be another way that is simpler to do this that someone more > knowledgeable than me can describe. I'm thinking of the configuration > data or in an asoundrc. > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Alsa-user mailing list > Alsa-user@xxxxxxxxxxxxxxxxxxxxx > https://lists.sourceforge.net/lists/listinfo/alsa-user > ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Alsa-user mailing list Alsa-user@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-user