mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	Prefix all size_t with std::
done automatically by executing regex replace `([^:0-9a-zA-Z_])size_t([^0-9a-zA-Z_])` -> `$1std::size_t$2`
This commit is contained in:
		
							parent
							
								
									eca98eeb3e
								
							
						
					
					
						commit
						7d8f115185
					
				
					 158 changed files with 669 additions and 634 deletions
				
			
		|  | @ -26,7 +26,7 @@ using QuadFrame32 = std::array<std::array<s32, 4>, samples_per_frame>; | |||
| /// A variable length buffer of signed PCM16 stereo samples.
 | ||||
| using StereoBuffer16 = std::deque<std::array<s16, 2>>; | ||||
| 
 | ||||
| constexpr size_t num_dsp_pipe = 8; | ||||
| constexpr std::size_t num_dsp_pipe = 8; | ||||
| enum class DspPipe { | ||||
|     Debug = 0, | ||||
|     Dma = 1, | ||||
|  |  | |||
|  | @ -14,26 +14,26 @@ | |||
| namespace AudioCore { | ||||
| namespace Codec { | ||||
| 
 | ||||
| StereoBuffer16 DecodeADPCM(const u8* const data, const size_t sample_count, | ||||
| StereoBuffer16 DecodeADPCM(const u8* const data, const std::size_t sample_count, | ||||
|                            const std::array<s16, 16>& adpcm_coeff, ADPCMState& state) { | ||||
|     // GC-ADPCM with scale factor and variable coefficients.
 | ||||
|     // Frames are 8 bytes long containing 14 samples each.
 | ||||
|     // Samples are 4 bits (one nibble) long.
 | ||||
| 
 | ||||
|     constexpr size_t FRAME_LEN = 8; | ||||
|     constexpr size_t SAMPLES_PER_FRAME = 14; | ||||
|     constexpr std::size_t FRAME_LEN = 8; | ||||
|     constexpr std::size_t SAMPLES_PER_FRAME = 14; | ||||
|     constexpr std::array<int, 16> SIGNED_NIBBLES = { | ||||
|         {0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1}}; | ||||
| 
 | ||||
|     const size_t ret_size = | ||||
|     const std::size_t ret_size = | ||||
|         sample_count % 2 == 0 ? sample_count : sample_count + 1; // Ensure multiple of two.
 | ||||
|     StereoBuffer16 ret(ret_size); | ||||
| 
 | ||||
|     int yn1 = state.yn1, yn2 = state.yn2; | ||||
| 
 | ||||
|     const size_t NUM_FRAMES = | ||||
|     const std::size_t NUM_FRAMES = | ||||
|         (sample_count + (SAMPLES_PER_FRAME - 1)) / SAMPLES_PER_FRAME; // Round up.
 | ||||
|     for (size_t framei = 0; framei < NUM_FRAMES; framei++) { | ||||
|     for (std::size_t framei = 0; framei < NUM_FRAMES; framei++) { | ||||
|         const int frame_header = data[framei * FRAME_LEN]; | ||||
|         const int scale = 1 << (frame_header & 0xF); | ||||
|         const int idx = (frame_header >> 4) & 0x7; | ||||
|  | @ -58,9 +58,9 @@ StereoBuffer16 DecodeADPCM(const u8* const data, const size_t sample_count, | |||
|             return (s16)val; | ||||
|         }; | ||||
| 
 | ||||
|         size_t outputi = framei * SAMPLES_PER_FRAME; | ||||
|         size_t datai = framei * FRAME_LEN + 1; | ||||
|         for (size_t i = 0; i < SAMPLES_PER_FRAME && outputi < sample_count; i += 2) { | ||||
|         std::size_t outputi = framei * SAMPLES_PER_FRAME; | ||||
|         std::size_t datai = framei * FRAME_LEN + 1; | ||||
|         for (std::size_t i = 0; i < SAMPLES_PER_FRAME && outputi < sample_count; i += 2) { | ||||
|             const s16 sample1 = decode_sample(SIGNED_NIBBLES[data[datai] >> 4]); | ||||
|             ret[outputi].fill(sample1); | ||||
|             outputi++; | ||||
|  | @ -80,7 +80,7 @@ StereoBuffer16 DecodeADPCM(const u8* const data, const size_t sample_count, | |||
| } | ||||
| 
 | ||||
| StereoBuffer16 DecodePCM8(const unsigned num_channels, const u8* const data, | ||||
|                           const size_t sample_count) { | ||||
|                           const std::size_t sample_count) { | ||||
|     ASSERT(num_channels == 1 || num_channels == 2); | ||||
| 
 | ||||
|     const auto decode_sample = [](u8 sample) { | ||||
|  | @ -90,11 +90,11 @@ StereoBuffer16 DecodePCM8(const unsigned num_channels, const u8* const data, | |||
|     StereoBuffer16 ret(sample_count); | ||||
| 
 | ||||
|     if (num_channels == 1) { | ||||
|         for (size_t i = 0; i < sample_count; i++) { | ||||
|         for (std::size_t i = 0; i < sample_count; i++) { | ||||
|             ret[i].fill(decode_sample(data[i])); | ||||
|         } | ||||
|     } else { | ||||
|         for (size_t i = 0; i < sample_count; i++) { | ||||
|         for (std::size_t i = 0; i < sample_count; i++) { | ||||
|             ret[i][0] = decode_sample(data[i * 2 + 0]); | ||||
|             ret[i][1] = decode_sample(data[i * 2 + 1]); | ||||
|         } | ||||
|  | @ -104,19 +104,19 @@ StereoBuffer16 DecodePCM8(const unsigned num_channels, const u8* const data, | |||
| } | ||||
| 
 | ||||
| StereoBuffer16 DecodePCM16(const unsigned num_channels, const u8* const data, | ||||
|                            const size_t sample_count) { | ||||
|                            const std::size_t sample_count) { | ||||
|     ASSERT(num_channels == 1 || num_channels == 2); | ||||
| 
 | ||||
|     StereoBuffer16 ret(sample_count); | ||||
| 
 | ||||
|     if (num_channels == 1) { | ||||
|         for (size_t i = 0; i < sample_count; i++) { | ||||
|         for (std::size_t i = 0; i < sample_count; i++) { | ||||
|             s16 sample; | ||||
|             std::memcpy(&sample, data + i * sizeof(s16), sizeof(s16)); | ||||
|             ret[i].fill(sample); | ||||
|         } | ||||
|     } else { | ||||
|         for (size_t i = 0; i < sample_count; ++i) { | ||||
|         for (std::size_t i = 0; i < sample_count; ++i) { | ||||
|             std::memcpy(&ret[i], data + i * sizeof(s16) * 2, 2 * sizeof(s16)); | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -26,7 +26,7 @@ struct ADPCMState { | |||
|  * @param state ADPCM state, this is updated with new state | ||||
|  * @return Decoded stereo signed PCM16 data, sample_count in length | ||||
|  */ | ||||
| StereoBuffer16 DecodeADPCM(const u8* const data, const size_t sample_count, | ||||
| StereoBuffer16 DecodeADPCM(const u8* const data, const std::size_t sample_count, | ||||
|                            const std::array<s16, 16>& adpcm_coeff, ADPCMState& state); | ||||
| 
 | ||||
| /**
 | ||||
|  | @ -36,7 +36,7 @@ StereoBuffer16 DecodeADPCM(const u8* const data, const size_t sample_count, | |||
|  * @return Decoded stereo signed PCM16 data, sample_count in length | ||||
|  */ | ||||
| StereoBuffer16 DecodePCM8(const unsigned num_channels, const u8* const data, | ||||
|                           const size_t sample_count); | ||||
|                           const std::size_t sample_count); | ||||
| 
 | ||||
| /**
 | ||||
|  * @param num_channels Number of channels | ||||
|  | @ -45,6 +45,6 @@ StereoBuffer16 DecodePCM8(const unsigned num_channels, const u8* const data, | |||
|  * @return Decoded stereo signed PCM16 data, sample_count in length | ||||
|  */ | ||||
| StereoBuffer16 DecodePCM16(const unsigned num_channels, const u8* const data, | ||||
|                            const size_t sample_count); | ||||
|                            const std::size_t sample_count); | ||||
| } // namespace Codec
 | ||||
| } // namespace AudioCore
 | ||||
|  |  | |||
|  | @ -95,7 +95,7 @@ unsigned int CubebSink::GetNativeSampleRate() const { | |||
|     return impl->sample_rate; | ||||
| } | ||||
| 
 | ||||
| void CubebSink::EnqueueSamples(const s16* samples, size_t sample_count) { | ||||
| void CubebSink::EnqueueSamples(const s16* samples, std::size_t sample_count) { | ||||
|     if (!impl->ctx) | ||||
|         return; | ||||
| 
 | ||||
|  | @ -123,7 +123,8 @@ long CubebSink::Impl::DataCallback(cubeb_stream* stream, void* user_data, const | |||
| 
 | ||||
|     std::lock_guard lock{impl->queue_mutex}; | ||||
| 
 | ||||
|     size_t frames_to_write = std::min(impl->queue.size() / 2, static_cast<size_t>(num_frames)); | ||||
|     std::size_t frames_to_write = | ||||
|         std::min(impl->queue.size() / 2, static_cast<std::size_t>(num_frames)); | ||||
| 
 | ||||
|     memcpy(buffer, impl->queue.data(), frames_to_write * sizeof(s16) * 2); | ||||
|     impl->queue.erase(impl->queue.begin(), impl->queue.begin() + frames_to_write * 2); | ||||
|  | @ -152,7 +153,7 @@ std::vector<std::string> ListCubebSinkDevices() { | |||
|     if (cubeb_enumerate_devices(ctx, CUBEB_DEVICE_TYPE_OUTPUT, &collection) != CUBEB_OK) { | ||||
|         LOG_WARNING(Audio_Sink, "Audio output device enumeration not supported"); | ||||
|     } else { | ||||
|         for (size_t i = 0; i < collection.count; i++) { | ||||
|         for (std::size_t i = 0; i < collection.count; i++) { | ||||
|             const cubeb_device_info& device = collection.device[i]; | ||||
|             if (device.friendly_name) { | ||||
|                 device_list.emplace_back(device.friendly_name); | ||||
|  |  | |||
|  | @ -17,9 +17,9 @@ public: | |||
| 
 | ||||
|     unsigned int GetNativeSampleRate() const override; | ||||
| 
 | ||||
|     void EnqueueSamples(const s16* samples, size_t sample_count) override; | ||||
|     void EnqueueSamples(const s16* samples, std::size_t sample_count) override; | ||||
| 
 | ||||
|     size_t SamplesInQueue() const override; | ||||
|     std::size_t SamplesInQueue() const override; | ||||
| 
 | ||||
| private: | ||||
|     struct Impl; | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ void DspInterface::OutputFrame(StereoFrame16& frame) { | |||
| 
 | ||||
|     // Implementation of the hardware volume slider with a dynamic range of 60 dB
 | ||||
|     double volume_scale_factor = std::exp(6.90775 * Settings::values.volume) * 0.001; | ||||
|     for (size_t i = 0; i < frame.size(); i++) { | ||||
|     for (std::size_t i = 0; i < frame.size(); i++) { | ||||
|         frame[i][0] = static_cast<s16>(frame[i][0] * volume_scale_factor); | ||||
|         frame[i][1] = static_cast<s16>(frame[i][1] * volume_scale_factor); | ||||
|     } | ||||
|  | @ -56,7 +56,7 @@ void DspInterface::OutputFrame(StereoFrame16& frame) { | |||
|         std::vector<s16> stretched_samples = time_stretcher.Process(sink->SamplesInQueue()); | ||||
|         sink->EnqueueSamples(stretched_samples.data(), stretched_samples.size() / 2); | ||||
|     } else { | ||||
|         constexpr size_t maximum_sample_latency = 2048; // about 64 miliseconds
 | ||||
|         constexpr std::size_t maximum_sample_latency = 2048; // about 64 miliseconds
 | ||||
|         if (sink->SamplesInQueue() > maximum_sample_latency) { | ||||
|             // This can occur if we're running too fast and samples are starting to back up.
 | ||||
|             // Just drop the samples.
 | ||||
|  |  | |||
|  | @ -54,7 +54,7 @@ public: | |||
|      * @return The amount of data remaning in the pipe. This is the maximum length PipeRead will | ||||
|      * return. | ||||
|      */ | ||||
|     virtual size_t GetPipeReadableSize(DspPipe pipe_number) const = 0; | ||||
|     virtual std::size_t GetPipeReadableSize(DspPipe pipe_number) const = 0; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Write to a DSP pipe. | ||||
|  |  | |||
|  | @ -10,7 +10,7 @@ | |||
| namespace AudioCore { | ||||
| namespace HLE { | ||||
| 
 | ||||
| constexpr size_t num_sources = 24; | ||||
| constexpr std::size_t num_sources = 24; | ||||
| 
 | ||||
| /**
 | ||||
|  * This performs the filter operation defined by FilterT::ProcessSample on the frame in-place. | ||||
|  |  | |||
|  | @ -66,7 +66,7 @@ void SourceFilters::SimpleFilter::Configure( | |||
| 
 | ||||
| std::array<s16, 2> SourceFilters::SimpleFilter::ProcessSample(const std::array<s16, 2>& x0) { | ||||
|     std::array<s16, 2> y0; | ||||
|     for (size_t i = 0; i < 2; i++) { | ||||
|     for (std::size_t i = 0; i < 2; i++) { | ||||
|         const s32 tmp = (b0 * x0[i] + a1 * y1[i]) >> 15; | ||||
|         y0[i] = std::clamp(tmp, -32768, 32767); | ||||
|     } | ||||
|  | @ -100,7 +100,7 @@ void SourceFilters::BiquadFilter::Configure( | |||
| 
 | ||||
| std::array<s16, 2> SourceFilters::BiquadFilter::ProcessSample(const std::array<s16, 2>& x0) { | ||||
|     std::array<s16, 2> y0; | ||||
|     for (size_t i = 0; i < 2; i++) { | ||||
|     for (std::size_t i = 0; i < 2; i++) { | ||||
|         const s32 tmp = (b0 * x0[i] + b1 * x1[i] + b2 * x2[i] + a1 * y1[i] + a2 * y2[i]) >> 14; | ||||
|         y0[i] = std::clamp(tmp, -32768, 32767); | ||||
|     } | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ public: | |||
|     DspState GetDspState() const; | ||||
| 
 | ||||
|     std::vector<u8> PipeRead(DspPipe pipe_number, u32 length); | ||||
|     size_t GetPipeReadableSize(DspPipe pipe_number) const; | ||||
|     std::size_t GetPipeReadableSize(DspPipe pipe_number) const; | ||||
|     void PipeWrite(DspPipe pipe_number, const std::vector<u8>& buffer); | ||||
| 
 | ||||
|     std::array<u8, Memory::DSP_RAM_SIZE>& GetDspMemory(); | ||||
|  | @ -41,7 +41,7 @@ private: | |||
|     void WriteU16(DspPipe pipe_number, u16 value); | ||||
|     void AudioPipeWriteStructAddresses(); | ||||
| 
 | ||||
|     size_t CurrentRegionIndex() const; | ||||
|     std::size_t CurrentRegionIndex() const; | ||||
|     HLE::SharedMemory& ReadRegion(); | ||||
|     HLE::SharedMemory& WriteRegion(); | ||||
| 
 | ||||
|  | @ -87,7 +87,7 @@ DspState DspHle::Impl::GetDspState() const { | |||
| } | ||||
| 
 | ||||
| std::vector<u8> DspHle::Impl::PipeRead(DspPipe pipe_number, u32 length) { | ||||
|     const size_t pipe_index = static_cast<size_t>(pipe_number); | ||||
|     const std::size_t pipe_index = static_cast<std::size_t>(pipe_number); | ||||
| 
 | ||||
|     if (pipe_index >= num_dsp_pipe) { | ||||
|         LOG_ERROR(Audio_DSP, "pipe_number = {} invalid", pipe_index); | ||||
|  | @ -118,7 +118,7 @@ std::vector<u8> DspHle::Impl::PipeRead(DspPipe pipe_number, u32 length) { | |||
| } | ||||
| 
 | ||||
| size_t DspHle::Impl::GetPipeReadableSize(DspPipe pipe_number) const { | ||||
|     const size_t pipe_index = static_cast<size_t>(pipe_number); | ||||
|     const std::size_t pipe_index = static_cast<std::size_t>(pipe_number); | ||||
| 
 | ||||
|     if (pipe_index >= num_dsp_pipe) { | ||||
|         LOG_ERROR(Audio_DSP, "pipe_number = {} invalid", pipe_index); | ||||
|  | @ -183,7 +183,8 @@ void DspHle::Impl::PipeWrite(DspPipe pipe_number, const std::vector<u8>& buffer) | |||
|         return; | ||||
|     } | ||||
|     default: | ||||
|         LOG_CRITICAL(Audio_DSP, "pipe_number = {} unimplemented", static_cast<size_t>(pipe_number)); | ||||
|         LOG_CRITICAL(Audio_DSP, "pipe_number = {} unimplemented", | ||||
|                      static_cast<std::size_t>(pipe_number)); | ||||
|         UNIMPLEMENTED(); | ||||
|         return; | ||||
|     } | ||||
|  | @ -205,7 +206,7 @@ void DspHle::Impl::ResetPipes() { | |||
| } | ||||
| 
 | ||||
| void DspHle::Impl::WriteU16(DspPipe pipe_number, u16 value) { | ||||
|     const size_t pipe_index = static_cast<size_t>(pipe_number); | ||||
|     const std::size_t pipe_index = static_cast<std::size_t>(pipe_number); | ||||
| 
 | ||||
|     std::vector<u8>& data = pipe_data.at(pipe_index); | ||||
|     // Little endian
 | ||||
|  | @ -280,10 +281,10 @@ StereoFrame16 DspHle::Impl::GenerateCurrentFrame() { | |||
|     std::array<QuadFrame32, 3> intermediate_mixes = {}; | ||||
| 
 | ||||
|     // Generate intermediate mixes
 | ||||
|     for (size_t i = 0; i < HLE::num_sources; i++) { | ||||
|     for (std::size_t i = 0; i < HLE::num_sources; i++) { | ||||
|         write.source_statuses.status[i] = | ||||
|             sources[i].Tick(read.source_configurations.config[i], read.adpcm_coefficients.coeff[i]); | ||||
|         for (size_t mix = 0; mix < 3; mix++) { | ||||
|         for (std::size_t mix = 0; mix < 3; mix++) { | ||||
|             sources[i].MixInto(intermediate_mixes[mix], mix); | ||||
|         } | ||||
|     } | ||||
|  | @ -295,8 +296,8 @@ StereoFrame16 DspHle::Impl::GenerateCurrentFrame() { | |||
|     StereoFrame16 output_frame = mixers.GetOutput(); | ||||
| 
 | ||||
|     // Write current output frame to the shared memory region
 | ||||
|     for (size_t samplei = 0; samplei < output_frame.size(); samplei++) { | ||||
|         for (size_t channeli = 0; channeli < output_frame[0].size(); channeli++) { | ||||
|     for (std::size_t samplei = 0; samplei < output_frame.size(); samplei++) { | ||||
|         for (std::size_t channeli = 0; channeli < output_frame[0].size(); channeli++) { | ||||
|             write.final_samples.pcm16[samplei][channeli] = s16_le(output_frame[samplei][channeli]); | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -23,7 +23,7 @@ public: | |||
|     DspState GetDspState() const override; | ||||
| 
 | ||||
|     std::vector<u8> PipeRead(DspPipe pipe_number, u32 length) override; | ||||
|     size_t GetPipeReadableSize(DspPipe pipe_number) const override; | ||||
|     std::size_t GetPipeReadableSize(DspPipe pipe_number) const override; | ||||
|     void PipeWrite(DspPipe pipe_number, const std::vector<u8>& buffer) override; | ||||
| 
 | ||||
|     std::array<u8, Memory::DSP_RAM_SIZE>& GetDspMemory() override; | ||||
|  |  | |||
|  | @ -68,7 +68,7 @@ void Mixers::ParseConfig(DspConfiguration& config) { | |||
|         config.output_format_dirty.Assign(0); | ||||
|         state.output_format = config.output_format; | ||||
|         LOG_TRACE(Audio_DSP, "mixers output_format = {}", | ||||
|                   static_cast<size_t>(config.output_format)); | ||||
|                   static_cast<std::size_t>(config.output_format)); | ||||
|     } | ||||
| 
 | ||||
|     if (config.headphones_connected_dirty) { | ||||
|  | @ -131,7 +131,7 @@ void Mixers::DownmixAndMixIntoCurrentFrame(float gain, const QuadFrame32& sample | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     UNREACHABLE_MSG("Invalid output_format {}", static_cast<size_t>(state.output_format)); | ||||
|     UNREACHABLE_MSG("Invalid output_format {}", static_cast<std::size_t>(state.output_format)); | ||||
| } | ||||
| 
 | ||||
| void Mixers::AuxReturn(const IntermediateMixSamples& read_samples) { | ||||
|  | @ -139,8 +139,8 @@ void Mixers::AuxReturn(const IntermediateMixSamples& read_samples) { | |||
|     // QuadFrame32.
 | ||||
| 
 | ||||
|     if (state.mixer1_enabled) { | ||||
|         for (size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (size_t channel = 0; channel < 4; channel++) { | ||||
|         for (std::size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (std::size_t channel = 0; channel < 4; channel++) { | ||||
|                 state.intermediate_mix_buffer[1][sample][channel] = | ||||
|                     read_samples.mix1.pcm32[channel][sample]; | ||||
|             } | ||||
|  | @ -148,8 +148,8 @@ void Mixers::AuxReturn(const IntermediateMixSamples& read_samples) { | |||
|     } | ||||
| 
 | ||||
|     if (state.mixer2_enabled) { | ||||
|         for (size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (size_t channel = 0; channel < 4; channel++) { | ||||
|         for (std::size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (std::size_t channel = 0; channel < 4; channel++) { | ||||
|                 state.intermediate_mix_buffer[2][sample][channel] = | ||||
|                     read_samples.mix2.pcm32[channel][sample]; | ||||
|             } | ||||
|  | @ -165,8 +165,8 @@ void Mixers::AuxSend(IntermediateMixSamples& write_samples, | |||
|     state.intermediate_mix_buffer[0] = input[0]; | ||||
| 
 | ||||
|     if (state.mixer1_enabled) { | ||||
|         for (size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (size_t channel = 0; channel < 4; channel++) { | ||||
|         for (std::size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (std::size_t channel = 0; channel < 4; channel++) { | ||||
|                 write_samples.mix1.pcm32[channel][sample] = input[1][sample][channel]; | ||||
|             } | ||||
|         } | ||||
|  | @ -175,8 +175,8 @@ void Mixers::AuxSend(IntermediateMixSamples& write_samples, | |||
|     } | ||||
| 
 | ||||
|     if (state.mixer2_enabled) { | ||||
|         for (size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (size_t channel = 0; channel < 4; channel++) { | ||||
|         for (std::size_t sample = 0; sample < samples_per_frame; sample++) { | ||||
|             for (std::size_t channel = 0; channel < 4; channel++) { | ||||
|                 write_samples.mix2.pcm32[channel][sample] = input[2][sample][channel]; | ||||
|             } | ||||
|         } | ||||
|  | @ -188,7 +188,7 @@ void Mixers::AuxSend(IntermediateMixSamples& write_samples, | |||
| void Mixers::MixCurrentFrame() { | ||||
|     current_frame.fill({}); | ||||
| 
 | ||||
|     for (size_t mix = 0; mix < 3; mix++) { | ||||
|     for (std::size_t mix = 0; mix < 3; mix++) { | ||||
|         DownmixAndMixIntoCurrentFrame(state.intermediate_mixer_volume[mix], | ||||
|                                       state.intermediate_mix_buffer[mix]); | ||||
|     } | ||||
|  |  | |||
|  | @ -26,12 +26,12 @@ SourceStatus::Status Source::Tick(SourceConfiguration::Configuration& config, | |||
|     return GetCurrentStatus(); | ||||
| } | ||||
| 
 | ||||
| void Source::MixInto(QuadFrame32& dest, size_t intermediate_mix_id) const { | ||||
| void Source::MixInto(QuadFrame32& dest, std::size_t intermediate_mix_id) const { | ||||
|     if (!state.enabled) | ||||
|         return; | ||||
| 
 | ||||
|     const std::array<float, 4>& gains = state.gain.at(intermediate_mix_id); | ||||
|     for (size_t samplei = 0; samplei < samples_per_frame; samplei++) { | ||||
|     for (std::size_t samplei = 0; samplei < samples_per_frame; samplei++) { | ||||
|         // Conversion from stereo (current_frame) to quadraphonic (dest) occurs here.
 | ||||
|         dest[samplei][0] += static_cast<s32>(gains[0] * current_frame[samplei][0]); | ||||
|         dest[samplei][1] += static_cast<s32>(gains[1] * current_frame[samplei][1]); | ||||
|  | @ -141,21 +141,21 @@ void Source::ParseConfig(SourceConfiguration::Configuration& config, | |||
|         config.interpolation_dirty.Assign(0); | ||||
|         state.interpolation_mode = config.interpolation_mode; | ||||
|         LOG_TRACE(Audio_DSP, "source_id={} interpolation_mode={}", source_id, | ||||
|                   static_cast<size_t>(state.interpolation_mode)); | ||||
|                   static_cast<std::size_t>(state.interpolation_mode)); | ||||
|     } | ||||
| 
 | ||||
|     if (config.format_dirty || config.embedded_buffer_dirty) { | ||||
|         config.format_dirty.Assign(0); | ||||
|         state.format = config.format; | ||||
|         LOG_TRACE(Audio_DSP, "source_id={} format={}", source_id, | ||||
|                   static_cast<size_t>(state.format)); | ||||
|                   static_cast<std::size_t>(state.format)); | ||||
|     } | ||||
| 
 | ||||
|     if (config.mono_or_stereo_dirty || config.embedded_buffer_dirty) { | ||||
|         config.mono_or_stereo_dirty.Assign(0); | ||||
|         state.mono_or_stereo = config.mono_or_stereo; | ||||
|         LOG_TRACE(Audio_DSP, "source_id={} mono_or_stereo={}", source_id, | ||||
|                   static_cast<size_t>(state.mono_or_stereo)); | ||||
|                   static_cast<std::size_t>(state.mono_or_stereo)); | ||||
|     } | ||||
| 
 | ||||
|     u32_dsp play_position = {}; | ||||
|  | @ -195,7 +195,7 @@ void Source::ParseConfig(SourceConfiguration::Configuration& config, | |||
| 
 | ||||
|     if (config.buffer_queue_dirty) { | ||||
|         config.buffer_queue_dirty.Assign(0); | ||||
|         for (size_t i = 0; i < 4; i++) { | ||||
|         for (std::size_t i = 0; i < 4; i++) { | ||||
|             if (config.buffers_dirty & (1 << i)) { | ||||
|                 const auto& b = config.buffers[i]; | ||||
|                 state.input_queue.emplace(Buffer{ | ||||
|  | @ -236,7 +236,7 @@ void Source::GenerateFrame() { | |||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     size_t frame_position = 0; | ||||
|     std::size_t frame_position = 0; | ||||
| 
 | ||||
|     state.current_sample_number = state.next_sample_number; | ||||
|     while (frame_position < current_frame.size()) { | ||||
|  |  | |||
|  | @ -28,7 +28,7 @@ namespace HLE { | |||
|  */ | ||||
| class Source final { | ||||
| public: | ||||
|     explicit Source(size_t source_id_) : source_id(source_id_) { | ||||
|     explicit Source(std::size_t source_id_) : source_id(source_id_) { | ||||
|         Reset(); | ||||
|     } | ||||
| 
 | ||||
|  | @ -52,10 +52,10 @@ public: | |||
|      * @param dest The QuadFrame32 to mix into. | ||||
|      * @param intermediate_mix_id The id of the intermediate mix whose gains we are using. | ||||
|      */ | ||||
|     void MixInto(QuadFrame32& dest, size_t intermediate_mix_id) const; | ||||
|     void MixInto(QuadFrame32& dest, std::size_t intermediate_mix_id) const; | ||||
| 
 | ||||
| private: | ||||
|     const size_t source_id; | ||||
|     const std::size_t source_id; | ||||
|     StereoFrame16 current_frame; | ||||
| 
 | ||||
|     using Format = SourceConfiguration::Configuration::Format; | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ constexpr u64 scale_mask = scale_factor - 1; | |||
| /// Three adjacent samples are passed to fn each step.
 | ||||
| template <typename Function> | ||||
| static void StepOverSamples(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, | ||||
|                             size_t& outputi, Function fn) { | ||||
|                             std::size_t& outputi, Function fn) { | ||||
|     ASSERT(rate > 0); | ||||
| 
 | ||||
|     if (input.empty()) | ||||
|  | @ -28,10 +28,10 @@ static void StepOverSamples(State& state, StereoBuffer16& input, float rate, Ste | |||
| 
 | ||||
|     const u64 step_size = static_cast<u64>(rate * scale_factor); | ||||
|     u64 fposition = state.fposition; | ||||
|     size_t inputi = 0; | ||||
|     std::size_t inputi = 0; | ||||
| 
 | ||||
|     while (outputi < output.size()) { | ||||
|         inputi = static_cast<size_t>(fposition / scale_factor); | ||||
|         inputi = static_cast<std::size_t>(fposition / scale_factor); | ||||
| 
 | ||||
|         if (inputi + 2 >= input.size()) { | ||||
|             inputi = input.size() - 2; | ||||
|  | @ -51,14 +51,15 @@ static void StepOverSamples(State& state, StereoBuffer16& input, float rate, Ste | |||
|     input.erase(input.begin(), std::next(input.begin(), inputi + 2)); | ||||
| } | ||||
| 
 | ||||
| void None(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, size_t& outputi) { | ||||
| void None(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, | ||||
|           std::size_t& outputi) { | ||||
|     StepOverSamples( | ||||
|         state, input, rate, output, outputi, | ||||
|         [](u64 fraction, const auto& x0, const auto& x1, const auto& x2) { return x0; }); | ||||
| } | ||||
| 
 | ||||
| void Linear(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, | ||||
|             size_t& outputi) { | ||||
|             std::size_t& outputi) { | ||||
|     // Note on accuracy: Some values that this produces are +/- 1 from the actual firmware.
 | ||||
|     StepOverSamples(state, input, rate, output, outputi, | ||||
|                     [](u64 fraction, const auto& x0, const auto& x1, const auto& x2) { | ||||
|  |  | |||
|  | @ -32,7 +32,8 @@ struct State { | |||
|  * @param output The resampled audio buffer. | ||||
|  * @param outputi The index of output to start writing to. | ||||
|  */ | ||||
| void None(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, size_t& outputi); | ||||
| void None(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, | ||||
|           std::size_t& outputi); | ||||
| 
 | ||||
| /**
 | ||||
|  * Linear interpolation. This is equivalent to a first-order hold. There is a two-sample predelay. | ||||
|  | @ -44,7 +45,7 @@ void None(State& state, StereoBuffer16& input, float rate, StereoFrame16& output | |||
|  * @param outputi The index of output to start writing to. | ||||
|  */ | ||||
| void Linear(State& state, StereoBuffer16& input, float rate, StereoFrame16& output, | ||||
|             size_t& outputi); | ||||
|             std::size_t& outputi); | ||||
| 
 | ||||
| } // namespace AudioInterp
 | ||||
| } // namespace AudioCore
 | ||||
|  |  | |||
|  | @ -19,9 +19,9 @@ public: | |||
|         return native_sample_rate; | ||||
|     } | ||||
| 
 | ||||
|     void EnqueueSamples(const s16*, size_t) override {} | ||||
|     void EnqueueSamples(const s16*, std::size_t) override {} | ||||
| 
 | ||||
|     size_t SamplesInQueue() const override { | ||||
|     std::size_t SamplesInQueue() const override { | ||||
|         return 0; | ||||
|     } | ||||
| }; | ||||
|  |  | |||
|  | @ -74,7 +74,7 @@ unsigned int SDL2Sink::GetNativeSampleRate() const { | |||
|     return impl->sample_rate; | ||||
| } | ||||
| 
 | ||||
| void SDL2Sink::EnqueueSamples(const s16* samples, size_t sample_count) { | ||||
| void SDL2Sink::EnqueueSamples(const s16* samples, std::size_t sample_count) { | ||||
|     if (impl->audio_device_id <= 0) | ||||
|         return; | ||||
| 
 | ||||
|  | @ -89,12 +89,13 @@ size_t SDL2Sink::SamplesInQueue() const { | |||
| 
 | ||||
|     SDL_LockAudioDevice(impl->audio_device_id); | ||||
| 
 | ||||
|     size_t total_size = std::accumulate(impl->queue.begin(), impl->queue.end(), | ||||
|                                         static_cast<size_t>(0), [](size_t sum, const auto& buffer) { | ||||
|                                             // Division by two because each stereo sample is made of
 | ||||
|                                             // two s16.
 | ||||
|                                             return sum + buffer.size() / 2; | ||||
|                                         }); | ||||
|     std::size_t total_size = | ||||
|         std::accumulate(impl->queue.begin(), impl->queue.end(), static_cast<std::size_t>(0), | ||||
|                         [](std::size_t sum, const auto& buffer) { | ||||
|                             // Division by two because each stereo sample is made of
 | ||||
|                             // two s16.
 | ||||
|                             return sum + buffer.size() / 2; | ||||
|                         }); | ||||
| 
 | ||||
|     SDL_UnlockAudioDevice(impl->audio_device_id); | ||||
| 
 | ||||
|  | @ -104,8 +105,8 @@ size_t SDL2Sink::SamplesInQueue() const { | |||
| void SDL2Sink::Impl::Callback(void* impl_, u8* buffer, int buffer_size_in_bytes) { | ||||
|     Impl* impl = reinterpret_cast<Impl*>(impl_); | ||||
| 
 | ||||
|     size_t remaining_size = static_cast<size_t>(buffer_size_in_bytes) / | ||||
|                             sizeof(s16); // Keep track of size in 16-bit increments.
 | ||||
|     std::size_t remaining_size = static_cast<std::size_t>(buffer_size_in_bytes) / | ||||
|                                  sizeof(s16); // Keep track of size in 16-bit increments.
 | ||||
| 
 | ||||
|     while (remaining_size > 0 && !impl->queue.empty()) { | ||||
|         if (impl->queue.front().size() <= remaining_size) { | ||||
|  |  | |||
|  | @ -17,9 +17,9 @@ public: | |||
| 
 | ||||
|     unsigned int GetNativeSampleRate() const override; | ||||
| 
 | ||||
|     void EnqueueSamples(const s16* samples, size_t sample_count) override; | ||||
|     void EnqueueSamples(const s16* samples, std::size_t sample_count) override; | ||||
| 
 | ||||
|     size_t SamplesInQueue() const override; | ||||
|     std::size_t SamplesInQueue() const override; | ||||
| 
 | ||||
| private: | ||||
|     struct Impl; | ||||
|  |  | |||
|  | @ -29,7 +29,7 @@ public: | |||
|      * @param samples Samples in interleaved stereo PCM16 format. | ||||
|      * @param sample_count Number of samples. | ||||
|      */ | ||||
|     virtual void EnqueueSamples(const s16* samples, size_t sample_count) = 0; | ||||
|     virtual void EnqueueSamples(const s16* samples, std::size_t sample_count) = 0; | ||||
| 
 | ||||
|     /// Samples enqueued that have not been played yet.
 | ||||
|     virtual std::size_t SamplesInQueue() const = 0; | ||||
|  |  | |||
|  | @ -23,9 +23,9 @@ static double ClampRatio(double ratio) { | |||
|     return std::clamp(ratio, MIN_RATIO, MAX_RATIO); | ||||
| } | ||||
| 
 | ||||
| constexpr double MIN_DELAY_TIME = 0.05;            // Units: seconds
 | ||||
| constexpr double MAX_DELAY_TIME = 0.25;            // Units: seconds
 | ||||
| constexpr size_t DROP_FRAMES_SAMPLE_DELAY = 16000; // Units: samples
 | ||||
| constexpr double MIN_DELAY_TIME = 0.05;                 // Units: seconds
 | ||||
| constexpr double MAX_DELAY_TIME = 0.25;                 // Units: seconds
 | ||||
| constexpr std::size_t DROP_FRAMES_SAMPLE_DELAY = 16000; // Units: samples
 | ||||
| 
 | ||||
| constexpr double SMOOTHING_FACTOR = 0.007; | ||||
| 
 | ||||
|  | @ -33,14 +33,14 @@ struct TimeStretcher::Impl { | |||
|     soundtouch::SoundTouch soundtouch; | ||||
| 
 | ||||
|     steady_clock::time_point frame_timer = steady_clock::now(); | ||||
|     size_t samples_queued = 0; | ||||
|     std::size_t samples_queued = 0; | ||||
| 
 | ||||
|     double smoothed_ratio = 1.0; | ||||
| 
 | ||||
|     double sample_rate = static_cast<double>(native_sample_rate); | ||||
| }; | ||||
| 
 | ||||
| std::vector<s16> TimeStretcher::Process(size_t samples_in_queue) { | ||||
| std::vector<s16> TimeStretcher::Process(std::size_t samples_in_queue) { | ||||
|     // This is a very simple algorithm without any fancy control theory. It works and is stable.
 | ||||
| 
 | ||||
|     double ratio = CalculateCurrentRatio(); | ||||
|  | @ -76,7 +76,7 @@ void TimeStretcher::SetOutputSampleRate(unsigned int sample_rate) { | |||
|     impl->soundtouch.setRate(static_cast<double>(native_sample_rate) / impl->sample_rate); | ||||
| } | ||||
| 
 | ||||
| void TimeStretcher::AddSamples(const s16* buffer, size_t num_samples) { | ||||
| void TimeStretcher::AddSamples(const s16* buffer, std::size_t num_samples) { | ||||
|     impl->soundtouch.putSamples(buffer, static_cast<uint>(num_samples)); | ||||
|     impl->samples_queued += num_samples; | ||||
| } | ||||
|  | @ -115,9 +115,11 @@ double TimeStretcher::CalculateCurrentRatio() { | |||
|     return ratio; | ||||
| } | ||||
| 
 | ||||
| double TimeStretcher::CorrectForUnderAndOverflow(double ratio, size_t sample_delay) const { | ||||
|     const size_t min_sample_delay = static_cast<size_t>(MIN_DELAY_TIME * impl->sample_rate); | ||||
|     const size_t max_sample_delay = static_cast<size_t>(MAX_DELAY_TIME * impl->sample_rate); | ||||
| double TimeStretcher::CorrectForUnderAndOverflow(double ratio, std::size_t sample_delay) const { | ||||
|     const std::size_t min_sample_delay = | ||||
|         static_cast<std::size_t>(MIN_DELAY_TIME * impl->sample_rate); | ||||
|     const std::size_t max_sample_delay = | ||||
|         static_cast<std::size_t>(MAX_DELAY_TIME * impl->sample_rate); | ||||
| 
 | ||||
|     if (sample_delay < min_sample_delay) { | ||||
|         // Make the ratio bigger.
 | ||||
|  | @ -133,7 +135,7 @@ double TimeStretcher::CorrectForUnderAndOverflow(double ratio, size_t sample_del | |||
| std::vector<s16> TimeStretcher::GetSamples() { | ||||
|     uint available = impl->soundtouch.numSamples(); | ||||
| 
 | ||||
|     std::vector<s16> output(static_cast<size_t>(available) * 2); | ||||
|     std::vector<s16> output(static_cast<std::size_t>(available) * 2); | ||||
| 
 | ||||
|     impl->soundtouch.receiveSamples(output.data(), available); | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ public: | |||
|      * @param sample_buffer Buffer of samples in interleaved stereo PCM16 format. | ||||
|      * @param num_samples Number of samples. | ||||
|      */ | ||||
|     void AddSamples(const s16* sample_buffer, size_t num_samples); | ||||
|     void AddSamples(const s16* sample_buffer, std::size_t num_samples); | ||||
| 
 | ||||
|     /// Flush audio remaining in internal buffers.
 | ||||
|     void Flush(); | ||||
|  | @ -42,7 +42,7 @@ public: | |||
|      * played yet. | ||||
|      * @return Samples to play in interleaved stereo PCM16 format. | ||||
|      */ | ||||
|     std::vector<s16> Process(size_t sample_delay); | ||||
|     std::vector<s16> Process(std::size_t sample_delay); | ||||
| 
 | ||||
| private: | ||||
|     struct Impl; | ||||
|  | @ -52,7 +52,7 @@ private: | |||
|     double CalculateCurrentRatio(); | ||||
|     /// INTERNAL: If we have too many or too few samples downstream, nudge ratio in the appropriate
 | ||||
|     /// direction.
 | ||||
|     double CorrectForUnderAndOverflow(double ratio, size_t sample_delay) const; | ||||
|     double CorrectForUnderAndOverflow(double ratio, std::size_t sample_delay) const; | ||||
|     /// INTERNAL: Gets the time-stretched samples from SoundTouch.
 | ||||
|     std::vector<s16> GetSamples(); | ||||
| }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue