portaudio コールバック関数の変数framesperbufferとは何か教えてもらえますか? 反復ごとに 64 バイトのデータで PA_WriteStream() を介してオーディオ ストリームを再生したい場合、 framesperbufferにどのような値を入力する必要がありますか?
また、lsbsndfile
ライブラリでは、wave ファイルを読み込む関数は、frameという名前の変数が提供されることを期待しています。すなわち
samples=sf_readf_float(file,fptr,frames);
私がフレーム= 256を置くと、常に64個のサンプルがfptrに返され、残りはガベージですが、読み取り関数からの戻り値は256です。次のコードで確認しました
memcpy(array,fptr,samples); //samples returned are 256 always but first 64 contain data
現在、配列 [0] から配列 [63] には値が含まれ、配列 [64] から配列 [255] には、ファイル読み取りのすべての反復で null 値が含まれています。ここで、portaudio オーディオ再生関数に読み込まれたデータを書き込む必要があります。次に、framesperbufferを埋める必要があります。
また、場合によっては、データを処理する必要があり、サンプルが 32 に減少します (2 つのサンプルを消費して 1 つの出力サンプルを形成する場合)。その場合、framesperbuffer変数にどの値を入力する必要がありますか?