効率的なバッファリングはどうすればいい?
さて、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)
« ソースコードの構成を変更したら | トップページ | 音の出し方が違う… »
コメント