スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Ubuntu版ムービーカッターを優先 | トップページ | HPに注意書きを追加 »

GUIの作成が大変

今は、Mac用AGMPlayerの開発フェーズなのだが、色々とあって、Ubuntu版AG-ムービーカッターを先にリリースすることにした。なので、その作業中なのだが、12.04LTS時代に、一応は、動作するモノを作っていたので、開発難易度は低い。ただし、作業量はそれなりにある。

昨日書いたように、Ubuntu版AG-ムービーカッターは、元々は、Ver1.2.0相当だったので、幾つかの機能追加を行って、Windows版のVer1.3.1相当にしてからリリースする事にしている。

その追加機能である所のAGM形式動画の修復機能とノイズフィルター機能と音声オフセット機能については、既に、機能追加を終わっているのだが、その追加作業の殆どの時間を占めたのは、GUI作成作業だ。

具体的には、例えば、AGM形式動画の修復機能では、処理進行を示す為にプログレスダイアログを使用しているのだが、Windows版では、このダイアログは別プログラムでも使っていたので気軽に使ったのだが、Ubuntu版では、このダイアログを使うのは初めてなので新たに作成する必要があった。

また、作者は何も悪くない筈なのだが、Gtk::Dialogから派生させて自前のダイアログを作成すると、そのアロケーションで例外が発生する事が多い。

つまり、Gtk絡みの複雑なクラスを作成しようとすると、基本ライブラリに存在する筈のメモリアロケーション関数が正しく動作しない感じなので、作者的には、新しいダイアログを作成する度に、この問題に悩まされている分、作業時間は通常の数倍必要になっている訳だ。

具体的には、元々は、クラス変数にしていたダイアログ部品を表示処理関数内のスタック変数にする等の小細工をして、クラスを単純化しなければならない訳なのだが、そういう苦労をしても、中々、例外が無くならない事もあれば、何もしなくても、発生しない場合もある。

と、言うことで、Ubuntu版のGUI作成作業は、二重の意味から、大変な訳なのだが、既に、Ubuntu版Mirror-DTCも合わせれば、ボタン・エントリー・スピンボックス・コンボボックス・リストといったダイアログ部品は全て使ってきているので、開発難易度的には、既存ルーチンをコピーしてきて微修正するだけで済んでいるので、大して困難でもない訳だ。

ちなみに、残す所としては、映像合成機能になるのだが、これについても、明日中には何とかなりそうではある。

ただし、Windows版AG-ムービーカッターでは、内部画像形式を最適化して処理の高速化を図ったりしているのだが、今回、Ubuntu版では、そういう処理は端折っている。

具体的には、Windows版では、AGM3-DCTからAGM3-DCT+に再エンコードする様な場合には、内部画像形式には、AGM形式動画の内部形式であるYV12形式が使われるのだが、Ubuntu版では、RGB32形式が使われる。

このため、AGM3-DCTのデコード処理ではYV12→RGB32、AGM3-DCT+へのエンコード処理ではRGB32→YV12の変換処理が走るので、再エンコード処理はWindows版よりも重くなる。

もっとも、何故、そんな事になっているのか、というと、Windows版についても、Ver1.2.0の頃には、そういう処理にしてあったからだ。

つまり、今回、Ubuntu版AG-ムービーカッターでは、Windows版で行った再エンコード性能の向上施策部分については、取り入れていないのだが、これは、この施策を取り入れると変更量が結構多くなる割には、性能向上が体感されない可能性もあるからだ。

と、言うことなので、今回の変更では、少し手抜きもしているのだが、まあ、リリースしてみて、ダウンロード数がそれなりにある様なら、順次、処理性能等についても、上げて行く格好になる筈ではある。

« Ubuntu版ムービーカッターを優先 | トップページ | HPに注意書きを追加 »

トラックバック

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

この記事へのトラックバック一覧です: GUIの作成が大変:

« Ubuntu版ムービーカッターを優先 | トップページ | HPに注意書きを追加 »

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