pi@raspberrypi:~/libsamplerate-0.1.8/tests$ ./throughput_test CPU name : ARMv6-compatible processor rev 7 (v6l) Converter Duration Throughput ----------------------------------------------------------- ZOH Interpolator 3.01 1875298 Linear Interpolator 3.00 1686906 Fastest Sinc Interpolator 3.11 292064 Medium Sinc Interpolator 3.16 82126 Best Sinc Interpolator 7.13 9099 Duration is in seconds. Throughput is in samples/sec (more is better). pi@raspberrypi:~/libsamplerate/libsam/tests$ 以上の結果から、かりに96KHzステレオの音源をサンプル変換する時間を見積もると 実時間の処理に対して、 @Fastest Sinc Interpolator(97dB SNR, 80% BW) 96k*2ch/292064=0.65739倍 AMedium Sinc Interpolator (121dB SNR, 90% BW) 96k*2ch/82126=2.337倍 BBest Sinc Interpolator(145dB SNR, 96% BW) 96k*2ch/9099=21.10倍 かかることになる。 もしかしたら@ならば なんとか回るかもしれないが、精度が16BIT程度と今一。 FLOATに変換して計算するのでデータが16BITでも24BITでも計算時間は変わらないはず。 本文の下の方にPi2の測定結果あり。 pi@raspberrypi:~/libsamplerate-0.1.8/tests$ ./snr_bw_test Converter 3 : ZOH Interpolator Zero order hold interpolator, very fast, poor quality. Signal-to-Noise Ratio Test 0 : Pass Signal-to-Noise Ratio Test 1 : Pass Signal-to-Noise Ratio Test 2 : Pass Signal-to-Noise Ratio Test 3 : Pass Signal-to-Noise Ratio Test 4 : Pass Signal-to-Noise Ratio Test 5 : Pass Signal-to-Noise Ratio Test 6 : Pass Signal-to-Noise Ratio Test 7 : Pass Worst case Signal-to-Noise Ratio : 10.28 dB. Bandwith test not performed on this converter. Converter 4 : Linear Interpolator Linear interpolator, very fast, poor quality. Signal-to-Noise Ratio Test 0 : Pass Signal-to-Noise Ratio Test 1 : Pass Signal-to-Noise Ratio Test 2 : Pass Signal-to-Noise Ratio Test 3 : Pass Signal-to-Noise Ratio Test 4 : Pass Signal-to-Noise Ratio Test 5 : Pass Signal-to-Noise Ratio Test 6 : Pass Signal-to-Noise Ratio Test 7 : Pass Worst case Signal-to-Noise Ratio : 16.22 dB. Bandwith test not performed on this converter. Converter 2 : Fastest Sinc Interpolator Band limited sinc interpolation, fastest, 97dB SNR, 80% BW. Signal-to-Noise Ratio Test 0 : Pass Signal-to-Noise Ratio Test 1 : Pass Signal-to-Noise Ratio Test 2 : Pass Signal-to-Noise Ratio Test 3 : Pass Signal-to-Noise Ratio Test 4 : Pass Signal-to-Noise Ratio Test 5 : Pass Signal-to-Noise Ratio Test 6 : Pass Signal-to-Noise Ratio Test 7 : Pass Signal-to-Noise Ratio Test 8 : Pass Worst case Signal-to-Noise Ratio : 100.43 dB. Measured -3dB rolloff point : 80.23 %. Converter 1 : Medium Sinc Interpolator Band limited sinc interpolation, medium quality, 121dB SNR, 90% BW. Signal-to-Noise Ratio Test 0 : Pass Signal-to-Noise Ratio Test 1 : Pass Signal-to-Noise Ratio Test 2 : Pass Signal-to-Noise Ratio Test 3 : Pass Signal-to-Noise Ratio Test 4 : Pass Signal-to-Noise Ratio Test 5 : Pass Signal-to-Noise Ratio Test 6 : Pass Signal-to-Noise Ratio Test 7 : Pass Signal-to-Noise Ratio Test 8 : Pass Worst case Signal-to-Noise Ratio : 121.33 dB. Measured -3dB rolloff point : 90.55 %.  ちなみに、計算精度をdouble からfloatに変更すると、ここでエラー(精度不足の)が出る。 Converter 0 : Best Sinc Interpolator Band limited sinc interpolation, best quality, 145dB SNR, 96% BW. Signal-to-Noise Ratio Test 0 : Pass Signal-to-Noise Ratio Test 1 : Pass Signal-to-Noise Ratio Test 2 : Pass Signal-to-Noise Ratio Test 3 : Pass Signal-to-Noise Ratio Test 4 : Pass Signal-to-Noise Ratio Test 5 : Pass Signal-to-Noise Ratio Test 6 : Pass Signal-to-Noise Ratio Test 7 : Pass Signal-to-Noise Ratio Test 8 : Pass Worst case Signal-to-Noise Ratio : 145.68 dB. Measured -3dB rolloff point : 96.08 %. ==================================================================================== (2015年3月追加)Raspberry Pi 2を使った実験 CPUがARM11からARM7に変更になった、Pi2を使って処理速度を測定してみた。 @gccバージョンは4.6のままで測定。 pi@raspberrypi ~/libsamplerate-0.1.8/tests $ ./throughput_test CPU name : ARMv7 Processor rev 5 (v7l) Converter Duration Throughput ----------------------------------------------------------- ZOH Interpolator 3.01 4224809 Linear Interpolator 3.01 3793706 Fastest Sinc Interpolator 3.07 464938 Medium Sinc Interpolator 3.01 215548 Best Sinc Interpolator 5.61 23130 Duration is in seconds. Throughput is in samples/sec (more is better). 以上の結果から、かりに96KHzステレオの音源をサンプル変換する時間を見積もると 実時間の処理に対して、 @Fastest Sinc Interpolator(97dB SNR, 80% BW) 96k*2ch/464938=0.4129582倍 AMedium Sinc Interpolator (121dB SNR, 90% BW) 96k*2ch/215548=0.8907528倍 BBest Sinc Interpolator(145dB SNR, 96% BW) 96k*2ch/23130=8.30090791倍 かかることになる。 、 Agccバージョンを4.8にあげて、CFLAGSに"-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"を 追加したもの。 pi@raspberrypi ~/libsamplerate-0.1.8/tests $ ./throughput_test CPU name : ARMv7 Processor rev 5 (v7l) Converter Duration Throughput ----------------------------------------------------------- ZOH Interpolator 3.00 4260519 Linear Interpolator 3.01 3944592 Fastest Sinc Interpolator 3.02 580052 Medium Sinc Interpolator 3.06 254431 Best Sinc Interpolator 5.46 23765 Duration is in seconds. Throughput is in samples/sec (more is better). @Fastest Sinc Interpolator(97dB SNR, 80% BW) 96k*2ch/580052=0.33100480倍 AMedium Sinc Interpolator (121dB SNR, 90% BW) 96k*2ch/254431=0.75462502倍 BBest Sinc Interpolator(145dB SNR, 96% BW) 96k*2ch/23765=8.0791079倍 となり、少し早くなっている。 **************************************************************************** Raspberry Pi 2で ubuntuを動作させたもので実験。 Linux ubuntu 3.18.0-14-rpi2 #15-Ubuntu SMP PREEMPT Wed Feb 18 10:43:15 UTC 2015 armv7l armv7l armv7l GNU/Linux デフォルトの設定は gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1) --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard ubuntu@ubuntu:~/libsamplerate-0.1.8/tests$ ./throughput_test CPU name : ARMv7 Processor rev 5 (v7l) Converter Duration Throughput ----------------------------------------------------------- ZOH Interpolator 3.00 4086501 Linear Interpolator 3.02 3721422 Fastest Sinc Interpolator 3.03 449026 Medium Sinc Interpolator 3.11 208419 Best Sinc Interpolator 5.69 22789 Duration is in seconds. Throughput is in samples/sec (more is better). また、CFLAGSに"-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard"を追加したもの。 ubuntu@ubuntu:~/libsamplerate-0.1.8/tests$ ./throughput_test CPU name : ARMv7 Processor rev 5 (v7l) Converter Duration Throughput ----------------------------------------------------------- ZOH Interpolator 3.01 4242537 Linear Interpolator 3.01 3903409 Fastest Sinc Interpolator 3.11 563787 Medium Sinc Interpolator 3.24 240174 Best Sinc Interpolator 5.59 23211 Duration is in seconds. Throughput is in samples/sec (more is better). ubuntuでも CFLAGSに追加設定することで、速度改善がはかれる。 Raspbianとubuntuの間で、この実験においては速度に大きな差はない。