| 141 | } |
| 142 | |
| 143 | void AudioFileWAV::writePayloadToFileStream(const AudioThreadInputPtr& input, size_t startInputPosition, size_t endInputPosition) { |
| 144 | |
| 145 | // Prevent clipping |
| 146 | float intScale = (input->peak < 1.0) ? 32767.0f : (32767.0f / input->peak); |
| 147 | |
| 148 | if (input->channels == 1) { |
| 149 | for (size_t i = startInputPosition, iMax = endInputPosition; i < iMax; i++) { |
| 150 | |
| 151 | write_word(outputFileStream, int(input->data[i] * intScale), 2); |
| 152 | |
| 153 | currentFileSize += 2; |
| 154 | } |
| 155 | } |
| 156 | else if (input->channels == 2) { |
| 157 | for (size_t i = startInputPosition, iMax = endInputPosition / 2; i < iMax; i++) { |
| 158 | |
| 159 | write_word(outputFileStream, int(input->data[i * 2] * intScale), 2); |
| 160 | write_word(outputFileStream, int(input->data[i * 2 + 1] * intScale), 2); |
| 161 | |
| 162 | currentFileSize += 4; |
| 163 | } |
| 164 | } |
| 165 | } |
| 166 | |
| 167 | size_t AudioFileWAV::getMaxWritableNumberOfSamples(const AudioThreadInputPtr& input) const { |
| 168 |
nothing calls this directly
no outgoing calls
no test coverage detected