mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
116 lines
2.6 KiB
C
116 lines
2.6 KiB
C
#define NX_SERVICE_ASSUME_NON_DOMAIN
|
|
#include "service_guard.h"
|
|
#include "services/aud.h"
|
|
#include "runtime/hosversion.h"
|
|
|
|
static Service g_audaSrv;
|
|
static Service g_auddSrv;
|
|
|
|
NX_GENERATE_SERVICE_GUARD(auda);
|
|
NX_GENERATE_SERVICE_GUARD(audd);
|
|
|
|
Result _audaInitialize(void) {
|
|
if (hosversionBefore(11,0,0))
|
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
|
|
|
return smGetService(&g_audaSrv, "aud:a");
|
|
}
|
|
|
|
void _audaCleanup(void) {
|
|
serviceClose(&g_audaSrv);
|
|
}
|
|
|
|
Result _auddInitialize(void) {
|
|
return smGetService(&g_auddSrv, "aud:d");
|
|
}
|
|
|
|
void _auddCleanup(void) {
|
|
serviceClose(&g_auddSrv);
|
|
}
|
|
|
|
Service* audaGetServiceSession(void) {
|
|
return &g_audaSrv;
|
|
}
|
|
|
|
Service* auddGetServiceSession(void) {
|
|
return &g_auddSrv;
|
|
}
|
|
|
|
Result audaRequestSuspendAudio(u64 pid, u64 delay) {
|
|
const struct {
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { pid, delay };
|
|
|
|
return serviceDispatchIn(&g_audaSrv, 2, in);
|
|
}
|
|
|
|
Result audaRequestResumeAudio(u64 pid, u64 delay) {
|
|
const struct {
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { pid, delay };
|
|
|
|
return serviceDispatchIn(&g_audaSrv, 3, in);
|
|
}
|
|
|
|
Result audaGetAudioOutputProcessMasterVolume(u64 pid, float* volume_out) {
|
|
return serviceDispatchInOut(&g_audaSrv, 4, pid, *volume_out);
|
|
}
|
|
|
|
Result audaSetAudioOutputProcessMasterVolume(u64 pid, u64 delay, float volume) {
|
|
const struct {
|
|
float volume;
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { volume, pid, delay };
|
|
|
|
return serviceDispatchIn(&g_audaSrv, 5, in);
|
|
}
|
|
|
|
Result audaGetAudioInputProcessMasterVolume(u64 pid, float* volume_out) {
|
|
return serviceDispatchInOut(&g_audaSrv, 6, pid, *volume_out);
|
|
}
|
|
|
|
Result audaSetAudioInputProcessMasterVolume(u64 pid, u64 delay, float volume) {
|
|
const struct {
|
|
float volume;
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { volume, pid, delay };
|
|
|
|
return serviceDispatchIn(&g_audaSrv, 7, in);
|
|
}
|
|
|
|
Result audaGetAudioOutputProcessRecordVolume(u64 pid, float* volume_out) {
|
|
return serviceDispatchInOut(&g_audaSrv, 8, pid, *volume_out);
|
|
}
|
|
|
|
Result audaSetAudioOutputProcessRecordVolume(u64 pid, u64 delay, float volume) {
|
|
const struct {
|
|
float volume;
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { volume, pid, delay };
|
|
|
|
return serviceDispatchIn(&g_audaSrv, 9, in);
|
|
}
|
|
|
|
Result auddRequestSuspendAudioForDebug(u64 pid, u64 delay) {
|
|
const struct {
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { pid, delay };
|
|
|
|
return serviceDispatchIn(&g_auddSrv, 0, in);
|
|
}
|
|
|
|
Result auddRequestResumeAudioForDebug(u64 pid, u64 delay) {
|
|
const struct {
|
|
u64 pid;
|
|
u64 delay;
|
|
} in = { pid, delay };
|
|
|
|
return serviceDispatchIn(&g_auddSrv, 1, in);
|
|
}
|