UPD パケットからストリームを開くにはどうすればよいですか?
質問
PortAudioライブラリを使用してオーディオデータを再生したいと考えています。この音声データは UDP パケットから取得されます。
ストリームを開くための Pa_OpenDefaultStream() (および非常に似た Pa_OpenStream()) 関数があることがわかりました。
PaStream *stream;
PaError err;
/* Open an audio I/O stream. */
err = Pa_OpenDefaultStream( &stream,
0, /* no input channels */
2, /* stereo output */
paFloat32, /* 32 bit floating point output */
SAMPLE_RATE,
256, /* frames per buffer, i.e. the number
of sample frames that PortAudio will
request from the callback. Many apps
may want to use
paFramesPerBufferUnspecified, which
tells PortAudio to pick the best,
possibly changing, buffer size.*/
patestCallback, /* this is your callback function */
&data ); /*This is a pointer that will be passed to
your callback*/
パケットを再生するにはこれを使用する必要があると思いますが、使い方がわかりません。
- 最初のパラメータは何ですか?
- なぜコールバック関数を定義する必要があるのですか?
PortAudio ドキュメントへのリンクは次のとおりです。 http://www.portaudio.com/trac/
助けていただければ幸いです:)
ありがとう。
解決
最初のパラメータは、タイプPaStreamの入力/出力ストリームへのポインタです。このストリームに書き込まれてから/オーディオデータが読み込まれます。
あなたはそれがあなたのPCから/オーディオを読み書きする必要があるときPortAudioライブラリが呼び出すことをコールバック関数を記述する必要があります。あなたが(例えばDSP)を行いたい任意の他のオーディオ処理もここで行われます。シンプルなコールバック関数は、I / Oをストリーミングするため、入力を出力にコピーするだけです。あなたの代わりにブロッキングAPIを使用して、コールバックを使用して問題がある場合は、理解しやすいかもしれません。
コンパイルおよび詳細については、例を実行します(例えばpatest_read_record.c)、theresのそこの情報がたくさん。
所属していません StackOverflow