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@xxxxxxx> > > >> --- > > >> 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@xxxxxxxx> > > Linux Sound Maintainer; ALSA Project; Red Hat, Inc.