## SSRC

`SSRC` (int samplerate, bool "fast")

`SSRC` （Shibata Sample Rate Converter）は、リサンプラです。音声は、つねに浮動小数点数に変換されます。このフィルタは、`ResampleAudio` よりも高い音声品質をもたらします。
このフィルタは、利用可能な最高のリサンプリング品質を提供する、Naoki Shibata 氏による SSRC を使用しています。

44.1kHz と 48kHz というサンプリング周波数が広く使用されていますが、これら 2 つの周波数の比は 147:160 であり、これは小さな数字ではありません。それゆえ、音声品質の劣化を伴わないサンプリング周波数変換には非常に多くの命令を含むフィルタが必要となり、品質と速度の両方を実現するのは困難です。しかし、このプログラム（SSRC）は、2 つの異なる種類のフィルタをうまく組み合わせることによって、比較的高速かつ高品質な変換を実現しました。

パラメータ:

samplerate | サンプリング周波数は、整数でなければなりません。
fast | このオプションを true にすると、わずかな品質の低下で、より高速な処理を可能にします。大きなサンプリング周波数変換（2 倍より大きい）を行う場合はこれを無効（false）にしてください。デフォルト: true

SSRC は、ソースクリップと出力クリップとのサンプリング周波数の任意の比に対して機能しません。次の比は許容されます（SSRC.c を参照）*1:

    sfrq = ソースクリップのサンプリング周波数
    dfrq = 出力クリップのサンプリング周波数
    frqgcd = gcd(sfrq,dfrq)
    fs1 = dfrq * sfrq / frqgcd
    次の条件にあてはまればリサンプリングが可能: (fs1/dfrq == 1) または (fs1/dfrq % 2 == 0) または (fs1/dfrq % 3 == 0)

    リサンプリングが可能な例:
    sfrq = 44.1 kHz
    dfrq = 48 kHz
    frqgcd = gcd(44100,4800) = 300
    fs1 / dfrq = sfrq / frqgcd = sfrq / gcd(sfrq,dfrq) = 44100/300 = 147
    147 / 3 = 49 = 整数、ゆえに 147%3=0

ソースクリップのサンプリング周波数は、次のようにして知ることができます

    AviSource(...)
    Subtitle(string(c.AssumeFPS(23.976,sync_audio=true).AudioRate))

使用例:

    # 44,1 kHz にダウンサンプリング:
    SSRC(44100)

更新履歴:

v2.54 | 初版

SSRC の一部の著作権に関して: Copyright (c) 2001-2003, Peter Pawlowski. All rights reserved.

`原文 Date: 2008/06/26 21:29:50`
`日本語訳 $Date: 2008/08/13 02:48:39 $`

- 訳者註:
  - *1 以下の例で、gcd(A, B) は A と B の最大公約数を求める式です。