mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	sink: Change EnqueueSamples to take a pointer to a buffer instead of a std::vector
This commit is contained in:
		
							parent
							
								
									87893e6d68
								
							
						
					
					
						commit
						0ef4185644
					
				
					 5 changed files with 9 additions and 9 deletions
				
			
		|  | @ -90,7 +90,8 @@ static AudioCore::TimeStretcher time_stretcher; | |||
| 
 | ||||
| static void OutputCurrentFrame(const StereoFrame16& frame) { | ||||
|     time_stretcher.AddSamples(&frame[0][0], frame.size()); | ||||
|     sink->EnqueueSamples(time_stretcher.Process(sink->SamplesInQueue())); | ||||
|     std::vector<s16> stretched_samples = time_stretcher.Process(sink->SamplesInQueue()); | ||||
|     sink->EnqueueSamples(stretched_samples.data(), stretched_samples.size() / 2); | ||||
| } | ||||
| 
 | ||||
| // Public Interface
 | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ public: | |||
|         return native_sample_rate; | ||||
|     } | ||||
| 
 | ||||
|     void EnqueueSamples(const std::vector<s16>&) override {} | ||||
|     void EnqueueSamples(const s16*, size_t) override {} | ||||
| 
 | ||||
|     size_t SamplesInQueue() const override { | ||||
|         return 0; | ||||
|  |  | |||
|  | @ -71,14 +71,12 @@ unsigned int SDL2Sink::GetNativeSampleRate() const { | |||
|     return impl->sample_rate; | ||||
| } | ||||
| 
 | ||||
| void SDL2Sink::EnqueueSamples(const std::vector<s16>& samples) { | ||||
| void SDL2Sink::EnqueueSamples(const s16* samples, size_t sample_count) { | ||||
|     if (impl->audio_device_id <= 0) | ||||
|         return; | ||||
| 
 | ||||
|     ASSERT_MSG(samples.size() % 2 == 0, "Samples must be in interleaved stereo PCM16 format (size must be a multiple of two)"); | ||||
| 
 | ||||
|     SDL_LockAudioDevice(impl->audio_device_id); | ||||
|     impl->queue.emplace_back(samples); | ||||
|     impl->queue.emplace_back(samples, samples + sample_count * 2); | ||||
|     SDL_UnlockAudioDevice(impl->audio_device_id); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ public: | |||
| 
 | ||||
|     unsigned int GetNativeSampleRate() const override; | ||||
| 
 | ||||
|     void EnqueueSamples(const std::vector<s16>& samples) override; | ||||
|     void EnqueueSamples(const s16* samples, size_t sample_count) override; | ||||
| 
 | ||||
|     size_t SamplesInQueue() const override; | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,9 +23,10 @@ public: | |||
| 
 | ||||
|     /**
 | ||||
|      * Feed stereo samples to sink. | ||||
|      * @param samples Samples in interleaved stereo PCM16 format. Size of vector must be multiple of two. | ||||
|      * @param samples Samples in interleaved stereo PCM16 format. | ||||
|      * @param sample_count Number of samples. | ||||
|      */ | ||||
|     virtual void EnqueueSamples(const std::vector<s16>& samples) = 0; | ||||
|     virtual void EnqueueSamples(const s16* samples, size_t sample_count) = 0; | ||||
| 
 | ||||
|     /// Samples enqueued that have not been played yet.
 | ||||
|     virtual std::size_t SamplesInQueue() const = 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue