diff options
| -rw-r--r-- | src/audio_core/audio_renderer.cpp | 6 | ||||
| -rw-r--r-- | src/audio_core/audio_renderer.h | 3 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.cpp | 9 | ||||
| -rw-r--r-- | src/core/hle/service/audio/audren_u.h | 1 |
4 files changed, 12 insertions, 7 deletions
diff --git a/src/audio_core/audio_renderer.cpp b/src/audio_core/audio_renderer.cpp index 4882a6cd8..da50a0bbc 100644 --- a/src/audio_core/audio_renderer.cpp +++ b/src/audio_core/audio_renderer.cpp | |||
| @@ -73,13 +73,15 @@ private: | |||
| 73 | EffectInStatus info{}; | 73 | EffectInStatus info{}; |
| 74 | }; | 74 | }; |
| 75 | AudioRenderer::AudioRenderer(Core::Timing::CoreTiming& core_timing, AudioRendererParameter params, | 75 | AudioRenderer::AudioRenderer(Core::Timing::CoreTiming& core_timing, AudioRendererParameter params, |
| 76 | Kernel::SharedPtr<Kernel::WritableEvent> buffer_event) | 76 | Kernel::SharedPtr<Kernel::WritableEvent> buffer_event, |
| 77 | std::size_t instance_number) | ||
| 77 | : worker_params{params}, buffer_event{buffer_event}, voices(params.voice_count), | 78 | : worker_params{params}, buffer_event{buffer_event}, voices(params.voice_count), |
| 78 | effects(params.effect_count) { | 79 | effects(params.effect_count) { |
| 79 | 80 | ||
| 80 | audio_out = std::make_unique<AudioCore::AudioOut>(); | 81 | audio_out = std::make_unique<AudioCore::AudioOut>(); |
| 81 | stream = audio_out->OpenStream(core_timing, STREAM_SAMPLE_RATE, STREAM_NUM_CHANNELS, | 82 | stream = audio_out->OpenStream(core_timing, STREAM_SAMPLE_RATE, STREAM_NUM_CHANNELS, |
| 82 | "AudioRenderer", [=]() { buffer_event->Signal(); }); | 83 | fmt::format("AudioRenderer-Instance{}", instance_number), |
| 84 | [=]() { buffer_event->Signal(); }); | ||
| 83 | audio_out->StartStream(stream); | 85 | audio_out->StartStream(stream); |
| 84 | 86 | ||
| 85 | QueueMixedBuffer(0); | 87 | QueueMixedBuffer(0); |
diff --git a/src/audio_core/audio_renderer.h b/src/audio_core/audio_renderer.h index b2e5d336c..45afbe759 100644 --- a/src/audio_core/audio_renderer.h +++ b/src/audio_core/audio_renderer.h | |||
| @@ -215,7 +215,8 @@ static_assert(sizeof(UpdateDataHeader) == 0x40, "UpdateDataHeader has wrong size | |||
| 215 | class AudioRenderer { | 215 | class AudioRenderer { |
| 216 | public: | 216 | public: |
| 217 | AudioRenderer(Core::Timing::CoreTiming& core_timing, AudioRendererParameter params, | 217 | AudioRenderer(Core::Timing::CoreTiming& core_timing, AudioRendererParameter params, |
| 218 | Kernel::SharedPtr<Kernel::WritableEvent> buffer_event); | 218 | Kernel::SharedPtr<Kernel::WritableEvent> buffer_event, |
| 219 | std::size_t instance_number); | ||
| 219 | ~AudioRenderer(); | 220 | ~AudioRenderer(); |
| 220 | 221 | ||
| 221 | std::vector<u8> UpdateAudioRenderer(const std::vector<u8>& input_params); | 222 | std::vector<u8> UpdateAudioRenderer(const std::vector<u8>& input_params); |
diff --git a/src/core/hle/service/audio/audren_u.cpp b/src/core/hle/service/audio/audren_u.cpp index 3711e1ea1..679299f68 100644 --- a/src/core/hle/service/audio/audren_u.cpp +++ b/src/core/hle/service/audio/audren_u.cpp | |||
| @@ -25,7 +25,8 @@ namespace Service::Audio { | |||
| 25 | 25 | ||
| 26 | class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { | 26 | class IAudioRenderer final : public ServiceFramework<IAudioRenderer> { |
| 27 | public: | 27 | public: |
| 28 | explicit IAudioRenderer(AudioCore::AudioRendererParameter audren_params) | 28 | explicit IAudioRenderer(AudioCore::AudioRendererParameter audren_params, |
| 29 | const std::size_t instance_number) | ||
| 29 | : ServiceFramework("IAudioRenderer") { | 30 | : ServiceFramework("IAudioRenderer") { |
| 30 | // clang-format off | 31 | // clang-format off |
| 31 | static const FunctionInfo functions[] = { | 32 | static const FunctionInfo functions[] = { |
| @@ -48,8 +49,8 @@ public: | |||
| 48 | auto& system = Core::System::GetInstance(); | 49 | auto& system = Core::System::GetInstance(); |
| 49 | system_event = Kernel::WritableEvent::CreateEventPair( | 50 | system_event = Kernel::WritableEvent::CreateEventPair( |
| 50 | system.Kernel(), Kernel::ResetType::Manual, "IAudioRenderer:SystemEvent"); | 51 | system.Kernel(), Kernel::ResetType::Manual, "IAudioRenderer:SystemEvent"); |
| 51 | renderer = std::make_unique<AudioCore::AudioRenderer>(system.CoreTiming(), audren_params, | 52 | renderer = std::make_unique<AudioCore::AudioRenderer>( |
| 52 | system_event.writable); | 53 | system.CoreTiming(), audren_params, system_event.writable, instance_number); |
| 53 | } | 54 | } |
| 54 | 55 | ||
| 55 | private: | 56 | private: |
| @@ -607,7 +608,7 @@ void AudRenU::OpenAudioRendererImpl(Kernel::HLERequestContext& ctx) { | |||
| 607 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | 608 | IPC::ResponseBuilder rb{ctx, 2, 0, 1}; |
| 608 | 609 | ||
| 609 | rb.Push(RESULT_SUCCESS); | 610 | rb.Push(RESULT_SUCCESS); |
| 610 | rb.PushIpcInterface<IAudioRenderer>(params); | 611 | rb.PushIpcInterface<IAudioRenderer>(params, audren_instance_count++); |
| 611 | } | 612 | } |
| 612 | 613 | ||
| 613 | bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const { | 614 | bool AudRenU::IsFeatureSupported(AudioFeatures feature, u32_le revision) const { |
diff --git a/src/core/hle/service/audio/audren_u.h b/src/core/hle/service/audio/audren_u.h index 1d3c8df61..49f2733cf 100644 --- a/src/core/hle/service/audio/audren_u.h +++ b/src/core/hle/service/audio/audren_u.h | |||
| @@ -33,6 +33,7 @@ private: | |||
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | bool IsFeatureSupported(AudioFeatures feature, u32_le revision) const; | 35 | bool IsFeatureSupported(AudioFeatures feature, u32_le revision) const; |
| 36 | std::size_t audren_instance_count = 0; | ||
| 36 | }; | 37 | }; |
| 37 | 38 | ||
| 38 | } // namespace Service::Audio | 39 | } // namespace Service::Audio |