- 281 名前:Moonlight mailto:sage [2006/08/23(水) 02:46:26 ID:tj4Pgmzc]
- >>280
Dualisで音が出るか知らないのですが、とりあえずデコードができた(ような気がする)ので報告しまーす。 DevKitARMr19aで、oggライブラリはUPしてくださったlibogg7/9.aとlibvorbis7/9.aをそのまま使いました。 main.cから。TransferSound*snd = NULL; snd = IPC->soundData; を、static TransferSound StaticTransferSound; snd = &StaticTransferSound; に変更。(IPCサウンド処理を飛ばしているだけです) vc.read_func = ovs_read; とかを、ov_callbacks vc = {ovs_read,ovs_seek,ovs_close,ovs_tell}; に変更。(多分関係ないです) if( snd->data[ 15 ].len == 0 ){ の前の行に、snd->data[ 15 ].len=0; を追加。(IPCサウンド再生完了を待たないだけです) 次、ovstream.cの変更。 if( (readseek + readsize) >= pStream->srcsize ) readsize -= (readseek - pStream->srcsize); // 詰めました。 を、if( (readseek + readsize) > pStream->srcsize ) readsize=pStream->srcsize-readseek; に変更。 case SEEK_END: seek = pStream->srcsize + offset; break; を、case SEEK_END: seek=pStream->srcsize-offset; break; に変更。 で、for(idx=0;idx<read/4;idx+=2) iprintf( "%04x", ((u16*)buffer)[idx]); でそれっぽい波形がでたので大丈夫かも。(音出ししてないので自信がないw ちょっと気になったのは、IPCにreadではなくBUFFER_SIZEを渡していますが、oggライブラリは常に要求した分だけデコードしてくれる訳じゃないので注意です。BUFFER_SIZEを超えないだけで少ないことはあります。(というか基本的にてきとーなサイズを返してくるみたいです) いちお、動いた(かもしれない)ファイルをアップしておきます。参考になればいいのですが…。 mdxonlinemirror.dyndns.org/oggtest200608230244.zip
|

|