PSP自作ソフト開発ス ..
[2ch|▼Menu]
210:151
09/01/31 12:06:37 uFD6DjCd
>>205
#define MAX_BPS 24 // Max supported Bit resolution
#define MAX_NCH 8 // Max supported number of channels
#define MAX_BSIZE (MAX_BPS>>3)
#define BUFFER_NUM 2
#define BUFFERS_NUM 4608
static char sample_buffer[BUFFER_NUM][BUFFERS_NUM * MAX_BSIZE * MAX_NCH] __attribute__((aligned(64)));
int pcmhandle;
int main(){
//初期化略
pcmhandle=sceAudioChReserve(PSP_AUDIO_NEXT_CHANNEL,BUFFERS_NUM,PSP_AUDIO_FORMAT_STEREO);
int index = 0;
SceUID thid = sceKernelCreateThread(
"sound_thread",
sound_thread,
18,
65536,
PSP_THREAD_ATTR_USER,
0
);
sceKernelStartThread(thid, 0, 0);//最初の分のデコード
sceKernelDelayThread(10000);
while(1){
sceCtrlReadBufferPositive(&pad, 1);

sceKernelDelayThread(20 * sceAudioGetChannelRestLen(pcmhandle));//少し休む
while (sceAudioGetChannelRestLen(pcmhandle) > 63) { } //busy loop?

sceAudioOutput(pcmhandle,PSP_AUDIO_VOLUME_MAX,sample_buffer[index]);

index = (index + 1) % BUFFER_NUM;//バッファ切り替え

sceKernelStartThread(thid, 0, 0);//再生している間に次のをデコード

if ((pad.Buttons & PSP_CTRL_CROSS)){//強制終了用

player_stop ();
sceKernelDelayThread(100000);
break;
}//ifend
}//whileend
//終了処理略
}//mainend

//ここからデコードスレッド
int sound_thread(unsigned int args, void *argp)
{
static int index = 0;
counter +=decode2wav(sample_buffer[index]);//デコードしてバッファに格納。これは使用している圧縮形式のライブラリにあったもの
index = (index + 1) % BUFFER_NUM;
sceKernelExitThread(0);
return 0;
}//ここまで

>>206
いやこれであってるよ。
逆にこれしないと早送りになる。
まあ途切れるといえば途切れるけど。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4564日前に更新/245 KB
担当:undef