[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