[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