diff options
author | John S. Gruber <JohnSGruber@gmail.com> | 2009-12-27 12:19:58 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-12-28 06:30:41 -0500 |
commit | 98e89f606c38a310a20342f90e0c453e6afadf18 (patch) | |
tree | ed5a677157cf5bdd781c04e986813f112c6bf72c /sound/usb/usbaudio.h | |
parent | adc8d31326c32a2a1e145ab80accbc3c6570b117 (diff) |
ALSA: usb-audio: relax urb data align. restriction HVR-950Q and HVR-850 only
Addressing audio quality problem.
In sound/usb/usbaudio.c, for the Hauppage HVR-950Q and HVR-850 only, change
retire_capture_urb to allow transfers on audio sub-slot boundaries rather
than audio slots boundaries.
With these devices the left and right channel samples can be split between
two different urbs. Throwing away extra channel samples causes a sound
quality problem for stereo streams as the left and right channels are
swapped repeatedly, perhaps many times per second.
Urbs unaligned on sub-slot boundaries are still truncated to the next
lowest stride (audio slot) to retain synchronization on samples even
though left/right channel synchronization may be lost in this case.
Detect the quirk using a case statement in snd_usb_audio_probe.
BugLink: https://bugs.launchpad.net/ubuntu/+bug/495745
Signed-off-by: John S. Gruber <JohnSGruber@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/usbaudio.h')
-rw-r--r-- | sound/usb/usbaudio.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 152216738cce..d180554b81f0 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h | |||
@@ -125,6 +125,7 @@ struct snd_usb_audio { | |||
125 | struct snd_card *card; | 125 | struct snd_card *card; |
126 | u32 usb_id; | 126 | u32 usb_id; |
127 | int shutdown; | 127 | int shutdown; |
128 | unsigned int txfr_quirk:1; /* Subframe boundaries on transfers */ | ||
128 | int num_interfaces; | 129 | int num_interfaces; |
129 | int num_suspended_intf; | 130 | int num_suspended_intf; |
130 | 131 | ||