audio_core/audio_renderer: Name previously unknown parameters of AudioRendererParameter
Provides names for previously unknown entries (aside from the two u8 that appear to be padding bytes, and a single word that also appears to be reserved or padding). This will be useful in subsequent changes when unstubbing behavior related to the audio renderer services.
This commit is contained in:
parent
10d1d58390
commit
0e1b5acc6a
|
@ -46,16 +46,18 @@ struct AudioRendererParameter {
|
||||||
u32_le sample_rate;
|
u32_le sample_rate;
|
||||||
u32_le sample_count;
|
u32_le sample_count;
|
||||||
u32_le mix_buffer_count;
|
u32_le mix_buffer_count;
|
||||||
u32_le unknown_c;
|
u32_le submix_count;
|
||||||
u32_le voice_count;
|
u32_le voice_count;
|
||||||
u32_le sink_count;
|
u32_le sink_count;
|
||||||
u32_le effect_count;
|
u32_le effect_count;
|
||||||
u32_le unknown_1c;
|
u32_le performance_frame_count;
|
||||||
u8 unknown_20;
|
u8 is_voice_drop_enabled;
|
||||||
INSERT_PADDING_BYTES(3);
|
u8 unknown_21;
|
||||||
|
u8 unknown_22;
|
||||||
|
u8 execution_mode;
|
||||||
u32_le splitter_count;
|
u32_le splitter_count;
|
||||||
u32_le unknown_2c;
|
u32_le num_splitter_send_channels;
|
||||||
INSERT_PADDING_WORDS(1);
|
u32_le unknown_30;
|
||||||
u32_le revision;
|
u32_le revision;
|
||||||
};
|
};
|
||||||
static_assert(sizeof(AudioRendererParameter) == 52, "AudioRendererParameter is an invalid size");
|
static_assert(sizeof(AudioRendererParameter) == 52, "AudioRendererParameter is an invalid size");
|
||||||
|
|
|
@ -262,20 +262,20 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) {
|
||||||
LOG_DEBUG(Service_Audio, "called");
|
LOG_DEBUG(Service_Audio, "called");
|
||||||
|
|
||||||
u64 buffer_sz = Common::AlignUp(4 * params.mix_buffer_count, 0x40);
|
u64 buffer_sz = Common::AlignUp(4 * params.mix_buffer_count, 0x40);
|
||||||
buffer_sz += params.unknown_c * 1024;
|
buffer_sz += params.submix_count * 1024;
|
||||||
buffer_sz += 0x940 * (params.unknown_c + 1);
|
buffer_sz += 0x940 * (params.submix_count + 1);
|
||||||
buffer_sz += 0x3F0 * params.voice_count;
|
buffer_sz += 0x3F0 * params.voice_count;
|
||||||
buffer_sz += Common::AlignUp(8 * (params.unknown_c + 1), 0x10);
|
buffer_sz += Common::AlignUp(8 * (params.submix_count + 1), 0x10);
|
||||||
buffer_sz += Common::AlignUp(8 * params.voice_count, 0x10);
|
buffer_sz += Common::AlignUp(8 * params.voice_count, 0x10);
|
||||||
buffer_sz +=
|
buffer_sz += Common::AlignUp(
|
||||||
Common::AlignUp((0x3C0 * (params.sink_count + params.unknown_c) + 4 * params.sample_count) *
|
(0x3C0 * (params.sink_count + params.submix_count) + 4 * params.sample_count) *
|
||||||
(params.mix_buffer_count + 6),
|
(params.mix_buffer_count + 6),
|
||||||
0x40);
|
0x40);
|
||||||
|
|
||||||
if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) {
|
if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) {
|
||||||
u32 count = params.unknown_c + 1;
|
const u32 count = params.submix_count + 1;
|
||||||
u64 node_count = Common::AlignUp(count, 0x40);
|
u64 node_count = Common::AlignUp(count, 0x40);
|
||||||
u64 node_state_buffer_sz =
|
const u64 node_state_buffer_sz =
|
||||||
4 * (node_count * node_count) + 0xC * node_count + 2 * (node_count / 8);
|
4 * (node_count * node_count) + 0xC * node_count + 2 * (node_count / 8);
|
||||||
u64 edge_matrix_buffer_sz = 0;
|
u64 edge_matrix_buffer_sz = 0;
|
||||||
node_count = Common::AlignUp(count * count, 0x40);
|
node_count = Common::AlignUp(count * count, 0x40);
|
||||||
|
@ -289,19 +289,19 @@ void AudRenU::GetAudioRendererWorkBufferSize(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
buffer_sz += 0x20 * (params.effect_count + 4 * params.voice_count) + 0x50;
|
buffer_sz += 0x20 * (params.effect_count + 4 * params.voice_count) + 0x50;
|
||||||
if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) {
|
if (IsFeatureSupported(AudioFeatures::Splitter, params.revision)) {
|
||||||
buffer_sz += 0xE0 * params.unknown_2c;
|
buffer_sz += 0xE0 * params.num_splitter_send_channels;
|
||||||
buffer_sz += 0x20 * params.splitter_count;
|
buffer_sz += 0x20 * params.splitter_count;
|
||||||
buffer_sz += Common::AlignUp(4 * params.unknown_2c, 0x10);
|
buffer_sz += Common::AlignUp(4 * params.num_splitter_send_channels, 0x10);
|
||||||
}
|
}
|
||||||
buffer_sz = Common::AlignUp(buffer_sz, 0x40) + 0x170 * params.sink_count;
|
buffer_sz = Common::AlignUp(buffer_sz, 0x40) + 0x170 * params.sink_count;
|
||||||
u64 output_sz = buffer_sz + 0x280 * params.sink_count + 0x4B0 * params.effect_count +
|
u64 output_sz = buffer_sz + 0x280 * params.sink_count + 0x4B0 * params.effect_count +
|
||||||
((params.voice_count * 256) | 0x40);
|
((params.voice_count * 256) | 0x40);
|
||||||
|
|
||||||
if (params.unknown_1c >= 1) {
|
if (params.performance_frame_count >= 1) {
|
||||||
output_sz = Common::AlignUp(((16 * params.sink_count + 16 * params.effect_count +
|
output_sz = Common::AlignUp(((16 * params.sink_count + 16 * params.effect_count +
|
||||||
16 * params.voice_count + 16) +
|
16 * params.voice_count + 16) +
|
||||||
0x658) *
|
0x658) *
|
||||||
(params.unknown_1c + 1) +
|
(params.performance_frame_count + 1) +
|
||||||
0xc0,
|
0xc0,
|
||||||
0x40) +
|
0x40) +
|
||||||
output_sz;
|
output_sz;
|
||||||
|
|
Reference in New Issue