19 Nov
2014
19 Nov
'14
8:50 p.m.
Hi,
Sorry for catching up late on this patch...
On 10.09.2014 10:00, Jurgen Kramer wrote:
- FORMATD(DSD_U32_LE, "Direct Stream Digital, 4-byte (x32), little endian, oldest bits in MSB"),
There is bug in this patch. The spec for these formats is, as above says "little endian, oldest bits in MSB", however with the iFi iDSD Nano this doesn't seem to be the case. Oldest bits are in MSB of the byte, but byte order is big endian. IOW, following alone will produce incorrect output:
size_t N = 32; uint32_t x = 0; while (N--) { x <<= 1; x |= nextbit; }
But if you add __builtin_byteswap32(x) then the output is correct.
I guess this has not been caught because of just memcpy()'ing the oldest-bit-in-MSB byte stream to the sample buffer instead of constructing the words...
Best regards,
- Jussi