u32 sceAudioSRCChReserve(u32 sampleCount, u32 freq, u32 format) { DEBUG_LOG(HLE, "sceAudioSRCChReserve(%08x, %08x, %08x)", sampleCount, freq, format); chans[src].reserved = true; chans[src].sampleCount = sampleCount; chans[src].format = format; __AudioSetOutputFrequency(freq); return 0; }
u32 sceAudioSetFrequency(u32 freq) { if (freq == 44100 || freq == 48000) { INFO_LOG(HLE, "sceAudioSetFrequency(%i)", freq); __AudioSetOutputFrequency(freq); return 0; } else { ERROR_LOG(HLE, "sceAudioSetFrequency(%i) - invalid frequency (must be 44.1 or 48 khz)", freq); return -1; } }
static u32 sceAudioSetFrequency(u32 freq) { if (freq == 44100 || freq == 48000) { INFO_LOG(SCEAUDIO, "sceAudioSetFrequency(%08x)", freq); __AudioSetOutputFrequency(freq); return 0; } else { ERROR_LOG(SCEAUDIO, "sceAudioSetFrequency(%08x) - invalid frequency (must be 44.1 or 48 khz)", freq); return SCE_ERROR_AUDIO_INVALID_FREQUENCY; } }
u32 sceAudioSRCChReserve(u32 sampleCount, u32 freq, u32 format) { if (chans[src].reserved) { DEBUG_LOG(HLE, "sceAudioSRCChReserve(%08x, %08x, %08x) - channel already reserved ", sampleCount, freq, format); return SCE_ERROR_AUDIO_CHANNEL_ALREADY_RESERVED; } else { DEBUG_LOG(HLE, "sceAudioSRCChReserve(%08x, %08x, %08x)", sampleCount, freq, format); chans[src].reserved = true; chans[src].sampleCount = sampleCount; chans[src].format = format; __AudioSetOutputFrequency(freq); } return 0; }
u32 sceVaudioChReserve(int sampleCount, int freq, int format) { if (vaudioReserved) { ERROR_LOG(HLE, "sceVaudioChReserve(%i, %i, %i) - already reserved", sampleCount, freq, format); return SCE_KERNEL_ERROR_BUSY; } // We still have to check the channel also, which gives a different error. if (chans[PSP_AUDIO_CHANNEL_VAUDIO].reserved) { ERROR_LOG(HLE, "sceVaudioChReserve(%i, %i, %i) - channel already reserved", sampleCount, freq, format); return SCE_ERROR_AUDIO_CHANNEL_ALREADY_RESERVED; } DEBUG_LOG(HLE, "sceVaudioChReserve(%i, %i, %i)", sampleCount, freq, format); chans[PSP_AUDIO_CHANNEL_VAUDIO].reserved = true; chans[PSP_AUDIO_CHANNEL_VAUDIO].sampleCount = sampleCount; chans[PSP_AUDIO_CHANNEL_VAUDIO].format = format == 2 ? PSP_AUDIO_FORMAT_STEREO : PSP_AUDIO_FORMAT_MONO; chans[PSP_AUDIO_CHANNEL_VAUDIO].leftVolume = 0; chans[PSP_AUDIO_CHANNEL_VAUDIO].rightVolume = 0; vaudioReserved = true; __AudioSetOutputFrequency(freq); return 0; }
static u32 sceAudioSRCChReserve(u32 sampleCount, u32 freq, u32 format) { if (format == 4) { ERROR_LOG(SCEAUDIO, "sceAudioSRCChReserve(%08x, %08x, %08x) - unexpected format", sampleCount, freq, format); return PSP_AUDIO_ERROR_SRC_FORMAT_4; } else if (format != 2) { ERROR_LOG(SCEAUDIO, "sceAudioSRCChReserve(%08x, %08x, %08x) - unexpected format", sampleCount, freq, format); return SCE_KERNEL_ERROR_INVALID_SIZE; } else if (sampleCount < 17 || sampleCount > 4111) { ERROR_LOG(SCEAUDIO, "sceAudioSRCChReserve(%08x, %08x, %08x) - invalid sample count", sampleCount, freq, format); return SCE_KERNEL_ERROR_INVALID_SIZE; } else if (chans[PSP_AUDIO_CHANNEL_SRC].reserved) { ERROR_LOG(SCEAUDIO, "sceAudioSRCChReserve(%08x, %08x, %08x) - channel already reserved ", sampleCount, freq, format); return SCE_ERROR_AUDIO_CHANNEL_ALREADY_RESERVED; } else { DEBUG_LOG(SCEAUDIO, "sceAudioSRCChReserve(%08x, %08x, %08x)", sampleCount, freq, format); chans[PSP_AUDIO_CHANNEL_SRC].reserved = true; chans[PSP_AUDIO_CHANNEL_SRC].sampleCount = sampleCount; chans[PSP_AUDIO_CHANNEL_SRC].format = format == 2 ? PSP_AUDIO_FORMAT_STEREO : PSP_AUDIO_FORMAT_MONO; __AudioSetOutputFrequency(freq); } return 0; }