スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« まあまあ良い感じだが | トップページ | その他環境でも確認 »

やはりコピーが問題だった

今は、Windows用AmuseGraphicsの開発フェーズで、BootCampでWindows10をインストールしてあるMBP 15インチ 2016モデルで最終評価中なのだが、昨日書いていた、AGM Converterの性能問題は、やはり、メモリコピーが問題だったので、処理を変更した。

AG-ムービーカッターとAGMPlayerとAGMConvには再エンコード機能があるのだが、再エンコード機能では、基本的には、ソース動画を一連のフレーム画像にまでデコードし、その一連の画像を出力動画にエンコードする格好になる。

つまり、AmuseGraphics本体には、動画のキャプチャー機能があって、その機能を使うと、指定動画の各フレームを一連のbmp/jpg画像に変換して保存でき、その状態で、更に、動画作成機能を使うと、その一連の静止画ファイルから動画ファイルを作成する事も出来るのだが、前述の再エンコード機能では、似たような事が自動的に行われている訳だ。

もっとも、AmuseGraphics本体では、動画の再エンコードを行う場合には、その中間形式となる画像は一般的なbmp/jpg形式になっているのだが、AG-ムービーカッター等で再エンコードを行う場合には、その中間形式はオリジナルな構造体データになっている。

これは、AmuseGraphics本体の場合、キャプチャーした動画フレームの画像を、一般ユーザーが加工した上で、動画にする事を想定しているので、静止画データは一般的な画像編集ツールでも加工可能な形式にしてあるのだが、AG-ムービーカッター等では、その中間形式の画像を一般的な画像編集ツールで加工させる事は想定していないからだ。

上記の様な書き方をすると、作者が怠慢しているか、意地悪している様に感じる人もいるかもしれないのだが、実際の所としては、bmp/jpg形式でファイル保存すると、再エンコード性能が著しく低下するので、そんな事はしていない、というのが実情になる。

つまり、作者的には、AG-ムービーカッターの開発時には、既に、AmuseGraphics本体に動画キャプチャー/作成機能を構築済みだったので、それらのソースコードを組み合わせて内蔵させれば、AG-ムービーカッターに再エンコード機能を実装するのは簡単だったのだが、そういう事はしなかった訳だ。

何故なら、例えば、AGM形式動画をより一般的なWMV形式なんかに変換したいだけの場合、AmuseGraphics本体にある様な、柔軟性が高い動画の再エンコード機能なんかは必要ではなくて、必要とされるのは、より高速な処理性能になる筈だからだ。

と、言うことで、長々と書いてきたのだが、要は、AG-ムービーカッターとAGMPlayerで、動画の再エンコードを行う場合には、デコード結果は、一般的な画像形式ではなく、エンコーダーにとって都合が良い形式にしてあるのだが、AGMConvでは、エンコーダーの入力データとしては、より一般的なメモリ配列を想定していたので、その変換のために、メモリコピーが発生していた。

で、フルHD画像の場合、1920x1080x4=約8MBなので、フルHD動画の再エンコード時には、1フレーム毎に8MB分のメモリコピーを行う格好になっていたのだが、結果的には、たったそれだけの事で、2分15秒で終わる筈だった再エンコードが、3分丁度くらいかかる様になっていた訳だ。

と、言うことなので、たった一つのメモリコピーをやめる格好にするだけで、AGMConvの処理性能もAG-ムービーカッター/AGMPlayerと同等以上に出来る事が判ったので、昨日は、変更はしないみたいな事を書いていたのだが、結局は、変更してしまった訳だ。

ちなみに、前述の2分15秒で終わるエンコードのソース動画は30fpsの15分モノなので、フレーム数的には、30*60*15 = 27000になる。

なので、メモリコピー量としては、27000*8=約216GBになるのだが、これだけのメモリコピーで処理時間が45秒増加したので、メモリ転送速度は、読み込みと書き込みが同時に走る事を鑑みれば、216/45*2=9.6GB/Sec、という事になる。

実際には、メモリ転送性能はもっとある様な気もするので、性能低下要因としては、メモリ転送時間ばかりではなく、キャッシュヒット率低下だとかも、ある筈なのだが、いずれにしても、1フレーム毎にたった一回のメモリコピーをするだけで、上記だけのメモリ帯域を使ってしまう事を鑑みれば、作者的にも、無視する事はできなかった訳だ。

« まあまあ良い感じだが | トップページ | その他環境でも確認 »

トラックバック

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

この記事へのトラックバック一覧です: やはりコピーが問題だった:

« まあまあ良い感じだが | トップページ | その他環境でも確認 »

2018年9月
            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            

広告

プライバシーポリシー

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

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

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

    ポリシーと規約 - Google