Class CriAtomExPlayer.FilterCbFunc
波形フィルターコールバック関数
Inheritance
Implements
Inherited Members
Namespace: CriWare
Assembly: CriWare.CriAtom.dll
Syntax
public class CriAtomExPlayer.FilterCbFunc : NativeCallbackBase<CriAtomExPlayer.FilterCbFunc.Arg>, ICallback<CriAtomExPlayer.FilterCbFunc.Arg>
Remarks
説明:
説明: デコード結果の PCM データを受け取るコールバック関数です。 コールバック関数の登録には SetFilterCallback(delegate* unmanaged[Cdecl]<IntPtr, uint, PcmFormat, int, int, IntPtr*, void>, IntPtr) 関数を使用します。 コールバック関数を登録すると、ボイスが音声データをデコードする度に、 コールバック関数が実行されるようになります。 フィルターコールバック関数には、 PCM データのフォーマットやチャンネル数、 参照可能なサンプル数、 PCM データを格納した領域のアドレスが返されます。 コールバック内では PCM データの値を直接参照可能になるので、 再生中の音声の振幅をチェックするといった用途に利用可能です。 また、コールバック関数内で PCM データを加工すると、再生音に反映されるため、 PCM データに対してユーザ独自のエフェクトをかけることも可能です。 (ただし、タイムストレッチ処理のようなデータ量が増減する加工を行うことはできません。)
備考: PCM データはチャンネル単位で分離されています。 (インターリーブされていません。) 第 6 引数( data 配列)には、各チャンネルの PCM データ配列の先頭アドレスが格納されています。 (二次元配列の先頭アドレスではなく、チャンネルごとの PCM データ配列の先頭アドレスを格納した 一次元のポインタ配列です。) プラットフォームによって、 PCM データのフォーマットは異なります。 実行環境のデータフォーマットについては、第 3 引数( format )で判別可能です。 PCM データのフォーマットが 16 bit 整数型の場合、 format は Sint16 となり、 PCM データのフォーマットが 32 bit 浮動小数点数型の場合、 format は Float32 となります。 それぞれのケースで PCM データの値域は異なりますのでご注意ください。 - Sint16 時は -32768 ~ +32767 - Float32 時は -1.0f ~ +1.0f (デコード時点ではクリッピングが行われていないため、 Float32 時は上記範囲をわずかに超えた値が出る可能性があります。)
注意: 本コールバック関数内で、AtomライブラリのAPIを実行しないでください。 コールバック関数はAtomライブラリ内のサーバー処理から実行されます。 そのため、サーバー処理への割り込みを考慮しないAPIを実行した場合、 エラーが発生したり、デッドロックが発生する可能性があります。 コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生する可能性があります。