スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« コード整理は必要だが | トップページ | それなりには整理できた »

動作の問題は無くなった

今は、AmuseGraphics Ver1.4.1の開発フェーズで、macOS版AGMPlayerに続き、macOS版AG-ムービーカッターの変更作業中で、今回の目玉である所のトランジション効果の追加機能は問題なく動作する様になった。ただし、まだ、コード整理は続行中だ。

既に書いてきた様に、AG-ムービーカッターにトランジション効果の追加機能を実装するにあたっては、AG-ムービーカッターの内部構造が、一般的なタイムライン方式の動画編集ソフトとは異なり、ベース動画は常に一つ、という作りになっていた事が実装を困難にした。

しかし、上記の問題については、トランジション効果中の映像と音声を、仮想的に、別の動画ファイルの映像と音声、とする事で解決した。

もっとも、その為には、トランジション効果用の仮想ファイル形式を構築すると同時に、現行版では、読み込んでいる動画ファイルの映像と音声は、その全領域を利用していたのだが、トランジション効果の領域を除いた部分のみを利用する形式に変更する必要もあった。

で、上記の変更は比較的簡単に行えたので、AG-ムービーカッター的にも、さほど無理なく、トランジション効果を追加する事は可能になったのだが、この時点では、トランジション効果の領域は、完全に別ファイル扱いだったので、通常領域との切り替えタイミングで、音声/映像が不連続となってしまう場合もあった。

なので、この問題を解決する為に、トランジション効果用の仮想ファイルのデコードを開始するタイミングでは、それ以前にデコードしていた通常ファイルのデコード環境を引き継ぐ格好にし、仮想ファイルのデコードが終了した後の通常ファイルのデコードでは、仮想ファイルのデコード環境を引き継ぐ格好にした。

そうする事で、トランジション効果の入り口と出口では、通常ファイルのデコードが連続して行われる格好になったので、音声/映像の不連続が発生する問題は発生しなくする事が出来た。

と、いうのが、現在までの状況なのだが、上記の二つ目の対応は、少なくとも現時点ではエンコード時のみだ。

つまり、現状では、再生時には、トランジション効果領域の入り口と出口では、若干の不連続が発生するので、切り替わりがあったな、というのが判る状況なのだが、切り替わりのタイミングで1秒も待たされる、という事はないので、この点については、このままにしておく予定だ。

なので、トランジション効果の追加機能については、アーキテクチャ上の問題はクリアされ、内蔵処理として提供する効果についても、3D回転なんかも含めて、一般的な効果を多数実装したので、次バージョンでは、普通に使える格好になる筈だ。

ちなみに、冒頭に書いた様に、コード整理については、まだ実行中なのだが、コード整理に時間がかかっているのは、エンコード時に使用しているパラメータが結構な数あるからだ。

具体的には、AG-ムービーカッターでは、エンコード出力の設定で出力解像度が指定できるし、オプション指定でトリミングやアスペクト比調整が行えるのだが、これらのパラメータは、ある意味、独立していない訳だ。

なので、出力フレームを生成する処理ルーチンでは、様々なパラメータを参照しつつ、生成するサイズ等を決定しなければならないのだが、その為には、必要になってくるバッファメモリなんかも異なってくる訳だ。

その結果として、出力フレームの生成処理だけを見ても、処理ルーチンでは、if文なんかがゴチャゴチャとしているのだが、使用している変数が多いので、それらの処理ルーチンを別だしするのも大変になる訳だ。

何故なら、必要になるパラメータを全てその処理関数に渡す必要があるので、何も考えずに別だししようとすると、引数の数が10を超える格好になるので、そんな関数を記述していると、エディタの横幅が全然足りない、みたいな感じになってしまう訳だ。

と、いう事で、処理を別だしする為には、それ以前に、そういった一連のパラメータを構造体で纏めて、関数にはその構造体を渡す格好にしているので、変更には時間がかかっている訳だ。

もっとも、上記の様にする事で、エンコードルーチンに山の様にある変数が、それらの意味合い毎に別々の構造体に別れていく事になるので、コードの見易さは格段に向上する事になる筈だ。

« コード整理は必要だが | トップページ | それなりには整理できた »

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

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

    ポリシーと規約 - Google