Hi,
I'm a little determined to try and get SACD (DSD) decoding smoothly on the Pi2.
I captured some different stats of different file types playing and noted one anomaly between SACD and every other format.
The disk I/O is very low and I believe not getting enough thread priority to keep the buffer full.
Only seeing 300-500K/s reads with SACD compared with 1.6-3MB/s for other files. Even when it's just buffering and not playing, the disk I/O never gets above 500K/s which is never going to be fast enough to keep the buffer full. The I/O subsystem of the Pi2 is capable of a Raw 30MB/s from my disk and I can see it hit 6MB/s and higher when your scrolling through thumbnails on JRemote, so I know it can provide better throughput.
Maybe there's a bottleneck somewhere in the code for the SACD ISO reading that's throttling disk I/O? Of course it could be just the process thread being pegged at 100% but I don't know the inner workings of your code.
I know the decode/transcode thread is being smashed, but I was wondering if you can move the I/O or ISO reading to it's own thread whether that might improve things?
I understand it may not be possible and something we're stuck with due to the processing power of the Pi but thought I'd throw this out there just incase you can do something with it.
I ran HTOP and IOTOP with a bcmstat script to try see whats going on across all file types.
I didn't bother with MP3 because we all know it can do that with a couple cores tied behind it's back!
Native 44.1K FLAC - no transcode no DSP (bit perfect to my E17 DAC)
Native 96K FLAC - no transcode no DSP (bit perfect to my E17 DAC)
2ch SACD transcode to 96K - shot 1
2ch SACD transcode to 96K - shot 2