[PATCH] ALSA: usb-audio: Increase max buffer size
Jaroslav Kysela
perex at perex.cz
Sat Apr 9 22:43:13 CEST 2022
On 09. 04. 22 22:36, Geraldo Nascimento wrote:
> On Thu, Apr 07, 2022 at 11:27:40PM +0200, Takashi Iwai wrote:
>> The current limit of max buffer size 1MB seems too small for modern
>> devices with lots of channels and high sample rates.
>> Let's make bigger, 4MB.
>
> Hi Takashi,
>
> I did some math and 4MB is still too little for some extreme hardware
> like the Behringer Wing, which is USB 2.0 by the way. According to my
> calculations, at 192 KHz and 48 channels, even with this 4MB patch, we
> would still have only 151.7 ms of buffer for the Wing.
>
> Therefore my suggestion is to expose the MAX_BUFFER_BYTES as Kconf.
>
> Do you think this is plausible?
I think that much better behaviour may be to calculate and limit the max
buffer size at runtime depending on the max channels / rate / sample bits
obtained from the USB descriptors by default. For standard hardware, those big
buffers do not make much sense and there's usually a mix of the USB sound
hardware in the system.
Jaroslav
>
> Thanks,
> Geraldo Nascimento
>
>>
>> Signed-off-by: Takashi Iwai <tiwai at suse.de>
>> ---
>> sound/usb/pcm.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
>> index 6a460225f2e3..37ee6df8b15a 100644
>> --- a/sound/usb/pcm.c
>> +++ b/sound/usb/pcm.c
>> @@ -659,7 +659,7 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
>> #define hwc_debug(fmt, args...) do { } while(0)
>> #endif
>>
>> -#define MAX_BUFFER_BYTES (1024 * 1024)
>> +#define MAX_BUFFER_BYTES (4 * 1024 * 1024)
>> #define MAX_PERIOD_BYTES (512 * 1024)
>>
>> static const struct snd_pcm_hardware snd_usb_hardware =
>> --
>> 2.31.1
>>
--
Jaroslav Kysela <perex at perex.cz>
Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
More information about the Alsa-devel
mailing list