OSDN Git Service

ALSA: usb-audio: Fix packet size calculation
authorAlexander Tsoy <alexander@tsoy.me>
Mon, 29 Jun 2020 02:59:33 +0000 (05:59 +0300)
committerTakashi Iwai <tiwai@suse.de>
Tue, 30 Jun 2020 17:46:48 +0000 (19:46 +0200)
Commit f0bd62b64016 ("ALSA: usb-audio: Improve frames size computation")
introduced a regression for devices which have playback endpoints with
bInterval > 1. Fix this by taking ep->datainterval into account.

Note that frame and fps are actually mean packet and packets per second
in the code introduces by the mentioned commit. This will be fixed in a
follow-up patch.

Fixes: f0bd62b64016 ("ALSA: usb-audio: Improve frames size computation")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=208353
Signed-off-by: Alexander Tsoy <alexander@tsoy.me>
Link: https://lore.kernel.org/r/20200629025934.154288-1-alexander@tsoy.me
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/endpoint.c

index 9bea7d3..11f2377 100644 (file)
@@ -1093,6 +1093,7 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep,
                ep->freqn = get_usb_high_speed_rate(rate);
                ep->fps = 8000;
        }
+       ep->fps >>= ep->datainterval;
 
        ep->sample_rem = rate % ep->fps;
        ep->framesize[0] = rate / ep->fps;