デバック中
昨日書いたように、AGM形式の新モード用にAGMDecoderも作ったのだが、それをインストールしてWMPで再生する分には問題なかったのだが、現行のAG-ムービーカッターで新モードのファイルを再生すると問題が出た。その問題は解決できたのだが別問題をデバック中だ。
« 2012年9月 | トップページ | 2012年11月 »
昨日書いたように、AGM形式の新モード用にAGMDecoderも作ったのだが、それをインストールしてWMPで再生する分には問題なかったのだが、現行のAG-ムービーカッターで新モードのファイルを再生すると問題が出た。その問題は解決できたのだが別問題をデバック中だ。
次バージョンのAG-ムービーカッターでは、現行のYV12/RGB/DCTモードに高圧縮オプション、さらには、DCT+モードとその高圧縮モードも追加されるのだが、これらのモードは現行のAGMDecoderでは扱えない。このため、βリリース時には、AGMDecoderも同時に提供する。
今日は次バージョンのAG-ムービーカッターのβリリースに向けた仕上げをしていたのだが、PC WatchにWindows8の記事が載っていたので、もう一日、Windows8の話題にしてみる事にした。Windows8搭載PCは最初の3日間では7の時の1/3しか売れなかったらしい。
Windows8の一般発売が開始されたのだが、現時点でのネットの評判を見ていると、日本マイクロソフト社長のコメントは強気なのだが、ネガティブな意見も多いようだ。しかし、今後、半年は、TVのCMを続けるようなので、その内、世評も変わる事になるかもしれない。
次バージョンのAG-ムービーカッター開発も一段落ついた感じなので、今日は時事ネタにするのだが、やはりWindows8への注目度は高いようで、普段は週末には大幅に減るこのブログへのアクセスも増えている。なので、今日は過去のWindows8関連記事を載せてみた。
昨日書いたように、次バージョンのAG-ムービーカッターでは64Bit版も提供するつもりだったのだが、DirectXとDirectShowのヘッダに互換性が無くてビルド出来なかった。なので、コードを変更してヘッダの混在を無くした所、64Bit版もビルド出来た。64Bit版が2割程度高速だ。
今日は、次バージョンのAG-ムービーカッターからMMX命令を排除したので、これで64Bit版としてビルドできるか、と、思ってビルドしてみたのだが、Mirror-DTCの64Bit版をビルドできている2007年2月版のDirectX SDKでAG-ムービーカッターはビルドできなかった。
今日は、昨日書いたように、次バージョンのAG-ムービーカッターにあるYV12/RGBモードの性能を上げていたのだが、これらのモードは単純なので、あまり身が入らなかった。なので、コード整理なんかも行いつつの作業になったのだが、残ったMMXルーチンは僅かになった。
今日はAGM形式の性能向上施策として、手を付けていなかったハフマン符号の生成部を軽量化した。ハフマン符号の生成は、普通にハフマン木を作成し、それを使って行っているのだが、ハフマン木の作成ルーチンが重かったので、この部分のコードを軽くした。
昨日は、次はAndroid版、と書いたのだが、Android版の開発作業は、多分、来週からになる。今週は、Windows版についてもUbuntu版並の説明ページを作ってβリリースしておく事になる筈なのだが、エンコード性能はまだ上がっているので、もう少し改良を続けるかもしれない。
AG-ムービーカッターの次バージョンも大体は格好がついたのだが、正式リリースするためには、今回追加した高圧縮モードとDCT+モードへの対応をAmuseGraphicsの他ソフトに適用しなければならない。そっちを急いでも良いのだが、次はAndroid版プレイヤーを作ってみる。
次バージョンのAG-ムービーカッターのエンコード性能改善用のマルチスレッド化も大体は終わったので、その他の改良を試しているのだが、速くなった、と、思っても何回か性能測定していると、そうでもなかった、というケースも出ている。マルチスレッド性能は安定しないからだ。
今日は次バージョンのAG-ムービーカッターの通常エンコード性能をマルチスレッド化して上げていたのだが、それなりに速くなる処理もあれば、そうでもない処理もあった。それでも、1.5倍程度は速くなったのだが、分割並列エンコードでは、もっと速く処理は終わる。
今日は次バージョンのAG-ムービーカッターのエンコード性能を上げていた。まずは、基本になるDCTモードでのエンコード性能を上げてみたのだが、その結果、テスト動画で、元々は3分かかっていたエンコードが1分50秒で終わるようになった。やはり、メモリアクセスが要だ。
少し遅れ気味なのだが、何とか仕様も確定したので、今日から次バージョンのAG-ムービーカッターのエンコード性能の最適化を始めた。基本的には、シングルスレッド動作になっている部分をマルチスレッド化して行くのだが、コーディングレベルでの性能も上げている。
次バージョンのAG-ムービーカッターには分割並列エンコード機能と高圧縮オプションとDCT+モードが追加されるのだが、基本的には、これらはシェアウェア版専用の機能にする予定だ。ただ、フリー版に何も追加されないのも寂しいので、どうしようかと思っている。
今日は次バージョンのAG-ムービーカッターの性能を最適化していたのだが、次バージョンからDCTモードでもハフマン符号化を行う事にしたため、ハフマン符号化に伴う容量的なオーバーヘッドが気になった。このため、処理ルーチンを改良して、オーバーヘッドを減らした。
ここの所、AGM形式の改良を行ってきたのだが、正式リリースのためには、この改良をAmuseGraphicsの全ソフトに適用しなければならない。それ以前にAndroid版のAGMプレイヤーも作りたいので、現状のAG-ムービーカッターは、βリリースする事になる筈だ。
次バージョンのAG-ムービーカッターにはDCT+モードが追加されるのだが、このモードには動き補償機能が入っている。動き補償によって差分フレームの圧縮効率は大体は上がるのだが、良い差分対象が無いとそうでもない。なので、差分を使わない選択肢も追加した。
次バージョンのAG-ムービーカッターに搭載する新DCTモードは、動画視聴用としては、そこそこの画質を確保しつつ、MPEG1並の圧縮率が得られるようになったのだが、この際なので、地道な改良も行って圧縮率を更に少し向上させている。まあ、1,2割程度なのだが。
次バージョンのAG-ムービーカッターには現行のRGB/YV12/DCTモードに対しては高圧縮オプションが追加され、新たにDCT+モードも追加される。手元のバイナリでは全モードが動作するようになっているので、今日は全モードのエンコード結果を比較しつつチェックした。
次バージョンに追加する新DCTモードの調整も大体は固まったのだが、結局、エンコード後のDCT変換結果を逆変換した画像とオリジナル画像との比較を行って量子化の程度を調整する品質チェックも入れた。修正するのは極端に誤差が大きい場面だけなのだが。
今日も次バージョンのAG-ムービーカッターに実装する新DCTモード絡みのコーディングを行っていたのだが、品質値50未満に設定しても、それなりに使えるようにパラメータを調整した。なので、新DCTモードでは、MPEG1以上の圧縮率の設定もそれなりに実用になる。
今日は、次バージョンのAG-ムービーカッターに搭載する新DCTモードの微調整を続けていたのだが、画質を上げるとエンコード時間が増えて圧縮率は下がる。当然の事なのだが、この、画質、というのは数値化が難しいので、敢えて拘らない、という割り切りも必要だろう。
今日は次バージョンのAG-ムービーカッターに搭載する新DCTモードの微調整をしていた。何を微調整していたのか、というと、量子化テーブルの値なのだが、テーブル値を変更すると微妙に画質と圧縮率が変わるのだが、大勢には影響無い感じだ。
今週は、DCTモードの差分方式を変更した新方式を試していたのだが、この新方式は現行のDCTモードと特性が色々と異なるため、あまりゴチャゴチャさせたくはないのだが、別モードにする事にした。なので、AGM形式のモードはRGB/YV12/DCT/DCT+になる。
今日は次バージョンに実装する動き補償付き視聴用DCTモードの性能を上げていたのだが、動き補償で必要になる差分の絶対値の足し算を、そのためにあるうようなSSE2命令で計算すると、少し重い、程度になった。ちょとした変更で画質も大幅改善したので十分使えそうだ。
昨日書いていたように、今日はAG-ムービーカッターに実装してみた動き補償について確認していたのだが、数値的な圧縮率は1,2割程度しか向上しないものの、入れると見た目の画質が上がるので、実使用上は圧縮率を上げられる。なので、正式に入れる事にした。
今日は、開発中のAG-ムービーカッターに動き補償の機能を実装してみた。テスト的な実装なので、性能は、テストするのも大変、というくらい遅いのだが、どの程度の圧縮効果があるのかは判る筈なので、色々とテストしてみた所、3割も向上すれば御の字な感じだ。
今日は、DCTモードの差分方式を変更して動作確認したのだが、変更後には現行版とノイズの出方が変わった。見え方としては品質値を下げてもブロックノイズが気にならなくなったので、今までブロックノイズが気になって下げられなかった品質を下げて使えるようになった。
次バージョンのシェアウェア版AG-ムービーカッターでは高圧縮モードを追加した関係で、新しいFOURCCを使う事になったため、新モードでは、互換性を気にしなくても良くなった。なので、より圧縮率を上げる方式を実験中なのだが、現在のバランスがベストかもしれない。