diff options
Diffstat (limited to 'src/audio_core/info_updater.cpp')
| -rw-r--r-- | src/audio_core/info_updater.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/audio_core/info_updater.cpp b/src/audio_core/info_updater.cpp index f53ce21a5..d3ac90827 100644 --- a/src/audio_core/info_updater.cpp +++ b/src/audio_core/info_updater.cpp | |||
| @@ -14,9 +14,9 @@ | |||
| 14 | 14 | ||
| 15 | namespace AudioCore { | 15 | namespace AudioCore { |
| 16 | 16 | ||
| 17 | InfoUpdater::InfoUpdater(const std::vector<u8>& in_params, std::vector<u8>& out_params, | 17 | InfoUpdater::InfoUpdater(const std::vector<u8>& in_params_, std::vector<u8>& out_params_, |
| 18 | BehaviorInfo& behavior_info) | 18 | BehaviorInfo& behavior_info_) |
| 19 | : in_params(in_params), out_params(out_params), behavior_info(behavior_info) { | 19 | : in_params(in_params_), out_params(out_params_), behavior_info(behavior_info_) { |
| 20 | ASSERT( | 20 | ASSERT( |
| 21 | AudioCommon::CanConsumeBuffer(in_params.size(), 0, sizeof(AudioCommon::UpdateDataHeader))); | 21 | AudioCommon::CanConsumeBuffer(in_params.size(), 0, sizeof(AudioCommon::UpdateDataHeader))); |
| 22 | std::memcpy(&input_header, in_params.data(), sizeof(AudioCommon::UpdateDataHeader)); | 22 | std::memcpy(&input_header, in_params.data(), sizeof(AudioCommon::UpdateDataHeader)); |
| @@ -64,7 +64,6 @@ bool InfoUpdater::UpdateBehaviorInfo(BehaviorInfo& in_behavior_info) { | |||
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | bool InfoUpdater::UpdateMemoryPools(std::vector<ServerMemoryPoolInfo>& memory_pool_info) { | 66 | bool InfoUpdater::UpdateMemoryPools(std::vector<ServerMemoryPoolInfo>& memory_pool_info) { |
| 67 | const auto force_mapping = behavior_info.IsMemoryPoolForceMappingEnabled(); | ||
| 68 | const auto memory_pool_count = memory_pool_info.size(); | 67 | const auto memory_pool_count = memory_pool_info.size(); |
| 69 | const auto total_memory_pool_in = sizeof(ServerMemoryPoolInfo::InParams) * memory_pool_count; | 68 | const auto total_memory_pool_in = sizeof(ServerMemoryPoolInfo::InParams) * memory_pool_count; |
| 70 | const auto total_memory_pool_out = sizeof(ServerMemoryPoolInfo::OutParams) * memory_pool_count; | 69 | const auto total_memory_pool_out = sizeof(ServerMemoryPoolInfo::OutParams) * memory_pool_count; |
| @@ -136,8 +135,8 @@ bool InfoUpdater::UpdateVoiceChannelResources(VoiceContext& voice_context) { | |||
| 136 | } | 135 | } |
| 137 | 136 | ||
| 138 | bool InfoUpdater::UpdateVoices(VoiceContext& voice_context, | 137 | bool InfoUpdater::UpdateVoices(VoiceContext& voice_context, |
| 139 | std::vector<ServerMemoryPoolInfo>& memory_pool_info, | 138 | [[maybe_unused]] std::vector<ServerMemoryPoolInfo>& memory_pool_info, |
| 140 | VAddr audio_codec_dsp_addr) { | 139 | [[maybe_unused]] VAddr audio_codec_dsp_addr) { |
| 141 | const auto voice_count = voice_context.GetVoiceCount(); | 140 | const auto voice_count = voice_context.GetVoiceCount(); |
| 142 | std::vector<VoiceInfo::InParams> voice_in(voice_count); | 141 | std::vector<VoiceInfo::InParams> voice_in(voice_count); |
| 143 | std::vector<VoiceInfo::OutParams> voice_out(voice_count); | 142 | std::vector<VoiceInfo::OutParams> voice_out(voice_count); |
| @@ -166,28 +165,28 @@ bool InfoUpdater::UpdateVoices(VoiceContext& voice_context, | |||
| 166 | 165 | ||
| 167 | // Update our voices | 166 | // Update our voices |
| 168 | for (std::size_t i = 0; i < voice_count; i++) { | 167 | for (std::size_t i = 0; i < voice_count; i++) { |
| 169 | auto& in_params = voice_in[i]; | 168 | auto& voice_in_params = voice_in[i]; |
| 170 | const auto channel_count = static_cast<std::size_t>(in_params.channel_count); | 169 | const auto channel_count = static_cast<std::size_t>(voice_in_params.channel_count); |
| 171 | // Skip if it's not currently in use | 170 | // Skip if it's not currently in use |
| 172 | if (!in_params.is_in_use) { | 171 | if (!voice_in_params.is_in_use) { |
| 173 | continue; | 172 | continue; |
| 174 | } | 173 | } |
| 175 | // Voice states for each channel | 174 | // Voice states for each channel |
| 176 | std::array<VoiceState*, AudioCommon::MAX_CHANNEL_COUNT> voice_states{}; | 175 | std::array<VoiceState*, AudioCommon::MAX_CHANNEL_COUNT> voice_states{}; |
| 177 | ASSERT(in_params.id < voice_count); | 176 | ASSERT(static_cast<std::size_t>(voice_in_params.id) < voice_count); |
| 178 | 177 | ||
| 179 | // Grab our current voice info | 178 | // Grab our current voice info |
| 180 | auto& voice_info = voice_context.GetInfo(static_cast<std::size_t>(in_params.id)); | 179 | auto& voice_info = voice_context.GetInfo(static_cast<std::size_t>(voice_in_params.id)); |
| 181 | 180 | ||
| 182 | ASSERT(channel_count <= AudioCommon::MAX_CHANNEL_COUNT); | 181 | ASSERT(channel_count <= AudioCommon::MAX_CHANNEL_COUNT); |
| 183 | 182 | ||
| 184 | // Get all our channel voice states | 183 | // Get all our channel voice states |
| 185 | for (std::size_t channel = 0; channel < channel_count; channel++) { | 184 | for (std::size_t channel = 0; channel < channel_count; channel++) { |
| 186 | voice_states[channel] = | 185 | voice_states[channel] = |
| 187 | &voice_context.GetState(in_params.voice_channel_resource_ids[channel]); | 186 | &voice_context.GetState(voice_in_params.voice_channel_resource_ids[channel]); |
| 188 | } | 187 | } |
| 189 | 188 | ||
| 190 | if (in_params.is_new) { | 189 | if (voice_in_params.is_new) { |
| 191 | // Default our values for our voice | 190 | // Default our values for our voice |
| 192 | voice_info.Initialize(); | 191 | voice_info.Initialize(); |
| 193 | if (channel_count == 0 || channel_count > AudioCommon::MAX_CHANNEL_COUNT) { | 192 | if (channel_count == 0 || channel_count > AudioCommon::MAX_CHANNEL_COUNT) { |
| @@ -201,12 +200,12 @@ bool InfoUpdater::UpdateVoices(VoiceContext& voice_context, | |||
| 201 | } | 200 | } |
| 202 | 201 | ||
| 203 | // Update our voice | 202 | // Update our voice |
| 204 | voice_info.UpdateParameters(in_params, behavior_info); | 203 | voice_info.UpdateParameters(voice_in_params, behavior_info); |
| 205 | // TODO(ogniK): Handle mapping errors with behavior info based on in params response | 204 | // TODO(ogniK): Handle mapping errors with behavior info based on in params response |
| 206 | 205 | ||
| 207 | // Update our wave buffers | 206 | // Update our wave buffers |
| 208 | voice_info.UpdateWaveBuffers(in_params, voice_states, behavior_info); | 207 | voice_info.UpdateWaveBuffers(voice_in_params, voice_states, behavior_info); |
| 209 | voice_info.WriteOutStatus(voice_out[i], in_params, voice_states); | 208 | voice_info.WriteOutStatus(voice_out[i], voice_in_params, voice_states); |
| 210 | } | 209 | } |
| 211 | 210 | ||
| 212 | if (!AudioCommon::CanConsumeBuffer(out_params.size(), output_offset, voice_out_size)) { | 211 | if (!AudioCommon::CanConsumeBuffer(out_params.size(), output_offset, voice_out_size)) { |
| @@ -352,8 +351,8 @@ ResultCode InfoUpdater::UpdateMixes(MixContext& mix_context, std::size_t mix_buf | |||
| 352 | for (std::size_t i = 0; i < mix_count; i++) { | 351 | for (std::size_t i = 0; i < mix_count; i++) { |
| 353 | const auto& in = mix_in_params[i]; | 352 | const auto& in = mix_in_params[i]; |
| 354 | total_buffer_count += in.buffer_count; | 353 | total_buffer_count += in.buffer_count; |
| 355 | if (in.dest_mix_id > mix_count && in.dest_mix_id != AudioCommon::NO_MIX && | 354 | if (static_cast<std::size_t>(in.dest_mix_id) > mix_count && |
| 356 | in.mix_id != AudioCommon::FINAL_MIX) { | 355 | in.dest_mix_id != AudioCommon::NO_MIX && in.mix_id != AudioCommon::FINAL_MIX) { |
| 357 | LOG_ERROR( | 356 | LOG_ERROR( |
| 358 | Audio, | 357 | Audio, |
| 359 | "Invalid mix destination, mix_id={:X}, dest_mix_id={:X}, mix_buffer_count={:X}", | 358 | "Invalid mix destination, mix_id={:X}, dest_mix_id={:X}, mix_buffer_count={:X}", |
| @@ -446,7 +445,7 @@ bool InfoUpdater::UpdatePerformanceBuffer() { | |||
| 446 | return true; | 445 | return true; |
| 447 | } | 446 | } |
| 448 | 447 | ||
| 449 | bool InfoUpdater::UpdateErrorInfo(BehaviorInfo& in_behavior_info) { | 448 | bool InfoUpdater::UpdateErrorInfo([[maybe_unused]] BehaviorInfo& in_behavior_info) { |
| 450 | const auto total_beahvior_info_out = sizeof(BehaviorInfo::OutParams); | 449 | const auto total_beahvior_info_out = sizeof(BehaviorInfo::OutParams); |
| 451 | 450 | ||
| 452 | if (!AudioCommon::CanConsumeBuffer(out_params.size(), output_offset, total_beahvior_info_out)) { | 451 | if (!AudioCommon::CanConsumeBuffer(out_params.size(), output_offset, total_beahvior_info_out)) { |