#include #include #include #include #include #include "SceTypes.hpp" #include "prx/libc/include/General.hpp" namespace { constexpr std::int32_t VOICE_QOS_APP_TYPE_GAME = 0x20000000; constexpr std::int32_t VOICE_QOS_APP_TYPE_10000000 = 0x10000000; std::mutex g_mutex; bool g_initialized = false; } extern "C" { int APS5_VABI sceVoiceQoSInit(void* mem_block, uint32_t mem_size, int32_t app_type) { if (!mem_block || mem_size == 0) throw std::invalid_argument("sceVoiceQoSInit: null or empty memory block"); if (app_type != VOICE_QOS_APP_TYPE_GAME && app_type != VOICE_QOS_APP_TYPE_10000000) throw std::invalid_argument("sceVoiceQoSInit: unsupported app type " + std::to_string(app_type)); std::lock_guard lock(g_mutex); if (g_initialized) throw std::runtime_error("sceVoiceQoSInit: already initialized"); g_initialized = true; return 0; } int APS5_VABI sceVoiceQoSEnd() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSCreateLocalEndpoint() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSDeleteLocalEndpoint() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSCreateRemoteEndpoint() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSDeleteRemoteEndpoint() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSConnect() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSDisconnect() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSSetLocalEndpointAttribute() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSSetRemoteEndpointAttribute() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSReadPacket() { NotImplemented_nid_no_patch(__func__); return 0; } int APS5_VABI sceVoiceQoSWritePacket() { NotImplemented_nid_no_patch(__func__); return 0; } }