[alsa-devel] Need expert's advice - Fast Track Ultra (8R) dropping samples
Clemens Ladisch
clemens at ladisch.de
Fri Oct 15 09:23:15 CEST 2010
Daniel Mack wrote:
> > > I have an untested patch ready which should add support for implicit
> > > feedback, but I'm uncertain about the condition when to activate this
> > > mode.
For UAC2 devices, when the descriptors say so.
For UAC1 devices, never (because UAC1 does not have this mode).
It looks as if all UAC1-like devices that need this are actually marked
as vendor-specific, so we have quirks for them anyway.
> I attached a patch below, only compile-tested. Please also check the USB
> ID again, as I'm not sure whether you sent the right lsusb dump (the
> device name looks suspicious).
The actual device name is correct; the "DFU" was taken by lsusb from the
usb.ids file and is wrong. (I've submitted the correct name.)
> static int snd_usb_audio_next_packet_size(struct snd_usb_substream *subs)
> {
> + frames = min(capture->frame_count, subs->maxframesize);
> + capture->frame_count -= frames;
This assumes that both streams are running continuously, and you have to
make sure to start them at the same time to prevent the frame_count from
overflowing or underflowing. In my UA-101 driver, I ensure that the
buffer fill level is the same for both streams by submitting each
playback packet with the same frame count as the corresponding capture
packet; but I'm not sure which algorithm is more robust in practice.
> + /* if this stream is in implicit feedback mode, start the
> + * capture stream now as the playback stream relies on the
> + * amount of data we see on the capture IN endpoint.
> + */
> + if (subs->stream->implicit_feedback && !capture->running) {
> + int ret;
> + capture->ops.retire = retire_paused_capture_urb;
set_interface?
> + ret = start_urbs(capture, runtime);
> + if (ret)
> + return ret;
> + }
> +
> return start_urbs(subs, runtime);
I think you have to wait for the first capture packet to be received
before you can start submitting playback URBs.
Regards,
Clemens
More information about the Alsa-devel
mailing list