« [iPod touch]Dock Connector一体型iPod touch用マイク頒布 | Main | [iPod touch]iPod touch用Dock Connector一体型マイク頒布1号機完成 »

2007.12.15

[iPod touch]iPod touch開発メモ: libid3tagのコンパイルとテスト

noviさんのところでlibid3tagiPod touch向けビルドに失敗するという話が出ていたので、自分のところでも試してみることに。

母艦では、libid3tagでファイル埋め込み歌詞の読み出しができているとのこと。
Lyrics3にピンときてなかったようなので、SYLTというFrameの方でしょうかね? よく分かりません。詳しいことはnoviさんが知っています。

こちらでは、すんなりビルドに成功。

自分の開発環境は、iMac G5+Leopardにiphone-devにある手順でインストールしたもの。
dylib1.10.5.oが無いと言われることがあるので、以下のシンボリックリンクを張ってます。

cd /usr/local/arm-apple-darwin/
ln -s dylib1.o dylib1.10.5.o

テストコードを書いてみました。
歌詞の読み出しはよく分かってませんが、以下のコードでiPod touch上でもUTF8で曲名が読み出せてます。



#include <stdio.h>
#include <id3tag.h>

int main(void) {
struct id3_file* file;
struct id3_tag* tag;
struct id3_frame* frame;
union id3_field* field;
const id3_ucs4_t* title;
id3_utf8_t* title_utf8;

file = id3_file_open("/var/root/Media/test.mp3",
ID3_FILE_MODE_READONLY);
tag = id3_file_tag(file);
frame = id3_tag_findframe(tag, ID3_FRAME_TITLE, 0);
field = id3_frame_field(frame, 1);
title = id3_field_getstrings(field, 0);
title_utf8 = id3_ucs4_utf8duplicate(title);
printf("Title: %s\n", title_utf8);
return 0;
}

共有ライブラリの方でなくlibid3tag.aを使い、スタティックリンクしてコンパイル。
zlibも必要。

arm-apple-darwin-gcc id3.c libid3tag.a -lz -o id3

コンパイルしたlibid3tag-0.15.1bを置いておきます。

ダウンロード libid3tag-0.15.1b-1_arm-apple-darwin.zip (79.3K)

|

« [iPod touch]Dock Connector一体型iPod touch用マイク頒布 | Main | [iPod touch]iPod touch用Dock Connector一体型マイク頒布1号機完成 »

Comments

どうもです。
toolchainを新しいものに更新したらできました。
thxです。

そして、次はライブラリを置く場所で苦戦中ですw
出来れば、自分のバンドルの中がいいんですが、どうも今のところ/usr/local/libでないとダメみたいです。

Posted by: novi | 2007.12.25 at 11:16 PM

更新乙です。リポジトリも更新しておきました。
一瞬正常に動いてないんでは? と引っ込めたのですが、Swipeで裏っ返るのに後で気づいて元に戻しました。
この裏っ返るのいいですねえ。ソース見たいです。

このバージョンはまた世界中でブレイクしそう。

既にバンドルの中にライブラリを添付する形で決着が付いているようですけど、スタティックリンクする手もありますよ。
libid3tagをmake;make install DESTDIR=`pwd`
でinstallまですると出来るlibid3tag.aを、オブジェクトファイルを展開するディレクトリに置いて、Makefileのオブジェクトを列記するところにいっしょに書いておくと、ほかのオブジェクトといっしょにスタティックリンクできます。こうすると、共有ライブラリは不要になります。

Lyrics: main.o Application.o ListView.o PrefsView.o Viewer.o libid3tag.a
  $(LD} $(LDFLAGS) -o $@ $^

ソースがまだ公開されてないのでほかのオブジェクト名は想像ですが。

Posted by: moyashi | 2007.12.26 at 02:49 AM

リポジトリ更新ありがとうございます。

スタティックですか。そっちの方がいいですかね。
setupLyricsでアイコンとライブラリのリンクを作成しているんですが、
これだとシステム"/usr/local/..."を勝手に変更してしまうのであんまり良くないとは思っています。

次のバージョンを出すまで考えてみたいと思います。

Posted by: novi | 2007.12.26 at 01:45 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/13760/17370474

Listed below are links to weblogs that reference [iPod touch]iPod touch開発メモ: libid3tagのコンパイルとテスト:

« [iPod touch]Dock Connector一体型iPod touch用マイク頒布 | Main | [iPod touch]iPod touch用Dock Connector一体型マイク頒布1号機完成 »