Do not consider voice commands in time estimation, fix adpcm estimate

This commit is contained in:
Kelebek1 2023-09-16 20:48:45 +01:00
parent 9912704234
commit 5d7571114e
2 changed files with 8 additions and 6 deletions

View File

@ -27,12 +27,12 @@ u32 CommandProcessingTimeEstimatorVersion1::Estimate(
u32 CommandProcessingTimeEstimatorVersion1::Estimate( u32 CommandProcessingTimeEstimatorVersion1::Estimate(
const AdpcmDataSourceVersion1Command& command) const { const AdpcmDataSourceVersion1Command& command) const {
return static_cast<u32>(command.pitch * 0.25f * 1.2f); return static_cast<u32>(command.pitch * 0.46f * 1.2f);
} }
u32 CommandProcessingTimeEstimatorVersion1::Estimate( u32 CommandProcessingTimeEstimatorVersion1::Estimate(
const AdpcmDataSourceVersion2Command& command) const { const AdpcmDataSourceVersion2Command& command) const {
return static_cast<u32>(command.pitch * 0.25f * 1.2f); return static_cast<u32>(command.pitch * 0.46f * 1.2f);
} }
u32 CommandProcessingTimeEstimatorVersion1::Estimate( u32 CommandProcessingTimeEstimatorVersion1::Estimate(

View File

@ -684,11 +684,11 @@ u64 System::GenerateCommand(std::span<u8> in_command_buffer,
sink_context, splitter_context, perf_manager}; sink_context, splitter_context, perf_manager};
voice_context.SortInfo(); voice_context.SortInfo();
command_generator.GenerateVoiceCommands();
const auto start_estimated_time{drop_voice_param * const auto start_estimated_time{drop_voice_param *
static_cast<f32>(command_buffer.estimated_process_time)}; static_cast<f32>(command_buffer.estimated_process_time)};
command_generator.GenerateVoiceCommands();
command_generator.GenerateSubMixCommands(); command_generator.GenerateSubMixCommands();
command_generator.GenerateFinalMixCommands(); command_generator.GenerateFinalMixCommands();
command_generator.GenerateSinkCommands(); command_generator.GenerateSinkCommands();
@ -708,11 +708,13 @@ u64 System::GenerateCommand(std::span<u8> in_command_buffer,
const auto end_estimated_time{drop_voice_param * const auto end_estimated_time{drop_voice_param *
static_cast<f32>(command_buffer.estimated_process_time)}; static_cast<f32>(command_buffer.estimated_process_time)};
const auto dsp_time_limit{((time_limit_percent / 100.0f) * 2'880'000.0f) *
(static_cast<f32>(render_time_limit_percent) / 100.0f)};
const auto estimated_time{start_estimated_time - end_estimated_time}; const auto estimated_time{start_estimated_time - end_estimated_time};
const auto time_limit{static_cast<u32>( const auto time_limit{static_cast<u32>(std::max(dsp_time_limit + estimated_time, 0.0f))};
estimated_time + (((time_limit_percent / 100.0f) * 2'880'000.0) *
(static_cast<f32>(render_time_limit_percent) / 100.0f)))};
num_voices_dropped = num_voices_dropped =
DropVoices(command_buffer, static_cast<u32>(start_estimated_time), time_limit); DropVoices(command_buffer, static_cast<u32>(start_estimated_time), time_limit);
} }