From: Mike Looijmans <mike.looijmans@topic.nl>
To: alsa-devel@alsa-project.org
Subject: Re: Sample rates above 192000
Date: Wed, 17 Apr 2013 13:44:53 +0200 [thread overview]
Message-ID: <516E8B35.1010200@topic.nl> (raw)
In-Reply-To: <516E5B80.804@topic.nl>
Found the cause: snd_pcm_limit_hw_rates()
soc-code.c:soc_pcm_open() calculates the min/max rates for the given
link, then passes the result to snd_pcm_limit_hw_rates which discards
this and replaces it with incorrect data derived from the PCM flags.
The 3.8 kernel soc-core looks totally different, so I have no clue if
this still applies.
If a codec defines rate_min=16000, rate_max=96000 and the DAI specifies
flags for 8000..192000 Hz, then the resulting limits that it will apply
are rate_min=8000 rate_max=192000. One would expect the more restrictive
values to prevail. Similar, if both codec and dai specify
rate_max=216000 then the resulting rate_max will surprisingly be set to
192000.
I worked around the issue by simply adding a 204800 rate to the table of
known rates.
Mike.
On 04/17/2013 10:21 AM, Mike Looijmans wrote:
> I'm trying to use "my" hardware at a 204800 sample rate. I've changed
> the DAI and codec limits to match. If I limit them to anything below
> 192kHz, everything behaves as expected and I can record at up to that
> rate, also if that rate is not a multiple of 48k or 44k1 (using
> "SNDRV_PCM_RATE_KNOT" constant).
>
> When I specifiy anything over 192000, I bump onto some ceiling, and I
> cannot figure out what's causing it. I patched alsa-utils to allow
> >192000 already (there is a silly check on that in aplay.c which bails
> out early without asking the driver).
>
> # arecord -D hw:ADC8 --duration=5 -f S32_LE -c 2 -r 204800
> /tmp/recording.wav
> Recording WAVE '/tmp/recording.wav' : Signed 32 bit Little Endian, Rate
> 204800 Hz, Stereo
> Warning: rate is not accurate (requested = 204800Hz, got = 192000Hz)
> please, try the plug plugin
> #
> # arecord -D hw:ADC8 --duration=5 -f S32_LE -c 2 -r 192000
> /tmp/recording.wav
> Recording WAVE '/tmp/recording.wav' : Signed 32 bit Little Endian, Rate
> 192000 Hz, Stereo
> #
>
>
> I also tried a "grep" on the kernel (i'm still on 2.3.7 though) source
> files on "192000" but found nothing that would limit the sample rate to
> that. I'm running out of ideas. How can I break this limit? Or where in
> the kernel can I find the part that calculates the max rate?
>
> Mike.
prev parent reply other threads:[~2013-04-17 11:44 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <516688D4.9040700@zonque.org>
2013-04-11 10:51 ` Enhance support for SigmaDSP chips Lars-Peter Clausen
2013-04-11 12:02 ` Daniel Mack
2013-04-11 12:53 ` Lars-Peter Clausen
2013-04-17 8:21 ` Sample rates above 192000 Mike Looijmans
2013-04-17 11:44 ` Mike Looijmans [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=516E8B35.1010200@topic.nl \
--to=mike.looijmans@topic.nl \
--cc=alsa-devel@alsa-project.org \
/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.