[alsa-devel] [PATCH] PCM: Support up to 384kHz sample rate.
From: Peter Rosin peda@axentia.se
Some codecs support it in the kernel (e.g. pcm512x).
Signed-off-by: Peter Rosin peda@axentia.se --- include/pcm_plugin.h | 2 +- src/pcm/pcm_simple.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
I'm not sure it really is this simple, but the things I'm using start to work...
Cheers, Peter
diff --git a/include/pcm_plugin.h b/include/pcm_plugin.h index eea1d82..958bc89 100644 --- a/include/pcm_plugin.h +++ b/include/pcm_plugin.h @@ -39,7 +39,7 @@ */
#define SND_PCM_PLUGIN_RATE_MIN 4000 /**< minimal rate for the rate plugin */ -#define SND_PCM_PLUGIN_RATE_MAX 192000 /**< maximal rate for the rate plugin */ +#define SND_PCM_PLUGIN_RATE_MAX 384000 /**< maximal rate for the rate plugin */
/* ROUTE_FLOAT should be set to 0 for machines without FP unit - like iPAQ */ #ifdef HAVE_SOFT_FLOAT diff --git a/src/pcm/pcm_simple.c b/src/pcm/pcm_simple.c index ce11083..2fda841 100644 --- a/src/pcm/pcm_simple.c +++ b/src/pcm/pcm_simple.c @@ -173,7 +173,7 @@ int snd_spcm_init(snd_pcm_t *pcm, snd_pcm_sw_params_alloca(&sw_params);
assert(pcm); - assert(rate >= 5000 && rate <= 192000); + assert(rate >= 5000 && rate <= 384000); assert(channels >= 1 && channels <= 512);
rrate = rate; @@ -233,7 +233,7 @@ int snd_spcm_init_duplex(snd_pcm_t *playback_pcm,
assert(playback_pcm); assert(capture_pcm); - assert(rate >= 5000 && rate <= 192000); + assert(rate >= 5000 && rate <= 384000); assert(channels >= 1 && channels <= 512);
pcms[0] = playback_pcm;
On Wed, 11 Nov 2015 17:13:56 +0100, Peter Rosin wrote:
From: Peter Rosin peda@axentia.se
Some codecs support it in the kernel (e.g. pcm512x).
Signed-off-by: Peter Rosin peda@axentia.se
include/pcm_plugin.h | 2 +- src/pcm/pcm_simple.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
I'm not sure it really is this simple, but the things I'm using start to work...
I guess this would break if a linear rate plugin is used, since it may overflow. Actually, for other rate plugins in alsa-plugins, they set unlimited (both zero). That said, the defines there are essentially only for the linear rate plugin.
And, looking at the code now, I believe the usage of assert() in snd_spcm_init() is just wrong. Such a condition shouldn't be assert() but let the PCM parameter resolver handling it instead.
thanks,
Takashi
Cheers, Peter
diff --git a/include/pcm_plugin.h b/include/pcm_plugin.h index eea1d82..958bc89 100644 --- a/include/pcm_plugin.h +++ b/include/pcm_plugin.h @@ -39,7 +39,7 @@ */
#define SND_PCM_PLUGIN_RATE_MIN 4000 /**< minimal rate for the rate plugin */ -#define SND_PCM_PLUGIN_RATE_MAX 192000 /**< maximal rate for the rate plugin */ +#define SND_PCM_PLUGIN_RATE_MAX 384000 /**< maximal rate for the rate plugin */
/* ROUTE_FLOAT should be set to 0 for machines without FP unit - like iPAQ */ #ifdef HAVE_SOFT_FLOAT diff --git a/src/pcm/pcm_simple.c b/src/pcm/pcm_simple.c index ce11083..2fda841 100644 --- a/src/pcm/pcm_simple.c +++ b/src/pcm/pcm_simple.c @@ -173,7 +173,7 @@ int snd_spcm_init(snd_pcm_t *pcm, snd_pcm_sw_params_alloca(&sw_params);
assert(pcm);
- assert(rate >= 5000 && rate <= 192000);
assert(rate >= 5000 && rate <= 384000); assert(channels >= 1 && channels <= 512);
rrate = rate;
@@ -233,7 +233,7 @@ int snd_spcm_init_duplex(snd_pcm_t *playback_pcm,
assert(playback_pcm); assert(capture_pcm);
- assert(rate >= 5000 && rate <= 192000);
assert(rate >= 5000 && rate <= 384000); assert(channels >= 1 && channels <= 512);
pcms[0] = playback_pcm;
-- 1.7.10.4
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
participants (2)
-
Peter Rosin
-
Takashi Iwai