スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« まずは単純移植から | トップページ | 既存モードも高性能化 »

微妙に違うので

今は、Mirror-DTCの次バージョンを開発中なのだが、今回、AGM-DCT+相当のエンコーダーを追加する。つまり、現行版にはAGM-DCT+相当のエンコーダーは実装されていないので、AmuseGraphics系ソフトから移植中なのだが、内部構造が微妙に違うので苦労している。

内部構造が微妙に違うというのは、ソフト開発時の気分次第で実装形態が変わるから、という訳ではない。

それでは何故なのか、というと、AmuseGraphics系ソフトのエンコーダーでは、リアルタイム性については、然程、考慮する必要が無かったのに対し、Mirror-DTCのエンコーダーでは考慮する必要があったからだ。

しかしまあ、その考慮の結果、Mirror-DTCのエンコーダーはAmuseGraphics系のエンコーダーと比べてリアルタイム性に優れたモノになったのか、というと、それほどでもない、というのが実状なので、エンコーダーの構造の違いというのは、相互移植性を悪くしているだけ、という感じかもしれない。

と、いう事なので、今回、Mirror-DTCのエンコーダーについても、AGM-DCT+を含めた映像圧縮系のエンコーダーについては、AmuseGraphics系のソレを、極力、素直に移植しようとしているのだが、その為には、まずは、現行のAGM-DCT相当の映像圧縮についても、処理ルーチンを入れ替える必要がある訳だ。

で、今日は、そういう作業をしていたのだが、Mirror-DTCの映像圧縮は、AmuseGraphics系のAGM-DCT相当なのだが、これはあくまでも相当であって、エンコード出力の内容は完全には一致しない。

何故、完全には一致しないのか、というと、AmuseGraphics系のエンコーダーの場合、普通の動画をエンコードする事を想定しているのだが、Mirror-DTCの場合、PCのデスクトップ映像をエンコードする事を想定しているからだ。

つまり、Mirror-DTCのエンコーダーでは、画面変化が全くない領域が、それなりの割合を占める、という事を想定しているので、差分圧縮を強化してある訳だ。

もっとも、上記が単純な強化であれば、その強化分をAmuseGraphics系のエンコーダーにも反映させれば良いだけの事なのだが、実際には、画面変化が全くない領域が全然ない場合には、Mirror-DTCのエンコーダーの圧縮率はAmuseGraphics系のソレよりも劣る事になる。

例えば、Mirror-DTCのエンコーダーの符号化処理では、ランレングス圧縮のコード体系が微妙に変わっていて、AmuseGraphics系のエンコーダーよりも、より長い同一コードをより短いコードで出力可能なのだが、より短い同一コードの場合、微妙に出力コードは長くなる。

この辺については、コード全体の状況を見てコード体系を変えれば、より、圧縮率は向上できるのだが、そういう事をしていると、普通は処理時間が余計かかるし、それを嫌ってマルチスレッド動作で複数コードを同時生成させたりすると、CPU使用率が高くなる。

で、Mirror-DTCのエンコーダーというのは、AmuseGraphics系のエンコーダーとは違って、処理の遅延時間は増やせないし、CPU使用率も上げる訳には行かないので、上記の様な想定に基づいたフィードフォワード制御みたいな格好にせざるを得ない訳だ。

しかしまあ、ストリーミングモード用に追加するAGM-DCT+については、全画面動画の視聴時くらいにしか、実質的には動作しない筈だし、従来互換性についても考慮する必要がないので、これについては、AmuseGraphics系エンコーダーをそのまま素直に移植するつもりではある。

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

Mirror-DTC

Mirror-DTC

(2016/05/04追記)

« まずは単純移植から | トップページ | 既存モードも高性能化 »

トラックバック

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

この記事へのトラックバック一覧です: 微妙に違うので:

« まずは単純移植から | トップページ | 既存モードも高性能化 »

2017年8月
    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 のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google