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

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

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

メディアプレイヤー(12月22日版)

Jコミで「らぶひな」が全巻がPDF形式で無償公開された。
PDFにはCMページとリンクが入っており、そのページ(リンク)をクリックする事で、CMのURLへジャンプするようになっている。

自分の「本プレイヤー」(ブックリーダー)は、「自炊」ファイルが対象なので、PDFを直接読む事は出来ない、それで、実験的にPDFからJPEG画像を取り出して、アーカイブしたものの、結構、面倒で時間がかかる作業だと判った、まず、画像の解像度(DPI)を指定しなければならないが、大きすぎても小さすぎても駄目な為、適当なDPI値を探る必要がある点、一番問題なのは、リンクが無くなる事で、CMへのリダイレクトが無くなり、「無償公開」の「意義」が損なわれる点。
これは、問題だ!、そこで、オープンソースのPDFリーダーを探していた、いくつかあるようだが、多少の情報収集から、SumatraPDFが良さそうと思い、早速自分のシステムに取り込んでみた。

「SumatraPDF」はC言語で書かれていて、フォントの描画はFreetype2、それに、JPEG、Jpeg2000、big2dec、PNG、Z-lib などオープンソースのライブラリーを使って構築されている。

それに先立ち、cygwin 上に新しく追加された mingw のクロスコンパイラ環境をインストールした。
以前は、gcc3 では、Windowsのコンパイル用に、「-mno-cygwin」オプションを使っていたが、新しい gcc4 系では仕様が変り「-mno-cygwin」が廃止された為コンパイル出来なかったのだが、クロスコンパイル環境を別途インストールしてWindowsのプログラムをコンパイル出来るようになった為、ようやく最新のコンパイラでWindowsのコンパイルも出来るようになった。

次に、自分のシステムに無いものとして、Jpeg2000、big2decなどがある為、まず、そこからライブラリーの作成組み込みを行った、ソースコードを取得して、mingw クロスコンパイラを使って各ソースをコンパイル、ライブラリーを作成した。

次にSumatraPDF本体を取得して、ライブラリーをコンパイル、mingw用に多少手直ししたが、これもなんとか上手く出来あがった。

次に、「apps」にあるアプリケーションのソースコードを頼りに、C++のラッパーを作成し、ブックリーダーのコア部分「pager」クラスに組み込んでみて、レンダリングさせてみたが、とりあえず動作しているようだ、一般的なPDFも食わせてみたが、フォントの描画がイマイチおかしい部分はあるものの、普通に描画できる(素晴らしい!)

後はリンクなどの処理を加えれば良い感じだけど、これは、まだ考え中で開発中。
※GUIは、基本、今までのようにしておき、そこにリンク部分を追加したい。

で、最新版をアーカイブに入れた。
コンパイル済みライブラリーやヘッダーファイルも「mingw」のアーカイブに入れておく。

メディアプレイヤー

コツコツ作ってる「メディアプレイヤー」、地味にバージョンアップしている、最近のトピックは、プリファレンス(レジストリー)に対応した点、アプリケーションが終了する際に色々な状態を記憶しておくもの、当然、マルチプラットホームなので、独自に実装してある。
テキストファイルで出して、起動時読み込むだけなんだけどね・・
でも、色々と面倒だったー(難しくは無いけど、キーワードを加工したり、細かいテキスト処理を含んでいる為、面倒だったのだけど・・・

それはそれとして、少しづつアップグレードしていますので、もし、使っている人がいれば、最新版を取得して下さい。
※使ってみて、問題があればバグレポートをtwitterのアカウントにでも送って下さい。

それはそれとして、google 先生で、「Open Media Player」を検索したら、ヒットしてました、既に「名前」が使われてます・・・
うーーーん、自分のアプリは、そんな名前にしようと思ってたのに、残念です・・・
何か、ビビットな名前を考えないと駄目ですね・・・

—–
先日、シャープより、ガラパゴスが発表されましたー
※iPadにはSDカードのインターフェースが無く、別売りのSDカードインターフェースを使って、静止画は読み込めるものの、動画や音楽を入れて食わす事が出来ない為、ガッカリ、買う気が起りません・・・
無線経由でWEBからダウンロードして読み込ませる事は出来るようですが(アプリが対応していれば)・・

そんなこんなで、多少、ガラパゴスには期待もしていたのでしたーー
ところがー、「メディアタブレット」と唄っておきながら、AV Watchの記事によると、「なお、microSDカードに収めた音楽や動画を再生する機能は備えていない。」となってます!
えーーーーーーーーーーーー、うそーーーーーーーーーーーーー、ありえないでしょーーーーーー!!!!!!
それ、「メディアタブレット」って言えないから・・

うーーん、XMDFに埋め込まれた動画などは再生出来るので、なんらかの大人の事情が炸裂したのかもしれないけどー、あまりにもひどすぎる、使う人の利便性を完全に無視して、自分たちの利益を守る事を最優先にしたこの態度は絶対に許せません。
X68000の頃からシャープは好きなメーカーだったのに、残念でたまらない。
まぁ、どうせこんな中途半端な端末は使い方が限定されて、多くの人には見向きもされないでしょうから、いいんですけどねー

やっぱ、Androide の端末にしか活路は無いのかもー

クリエイティブから良さそうなのが出ますねぇー、値段もそれなりだし、少なくとも、ガラパゴスよりは100万倍良さそうなので、買ってみたい気もするけどー

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

そんで、入れてみたー

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