2005年2月7日の日記の2番目の記事へのコメント
■xmms-scrobbler
長いタイトルの曲でセグる原因がわかりました.vorbisのタグ処理のサイズ処理するところで以下のようなマクロが使われてるんですが,charにunsignedがついてないのでsignedとみなされてしまい,曲情報が128byteちょっとのサイズの曲だと長さがマイナスになっちゃってました.「char」を「unsigned char」にしたらセグらなくなりましたとさ.
#define le2int(le) ((le[0] << 0) | (le[1] << 8) | (le[2] << 16) | (le[3] << 24)) unsigned int length; char cToInt[4]; cToInt[0] = 0x8d; cToInt[1] = cToInt[2] = cToInt[3] = 0; length = le2int(cToInt);
charの符号は結局実装依存なんだっけ,確か(調べたらヤマケンさんのメールが)?自分も1年前GBAではまったっけ.・・・おっと,これだと他のファイルのタグ処理するところでも発生するんじゃない?って,wma用の関数ではちゃんと「unsigned char」って書いてあるし.Vorbisだけだめですか_|‾|○.ていうか,ようやくセグらなくなったデータですが,それを送ろうとすると今度は
FAILED Plugin bug: Not all request variables are set : param size < 8 >>param size:7
とかいって失敗します.WinAMPで試したらうまくいったってことはxmms-scrobblerの問題かぁ・・・.どんどん深みにはまっていきます・・・.
ちなみにAUDIOSCROBBLERのフォーラム見てたらxmms-scrobblerの新しいバージョンが出てました.ぱっと見基本的な部分には大きな変更は無いみたいですが・・・
[コメントを書く]
2005年2月7日の日記の2番目の記事へのコメント
[コメントを書く]