「ソフトウェアー・エンジニアリング」カテゴリーアーカイブ

ソフトウェアー関係の話題など・・

最近は、github にプッシュしてます~

Open Media Player

題名の通り、メディアの再生を目的としたプレイヤーなんだが、MP3の再生は、データベースの管理機構が無いと実用にならないので、sqlite3 のライブラリーを組み合わせて、実装を進めている、これは、まだ時間がかかりそうなので、JPEGファイルをZIPで固めた(要は漫画ファイル)ファイルのプレイヤーを先行して実装したので、とりあえず、実行ファイルとソースコードを公開しようと思う。

ソースコードは cygwin 上の gcc でコンパイルするように出来ているが、VCでもコンパイル可能だろうと思われる。

他に、boost や他のライブラリーが色々必要なので、ソースコードからのコンパイルにはある程度のスキルが必要と思う。

gcc の3系では、WIN32-API を含んだコードをコンパイル可能(VCでもコンパイル可能)で、さらに、「-mno-cygwin」オプションを使って、「cygwin1.dll」ランタイムを必要としないコンパイル環境が可能なので、それも積極的に取り入れている。

※その為、いくつかのオープンソースライブラリーとの整合性が悪くなっている。

WIN32-APIは最小限必要な部分でしか使っていない、描画は基本全部OpenGL(glut32ライブラリー)だし、オーディオ関係はOpenALで実装しているので、他のプラットフォームへ持って行きやすいと思う(実際、一部はiPhone、iPadで動作する)、ゆくゆくは、OS-X、Linux、などマルチプラットホームで展開していきたいと思っている。

とりあえず、

http://www.rvf-rc45.net/SOFT-archive

に各種ソースコードと実行ファイルなどを置いておく。

MP3 TAG に関する事・・・

昔から、趣味で MP3 のプレイヤーを作っている。

まぁ、自分で実装しないでも、沢山のクールなプレイヤーがあるけど、自分としては、全画面で、OpenGL を使って、車載 PC 用のソフトとしたいので、コツコツ実装している。
※ある程度「型」になったら、発表する事が出来ると思う。

何故自分で作ろうかと思った、その背景には、組み込み機器向けにも転用するとか、専用ハードでアプリをコントロールしたいとか、理由は色々。
一番の動機は「面白そう」だからー(笑)

-----
最近は、データベース関連の実装を進めているけど、その前に、MP3 TAG 情報関係をスマートに扱う必要があるのだが、これが結構厄介な問題を含んでいると判った。

MP3 タグを扱うには、オープンソースでは、「libid3」がメジャーと思うが、規模が大きく、機能も豊富で、他のライブラリーに依存しているのが、扱いにくい。
※純粋に MP3 タグの部分だけパース出来れば・・・

ネットを見渡すと他には「libid3tag」なるソースコードもある。
http://sourceforge.net/projects/mad/files/

「libid3tag」は、ソースコードは取得出来るものの、既に開発は止まっているようで、最低限の機能しか無いが、C で書かれていて、逆に最低限の機能しか無い事が、コンパクトな機器などにも向いているように思う。
自分は、「libid3tag」導入が簡単と思った為、こちらを組み込んだが・・・

色々問題を抱えてしまった・・・
まず、良くある話だが、「MP3 TAG を埋め込む側のソフトウェアー」問題が複数ある。
これは、MP3 のタグ情報を埋め込む際、そのソフトウェアーのバグによって、規定とは違った方法で情報が埋め込まれてしまっている事が沢山ある。
規定外のタグ情報は、無視すれば良いと思うかもしれないが、そんな曲データが沢山あると、無視も出来ない事になる。
※iTunes のように、非常に多くのユーザーがいるアプリケーションでも例外では無い。

-----
最近この対応を行った点としてー、MP3 の TAG に「APIC」と言う画像を添付する規定があるが、特定の iTunes で作成した MP3 をパースした際、画像を取得できない場合がある事が判明したー。
良く調べてみると、画像に関するテキスト情報フィールドで、それが無い場合には、当然「0x0」を埋め込む必要があるのだが、それが抜けている為、次のフィールドデータを浸食してしまい、結果、画像情報ヘッダーの一部が無くなってしまい、画像を特定できなくなってしまう。

別のプレイヤーで試したが(もちろんiTunesでも)、この規定外の MP3 ファイルでも、ちゃんと添付画像を表示できる。

そこで、この腐った MP3 を何とかする方法を考えて、対応したが、これからもこんな事が色々あるのだろうなと思う・・・(泣)

まぁ、最低限パースの際にクラッシュしなければ合格なんですけどね・・・

ブログシステム

今まで、プロバイダ標準のブログシステムを使ってたけど、PHPやSQLも使えるのだから、何かオープンソースのプログシステムを導入しようと考えていた。

何が良いのか色々探したが、沢山ありすぎて悩む事ー悩む事ー、そんな時、twitterで誰かがつぶやいていた「ブログ」、ホームページに行ってみたら、自分も導入してみたくなった。

そんで、入れてみたー

これから、少しづつ移行してみようと思いまーす。