スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Ubuntu版の変更を開始 | トップページ | 今更なので・・・ »

統一性が無いのは困り者

昨日書いた様に、Ubuntu版AG-ムービーカッターの変更作業を開始しているのだが、変更の目的は、処理ルーチンが古くてエンコード性能が悪いので、良くする事だ。似たような処理ルーチンは他ソフトで使っているのでコピーして持って来れば良いのだが、候補が有りすぎる。

現行版のUbuntu版AG-ムービーカッターのエンコード性能がAGMConvよりも悪い一番の理由は、内部で持っているエンコーダーの画像入力形式がRGB32になっている、という事だ。

つまり、今時の動画の内部画像形式は、その殆どがYUV形式になっていて、AGM形式動画についても、AGM-RGB形式を除けば、内部の画像形式はYUV形式になっているので、デコーダーではYUV→RGB32形式の変換が必要になり、エンコーダーではRGB32→YUV形式の変換が必要になっている分、それらを省けているAGMConvよりも、処理が重くなっている訳だ。

それでは、何故、Ubuntu版AG-ムービーカッターでは、YUV⇄RGB32変換を行なっているのか、というと、YUV形式には、実は、色々な形式があるからだ。

つまり、エンコーダー入力をYUV形式にするとRGB変換が必要ではなくなる分、処理は軽くできるのだが、YUV形式には色々な形式があるので、エンコーダーは様々なYUV形式に対応させる必要が生じる。

と、いう事で、そんな事はやっていられないので、作者的には、AG-ムービーカッターの初版を開発するにあたっては、エンコーダー入力の画像形式はRGB32形式に統一した訳だ。

何故、RGB32形式だったのか、というと、YUV形式には色々な形式があるのだが、画質的には、全てRGB32形式よりも劣るからだ。

つまり、YUV形式をRGB32形式に変換する分には、本質的には、画質劣化は発生しないので、エンコーダーの入力形式を統一するにあたっては、RGB32形式を採用した訳なのだが、YUV形式とRGB形式は、結構、違うので、変換処理は重かった訳だ。

このため、Windows版AG-ムービーカッターでは、そのバージョンアップを続けている間に、徐々に、内部画像形式としてYUV形式を用いるコードを増やしてきた。

その結果、エンコード性能は向上してきたのだが、そういった方向性をより進めている、AGMConvでは、先週、不具合修正版をリリースしたのだが、結構な数の不具合が発生する様になった。

その理由は、前述の様に、YUV形式には色々な形式がある訳なので、処理性能を損ねずにYUV形式を使うためには、そのYUV形式に特化した処理ルーチンが必要になるからだ。

つまり、YUV⇄RGB変換を極力使わなくするために、新たに様々なYUV形式に対応させるための専用ルーチンを開発する必要が生じたので、処理コード数が増えた分、バグも増えた訳だ。

と、いう事で、Ubuntu版AG-ムービーカッターでも、エンコード性能を上げるためには、処理コードを増やす必要が生じるのだが、他OS版では、既に処理の高速化は行えている訳なので、Ubuntu版の場合には、追加する処理コードは既存ソフトから持ってこれる筈だ。

しかし、既存ソフトについても、開発時期がマチマチなので、処理コードは色々と異なる。

なので、今回追加する処理コードを何処からコピーしてくるのか、というのも、悩みどころになっている。

まあ、基本的には、最新のMac用AGMConv/AG-ムービーカッターから持って来ようとはしているのだが、これらのコードはObjective-C++で記述されているので、単純には持ってこれないのが辛い所だ。

« Ubuntu版の変更を開始 | トップページ | 今更なので・・・ »

トラックバック

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

この記事へのトラックバック一覧です: 統一性が無いのは困り者:

« Ubuntu版の変更を開始 | トップページ | 今更なので・・・ »

2017年12月
          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