Re: BUG: USB audio discontinuities with 'UHCI: implement new semantics for URB_ISO_ASAP'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 23, 2013 at 05:09:35PM +0200, Clemens Ladisch wrote:
> Alan Stern wrote:
> > On Tue, 23 Apr 2013, Clemens Ladisch wrote:
> >> Why is having a queue of two URB with one packet each suddenly not
> >> allowed?
> >
> > It _is_ allowed when URB_ISO_ASAP is clear.  I have never fully
> > understood why the audio driver sets that flag.  By setting it, you are
> > telling the host controller driver that you are willing to give up
> > reduced latency in order to avoid underruns.
> 
> This flag was needed to avoid having to set urb->start_frame.
> 
> With the changed queueing API, the audio driver needs to change too.
> I'll look into this ...

For what it's worth, the following -stable patch

"ALSA: USB: adjust for changed 3.8 USB API"
c75c5ab575af7db707689cdbb5a5c458e9a034bb

fixes the discontinuous playback on period sizes between 139 and 192,
but the discontinuous playback on period sizes between 48 and 138 has
been replaced by rather worse kernel blocking and kernel errors:

jrayhawk@richardiv:~$ sudo tail -F -n 0 /var/log/kern.log &
[1] 4490
jrayhawk@richardiv:~$ time perl -e 'print pack "H*", "00FF" x 2048' | aplay --period-size=192 -r 48000 -f S16_LE -c2 -D hw:0,0
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo

real	0m0.053s
user	0m0.008s
sys	0m0.000s
jrayhawk@richardiv:~$ time perl -e 'print pack "H*", "00FF" x 2048' | aplay --period-size=48 -r 48000 -f S16_LE -c2 -D hw:0,0
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
May  8 17:01:56 richardiv kernel: [ 1680.923474] cannot submit urb (err = -18)
May  8 17:01:56 richardiv kernel: [ 1680.924472] cannot submit urb (err = -18)

real	0m10.023s
user	0m0.008s
sys	0m0.004s

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux