All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ruud van Asseldonk <ruud@veniogames.com>
To: alsa-devel@alsa-project.org
Subject: Regression playing 24bit/96kHz audio on USB audio interface between 5.10.94 and 5.15.21
Date: Sun, 6 Mar 2022 23:18:04 +0100	[thread overview]
Message-ID: <4e509aea-e563-e592-e652-ba44af6733fe@veniogames.com> (raw)

Hi,

I have a program that configures a Behringer UMC404HD 192k USB audio 
interface for playback as follows (pseudocode):

   snd_pcm_hw_params_set_channels(pcm, hwp, 2);
   snd_pcm_hw_params_set_format(pcm, hwp, SND_PCM_FORMAT_S24_3LE);
   snd_pcm_hw_params_set_access(pcm, hwp, SND_PCM_ACCESS_MMAP_INTERLEAVED);
   snd_pcm_hw_params_set_rate(pcm, hwp, val=96000, dir=0);
   snd_pcm_hw_params_set_period_size_near(pcm, hwp, val=513, dir=0);
   // If I confirm at this point with snd_pcm_hw_params_get_period_size,
   // I get back 513.
   snd_pcm_hw_params_set_buffer_size_near(pcm, hwp, val=2052);
   snd_pcm_hw_params(pcm, hwp);
   // If I confirm with snd_pcm_hw_params_get_buffer_size,
   // I get back 2052.

On Linux 5.10.94 (specifically Arch Linux ARM package 
linux-rpi-5.10.94-1), this succeeds, and I can play back audio just 
fine. On 5.15.21 (specifically linux-rpi-5.15.21-3), all the calls 
succeed apart from the last one, which returns EINVAL.

(My actual program is written in Rust and uses a Rust wrapper library 
for libasound, https://docs.rs/alsa/0.6.0/alsa/, but the calls should be 
the ones listed.)

I confirmed with snd_pcm_hw_params_test_format that the S24_3LE format 
is supported. On both kernels it is successful. I confirmed with 
snd_pcm_hw_params_test_rate that 96 kHz is supported. On both kernels it 
is successful. There are differences though. When I query these:

   snd_pcm_hw_params_get_period_size_min
   snd_pcm_hw_params_get_period_size_max
   snd_pcm_hw_params_get_buffer_size_min
   snd_pcm_hw_params_get_buffer_size_max

Then on 5.10.94 (the good version), I get:

   period size min/max: 12/32768, buffer size min/max: 24/65536

But on 5.15.21 (the bad version), I get:

   period size min/max: 13/71332, buffer size min/max: 26/142663

Also, after I set the period size to 513, if I then query the buffer 
size min/max, on 5.10.94 I get:

   buffer size min/max: 1026/65536

But on 5.15.21 I get:

   buffer size min/max: 1027/142663

In lsmod, snd_usb_audio shows up, and from lsusb -v, the UMC404HD 
appears to be a standard USB audio interface. The lsusb output is 
identical on both kernels.

Please let me know if there is anything I can do to help further 
diagnose the issue, or if I should report this elsewhere.

Kind regards,
Ruud van Asseldonk

             reply	other threads:[~2022-03-07  8:01 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-06 22:18 Ruud van Asseldonk [this message]
2022-12-11 15:30 ` Regression playing 24bit/96kHz audio on USB audio interface between 5.10.94 and 5.15.21 Ruud van Asseldonk
2022-12-11 21:08   ` Geraldo Nascimento
2022-12-12  9:48     ` Thorsten Leemhuis
2022-12-12 12:41       ` Jaroslav Kysela
2022-12-30 18:42       ` Ruud van Asseldonk
2022-12-31 11:38         ` Ruud van Asseldonk
2022-12-31 12:03           ` Thorsten Leemhuis
2022-12-31 12:10           ` Jaroslav Kysela
2022-12-31 13:20             ` Takashi Iwai
2023-01-02 16:57               ` Takashi Iwai

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=4e509aea-e563-e592-e652-ba44af6733fe@veniogames.com \
    --to=ruud@veniogames.com \
    --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.