【WebM】VP8(VPx)総合スレ4【Google/On2】
06 3 月 aoTuV beta6 概説1
ttp://www2.atword.jp/aooa/ 今回は先日リリースしたaoTuV beta6の変更点などについて書きたいと思います。
大体の所は配布ページやエンコーダのドキュメント、ソースコードのドキュメントに書いていますが、そこには書いていない、若しくは省略している内容について少しご紹介します。
まず最初に、「異なるタイプの音が混在するケースでのビット割り当て」について。
これはlibvorbis由来のエンコーダにずっと存在してきた問題でした。問題は持続音と衝動音が同じ時間上に混在する場合に、持続音で問題が生じやすい、というものでした。
特にクリティカルなサンプルではかなり高いビットレートまで影響するケースがあり、Vorbisの弱点の一つでした。
今回の変更では、問題の起きるパターンを検出し、その部分にビットを大きく割り当てるようにしました。
ただ問題の改善と引き替えに、ビットレートはそれなりに大きくなります。ただしもちろん、該当するパターンを含まない場合はこの部分によるビットレート増加はありません。
次に、「特定パターンのプリ(ポスト)エコーを改善」について。
MDCT系コーデックではつきもののプリエコー・アーティファクトですが、Vorbisでも幾つかの苦手なパターンが存在していました。
過去のaoTuV でも色々と対策はしてきたのですが、まだ解決できていないパターンが存在しています。
今回はそのうちの幾つかのパターンについて追加対策をしました。該当するパターンでは大きな改善を見込めます。
これらの変更によって、ビットレートは増えるパターンと、稀に減るパターンがあります。
今回、最後に「Noise normalization 処理の見直し」について。
Vorbis特有の手法としてNoise normalizationというものがあります。これは主に低ビットレート時にオーディオエネルギーの損失によるリンギングアーティファクト(主に高域に生じやすい)を低減するためにあります。
これはlibvorbis1.0で導入されたのですが、高域をブーストさせる要因の一つでもありました。
以前にこの問題を改善するための変更をaoTuV beta5でも行ったのですが、今回はさらにそれを改善しました。
リンギング対策としてはまだ改良の余地有りですが、この手法を原因とする高域ブースト現象は、ほとんどなくなりました。
次回に続きます。
09 3 月 aoTuV beta6 概説2
ttp://www2.atword.jp/aooa/ 今回は前回投稿した内容の続きとなります。そちらのほうも合わせてご覧下さい。
前回の内容もそうでしたが、単純化しているとはいえ少しマニアニックな内容なので、興味のある方向けです。
「ステレオモード切替のしきい値計算を変更」について。
Vorbisはカップリングチャンネルという仕組みがあり、そこでチャンネル間の類似性を利用してデータ量を削減することができます。
実装としては現在の libvorbis由来のエンコーダでは2つのステレオモードを切り換えることで、聴覚上のダメージを最小限に抑えつつ、データ量を削減しています。
このステレオモードを選択するためのしきい値計算方法を今回変更しました。
これはaoTuV beta5で導入されたメソッドの置き換えとなります。
beta5の方法とは異なる考えによるものですが、以前の方法と比べて、より多くの問題パターンで有効です。
ただし、エンコードモードやエンコードするサンプルによっては少しビットを食うかも知れません。
「libvorbis1.3.2との統合」について。
今回の新バージョンは前回のリリース日からかなり間が開いてしまいました。
その間に本家「libvorbis」は、1.3.2へとバージョンアップしています。
それは主にバグフィックスと内部インターフェイスの追加などが中心で、エンコード結果に影響する変更は僅かです
(低ビットレートでは違いを比較的容易に聴くことができると思いますが、高ビットレートでは難しいでしょう)。
しかし、その中でも一際目立つ変更点もあり、それはマルチチャンネルへの対応が上げられます。
マルチチャンネルには過去のバージョンから形式上は対応していたものの、バグがあったりエンコードサイズが小さくならなかったり、実用度はあまり高くはありませんでした。
最新のバージョンでは5.1チャンネルカップリングに対応し、該当するソースでは大きくビットレートを削減することが出来るようになりました。また、問題のバグも修正されています。
ただ今回、この新しいバージョンの変更点をaoTuVにも適用するにあたってミスをしてしまい、この5.1チャンネルカップリングによるエンコードが正常に行われない問題が現在のaoTuVリリース版には存在します。
問題は手元のソースコードではほぼ修正済みですが、処理ステップが増えてしまい、2chステレオエンコード時のエンコード時間までもが少し増加してしまいました。
この部分について改善を試みてから修正版をリリースしたいと考えています。
次回は急遽リリースしたbeta 6.01/6.02について書く予定です。