Re: [PATCH] pcm: rate - check rate type for using snd_pcm_rate_slave_frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07. 11. 22 5:05, Shengjiu Wang wrote:
With plughw device and mmap case, the plug pcm fast_ops pointer is same
as slave pcm fast_ops, but ops pointer is different, which cause
the "bus error" in snd_pcm_rate_slave_frames.

The test command is
arecord -Dplughw:x -r12000 -c2 -fS16_LE -M temp.wav

This patch is to add pcm type check as commit:
d21e0e01 pcm: plugin - fix avail_min calculation on rate plugin

Fixes: d9dbb57b ("pcm: rate - rewrite the may_wait_for_avail_min callback for the rate plugin")
Signed-off-by: Shengjiu Wang <shengjiu.wang@xxxxxxx>
---
  src/pcm/pcm_rate.c | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
index e8815e8b..dc502202 100644
--- a/src/pcm/pcm_rate.c
+++ b/src/pcm/pcm_rate.c
@@ -1304,8 +1304,11 @@ static snd_pcm_uframes_t snd_pcm_rate_slave_frames(snd_pcm_t *pcm, snd_pcm_ufram
  static int snd_pcm_rate_may_wait_for_avail_min(snd_pcm_t *pcm,
  					       snd_pcm_uframes_t avail)
  {
-	return snd_pcm_plugin_may_wait_for_avail_min_conv(pcm, avail,
-							  snd_pcm_rate_slave_frames);
+	if (snd_pcm_type(pcm) == SND_PCM_TYPE_RATE)
+		return snd_pcm_plugin_may_wait_for_avail_min_conv(pcm, avail,
+								  snd_pcm_rate_slave_frames);
+	else
+		return snd_pcm_plugin_may_wait_for_avail_min_conv(pcm, avail, NULL);
  }
static const snd_pcm_fast_ops_t snd_pcm_rate_fast_ops = {

It's not a correct fix. The snd_pcm_t pointer passed to all fast ops functions should be in sync with the callback implementation.

I tried to fix this issue in commits:

https://github.com/alsa-project/alsa-lib/commit/aa4f56c3c952269c36464cc0da9db5a1381648fa
https://github.com/alsa-project/alsa-lib/commit/39060852d810461dc8cd1464cfb2ffe84da42d56

Let me know, if this update does work for you. Thank you for your report.

					Jaroslav

--
Jaroslav Kysela <perex@xxxxxxxx>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux