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

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

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

メディアプレイヤー(11月21日版)

を、また少しプログラムを更新しました。

ソースコードと実行バイナリー

一応、「メディアプレイヤー」とは何?、って人もいるので、少し説明するとーー
・OpenGL、OpenAL、POSIX 系など機種依存性が低いAPIを使い、マルチプラットホームを目指した、ソフトウェアー
・「音楽」プレイヤーでは、MP3、WAVの再生が可能(今後増やしていく予定)
※TAG に含まれた、画像をジャケットとして表示し、曲名、アーティスト名などを表示
・「本」プレイヤーでは、ZIPでアーカイブした画像ファイルの閲覧が可能
※bmp、png、jpeg
※俗に「自炊」したファイルのビューアーに適するような構成としている
・「画像」、「動画」プレイヤーは実装中で研究中・・・
・機能追加、実験、の最中なので、機能的に不十分な点や不具合は多い(現在は、プレビュー、ベータバージョンとする)
・当初は、車にPCを積んで、その再生用として、また、研究用として実装を始めた為、一般のWindowsアプリなどとは、操作、GUI に対する考えが異なり、独自の操作系と見た目をしている
・描画は、全てOpenGLで行っており、その機能依存な部分があるので、古いPCや、ネットブックなどOpenGLなどの描画性能が低いPCでは正常に動作しない場合があると思われる。
※ダブルバッファ、フルカラーで、ある程度の描画を行った場合に、60フレーム以上の描画能力が出せるビデオカードとCPU能力が必要
・試してはいないが、タッチパネルの操作を考慮した操作系としている。
※シングルタッチ仕様、(マウスでは、左クリックのみ使用)
・オープンソースにするつもり
・iPhone、iPad、Androide 版を作るつもり(こちらは有料にする予定)
・いくつかの、オープンソースライブラリーを使っている。
・基本的にC++を使って実装されている
・開発はcygwinを使い、gcc(g++)を使っている
・仮のビジュアル(ボタンやスライダーのビジュアル)

など、など、現状まだ完成度は低いけど、使ってみたい方は試してみて下さい。
※ソースコードは、OpenGLを使った、ゲームのフレームワークなどの研究用、実験用として参考になるかと思います。

操作方法:
(1) ホーム画面

・「音楽」、「本」、「画像」、「動画」ボタンのいずれかを選択

(2) 「音楽」プレイヤー

・左下のボタン ---> ファイル選択ボタン
・スライダー ---> マスターボリューム
・中央左ボタン ---> 前曲
・中央ボタン ---> プレイ、ポーズ
・中央右ボタン ---> 次曲
・右下ボタン ---> ホームに戻る

(3) 「本」プレイヤー

・左下のボタン ---> ファイル選択ボタン
・中央左ボタン ---> 次ページ(左カーソルキー)
・中央右ボタン ---> 前ページ(右カーソルキー)
・右下ボタン ---> ホームに戻る
※ボタン類(GUI)は、マウスカーソルをGUIの領域から出して、5秒程で隠れる、マウスカーソルをGUI領域に入れると再び現れる
※画面の中心から左半分をクリックすると、「次ページ」、右半分をクリックすると、「前ページ」

(4) 「画像」プレイヤー
作業中・・・

(5) 「動画」プレイヤー
作業中・・・

メディア・プレイヤー

メディア・プレイヤーとして作っているソフト、アップデートしました。

ソースコードとコンパイル済みバイナリーは、ここに置いてあります。

前回、自炊用に「本」などを閲覧できるブックリーダーをとりあえずリリースしましたが、今回は音楽プレイヤーを強化しました。

※解凍すると出来る「res」ホルダーは、実行ファイルが読み込むリソースです、実行ファイルと同じところに置いておきます。

↑起動すると立ち上がる「ホーム」です。
※GUI とかは仮の物です。

↑「音楽」を選択すると、「MusicPlayer」に移ります。

・左下のボタンを押すと、ファイラーが動くので、それで、MP3、WAVファイルのいずれかを選択すると再生が始まります。
※現状の実装では、データベース管理されておらず、フォルダー内のファイルを順次再生するだけです。

このソフト、開発の目的は、車載用なので、最低限の車載向け機能を付けて、実際に車に載せて使ってみようと思いますが、タッチパネルの付いた液晶が欲しいとこです、それと、PCの電源を自動で入れたり切ったりする機構を付けたいとこです(これは、AVRマイコンを使って電源管理しようと思います)。

・「画像プレイヤー」は手を付けていないので、機能しません・・
・「bookプレイヤー」は一応機能します。
※「スペース」キーを押すと、ファイラーが立ち上がるので、zipで固めた書庫ファイルを選択します。


※マウスの「右左」ボタンか、矢印キーでページ送りをします。

実行バイナリー、DLLが足りなくて動かないとゆー指摘を受けたのでアーカイブしなおした(汗;)
ソースコード共に微修正

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で誰かがつぶやいていた「ブログ」、ホームページに行ってみたら、自分も導入してみたくなった。

そんで、入れてみたー

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