[vDSP,メモ] vDSP関数の使い方3

vDSP関数の使い方について忘れないようにメモってみます。

この記事は、vDSP関数の使い方2の続きです。

今回は、関数の引数について詳しくみてゆきます。

前回学習したvDSP_vaddの引数のうち__vDSP_stride1と__vDSP_stride2について1を指定しました。
このストライドと呼ばれる引数についてみていきましょう。
vDSP_vaddの引数をリファレンスで確認してみます。
void vDSP_vadd (
   const float __vDSP_input1[],
   vDSP_Stride __vDSP_stride1,
   const float __vDSP_input2[],
   vDSP_Stride __vDSP_stride2,
   float __vDSP_result[],
   vDSP_Stride __vDSP_strideResult,
   vDSP_Length __vDSP_size
);
よりストライド1の引数を2に変更して実行してみます。
float inVector1[8] = {1, 2, 3, 4, 5, 6, 7, 8};
float inVector2[8] = {1, 2, 3, 4, 5, 6, 7, 8};
float outVectorAdd[8];
vDSP_vadd(inVector1, 2, inVector2, 1, outVectorAdd, 1, 8);
結果は次のようになります。
vdsp-add.png
ストライドの引数は、配列を何個おきに処理するかの指定です。
今回は、2を指定したので配列が1つおきに処理されます。

図に表すと次のようになります。
vdsp3-zu1.png

第一引数の配列が1つおきに処理されている事がわかります。

どんな時に使えるか?
インタリーブドの音声データなどは、LRの信号が交互に一つの配列に配置されています。
ストライドをうまく利用する事により右側の音声だけ処理するといった事が可能になります。

注意点
ストライドの値を大きくすると、読み込む配列の大きさが が処理の回数を越えてしまう事があります。
そのような場合は、予期せぬ値が返る可能性があるので注意して使う必要があります。

次回に続きます。

参考サイト
vDSPを使う(加減乗除編) | なんてこったいブログ
vDSPについてのメモ - 2:仙台単身赴任生活:So-net blog