スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« やっぱりブログは休む | トップページ | DCT+は画質を向上させる »

エンコーダーの構造改革

今は、Windows用AmuseGraphicsの開発フェーズで、ブログは1週間休んだのだが、その間、新AGM形式について検討していた。AGM形式には形式自体に改良の余地があるのだが、次バージョンでは、少なくとも、実装の構造改革は行う。

AGM形式の形式自体に対する改良の大物としては、内部的に使用しているYUV形式の詳細仕様をWindowsのMedia Foundation、MacのAV Foundation、Ubuntuのlibavcodecで使用されるYUV形式との相互変換が容易になる様に変更する、というモノがある。

つまり、現状、AGM形式動画はAG-ムービーカッターやAGMPlayerを使ってWindows/Macではmp4形式、UbuntuではWebM形式に再エンコード出来るのだが、Media Foundation/AV Foundation/libavcodecなんかのAPIでは、入力データの色空間をRGBにするよりもYUVにした方が高速に処理してくれる。

なので、上記の処理ルーチンでは、YUV形式でデータを渡す様にしているのだが、AGM形式でも、AGM-RGBを除けば、内部的にはYUV形式を利用しているにも関わらず、前述のAPIが要求しているYUV形式とは詳細仕様が異なるので、実際にはAGM-YUV → RGB → 一般YUV、みたいな変換を行なっている訳だ。

このため、AGM動画→一般動画の変換処理では、直接YUVデータを渡せる場合と比べれば、一旦RGB形式にしてから再度YUV形式に変換する分のオーバーヘッドが加算されるし、一般動画→AGM動画の変換でも同様になる。

と、言う事なので、作者的には、AGM形式動画の内部YUVデータの詳細仕様を変更して、一般のエンコーダー/デコーダーとのデータのやりとりで、上記の色空間変換を無くしたいのだが、それをやってしまうと、当然の事ながら、データの互換性が無くなる訳だ。

つまり、AGM形式のデコーダーは、今現在、AG-ムービーカッターやAGMPlayerやAGMDecoderやAmuseGraphics本体に実装されているのだが、それらでデコードできないデータをエンコードしてしまう事になるので、逆に言うと、AGM形式デコーダーを実装しているソフトをそのデータがデコード出来る様に更新する必要が生じる訳だ。

この更新作業は大変ではあるのだが、今は、次バージョンのAmuseGraphicsの開発フェーズなので、少なくとも、近いうちにWindows版のAmuseGraphicsファミリーソフトの全てを更新する事になる。

そして、AG-ムービーカッターにはMac/Ubuntu版、AGMPlayerにはMac/Ubuntu/Android版もあるので、これらについても更新が必要になるのだが、Mac/Ubuntu版については、今年になって何度も更新してきているので、今現在、更なる更新も、大して大変でもない。

しかし、Android版AGMPlayerについては、開発環境が、Android Studioに変更になったお陰で、Eclipseで開発できていた頃と比べると、開発作業は何十倍も大変になっている訳だ。

と、言う事なので、今現在、作者的には、Android Studioが最大の足かせになっていて、現行のAndroid版AGMPlayerでデコードできない新AGM形式のリリースについては、二の足を踏んでいる状況だ。

しかし、それとは別に、以前書いた様に、現状、AGM形式動画用のエンコーダーは、少なくとも4コア以上の環境では、CPU性能を使い切れていない。

これは、画像処理部についてはマルチスレッド動作させているのだが、コード化部については、逐次処理が必要なので、並列化できていないからだ。

もっとも、以前書いた様に、コード化処理の並列化は難しいものの、複数のコード化を同時に動かす事による並列化は可能だ。

上記の方式については、以前、パイプライン動作という言い方をして、このブログでも、やると書いていた筈なのだが、それを実現するためには、今日の表題にした様に、細かなコーディングレベルでの変更ではなく、エンコーダーの構造を変更する必要があった。

なので、上記については、何年も前から書いていたのだが、結局、変更してこなかったのだが、今回、ブログを休んでいた1週間を使って、エンコーダーについては、上記方式を採用したコードを実装した。

その結果、MacBook Pro 15インチ 2016モデルでは、CPUが4コア8スレッドなので、2倍近く、高速化できた感じだ。

なので、少なくとも、この変更は、次バージョンのAmuseGraphicsファミリーソフトに適用する予定なのだが、デコーダー側についても、同様に変更は可能な筈なので、明日からは、デコーダー側が何とかならないか試してみる予定だ。

« やっぱりブログは休む | トップページ | DCT+は画質を向上させる »

トラックバック

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

この記事へのトラックバック一覧です: エンコーダーの構造改革:

« やっぱりブログは休む | トップページ | DCT+は画質を向上させる »

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