ALSA: pcm: Add snd_pcm_rate_bit_to_rate()
authorDimitris Papastamos <dp@opensource.wolfsonmicro.com>
Fri, 15 Jun 2012 15:35:28 +0000 (16:35 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 18 Jun 2012 07:38:58 +0000 (09:38 +0200)
This is essentially the reverse of snd_pcm_rate_to_rate_bit().

This is generally useful as the Compress API uses the rate bit
directly and it helps to be able to map back to the actual sample
rate.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/pcm.h
sound/core/pcm_misc.c

index 0d1112815be3be6ea96a5ec1768382bb70aea571..68372bc1e11b649e3081a120f76e4bedc03fdd55 100644 (file)
@@ -893,6 +893,7 @@ extern const struct snd_pcm_hw_constraint_list snd_pcm_known_rates;
 
 int snd_pcm_limit_hw_rates(struct snd_pcm_runtime *runtime);
 unsigned int snd_pcm_rate_to_rate_bit(unsigned int rate);
+unsigned int snd_pcm_rate_bit_to_rate(unsigned int rate_bit);
 
 static inline void snd_pcm_set_runtime_buffer(struct snd_pcm_substream *substream,
                                              struct snd_dma_buffer *bufp)
index 9c9eff9afbac85030effbe23b1aa1b6e117912f2..d4fc1bfbe45792ba3f40764ab5b7aa48764fd664 100644 (file)
@@ -488,3 +488,21 @@ unsigned int snd_pcm_rate_to_rate_bit(unsigned int rate)
        return SNDRV_PCM_RATE_KNOT;
 }
 EXPORT_SYMBOL(snd_pcm_rate_to_rate_bit);
+
+/**
+ * snd_pcm_rate_bit_to_rate - converts SNDRV_PCM_RATE_xxx bit to sample rate
+ * @rate_bit: the rate bit to convert
+ *
+ * Returns the sample rate that corresponds to the given SNDRV_PCM_RATE_xxx flag
+ * or 0 for an unknown rate bit
+ */
+unsigned int snd_pcm_rate_bit_to_rate(unsigned int rate_bit)
+{
+       unsigned int i;
+
+       for (i = 0; i < snd_pcm_known_rates.count; i++)
+               if ((1u << i) == rate_bit)
+                       return snd_pcm_known_rates.list[i];
+       return 0;
+}
+EXPORT_SYMBOL(snd_pcm_rate_bit_to_rate);