processdata.cpp

説明を見る。
00001 #include "afw.h"
00002 
00003 /** \file processdata.cpp
00004  *  \brief オーディオコールバック関数
00005  *  \author アナログ・デバイセズ株式会社
00006  *  \version 1.0
00007  *  \date    2006.Sep.8
00008  *
00009  * このファイルは、オーディオ処理のコールバック関数を含む。
00010  */
00011 namespace afw {
00012 
00013     short osc()
00014     {
00015         static int y1 = 4277; // sin( 2*pi*1000 / 48000 ) * 32768
00016         static int y0 = 0;
00017         int result;
00018     
00019         result = (32478*y1>>14) - y0;
00020         y0 = y1;
00021         y1 = result;
00022         return result;
00023     
00024     }
00025 /** コールバック関数の処理化
00026 *
00027 * コールバック関数を呼ぶ前に初期化の必要がある場合は、この関数内部で行う。
00028 * @param count afw::processData() が呼び出されるとき、各バッファに格納されているオーディオデータの数
00029 */
00030     void initProcessData( int count )
00031     {
00032         // 必要に応じてここで processData用の初期化を行う
00033     }
00034     
00035 /** オーディオ・コールバック関数
00036    *
00037    * @param leftIn 左チャンネルの入力データバッファ
00038    * @param rightIn 右チャンネルの入力データバッファ
00039    * @param leftOut 左チャンネルの出力データバッファ
00040    * @param rightOut 右チャンネルの出力データバッファ
00041    * @param count 各バッファに格納されているオーディオデータの数
00042    *
00043    * この関数はDMAが受信バッファをいっぱいにするたびに割り込み経由で呼ばれる。
00044    * 引数として渡されるのは受信データを含む入力バッファのほか、送信データを
00045    * 格納するために使う出力バッファとデータ個数である。
00046    * ユーザーは関数内部で入力バッファのデータを加工して、出力バッファに送信すべき
00047    * データをおく。
00048    *
00049    * 配列はshortfract型である。この16bit固定小数点型はshortと同じ大きさを
00050    * 持つが、四則は固定小数点領域で定義されている。
00051    * 
00052    * for文は常に必要なので、改造する場合はfor文の内側だけを書き換える。引数
00053    * である配列の各要素は、オーディオのサンプルデータが順番に格納されたもの
00054    * である。したがって、これらを順番に処理することで、オーディオ処理を実装
00055    * できる。
00056    * 
00057    * 割り込みソースのクリアなどは、この関数の呼び出し側で行うので、関数内で
00058    * 処理する必要はない。
00059    */
00060     void processData(
00061                 const short leftIn[],   // Input Left Samples
00062                 const short rightIn[],  // Input Right Samples
00063                 short leftOut[],        // Output Left Samples
00064                 short rightOut[],       // Output Left Samples
00065                 int count
00066                 )
00067     {
00068     
00069         for ( int i=0; i<count; i++ ) {
00070             // ここで信号処理を行う
00071         }
00072     }
00073 } // namespace afw

AudioFrameWorkに対してMon Apr 9 17:15:14 2007に生成されました。  doxygen 1.5.1-p1