少し邪道だけど実装


簡易プレイヤにmp3プレイ時mp3ファイルに格納されているジャケットを表示する機能を入れました。
この機能自体の構想は数ヶ月前からあったんですが、mp3の構造知らないといけないし、jpgやpngの方式も知らないといけないので実装は困難だなぁと思ってそのままにしておいたものです。
今回実装するにおいてかなり邪道な方法を取ってます。
まずjpgファイルをmp3から抜き出します。
これはmp3のフォーマットを見ながら抜き出します。
本当はメモリ上などに展開できると良かったのですが、ファイルとして保存することにしました。
ここはまだまだ改良の余地ありです。
jpgを保存しそれを画面に表示しないといけない。
でもjpgの知識など何も無い状態。
jpgのライブラリとかを使うという手もあったけど、そう簡単に見つかりそうに無かったので、
CImageクラスを使ってbmpに落とすという方法を取りました。
本当は、保存したjpgをCImageのLoadで読み込んで、そのハンドルをCDCに渡して表示ってしたかったんですが、
どうもうまくいかず、ポインタ00000000が返ってきてしまう。
CImageのポインタが渡せないので四苦八苦していてあまり時間掛けたくなかったので、
Loadでjpgを読み込み、Saveでbmpに保存という方法を取りました。
テンポラリファイルっぽいのがjpgとbmpと出来てしまうためあまりスマートではないですが、とりあえずはbmpまで出来たと言うことで、bmpまで出来ればあとの描画は簡単。
まぁこのまましておくつもりもないので、なんとかmp3から抜き取ったファイルをメモリ展開、メモリ上のバイナリデータをbmpに変換しメモリ保持、HBITMAPに持たせて、CDCへ受け渡しという事が出来ればメモリ上ですべて完結しそうなんですけどね。
サンプルソースみたいなのあったら欲しいけど、暇があったらそこら辺探してみるかも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください