Data loss in isosynchronous transfers

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

 




On OMAP4, sending USB audio over the High Speed port typically results in data loss (audio noise). If I modify sound/usb/urb.c to tweak things like the "total_packs" calculation, I can sometimes get it to work well for a specific case. How do I "right-size" the packets? Or should I be doing something else?

DETAILS....

Platform: TI OMAP4 4460
Board: Blaze Tablet
EHCI: Onboard OMAP4, IP provided by Synopsys. Driver is drivers/usb/host/ehci-omap.c
Audio device: Logitech H360 Headset (USB)
Kernel: TI's p-android-omap-3.0 branch[1]

Example:

If I play 2-channel, 16-bit, PCM audio at 44100 Hz, the URB completion callback will often show that all of the data did not reach the end-point. The audio plays, but has pops.

In this case, sound/usb/urb.c typically calculates that it wants to send 24 URB's in each transer. If I manually alter it to use 12 instead, then the audio plays as expected.[2] However, the same tweak does not work for 48000 Hz.

-gabriel

[1] http://omapzoom.org/?p=kernel/omap.git;a=summary
[2] Inside snd_usb_init_substream_urbs(), just before the
    "allocate and initialize data urbs" loop.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

  Powered by Linux