2014年12月3日水曜日

lightMPD 設定備忘録

拡張オーディオフォーマット "mpd.conf"


アップサンプルの指定形式

「XnLm」の形式で指定。

X,Lは拡張オーディオフォーマットであることを示す識別子。
先頭文字がXの時拡張オーディオフォーマットと見なす。
  • n: 入力信号のサンプリング周波数をn倍にアップサンプリング。
  • m: アップサンプリング後の周波数の最大値。44.1 * m , 48.0 * m 。

1.  "X2L2"
入力サンプリング周波数アップサンプリング後の周波数
44.1K  88.2K 
48.0K   96.0K 
88.2K  88.2K 
96.0K  96.0K 
176.4K  88.2K 
192.0K  96.0K 

2.  "X2L4"
入力サンプリング周波数アップサンプリング後の周波数
44.1K  88.2K 
48.0K  96.0K 
88.2K 176.4K 
96.0K 192.0K 
176.4K 176.4K 
192.0K 192.0K 

3.  "X4L4"
入力サンプリング周波数アップサンプリング後の周波数
44.1K  176.4K 
48.0K  192.0K 
88.2K 176.4K 
96.0K 192.0K 
176.4K 176.4K 
192.0K 192.0K 

mpd.confの記述例    =    audio_output_format "X2L2:24:*"

注意
拡張オーディオフォーマットを使う場合はaudio_outputのformat は指定しない。
※ DSD 信号はフォーマット変換されない。

database plugin "mpd.conf"


database {
plugin           "simple"
path             "/var/lib/mpd/tag_cache"
compress     "no"
}

0.19.xではcompress を"yes"にするとtag_cacheがgzipで圧縮される。
0.18.xではcompressは無効。

cpuaffinity と isolcpus の組み合わせ


(lightmpd.conf)
    [cpuaffinity]
        #  0   notmal
        #  1   cpu1:  usb irq handler
        #  2   cpu1:  usb irq handler,mpd's output thread
        type=*

(menu.lst)
kernel        /boot/bzImage-64 root=/dev/ram0 ro console=ttyS0,115200n8 ramdisk_size=65536 rootfstype=romfs clocksource=hpet rootdelay=5 isolcpus=*


typeisolcpus動作
01すべてのプログラムはCPU0で動作する、CPU1は2,3の移動不可のスレッド(kthreadd等)が動作する
11USBの割り込みハンドラーはCPU1で、それ以外の動作はtype=0,isolcpus=1と同じ
21USBの割り込みハンドラー、MPDのoutputスレッドはCPU1で動作する、それ以外の動作はtype=0,isolcpus=1と同じ
0無しカーネルのスケジューラがCPU0,CPU1にスケジューリングする(通常動作)
1無しUSBの割り込みハンドラーはCPU1で動作する、それ以外はtype=0,isolcpus無しと同じ
2無しUSBの割り込みハンドラー、MPDのoutputスレッドはCPU1で動作する、それ以外はtype=0,isolcpus無しと同じ


samplerate_converterの変換アルゴリズム指定 "mpd.conf"


samplerate_converter            "Linear Interpolator"

1) Best Sinc Interpolator
2) Medium Sinc Interpolator
3) Fastest Sinc Interpolator
4) ZOH Interpolator
5) Linear Interpolator
6) internal

番号が小さい程高精度になるが、CPUパワーが必要。

mpd-0.19.xrtでは sox ライブラリも使える。

1) "soxr very high"
2) "soxr"
3) "soxr medium"
4) "soxr low"

sysctrl.conf


DEFAULT
vm.swappiness = 60                 #多分意味なし
kernel.sched_latency_ns = 6000000
kernel.sched_rt_runtime_us = 950000
kernel.sched_rt_period_us = 1000000

WARM
vm.swappiness = 0
kernel.sched_latency_ns = 1000000
kernel.sched_rt_runtime_us = 158333
kernel.sched_rt_period_us = 166666

balance and transparency
vm.swappiness = 0
kernel.sched_latency_ns = 500000
kernel.sched_rt_runtime_us = 118749
kernel.sched_rt_period_us = 124999

0 件のコメント:

コメントを投稿