スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« MJPEGも再生不可 | トップページ | AGM to MP4は可能に »

移植を始めた

今は、Mac用AGMPlayerの開発フェーズで、今週は、AVFoundationを使ったmp4/agm変換ツールを作るのだが、AVFoundationの使い方は判ったので、今日から、AGM形式用の処理ルーチンの移植を始めた。既に、他ソフトで移植実績はあるのだが、すんなりとは行かない。

Mac用AGMPlayerの現行版はJava版なのだが、性能が必要な処理については、JNI化してあるので、CPPコードも使っている。しかし、そもそも、初版のAGMPlayerをJavaで開発したのは、Android版を開発する為だったので、極力、処理コードにはJavaを使う格好にしていた。

なので、今回必要になるAGM形式動画ファイルにアクセスするファイルアクセス処理については、現行のJava版では、Javaで記述してあった。

と、いう事なので、今日は、まず、AGM形式動画にアクセスするための処理コードをWindows版から持ってきて、移植したのだが、まだ、マトモには動作していない。

何故、マトモに動作しないのか、については、作者的にも、まだ、判っていないのだが、これは、Mirror-DTCのMac用ネイティブ版は既に開発済みで、その時に、Windows用の基本処理関数のOS X版は開発してあったので、基本処理については、実績があるコードを使えているからだ。

つまり、ファイルアクセス処理用の基本関数は問題ない筈で、AGMファイルアクセス用の処理ルーチンについても、それらの関数をMac用に置き換えれば、OSに依存しない作りになっている筈なので、すんなりと動作しない理由はない筈な訳だ。

にも関わらず、出だしから躓いているのだが、多分、大した問題ではない筈なので、明日には、AGM形式動画をmp4動画に変換する事は出来る様になっている筈だ。

更に、今日は、AGM形式へのエンコードに必要になる処理コードも移植したので、運がよければ、明日には、mp4ファイルをAGM形式にエンコードする処理も動作する様になっているかもしれない。

ちなみに、64Bit版のWindows環境ではlongも4バイトなのだが、OS XやLinuxでは、64Bit環境では8バイトになる。

嫌らしいのはLinuxには32Bit環境もあるので、その場合には、longは4バイトになってしまう、という事なのだが、Macには32Bit環境は存在しなくなったので、longは8バイト固定になる。

もっとも、前述の様に、Windows環境ではlongは4バイトなので、WindowsからMacにコードを移植する時に、longを使っていると、問題が出る。

なので、移植版では、longはintに機械的に変更してあるのだが、ポインターについては、Windowsでも、64Bit環境では8バイトになり、32Bit環境では4バイトだ。

このため、例えば、ポインターを含む構造体をそのままファイルに保存すると、32Bit環境で保存したファイルは64Bit環境で正しく読み込めなくなる。

作者の場合、各種設定情報は構造体にしてあって、その構造体の中に、処理に必要になるオブジェクトのポインターを埋め込んでいる事も良くあるので、Windows版の設定ファイルの作成時なんかには、偶に、ミスをする事もある。

と、いう事で、前述の様な話は熟知しているので、今回の問題とは関係ない筈なのだが、それでは何が問題なのか、については、明日には判明する筈ではある。多分、くだらない書き間違え等が原因だとは思われるのだが。

« MJPEGも再生不可 | トップページ | AGM to MP4は可能に »

トラックバック

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

この記事へのトラックバック一覧です: 移植を始めた:

« MJPEGも再生不可 | トップページ | AGM to MP4は可能に »

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