Re: which are the pieces of ALSA source code responsiblefor setting sample rate ?

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

 




-----Original Message-----
From: klondike <franxisco1988@xxxxxxxxx>
To: "Sergei Steshenko" <steshenko_sergei@xxxxxxx>,alsa-user@xxxxxxxxxxxxxxxxxxxxx
Date: Tue, 1 Jul 2008 16:14:44 +0200
Subject:  which are the pieces of ALSA source code responsiblefor setting sample rate ?

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

If I understand correctly, .asoundrc "tricks" create pseudo devices, and applications may or may not pay attention to the
pseudo devices.

I want a bullet-proof solution, i.e. I want to deprive all applications of the ability to change sample rate in HW.

Again and again, I want mandated system-wide sample rate setting.

Thanks,
  Sergei.

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

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux