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