touch diamondでA2DPの音質をあげる方法(その2)

bitpool値を上げた時に音飛びする原因は何かをもう少し追求してみた。
帯域だとばかり思っていたのだが、実際の所処理落ち(プロセッサ要因)らしい。
JOINT STEREO(一旦左右を合成してステレオ差分から情報を作る方式、MP3とかでもある)をOFFにしたところ、min60、max80でもなんとかなった。
音質的には満足。でもそもそもbitpoolってなんだろう。60とか80とか意味わからんしな……。

そういうわけでbitpoolの意味も少しだけ調べてみた。A2DPはコーデックまで規定していないが、SBCというコーデックの実装が最低条件となっていて、実際のところこれが使用されている。
デコード計算量が少ないことを重視した方式らしく、これがMP3などと比べてどのくらいの性能を持っているのか不明。
bitpoolをどれだけ使うとどのくらいのビットレートになるのかは、下リンクを見る限り、単純計算ではないらしい。

http://www.ietf.org/internet-drafts/draft-hoene-avt-rtp-sbc-02.txt

まあおおまかにいって44.1kHzで1bitpoolあたり6〜7kbpsのようだ。
少なくみつもって6だとして、80のセッティングだと

6*80=480kbps

程度になる。はて……まだまだいけるんですかね?と思い、bluetooth2.xの最大値付近に設定してみたところ全然ダメどす。
さっきの仕様をあらためて読むと512kbps超えちゃだめらしい。となるとすでにほぼ一杯一杯だったので、最終的に70-84程度に調整した。
別に60-80でもあまりかわらないけど。とりあえず限界もわかったので終了。

追記:
ブラインドテストサイト
http://www.soundexpert.info/coders320.jsp
によるとそれなりの高得点を叩きだしているので、クオリティは十分だと思われる。
mp3/192kbpsよりはずっと上だ。比較ファイルはCBR320kbps/JOINT STEREOで、自分のセッティングはVBR(360〜540kbps)/非JOINT STEREOなのでやや不利かもしれないが。
プレーヤー側をロスレスにすればもっと良くなりそう。そう思ってしまうのはオーオタの宿命か……。

さらに追記:
WMA Lossless試したら普通に再生できた。おおっ。有線並品質だっ。
音飛びしやすくなったので再調整が必要か。なんにしろこのヘッドホンからこれだけの音がでてくるだけで嬉しい。あとはしばらく様子見てもう少しおい込みかな。

      • -

で、30-70ぐらいまで下げたらほぼ音飛ばなくなった。これでもWMA300kbps/bitpool60-80より音はいい。高音がチラついていたのがなくなって心地良い音。つまりWMAにSBCの二重エンコーディングが音に相当悪影響を与えているということだな。てか最初のヒドさはなんだったんだ。最初からこのくらいいかないとオタ以外は音わるすぎ!と思って諦めると思うんだが。
いちいち奥が深いところにbluetoothの未完成っぷりを感じてしまう。

まとめ

  • なにはともあれadvanced configuration toolを投入する。あとはCPUパワーと音飛びとの戦い。
  • 元が圧縮音源だと、2重エンコーディングになるので妙なクセが乗る場合がある。SBC自体は悪くない。クセのないものを使うべし。
  • bitpoolをhighにして、さらにmin/maxを調整する。(自分は今30-70)
  • joint stereoは処理が重いので外したほうが音質を伸ばせる
  • bitpoolの上限は約80で、これで約500kbps。仕様上の制限は512/kbps