From: "Singh, Guneshwor" <guneshwor.o.singh@intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: vinod.koul@intel.com, mengdong.lin@intel.com,
alsa-devel@alsa-project.org, liam.r.girdwood@intel.com
Subject: Re: [PATCH 1/3] pcm: add support to get PCM sample rate from name
Date: Thu, 1 Jun 2017 11:29:45 +0530 [thread overview]
Message-ID: <20170601055945.GA25903@g2> (raw)
In-Reply-To: <s5hh900b6ar.wl-tiwai@suse.de>
On Thu, Jun 01, 2017 at 07:55:40AM +0200, Takashi Iwai wrote:
> On Thu, 01 Jun 2017 06:09:53 +0200,
> Singh, Guneshwor wrote:
> >
> > On Wed, May 31, 2017 at 03:53:25PM +0200, Takashi Iwai wrote:
> > > On Wed, 31 May 2017 15:46:44 +0200,
> > > <guneshwor.o.singh@intel.com> wrote:
> > > >
> > > > From: Guneshwor Singh <guneshwor.o.singh@intel.com>
> > > >
> > > > Get PCM sample rate from rate name similar to snd_pcm_format_value() which
> > > > retrieves format from format name.
> > > >
> > > > Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
> > >
> > > The enum is only for internal, so it shouldn't be exposed as a public
> > > API. I don't mind if it's only for alsa-lib internals, though.
> > >
> > It is only for alsa-lib internals and required to be used in topology
> > conf parsing. Is it okay to have the enum in src/topology/pcm.c ?
>
> That's OK, but include/sound/pcm.h is a public header to be exposed to
> outside. That should be avoided for local definitions.
>
Sure. I will rework and send a v2 patch.
>
> thanks,
>
> Takashi
>
>
> > >
> > > thanks,
> > >
> > > Takashi
> > >
> > > > ---
> > > > include/pcm.h | 38 ++++++++++++++++++++++++++++++++++++++
> > > > src/pcm/pcm.c | 37 +++++++++++++++++++++++++++++++++++++
> > > > 2 files changed, 75 insertions(+)
> > > >
> > > > diff --git a/include/pcm.h b/include/pcm.h
> > > > index 0be1a321..81bc55b1 100644
> > > > --- a/include/pcm.h
> > > > +++ b/include/pcm.h
> > > > @@ -119,6 +119,43 @@ typedef enum _snd_pcm_access {
> > > > SND_PCM_ACCESS_LAST = SND_PCM_ACCESS_RW_NONINTERLEAVED
> > > > } snd_pcm_access_t;
> > > >
> > > > +/** PCM sample rate */
> > > > +typedef enum _snd_pcm_rates {
> > > > + /** Unknown */
> > > > + SND_PCM_RATE_UNKNOWN = -1,
> > > > + /** 5512 Hz sample rate */
> > > > + SND_PCM_RATE_5512 = 0,
> > > > + /** 8000 Hz sample rate */
> > > > + SND_PCM_RATE_8000,
> > > > + /** 11025 Hz sample rate */
> > > > + SND_PCM_RATE_11025,
> > > > + /** 16000 Hz sample rate */
> > > > + SND_PCM_RATE_16000,
> > > > + /** 22050 Hz sample rate */
> > > > + SND_PCM_RATE_22050,
> > > > + /** 32000 Hz sample rate */
> > > > + SND_PCM_RATE_32000,
> > > > + /** 44100 Hz sample rate */
> > > > + SND_PCM_RATE_44100,
> > > > + /** 48000 Hz sample rate */
> > > > + SND_PCM_RATE_48000,
> > > > + /** 64000 Hz sample rate */
> > > > + SND_PCM_RATE_64000,
> > > > + /** 88200 Hz sample rate */
> > > > + SND_PCM_RATE_88200,
> > > > + /** 96000 Hz sample rate */
> > > > + SND_PCM_RATE_96000,
> > > > + /** 176400 Hz sample rate */
> > > > + SND_PCM_RATE_176400,
> > > > + /** 192000 Hz sample rate */
> > > > + SND_PCM_RATE_192000,
> > > > + /** continuous range within rate_min and rate_max */
> > > > + SND_PCM_RATE_CONTINUOUS = 30,
> > > > + /** more continuous range */
> > > > + SND_PCM_RATE_KNOT = 31,
> > > > + SND_PCM_RATE_LAST = SND_PCM_RATE_KNOT,
> > > > +} snd_pcm_rates_t;
> > > > +
> > > > /** PCM sample format */
> > > > typedef enum _snd_pcm_format {
> > > > /** Unknown */
> > > > @@ -1047,6 +1084,7 @@ const char *snd_pcm_format_description(const snd_pcm_format_t format);
> > > > const char *snd_pcm_subformat_name(const snd_pcm_subformat_t subformat);
> > > > const char *snd_pcm_subformat_description(const snd_pcm_subformat_t subformat);
> > > > snd_pcm_format_t snd_pcm_format_value(const char* name);
> > > > +snd_pcm_rates_t snd_pcm_rate_value(const char* name);
> > > > const char *snd_pcm_tstamp_mode_name(const snd_pcm_tstamp_t mode);
> > > > const char *snd_pcm_state_name(const snd_pcm_state_t state);
> > > >
> > > > diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
> > > > index 200b10c2..bff1b949 100644
> > > > --- a/src/pcm/pcm.c
> > > > +++ b/src/pcm/pcm.c
> > > > @@ -1722,6 +1722,7 @@ static int __snd_pcm_poll_revents(snd_pcm_t *pcm, struct pollfd *pfds,
> > > > #define START(v) [SND_PCM_START_##v] = #v
> > > > #define HW_PARAM(v) [SND_PCM_HW_PARAM_##v] = #v
> > > > #define SW_PARAM(v) [SND_PCM_SW_PARAM_##v] = #v
> > > > +#define RATE(v) [SND_PCM_RATE_##v] = #v
> > > > #define FORMAT(v) [SND_PCM_FORMAT_##v] = #v
> > > > #define SUBFORMAT(v) [SND_PCM_SUBFORMAT_##v] = #v
> > > >
> > > > @@ -1754,6 +1755,24 @@ static const char *const snd_pcm_access_names[] = {
> > > > ACCESS(RW_NONINTERLEAVED),
> > > > };
> > > >
> > > > +static const char *const snd_pcm_rate_names[] = {
> > > > + RATE(5512),
> > > > + RATE(8000),
> > > > + RATE(11025),
> > > > + RATE(16000),
> > > > + RATE(22050),
> > > > + RATE(32000),
> > > > + RATE(44100),
> > > > + RATE(48000),
> > > > + RATE(64000),
> > > > + RATE(88200),
> > > > + RATE(96000),
> > > > + RATE(176400),
> > > > + RATE(192000),
> > > > + RATE(CONTINUOUS),
> > > > + RATE(KNOT),
> > > > +};
> > > > +
> > > > static const char *const snd_pcm_format_names[] = {
> > > > FORMAT(S8),
> > > > FORMAT(U8),
> > > > @@ -1978,6 +1997,24 @@ const char *snd_pcm_format_description(snd_pcm_format_t format)
> > > > }
> > > >
> > > > /**
> > > > + * \brief get PCM sample rate from name
> > > > + * \param name PCM sample rate name (case insensitive)
> > > > + * \return PCM sample rate
> > > > + */
> > > > +snd_pcm_rates_t snd_pcm_rate_value(const char* name)
> > > > +{
> > > > + snd_pcm_rates_t rate;
> > > > + for (rate = 0; rate <= SND_PCM_RATE_LAST; rate++) {
> > > > + if (snd_pcm_rate_names[rate] &&
> > > > + strcasecmp(name, snd_pcm_rate_names[rate]) == 0) {
> > > > + return rate;
> > > > + }
> > > > + }
> > > > +
> > > > + return SND_PCM_RATE_UNKNOWN;
> > > > +}
> > > > +
> > > > +/**
> > > > * \brief get PCM sample format from name
> > > > * \param name PCM sample format name (case insensitive)
> > > > * \return PCM sample format
> > > > --
> > > > 2.13.0
> > > >
> > > >
> >
prev parent reply other threads:[~2017-06-01 5:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-31 13:46 [PATCH 1/3] pcm: add support to get PCM sample rate from name guneshwor.o.singh
2017-05-31 13:46 ` [PATCH 2/3] topology: Add max rates definition guneshwor.o.singh
2017-05-31 13:46 ` [PATCH 3/3] topology: Add parsing for rates from conf guneshwor.o.singh
2017-05-31 13:53 ` [PATCH 1/3] pcm: add support to get PCM sample rate from name Takashi Iwai
2017-06-01 4:09 ` Singh, Guneshwor
2017-06-01 5:55 ` Takashi Iwai
2017-06-01 5:59 ` Singh, Guneshwor [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170601055945.GA25903@g2 \
--to=guneshwor.o.singh@intel.com \
--cc=alsa-devel@alsa-project.org \
--cc=liam.r.girdwood@intel.com \
--cc=mengdong.lin@intel.com \
--cc=tiwai@suse.de \
--cc=vinod.koul@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.