[pulseaudio-discuss] [PATCH 2/2] alsa-ucm: Use playback/capture rate specification from UCM
Arun Raghavan
arun.raghavan at collabora.co.uk
Thu Aug 8 00:15:39 PDT 2013
On Thu, 2013-08-08 at 09:41 +0300, Tanu Kaskinen wrote:
> On Wed, 2013-08-07 at 23:26 +0530, Arun Raghavan wrote:
> > Add new PlaybackRate/CaptureRate values for UCM that can be used to
> > specify custom rates for devices. This value can either be set on the
> > verb, which makes it apply to all devices, or on the device to override
> > the verb setting.
> > ---
> > src/modules/alsa/alsa-ucm.c | 29 +++++++++++++++++++++++++++--
> > src/modules/alsa/alsa-ucm.h | 9 +++++++++
> > 2 files changed, 36 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/modules/alsa/alsa-ucm.c b/src/modules/alsa/alsa-ucm.c
> > index 7f6b9f1..787dc9e 100644
> > --- a/src/modules/alsa/alsa-ucm.c
> > +++ b/src/modules/alsa/alsa-ucm.c
> > @@ -84,10 +84,12 @@ static struct ucm_items item[] = {
> > {"PlaybackVolume", PA_ALSA_PROP_UCM_PLAYBACK_VOLUME},
> > {"PlaybackSwitch", PA_ALSA_PROP_UCM_PLAYBACK_SWITCH},
> > {"PlaybackPriority", PA_ALSA_PROP_UCM_PLAYBACK_PRIORITY},
> > + {"PlaybackRate", PA_ALSA_PROP_UCM_PLAYBACK_RATE},
> > {"PlaybackChannels", PA_ALSA_PROP_UCM_PLAYBACK_CHANNELS},
> > {"CaptureVolume", PA_ALSA_PROP_UCM_CAPTURE_VOLUME},
> > {"CaptureSwitch", PA_ALSA_PROP_UCM_CAPTURE_SWITCH},
> > {"CapturePriority", PA_ALSA_PROP_UCM_CAPTURE_PRIORITY},
> > + {"CaptureRate", PA_ALSA_PROP_UCM_CAPTURE_RATE},
>
> Are these UCM Value items standardized?
Not yet: http://article.gmane.org/gmane.linux.alsa.devel/111390
> > {"CaptureChannels", PA_ALSA_PROP_UCM_CAPTURE_CHANNELS},
> > {"TQ", PA_ALSA_PROP_UCM_QOS},
> > {NULL, NULL},
> > @@ -256,8 +258,18 @@ static int ucm_get_device_property(
> > device->capture_channels = 2;
> > }
> >
> > - /* get priority of device */
> > + /* get rate and priority of device */
> > if (device->playback_channels) { /* sink device */
> > + /* get rate */
> > + if ((value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_PLAYBACK_RATE)) ||
> > + (value = pa_proplist_gets(verb->proplist, PA_ALSA_PROP_UCM_PLAYBACK_RATE))) {
> > + if (pa_atou(value, &ui) == 0 && ui < PA_RATE_MAX) {
>
> I don't think 0 should be accepted as a valid rate.
>
> > + pa_log_debug("UCM playback device %s rate %d", device_name, ui);
> > + device->playback_rate = ui;
> > + } else
> > + pa_log_debug("UCM playback device %s has bad rate %s", device_name, value);
> > + }
> > +
> > value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_PLAYBACK_PRIORITY);
> > if (value) {
> > /* get priority from ucm config */
> > @@ -269,6 +281,16 @@ static int ucm_get_device_property(
> > }
> >
> > if (device->capture_channels) { /* source device */
> > + /* get rate */
> > + if ((value = pa_proplist_gets(device->proplist, PA_ALSA_PROP_UCM_CAPTURE_RATE)) ||
> > + (value = pa_proplist_gets(verb->proplist, PA_ALSA_PROP_UCM_CAPTURE_RATE))) {
> > + if (pa_atou(value, &ui) == 0 && ui < PA_RATE_MAX) {
> > + pa_log_debug("UCM playback device %s rate %d", device_name, ui);
>
> Copy-paste error here...
>
> > + device->capture_rate = ui;
> > + } else
> > + pa_log_debug("UCM playback device %s has bad rate %s", device_name, value);
>
> ...and here.
I hereby dub this day Arun's-copy-paste-stupidity day. Thanks for
catching these.
-- Arun
More information about the pulseaudio-discuss
mailing list