スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« デバック中 | トップページ | 配布パッケージを作り始めた »

ほぼ問題は無くなった

昨日書いていた問題は解決に苦労した割には単純な原因だった。なので、修正も簡単に行えたので、今日は手元にあるバイナリをCore2DuoでXPを動かしているMacBook(Late 2009)と、Celeron743でWindows7を動かしているdynabookMX/33でも動作確認してみた。

真面目に書くと長い話になるのだが、昨日の問題の直接の原因は、AGMDecoderのデコードルーチンがDirectShow側が用意したソースデータを書き換えていたのが原因だった。

上記だけを見ると、ソースデータを書き換えていたのだから、正常なデコード結果が得られなかったのも当然、と、思うかもしれないのだが、書き換えていたのは、ソースデータの中にある制御用フラグエリアで、書き換え内容は正しいモノだった。

なので、上記と同じルーチンを使っているAG-ムービーカッターではデコードは正しく行えていた訳なのだが、DirectShowの場合、同じ位置のデータを続けてデコードする場合には、ソースデータをそのまま使いまわしているようで、そのような場合には、上記の書き換え後のデータがデコード用のソースデータとして渡されてしまっていた訳だ。

上記では、書き換え内容は正しい、と、書いているのだから、書き換え後のデータを渡されても問題は無かろう、と、思う人もいるかもしれないのだが、データをワザワザ書き変えるルーチンがある、という事は、データは書き換え前の形でデコードルーチンに渡される必要がある訳で、書き換え後のデータを渡されてしまうと、誤動作してしまうのだ。

つまり、今回の開発ではAGM形式に動作モードを追加した関係で、データ内に色々と制御フラグを追加したのだが、従来ルーチンとの互換性の絡みから、その制御フラグ領域は参照後には、従来ルーチンで処理可能な形式に書き換えておく必要があったのだが、上記の通りなので、制御フラグ領域については、ソースデータを直接参照するのではなく、そのコピーを参照するように処理ルーチンを変更した。

と、いう事で、AGMDecoderについても問題は無くなったので、冒頭に書いた通り、開発マシン以外の環境でも動作確認を始めたのだが、当然のように、動作には問題はなかった。

作者的に試してみたかったのは性能で、2コアのCore2Duoや1コアのCeleron743ではどの程度のエンコード性能が出るのか、というのを見てみたかった訳だ。

結論だけ書いておくと、Core2DuoのMacBookでも、エンコード性能は最も重いDCT+の高圧縮モードで、WMVの約4倍は高速だった。Core2Duoの場合、分割並列エンコードを使うまでもなく、通常エンコードで2コアをほぼ使い切るため、上記の数字は通常エンコード時の性能だ。

エンコード性能はソースによっても変わってくるのだが、上記は約50分の352x240のMPG1動画からのエンコードで、WMVでは約30分必要だったエンコード時間が、DCT+の高圧縮モードでは7分しかかからなかった。

と、いう事で、Core2DuoのXPでも、一応、目標としていたWMVの4倍程度のエンコード速度は出せるようだ。圧縮率は、DCT+の出力ファイルサイズが510MB、WMVが470MBだったので若干WMVが高いのだが、似たようなモノかもしれない。画質的には、WMVの方が良いのかもしれないのだが、作者的には、普通に見ている分には、両者共、別段問題は無いレベルだ。

ちなみに、Corei7の開発マシンで64Bit版のAG-ムービーカッターを使って分割並列エンコードを行うと、上記と同じファイルのエンコードはDCT+の高圧縮モードでも70秒で終わる。

と、いう事で、Corei7というのは、やっぱり高性能だなあ、と、思った今日この頃なのだが、MacBookよりも遅いdynabookMX/33でも、機能的にはエンコードは可能だった。

= この記事に関連する公開中ソフト =

AmuseGraphics

AmuseGraphics

(2013/12/07追加)

« デバック中 | トップページ | 配布パッケージを作り始めた »

トラックバック

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

この記事へのトラックバック一覧です: ほぼ問題は無くなった:

« デバック中 | トップページ | 配布パッケージを作り始めた »

2018年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google