| 113 | } |
| 114 | |
| 115 | std::vector<int16_t> float_to_pcm16_clipped( |
| 116 | const std::vector<float> & samples, |
| 117 | Pcm16QuantizeMode quantize_mode) { |
| 118 | std::vector<int16_t> pcm(samples.size(), 0); |
| 119 | for (size_t i = 0; i < samples.size(); ++i) { |
| 120 | const float clipped = std::clamp(samples[i] * 32768.0F, -32768.0F, 32767.0F); |
| 121 | if (quantize_mode == Pcm16QuantizeMode::RoundToNearest) { |
| 122 | pcm[i] = static_cast<int16_t>(std::lrint(clipped)); |
| 123 | } else { |
| 124 | pcm[i] = static_cast<int16_t>(clipped); |
| 125 | } |
| 126 | } |
| 127 | return pcm; |
| 128 | } |
| 129 | |
| 130 | std::vector<float> pcm16_to_float_unit_range(const std::vector<int16_t> & pcm_samples) { |
| 131 | std::vector<float> samples(pcm_samples.size(), 0.0F); |
no test coverage detected