[最新] ■[前年|前月|前日|2016/07/21|翌日|翌月|翌年] ■表示[全て|@gorry5のみ|個別]
■グループ[Mention] ■その他[Twitter:@gorry5][日記] ■[twtlog 20100921a]

07/21 15:03 ある意味合ってるがある意味間違ってる/オーディオアプリ開発でありがちな4つの間違い URL:postd.cc (pibe)
07/21 15:06 「サウンドデバイスへオーディオデータを積むコールバックハンドラではファイル読み込みやメモリアロケーションなどの高コストな処理を行うべきでない」というのは常識だけど、それとスレッド処理を勘違いしてないかな、この記事は… (puno)
07/21 15:36 iOS/OSXだとAudioUnitが最下層のオーディオバッファ充填コールバック型ということになっていて、ここでのオーディオデータ生成に高コストな処理を入れてはいけない、という話。この記事で出てくるライブラリもこの構造になっている (kiha)
07/21 15:38 このコールバック部からでアクセスされる第2オーディオバッファに、外からスレッドで高コストな処理を使ってオーディオデータを注ぎ込む構造になっている…が、しかしなぜかこの記事では「オーディオのスレッドでは○○しない」という話になってしっており、食い違いが発生している…と (kire)
07/21 15:42 iOS/OSXだと、OpenALを使うと「オーディオバッファ充填コールバックはOpenALが受け持ち、第2オーディオバッファの監視と処理だけをOpenAL APIで書けばいい」ようになっているので、「○○してはいけない」系の話は考えなくてよくなる…ともいえる (kuka)
--------
07/21 15:55 第2オーディオバッファは、タイミングにシビアな第1オーディオバッファの要求を安定して受け止めるだけの余裕として、数倍の容量が必要になる。最低でも2倍、普通は4?8倍程度。第1バッファが64サンプルなら、第2バッファは256?512サンプル (keza)
--------
07/21 15:57 (@AoiMoe) @gorry5 「コールバックハンドラの実行コンテキスト=オーディオスレッド」という意味なんじゃないんですかねえ。 (koke)
07/21 16:00 この容量の大きさが「遅延量」になる。48kHzだと512サンプル≒10msec程度で、不自然さを感じさせないぎりぎりくらいの値。なおAndroidだと第1オーディオバッファが512サンプル以上の端末が昔は多く、これが「Androidがオーディオアプリを苦手としている理由」のひとつ (kore)
07/21 16:04 @AoiMoe 普通はサンプル通りに作ると「オーディオスレッドはコールバックを登録するスレッドから新たに作成」になっているはずなんですけどねぇ… (sase)
07/21 16:34 なお、この話をX68のPCM8に置き換えると「オーディオバッファコールバック=DMA転送終了割り込み」「第1オーディオバッファ=割り込みでDMA転送するPCMバッファ」「第2オーディオバッファ=次にDMAに設定するPCMバッファ」「第1バッファ量=96」「第2バッファ量=2倍」 (seho)
07/21 16:36 ただし「第1バッファと第2バッファは共用のリングバッファ」 (sego)

■グループ[Mention] ■その他[Twitter:@gorry5][日記] ■[twtlog 20100921a]
[最新] ■[前年|前月|前日|2016/07/21|翌日|翌月|翌年] ■表示[全て|@gorry5のみ|個別]