[alsa-devel] USB hardware that supports implicit feedback?
Eldad Zack
eldad at fogrefinery.com
Fri Nov 16 03:10:40 CET 2012
Hi Daniel,
On Thu, 15 Nov 2012, Daniel Griscom wrote:
> The audio output stream (from the computer to my device) runs at a few frames
> per second higher or lower rate than that of the input stream (from my device
> to the computer). The actual difference seems to be stable on a specific
> machine, but varies greatly between machines (I've seen differences from +7fps
> to -2fps; I presume this is due to differences in CPU clock frequencies).
Looking at the lsusb output, I assume that the sink/source coupling
doesn't work, because it's not in an interface group.
> >I'm not an ALSA dev, but I recently posted a series of patches for the
> >M-Audio Fast Track C400, which uses the implicit feedback code that was
> >already in the tree for other devices.
> So, this device uses implicit feedback to tell ALSA to send output data at the
> same rate as its input data? Very cool; I've ordered one to test.
Yes, and it seems to work very good with my hardware. But I'm not actually sure
I want to recommend a device with broken descriptors...
Try this, it *MIGHT* work (applies against mainline 3.7-rc5) -
completely untested, btw.
Cheers,
Eldad
diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c
index 5c12a3f..fd766a3 100644
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -372,6 +372,19 @@ static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt)
alts = &iface->altsetting[1];
goto add_sync_ep;
}
+ break;
+ case USB_ID(0x03eb, 0x2311): /* AMTEL === UNTESTED === */
+ if (is_playback) {
+ implicit_fb = 1;
+ ep = 0x82;
+ iface = usb_ifnum_to_if(dev, 2);
+
+ if (!iface || iface->num_altsetting == 0)
+ return -EINVAL;
+
+ alts = &iface->altsetting[1];
+ goto add_sync_ep;
+ }
}
if (((is_playback && attr == USB_ENDPOINT_SYNC_ASYNC) ||
More information about the Alsa-devel
mailing list