From 0bfcf0b87d42ba565e64850d11b4f17222e8c80c Mon Sep 17 00:00:00 2001 From: GrapheneCt <57592952+GrapheneCt@users.noreply.github.com> Date: Mon, 6 Jul 2020 00:53:47 +0200 Subject: [PATCH] Fixed an issue with volume limiter for EQ --- source/audio/vitaaudiolib.c | 38 +++++++++++++++++++++++-------------- source/utils.c | 13 +------------ 2 files changed, 25 insertions(+), 26 deletions(-) diff --git a/source/audio/vitaaudiolib.c b/source/audio/vitaaudiolib.c index 0afafd9..73130b8 100644 --- a/source/audio/vitaaudiolib.c +++ b/source/audio/vitaaudiolib.c @@ -1,8 +1,10 @@ #include #include +#include #include "vitaaudiolib.h" #include "utils.h" +#include "config.h" static int audio_ready = 0; static short vitaAudioSoundBuffer[2][VITA_NUM_AUDIO_SAMPLES][2]; @@ -11,19 +13,6 @@ static volatile int audio_terminate = 0; extern SceUID event_flag_uid; -void vitaAudioSetVolume(int left, int right) { - - int vol[2] = { left, right }; - - if (vol[0] > SCE_AUDIO_OUT_MAX_VOL) - vol[0] = SCE_AUDIO_OUT_MAX_VOL; - - if (vol[1] > SCE_AUDIO_OUT_MAX_VOL) - vol[1] = SCE_AUDIO_OUT_MAX_VOL; - - sceAudioOutSetVolume(vitaAudioStatus.handle, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, vol); -} - void vitaAudioSetChannelCallback(vitaAudioCallback_t callback, void *userdata) { volatile VITA_audio_channelinfo *pci = &vitaAudioStatus; @@ -36,6 +25,7 @@ void vitaAudioSetChannelCallback(vitaAudioCallback_t callback, void *userdata) { static int vitaAudioChannelThread(unsigned int args, void *argp) { volatile int bufidx = 0; void *bufptr; + int vol[2]; while (audio_terminate == 0) { sceKernelWaitEventFlag(event_flag_uid, FLAG_ELEVENMPVA_IS_DECODER_USED, SCE_KERNEL_EVF_WAITMODE_AND, NULL, NULL); @@ -51,8 +41,28 @@ static int vitaAudioChannelThread(unsigned int args, void *argp) { *(ptr++) = 0; } - if (audio_ready) + if (audio_ready) { + sceAppUtilSystemParamGetInt(9, &vol[0]); + + if (config.eq_volume) { + if (config.eq_mode == 0) { + vol[1] = vol[0]; + sceAudioOutSetVolume(vitaAudioStatus.handle, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, vol); + } + else { + vol[0] = vol[0] / 2; + vol[1] = vol[0]; + sceAudioOutSetVolume(vitaAudioStatus.handle, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, vol); + } + } + else { + vol[1] = vol[0]; + sceAudioOutSetVolume(vitaAudioStatus.handle, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, vol); + } + + sceAudioOutSetVolume(vitaAudioStatus.handle, SCE_AUDIO_VOLUME_FLAG_L_CH | SCE_AUDIO_VOLUME_FLAG_R_CH, vol); sceAudioOutOutput(vitaAudioStatus.handle, bufptr); + } bufidx = (bufidx ? 0 : 1); } diff --git a/source/utils.c b/source/utils.c index 8c5a47e..3a7c4e7 100644 --- a/source/utils.c +++ b/source/utils.c @@ -145,17 +145,6 @@ int Utils_AppStatusWatchdog(SceSize argc, void* argv) { break; } - //check volume - - sceAppUtilSystemParamGetInt(9, &vol); - - if (config.eq_volume) { - if (config.eq_mode == 0) - vitaAudioSetVolume(vol, vol); - else - vitaAudioSetVolume(vol / 2, vol / 2); - } - //check notifications if (config.notify_mode > 0) { @@ -183,7 +172,7 @@ int Utils_AppStatusWatchdog(SceSize argc, void* argv) { sceClibPrintf("LPDDR2: %f MB\n", budget_info.freeLPDDR2 / 1024.0 / 1024.0);*/ #endif - sceKernelDelayThread(100 * 1000); + sceKernelDelayThread(10 * 1000); } return 0;