The patch allows usage of byte swapped devices like the
m-audio audiophile usb with jackd.
The patch is tested with the audiophile usb for
playback and capture as well as with an onboard iec958
playback only device that doesn't require the patch.
Some reasoning why it is not a good idea to point to
plughw: in case of jackd for byte swapped devices:
1. Jackd uses alsa's mmapped I/O for efficiency.
Mmapped I/O bypasses alsa's plug layer so alsa does no
endianess conversion. Thus using a byte swapped device
with jackd is impossible without this patch.
2. If jackd accesses a plug device alsa grants I/O
formats that would be converted by the plug layer.
These formats can differ in physical width from the
actual hw format (e.g. S32_LE for the plug layer when
the actual device accepts only S24_3BE). Mmapped alsa
I/O expects the format as required by the actual device
so there is most probably a format and/or data width
Some hints for m-audio audiophile usb users:
The alsa device layout is a bit strange. Assuming that
the device is card 1, then:
hw:1,0 is iec958 for capture and analogue/headphone for
hw:1,1 is analogue for capture and iec958 for playback
I did never test analogue capture as I don't need it.
To use e.g. capture and playback at 48000Hz sampling
rate on the iec958 interface use a jackd command line
like the following after applying the patch:
jackd -R -P20 -dalsa -r48000 -p64 -n4 -D -Chw:1,0
-Phw:1,1 -i2 -o2