mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	Merge pull request #1319 from lioncash/audio
audio_core: Replace includes with forward declarations where applicable.
This commit is contained in:
		
						commit
						d85130d7be
					
				| @ -3,9 +3,12 @@ | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "audio_core/algorithm/interpolate.h" | ||||
| #include "audio_core/audio_out.h" | ||||
| #include "audio_core/audio_renderer.h" | ||||
| #include "audio_core/codec.h" | ||||
| #include "common/assert.h" | ||||
| #include "common/logging/log.h" | ||||
| #include "core/hle/kernel/event.h" | ||||
| #include "core/memory.h" | ||||
| 
 | ||||
| namespace AudioCore { | ||||
| @ -13,6 +16,41 @@ namespace AudioCore { | ||||
| constexpr u32 STREAM_SAMPLE_RATE{48000}; | ||||
| constexpr u32 STREAM_NUM_CHANNELS{2}; | ||||
| 
 | ||||
| class AudioRenderer::VoiceState { | ||||
| public: | ||||
|     bool IsPlaying() const { | ||||
|         return is_in_use && info.play_state == PlayState::Started; | ||||
|     } | ||||
| 
 | ||||
|     const VoiceOutStatus& GetOutStatus() const { | ||||
|         return out_status; | ||||
|     } | ||||
| 
 | ||||
|     const VoiceInfo& GetInfo() const { | ||||
|         return info; | ||||
|     } | ||||
| 
 | ||||
|     VoiceInfo& Info() { | ||||
|         return info; | ||||
|     } | ||||
| 
 | ||||
|     void SetWaveIndex(std::size_t index); | ||||
|     std::vector<s16> DequeueSamples(std::size_t sample_count); | ||||
|     void UpdateState(); | ||||
|     void RefreshBuffer(); | ||||
| 
 | ||||
| private: | ||||
|     bool is_in_use{}; | ||||
|     bool is_refresh_pending{}; | ||||
|     std::size_t wave_index{}; | ||||
|     std::size_t offset{}; | ||||
|     Codec::ADPCMState adpcm_state{}; | ||||
|     InterpolationState interp_state{}; | ||||
|     std::vector<s16> samples; | ||||
|     VoiceOutStatus out_status{}; | ||||
|     VoiceInfo info{}; | ||||
| }; | ||||
| 
 | ||||
| AudioRenderer::AudioRenderer(AudioRendererParameter params, | ||||
|                              Kernel::SharedPtr<Kernel::Event> buffer_event) | ||||
|     : worker_params{params}, buffer_event{buffer_event}, voices(params.voice_count) { | ||||
| @ -27,6 +65,8 @@ AudioRenderer::AudioRenderer(AudioRendererParameter params, | ||||
|     QueueMixedBuffer(2); | ||||
| } | ||||
| 
 | ||||
| AudioRenderer::~AudioRenderer() = default; | ||||
| 
 | ||||
| u32 AudioRenderer::GetSampleRate() const { | ||||
|     return worker_params.sample_rate; | ||||
| } | ||||
|  | ||||
| @ -8,16 +8,20 @@ | ||||
| #include <memory> | ||||
| #include <vector> | ||||
| 
 | ||||
| #include "audio_core/algorithm/interpolate.h" | ||||
| #include "audio_core/audio_out.h" | ||||
| #include "audio_core/codec.h" | ||||
| #include "audio_core/stream.h" | ||||
| #include "common/common_funcs.h" | ||||
| #include "common/common_types.h" | ||||
| #include "common/swap.h" | ||||
| #include "core/hle/kernel/event.h" | ||||
| #include "core/hle/kernel/object.h" | ||||
| 
 | ||||
| namespace Kernel { | ||||
| class Event; | ||||
| } | ||||
| 
 | ||||
| namespace AudioCore { | ||||
| 
 | ||||
| class AudioOut; | ||||
| 
 | ||||
| enum class PlayState : u8 { | ||||
|     Started = 0, | ||||
|     Stopped = 1, | ||||
| @ -158,6 +162,8 @@ static_assert(sizeof(UpdateDataHeader) == 0x40, "UpdateDataHeader has wrong size | ||||
| class AudioRenderer { | ||||
| public: | ||||
|     AudioRenderer(AudioRendererParameter params, Kernel::SharedPtr<Kernel::Event> buffer_event); | ||||
|     ~AudioRenderer(); | ||||
| 
 | ||||
|     std::vector<u8> UpdateAudioRenderer(const std::vector<u8>& input_params); | ||||
|     void QueueMixedBuffer(Buffer::Tag tag); | ||||
|     void ReleaseAndQueueBuffers(); | ||||
| @ -166,45 +172,12 @@ public: | ||||
|     u32 GetMixBufferCount() const; | ||||
| 
 | ||||
| private: | ||||
|     class VoiceState { | ||||
|     public: | ||||
|         bool IsPlaying() const { | ||||
|             return is_in_use && info.play_state == PlayState::Started; | ||||
|         } | ||||
| 
 | ||||
|         const VoiceOutStatus& GetOutStatus() const { | ||||
|             return out_status; | ||||
|         } | ||||
| 
 | ||||
|         const VoiceInfo& GetInfo() const { | ||||
|             return info; | ||||
|         } | ||||
| 
 | ||||
|         VoiceInfo& Info() { | ||||
|             return info; | ||||
|         } | ||||
| 
 | ||||
|         void SetWaveIndex(std::size_t index); | ||||
|         std::vector<s16> DequeueSamples(std::size_t sample_count); | ||||
|         void UpdateState(); | ||||
|         void RefreshBuffer(); | ||||
| 
 | ||||
|     private: | ||||
|         bool is_in_use{}; | ||||
|         bool is_refresh_pending{}; | ||||
|         std::size_t wave_index{}; | ||||
|         std::size_t offset{}; | ||||
|         Codec::ADPCMState adpcm_state{}; | ||||
|         InterpolationState interp_state{}; | ||||
|         std::vector<s16> samples; | ||||
|         VoiceOutStatus out_status{}; | ||||
|         VoiceInfo info{}; | ||||
|     }; | ||||
|     class VoiceState; | ||||
| 
 | ||||
|     AudioRendererParameter worker_params; | ||||
|     Kernel::SharedPtr<Kernel::Event> buffer_event; | ||||
|     std::vector<VoiceState> voices; | ||||
|     std::unique_ptr<AudioCore::AudioOut> audio_out; | ||||
|     std::unique_ptr<AudioOut> audio_out; | ||||
|     AudioCore::StreamPtr stream; | ||||
| }; | ||||
| 
 | ||||
|  | ||||
| @ -7,6 +7,7 @@ | ||||
| 
 | ||||
| #include "audio_core/sink.h" | ||||
| #include "audio_core/sink_details.h" | ||||
| #include "audio_core/sink_stream.h" | ||||
| #include "audio_core/stream.h" | ||||
| #include "common/assert.h" | ||||
| #include "common/logging/log.h" | ||||
|  | ||||
| @ -11,13 +11,16 @@ | ||||
| #include <queue> | ||||
| 
 | ||||
| #include "audio_core/buffer.h" | ||||
| #include "audio_core/sink_stream.h" | ||||
| #include "common/assert.h" | ||||
| #include "common/common_types.h" | ||||
| #include "core/core_timing.h" | ||||
| 
 | ||||
| namespace CoreTiming { | ||||
| struct EventType; | ||||
| } | ||||
| 
 | ||||
| namespace AudioCore { | ||||
| 
 | ||||
| class SinkStream; | ||||
| 
 | ||||
| /**
 | ||||
|  * Represents an audio stream, which is a sequence of queued buffers, to be outputed by AudioOut | ||||
|  */ | ||||
|  | ||||
| @ -4,7 +4,6 @@ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <array> | ||||
| #include <cstddef> | ||||
| #include <SoundTouch.h> | ||||
| #include "common/common_types.h" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 bunnei
						bunnei