2012-01-13 6 views
0

SDLを初めて使用しました。 私はSDLを使用してメディアプレーヤーを開発していますが、音声コールバック関数が時間内に呼び出されず、オーディオがちょっとしたものになるという問題に直面しました。SDL - オーディオコールバック関数が時々呼び出されない場合があります。

私は、オーディオデバイスを開くために、コードのように一部を使用します。

wanted_spec.xxx = xxx; 
wanted_spec.callback = audio_callback; //audio_callback is my audio callback function 
SDL_OpenAudio(&wanted_spec, &spec); 

私のOSは、Windows XPです。

あなたはそれについて何か知っていますか?誰かが0レイテンシでコールバック関数にデータフィードを同期させる方法を提案することができます。

私の問題は

(デザインは、私はPCMサンプルを取得することになる。このようなものです)。代わりにSDL_LoadWAVを通じて全体のwavファイルを提供するので、私はPCMサンプル(おそらく1024サンプル)を通過したいです。しかし問題があり、コールバック関数時間内に呼び出されていないか、呼び出し音がふさわしくない原因となります。コールバック関数にデータを渡すことができません。

渡すデータ(サンプル)をコールバック関数に同期させる方法や、データがサンプルに渡されるアプリケーションを提供する方法をお勧めしますか?

+1

コールバックではどうしますか?あなたが投稿したのはセットアップコードの一部だけです。何が間違っているのか分かりません。 –

+1

バッファはどれくらいの大きさですか。つまり、SDLを期限内にサービスを提供するためにコールバックする必要がある頻度はどれくらいですか? – unwind

答えて

0

質問に完全に回答するには、実際の値が必要です。

あなたの試みたバッファサイズは?

また、SDLが必要なものを提供しないのが一般的であることに気付くので、実際の仕様バッファサイズが何であるかを確認してください。

私はバイナリmingw32ポートをSDLのウィンドウで使用していますが、私の要求にかかわらず1秒未満のバッファは使用できません。

+0

こんにちは、 私はSDLを初めて使いました。 適切なバッファサイズを教えてください。 wavファイル全体を渡す代わりに、1024個のPCMサンプルを一度にコールバック関数に渡したいと思います。 ThnX – user1147663

+0

これは妥当なバッファサイズです。 – gravitron

関連する問題