[PATCH] ALSA: usb-audio: Increase max buffer size

Geraldo Nascimento geraldogabriel at gmail.com
Sun Apr 10 00:24:32 CEST 2022


Hi Takashi and Jaroslav,

On Sat, Apr 09, 2022 at 06:11:54PM -0300, Geraldo Nascimento wrote:
> On Sat, Apr 09, 2022 at 10:43:13PM +0200, Jaroslav Kysela wrote:
> > 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.


This is wrong by the way. The Wing goes up to 48 KHz. They claim A/D
Conversion of up to 192 KHz but doing that sample rate though USB 2.0
would be exceeding known physical limits :)

Sorry about that,
Geraldo Nascimento

> > > 
> > > 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.
> 
> Hi Jaroslav,
> 
> Yes, I agree, your approach seems to be the most cost-effective way of
> dealing with extreme USB sound hardware, plus if it's calculated at
> runtime the users won't need to recompile their kernels for new devices
> and the whole thing is painless from the perspective of the end-user.
> 
> > 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.
> 
> That is true, thanks for pointing it out.
> 
> Thank you,
> Geraldo Nascimento
> 
> > 
> > 					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