(CC stable dropped; this is not how to submit stable patches.)
Mauro Carvalho Chehab wrote:
The Auvitek 0828 chip, used on HVR950Q actually need two quirks and not just one.
The first one, already implemented, enforces that it won't have channel swaps at the transfers.
However, for TV applications, like xawtv and tvtime, another quirk is needed, in order to enforce that, at least 2 URB transfer intervals will be needed to fill a buffer.
period = 2 * MAX_URBS * fp->maxpacksize;
min_period = period * 90 / 100;
max_period = period * 110 / 100;
I don't quite understand what you mean with "URB transfer interval".
All USB audio devices transfer packets in intervals between 125 µs and 1000 µs.
MAX_URBS is a somewhat random value that is not directly derived from either a hardware or software constraint.
Are you trying to enforce two packets per URB?
Why are you setting both a minimum and a maximum?
Isn't this affected by the constraints of the playback device?
Without it, buffer underruns happen when trying to syncronize the audio input from au0828 and the audio playback at the default audio output device.
This looks like a workaround for a userspace bug that would affect all USB audio devices. What period/buffer sizes are xawtv/tvtime trying to use?
Regards, Clemens