NintendoDS(NDS)非公式開発 Part1at GAMEDEVNintendoDS(NDS)非公式開発 Part1 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト277:192 06/08/22 02:29:51 3eB/98xj 頭ごなしに否定的なレスばかりではアレなので報告&質問。 libogg、libvorbisの最新ソースを拾ってビルド。 あちこち調べながら、ov_open_callbacksが帰ってこずに固まる現象に悩まされております。 # なんでov_open_callbacksかというと、binファイルをメモリブロックとして持っているから ov_open_callbacksは、悪評が結構あるようで、RC3のものにしろとかいろいろ言われてるけど、今のところどっちもダメ。 ちなみにWindows2000+VisualStudio2005で同じことをすると動く。 スレ違いっぽいがこのあたりに通じている人いませんか? あと、16チャンネル中、1チャンネルを再生用に占拠すれば意外にストリーミング再生はできるんじゃないかと軽く思ってみたり。 278:Moonlight 06/08/22 03:22:21 ifxxTdvS >>277 音出さないでoggデコードだけするシンプルなサンプルなら、mspv10_oggのソースがわかりやすいかもしれません。 MoonShell 1.31のダウンロードページのMSPV40SDKに入ってます。 ストリームPCM周りは全部MoonShellに依託するので音は出ませんが。 main.cppのStart関数が始めにファイルハンドル付きで呼ばれて、あとは定期的にUpdate関数が呼び出されるだけです。で、最後にFree関数で解放。 ov_open_callbacks使ってますが、別段問題ありませんでした。 メインメモリに直接マッピングされたoggバイナリを展開するなら、 size_t callbacks_read_func (void *ptr, size_t size, size_t nmemb, void *datasource){ s32 len=size*nmemb; if((FileSize<=FileOffset)||(len<=0)) return(0); if(len>(FileSize-FileOffset)) len=FileSize-FileOffset; u8 *pu8=(u8*)ptr; for(s32 cnt=0;cnt<len;cnt++){ pu8[cnt]=FileBuf[FileOffset]; FileOffset++; } return(len); } // 開業多すぎと怒られたので詰めました…見づらい ってな感じで。(上のは適当に書いたので動かないと思います。雰囲気だけ) また、oggライブラリはoggTremorじゃないとCPUが間に合わなかった記憶があります。 -DLOW_ACCURACYしないとoggTremorでも音飛びしましたが、これは私の最適化技術の低さの成せる技だと思います。 あと蛇足ですが、-fsigned-charもやっとかないとダメだったような気がします。 とりあえず、いま192さんが作っているプロジェクトのMakefileに-fsigned-charを追加してみてはいかがでしょうか。 わたしも否定的なレスばかりにならないように心掛けたいです。(ほんとに(苦笑 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch