Page 1 of 1

Required: 'use_mmap' resurrection for DLNA/UPnP play

Posted: August 26th, 2017, 5:02 am
by pinkgold
Some XMOS USB DACs, such as Chord QBD76 series, don't play DoP source with DLNA (UPNP with upmpdcli) if 'use_mmap' option disabled.

And in case of using DLNA Media Server such as JRiver and foobar2000 + upmpdcli + MPD, wrong information sent to DAC from MPD also without 'use_mmap' enabled, only noise played when playing 24bit music source.

So I suggest resurrection of 'use_mmap' option.

Here is some hw_params of each case:

* case #1: only noise played with all music source
RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 96000 (96000/1) # and all other rates
period_size: 2048
buffer_size: 8192

* case #2: no error with all music source
access: MMAP_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1) # and all other rates
period_size: 2048
buffer_size: 8192

On every cases, only difference between noise played and no error was 'RW_INTERLEAVED' and 'MMAP_INTERLEAVED'.

So I tried to downgrade my MPD from 0.20 to 0.19 and add 'use_mmap' enabled, then 'MMAP_INTERLEAVED' sent to DAC for all music sources and noise gone. no errors.

Please resurrect 'use_mmap' option.

Re: Required: 'use_mmap' resurrection for DLNA/UPnP play

Posted: August 28th, 2017, 7:08 am
by max
No. What you see is probably a driver bug, and that bug must be fixed. MPD is the wrong place to do this.

Re: Required: 'use_mmap' resurrection for DLNA/UPnP play

Posted: August 28th, 2017, 10:22 am
by pinkgold
max wrote:No. What you see is probably a driver bug, and that bug must be fixed. MPD is the wrong place to do this.
Thanks for fast reply :D

Then I should find the builder of /usr/lib/modules/4.4.84-1-ARCH/kernel/sound/usb/hiface/snd-usb-hiface.ko.gz

and ask him to correct the source.

Good to hear it's not MPD's fault.

Re: Required: 'use_mmap' resurrection for DLNA/UPnP play

Posted: August 28th, 2017, 11:35 am
by max
If you use such an old kernel version, there's no point in asking anybody to do something. First you should upgrade to the latest kernel to check if it's already fixed.