mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-24 19:14:40 +00:00
more sound improvements
This commit is contained in:
parent
c9076e4ef9
commit
de82dea7f1
@ -3,13 +3,17 @@
|
|||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include "sdl_audio.h"
|
#include "sdl_audio.h"
|
||||||
|
#include <common/assert.h>
|
||||||
|
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
|
|
||||||
int SDLAudio::AudioInit() {
|
int SDLAudio::AudioInit() {
|
||||||
return SDL_InitSubSystem(SDL_INIT_AUDIO);
|
return SDL_InitSubSystem(SDL_INIT_AUDIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDLAudio::AudioOutOpen(int type, u32 samples_num, u32 freq, u32 format) {
|
int SDLAudio::AudioOutOpen(int type, u32 samples_num, u32 freq,
|
||||||
|
Libraries::AudioOut::OrbisAudioOutParam format) {
|
||||||
|
using Libraries::AudioOut::OrbisAudioOutParam;
|
||||||
std::scoped_lock lock{m_mutex};
|
std::scoped_lock lock{m_mutex};
|
||||||
for (int id = 0; id < portsOut.size(); id++) {
|
for (int id = 0; id < portsOut.size(); id++) {
|
||||||
auto& port = portsOut[id];
|
auto& port = portsOut[id];
|
||||||
@ -19,8 +23,32 @@ int SDLAudio::AudioOutOpen(int type, u32 samples_num, u32 freq, u32 format) {
|
|||||||
port.samples_num = samples_num;
|
port.samples_num = samples_num;
|
||||||
port.freq = freq;
|
port.freq = freq;
|
||||||
port.format = format;
|
port.format = format;
|
||||||
|
|
||||||
|
switch (format) {
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_S16_MONO:
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_FLOAT_MONO:
|
||||||
|
port.channels_num = 1;
|
||||||
|
break;
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_S16_STEREO:
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_FLOAT_STEREO:
|
||||||
|
port.channels_num = 2;
|
||||||
|
break;
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_S16_8CH:
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_FLOAT_8CH:
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_S16_8CH_STD:
|
||||||
|
case OrbisAudioOutParam::ORBIS_AUDIO_OUT_PARAM_FORMAT_FLOAT_8CH_STD:
|
||||||
|
port.channels_num = 8;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
UNREACHABLE_MSG("Unknown format");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < port.channels_num; i++) {
|
||||||
|
port.volume[i] = Libraries::AudioOut::SCE_AUDIO_OUT_VOLUME_0DB;
|
||||||
|
}
|
||||||
|
return id + 1;
|
||||||
}
|
}
|
||||||
return id + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1; // all ports are used
|
return -1; // all ports are used
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include "src/common/types.h"
|
#include "src/common/types.h"
|
||||||
|
#include <core/libraries/libsceaudioout.h>
|
||||||
|
|
||||||
namespace Audio {
|
namespace Audio {
|
||||||
|
|
||||||
@ -15,7 +16,7 @@ public:
|
|||||||
virtual ~SDLAudio() = default;
|
virtual ~SDLAudio() = default;
|
||||||
|
|
||||||
int AudioInit();
|
int AudioInit();
|
||||||
int AudioOutOpen(int type, u32 samples_num, u32 freq, u32 format);
|
int AudioOutOpen(int type, u32 samples_num, u32 freq, Libraries::AudioOut::OrbisAudioOutParam format);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct PortOut {
|
struct PortOut {
|
||||||
|
Loading…
Reference in New Issue
Block a user