スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« まずは二つをリリース | トップページ | メモリリーク調査とか »

Ubuntu版も微修正

今は、macOS用ネイティブ版AGMPlayerの開発フェーズで、初版は完成済みなのだが、そのリリース前に関連既存ソフトの不具合修正版を出す。次はAGMConvのつもりだったのだが、Ubuntu版AG-ムービーカッターもあったので、こちらを先にする。

今回、macOS用ネイティブ版AGMPlayerの開発を通して、既存ソフトに影響する不具合を見つけて修正したのだが、その不具合というのは、主に二つだ。

その一つ目は、MP4エンコード時に実質フレームレートが低下してしまう不具合なのだが、この不具合は、macOSのAVFoundationに対する扱い方が根本原因になっているので、影響する既存ソフトはmacOS用に限られる。

しかし、二つ目の不具合である所のエンコード時に色が不正確になる問題は、一般動画を内部形式に変換する時に、そのパラメータの有効桁数が少ない事が原因なので、基本的には、どのOS用かに関わらず、一般動画↔︎AGM動画の変換を行う既存ソフトは、影響を受けている。

ただし、AmuseGraphics系ソフトで扱っている動画の内部形式は、実際の所としては、何種類もあるので、色問題が発生するのは、その中の一部の形式が使用される場合に限られる。

具体的には、内部形式としてRGB形式を利用している場合もあるのだが、この場合には、色問題は発生しない。

つまり、動画の映像をRGB形式に変換している場合には、前述の有効桁数は必要十分以上に大きくなっているので問題は発生しない訳だ。

にも関わらず、AmuseGraphics系ソフトでは、RGB形式とは別の内部形式も使っているのだが、その理由は、処理性能にある。

つまり、AGM形式動画についても、AGM-RGBを除き、画像はYUV形式で扱っているので、AGM形式同士は当然として、一般動画↔︎AGM動画の変換を行う場合にも、内部形式としてRGB形式を使うよりも、YUV形式を使った方が処理性能が高くなる訳だ。

更に、エンコード時に、RGB形式に変換する場合、YUV→RGB→YUVの変換が行われる事になるので、一般的には、YUVからRGBへの変換とRGBからのYUVへの変換で、演算誤差による画質劣化も発生する。

なので、AmuseGraphics系ソフトでも、本質的にはRGB形式が必要ない動画のエンコード時には、内部形式としてYUV形式を使っているのだが、YUV形式にも色々とある訳だ。

AmuseGraphics系ソフトは、一般動画のデコード/エンコード用のフレームワークとして、WindowsではMediaFoundation、macOSではAVFoundation、UbuntuではLibavを使用しているのだが、それらのインタフェースは全てYUV形式をサポートしているものの、微妙にデータフォーマットが異なる。

そして、AGM形式動画も、通常は、内部的にはYUV形式なのだが、そのデータフォーマットは前述のどのフレームワークとも一致しない。

なので、内部形式としてYUV形式を選択する場合にも、その形式は一通りではなく、例えば、AGM形式動画からAGM形式動画に変換する場合には、一般動画用のフレームワークは必要ないので、AGM形式動画用のYUV形式が内部形式として選択される。

逆に、一般動画から一般動画に変換する場合には、内部形式として各フレームワークのソレを使えば性能的にも画質的にも良さそうではある。

しかし、例えば、MediaFoundationとAVFoundationとでは、YUVデータの配置が異なるので、解像度の変更等、そのデータを加工する必要がある場合には、内部形式として各フレームワークのソレをそのまま使ってしまうと、加工用の処理ルーチンも、各フレームワーク用を用意する必要が生じてしまう訳だ。

そして、AmuseGraphics系ソフトでは、当然の事ながら、画像加工用ルーチンについても、AGM形式用が豊富なので、画像の加工が必要な場合には、一般動画から一般動画へのエンコードの場合にも、各フレームワークの画像形式は、AGM形式用のソレに変換されたりする訳だ。

ただし、最も単純で判りやすいのはRGB形式で、普通、動画再生時に画像を画面描画する時には、データはRGB形式でOSに渡す必要がある。

つまり、どの道、RGB形式への変換ルーチンは必要になるので、動画の内部形式はRGB形式、という事にしておけば、実装は楽になる。

なので、AmuseGraphics系ソフト的にも、昔は、そうしてあったのだが、処理性能を鑑みて、ジワジワと、YUV系の内部形式を採用するケースを増やしていった訳だ。

その結果、今現在では、状況等に応じて様々な内部形式が使用される様になっているので、作者的にも、このOS用のこのソフトがこの処理を行う場合の内部形式は? と、聞かれても、ソースコードを見てみないと、答えられない状況になっている。

と、言う事なので、作者的には、今回の不具合修正用に、Ubuntu版AG-ムービーカッターの変更が必要かどうかが判っていなかったのだが、調べてみると、必要である事が判ったので、単体リリースが可能な、こちらの修正版を先に出しておく事にした訳だ。

« まずは二つをリリース | トップページ | メモリリーク調査とか »

トラックバック

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

この記事へのトラックバック一覧です: Ubuntu版も微修正:

« まずは二つをリリース | トップページ | メモリリーク調査とか »

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