cellAudio: re-use event_sources array

This commit is contained in:
Megamouse 2023-03-05 20:26:22 +01:00
parent f2b51668b4
commit 69ecf8aea7
2 changed files with 19 additions and 19 deletions

View File

@ -274,8 +274,8 @@ void audio_ringbuffer::process_resampled_data()
{
if (!cfg.time_stretching_enabled) return;
const auto samples = resampler.get_samples(static_cast<u32>(cb_ringbuf.get_free_size() / (cfg.audio_sample_size * static_cast<u32>(cfg.backend_ch_cnt))));
commit_data(samples.first, samples.second);
const auto [buffer, samples] = resampler.get_samples(static_cast<u32>(cb_ringbuf.get_free_size() / (cfg.audio_sample_size * static_cast<u32>(cfg.backend_ch_cnt))));
commit_data(buffer, samples);
}
void audio_ringbuffer::commit_data(f32* buf, u32 sample_cnt)
@ -455,7 +455,7 @@ std::tuple<u32, u32, u32, u32> cell_audio_thread::count_port_buffer_tags()
u32 untouched = 0;
u32 incomplete = 0;
for (auto& port : ports)
for (audio_port& port : ports)
{
if (port.state != audio_port_state::started) continue;
active++;
@ -526,7 +526,7 @@ std::tuple<u32, u32, u32, u32> cell_audio_thread::count_port_buffer_tags()
void cell_audio_thread::reset_ports(s32 offset)
{
// Memset buffer to 0 and tag
for (auto& port : ports)
for (audio_port& port : ports)
{
if (port.state != audio_port_state::started) continue;
@ -548,7 +548,7 @@ void cell_audio_thread::advance(u64 timestamp)
// update ports
reset_ports(0);
for (auto& port : ports)
for (audio_port& port : ports)
{
if (port.state != audio_port_state::started) continue;
@ -572,12 +572,11 @@ void cell_audio_thread::advance(u64 timestamp)
// send aftermix event (normal audio event)
std::array<std::shared_ptr<lv2_event_queue>, MAX_AUDIO_EVENT_QUEUES> queues;
std::array<u64, MAX_AUDIO_EVENT_QUEUES> event_sources;
u32 queue_count = 0;
event_period++;
for (const auto& key_inf : keys)
for (const key_info& key_inf : keys)
{
if (key_inf.flags & CELL_AUDIO_EVENTFLAG_NOMIX)
{
@ -648,9 +647,9 @@ namespace audio
if (auto& g_audio = g_fxo->get<cell_audio>(); g_fxo->is_init<cell_audio>())
{
// Only reboot the audio renderer if a relevant setting changed
const auto new_raw = get_raw_config();
const cell_audio_config::raw_config new_raw = get_raw_config();
if (const auto raw = g_audio.cfg.raw;
if (const cell_audio_config::raw_config raw = g_audio.cfg.raw;
force_reset ||
raw.audio_device != new_raw.audio_device ||
raw.desired_buffer_duration != new_raw.desired_buffer_duration ||
@ -735,7 +734,7 @@ void cell_audio_thread::operator()()
{
loop_count++;
const auto update_req = m_update_configuration.observe();
const audio_backend_update update_req = m_update_configuration.observe();
if (update_req != audio_backend_update::NONE)
{
cellAudio.warning("Updating cell_audio_thread configuration");
@ -1057,7 +1056,7 @@ void cell_audio_thread::mix(float* out_buffer, s32 offset)
std::memset(out_buffer, 0, out_buffer_sz * sizeof(float));
// mixing
for (auto& port : ports)
for (audio_port& port : ports)
{
if (port.state != audio_port_state::started) continue;
@ -1070,7 +1069,7 @@ void cell_audio_thread::mix(float* out_buffer, s32 offset)
// spread port volume changes over 13ms
auto step_volume = [master_volume, &m](audio_port& port)
{
const auto param = port.level_set.load();
const audio_port::level_set_t param = port.level_set.load();
if (param.inc != 0.0f)
{
@ -1180,11 +1179,11 @@ void cell_audio_thread::mix(float* out_buffer, s32 offset)
void cell_audio_thread::finish_port_volume_stepping()
{
// part of cellAudioSetPortLevel functionality
for (auto& port : ports)
for (audio_port& port : ports)
{
if (port.state != audio_port_state::started) continue;
const auto param = port.level_set.load();
const audio_port::level_set_t param = port.level_set.load();
port.level = param.value;
port.level_set.compare_and_swap(param, { param.value, 0.0f });
}
@ -1312,7 +1311,7 @@ error_code cellAudioPortOpen(vm::ptr<CellAudioPortParam> audioParam, vm::ptr<u32
}
// Open audio port
const auto port = g_audio.open_port();
audio_port* port = g_audio.open_port();
if (!port)
{
@ -1373,7 +1372,7 @@ error_code cellAudioGetPortConfig(u32 portNum, vm::ptr<CellAudioPortConfig> port
portConfig->readIndexAddr = port.index;
switch (auto state = port.state.load())
switch (audio_port_state state = port.state.load())
{
case audio_port_state::closed:
portConfig->status = CELL_AUDIO_STATUS_CLOSE;
@ -1414,7 +1413,7 @@ error_code cellAudioPortStart(u32 portNum)
return CELL_AUDIO_ERROR_PARAM;
}
switch (auto state = g_audio.ports[portNum].state.compare_and_swap(audio_port_state::opened, audio_port_state::started))
switch (audio_port_state state = g_audio.ports[portNum].state.compare_and_swap(audio_port_state::opened, audio_port_state::started))
{
case audio_port_state::closed: return CELL_AUDIO_ERROR_PORT_NOT_OPEN;
case audio_port_state::started: return CELL_AUDIO_ERROR_PORT_ALREADY_RUN;
@ -1441,7 +1440,7 @@ error_code cellAudioPortClose(u32 portNum)
return CELL_AUDIO_ERROR_PARAM;
}
switch (auto state = g_audio.ports[portNum].state.exchange(audio_port_state::closed))
switch (audio_port_state state = g_audio.ports[portNum].state.exchange(audio_port_state::closed))
{
case audio_port_state::closed: return CELL_AUDIO_ERROR_PORT_NOT_OPEN;
case audio_port_state::started: return CELL_OK;
@ -1468,7 +1467,7 @@ error_code cellAudioPortStop(u32 portNum)
return CELL_AUDIO_ERROR_PARAM;
}
switch (auto state = g_audio.ports[portNum].state.compare_and_swap(audio_port_state::started, audio_port_state::opened))
switch (audio_port_state state = g_audio.ports[portNum].state.compare_and_swap(audio_port_state::started, audio_port_state::opened))
{
case audio_port_state::closed: return CELL_AUDIO_ERROR_PORT_NOT_RUN;
case audio_port_state::started: return CELL_OK;

View File

@ -389,6 +389,7 @@ public:
u32 key_count = 0;
u8 event_period = 0;
std::array<u64, MAX_AUDIO_EVENT_QUEUES> event_sources{};
struct key_info
{