« ソースコードの構成を変更したら | トップページ | 音の出し方が違う… »

2014年3月18日 (火)

効率的なバッファリングはどうすればいい?

さて、PCMデータのバッファリングが必要だろうなぁという推測はたてたのですが、解決策は考え中でした。

"アルゴリズム データ"とか"アルゴリズム データ構造"で検索すればたくさんの本が引っかかります。
古典的バイブルから最近のJava, C++, C#など具体的な本までよりどりみどりです。

いろいろ勉強したい時は一冊良書を購入して欲しいですが、今はバッファリングに限定して調べたいので…

"バッファリング 高速化 アルゴリズム"でgoogleさんにお伺いを立てます。

ちゃんとまとめている方がいらっしゃいますね、すばらしい。C#でのサンプルのようです。

http://ufcpp.net/studY/algorithm/index.html

バッファリングに関しては以下です。

http://ufcpp.net/study/algorithm/col_circular.html

某知恵袋に質問する人もいますね。サンプルソースも作ってくれる方がいるようです。#今度何かあったら質問しよう。

http://okwave.jp/qa/q5448508.html

リングバッファ(ring buffer)、循環バッファ(circular buffer)と呼ばれる手法が一般的だそうです。

自分で実装するのも手ですが、すでにあるBoostというクラスライブラリを使ったりするのも手ですね。C++にもう取り込まれているのでしょうか?最近疎いので分かりません。

boost: https://sites.google.com/site/boostjp/tips/circular_buffer

とりあえずアルゴリズムが決まれば、あとは実装するだけなのですが、今日はこのあたりでやめときます。
#今日は疲れました。

(追記:2015/11/02)

Qt Brynhildrで実装しているバッファはオーソドックスなリングバッファです。C++で書いたシンプルなもので、かもなく不可もなくという感じです。(sounbuffer.cpp)

« ソースコードの構成を変更したら | トップページ | 音の出し方が違う… »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/2011805/55422081

この記事へのトラックバック一覧です: 効率的なバッファリングはどうすればいい?:

« ソースコードの構成を変更したら | トップページ | 音の出し方が違う… »