| 154 | } // namespace |
| 155 | |
| 156 | size_t CompressorInstance::RealtimeProcess( |
| 157 | size_t group, EffectSettings& settings, const float* const* inbuf, |
| 158 | float* const* outbuf, size_t numSamples) |
| 159 | { |
| 160 | if (group >= mSlaves.size()) |
| 161 | return 0; |
| 162 | auto& slave = mSlaves[group]; |
| 163 | auto& compressor = *slave.mCompressor; |
| 164 | const auto numProcessedSamples = |
| 165 | InstanceProcess(settings, compressor, inbuf, outbuf, numSamples); |
| 166 | if (const auto queue = slave.mOutputQueue.lock()) |
| 167 | { |
| 168 | const auto& frameStats = compressor.GetLastFrameStats(); |
| 169 | const auto& compressorSettings = compressor.GetSettings(); |
| 170 | const float netGain = compressorSettings.outCompressionThreshDb - |
| 171 | compressorSettings.inCompressionThreshDb; |
| 172 | const auto targetCompressionDb = |
| 173 | compressor.EvaluateTransferFunction(frameStats.maxInputSampleDb) - |
| 174 | frameStats.maxInputSampleDb - netGain; |
| 175 | DynamicRangeProcessorOutputPacket newPacket; |
| 176 | newPacket.indexOfFirstSample = slave.mSampleCounter; |
| 177 | newPacket.numSamples = numProcessedSamples; |
| 178 | newPacket.targetCompressionDb = targetCompressionDb; |
| 179 | newPacket.actualCompressionDb = frameStats.dbGainOfMaxInputSample; |
| 180 | newPacket.inputDb = frameStats.maxInputSampleDb; |
| 181 | newPacket.outputDb = GetOutputDb(frameStats, compressorSettings); |
| 182 | queue->Put(newPacket); |
| 183 | } |
| 184 | |
| 185 | if (const auto queue = slave.mCompressionValueQueue.lock()) |
| 186 | queue->Put(MeterValues { |
| 187 | compressor.GetLastFrameStats().dbGainOfMaxInputSample, |
| 188 | GetOutputDb( |
| 189 | compressor.GetLastFrameStats(), compressor.GetSettings()) }); |
| 190 | |
| 191 | slave.mSampleCounter += numProcessedSamples; |
| 192 | return numProcessedSamples; |
| 193 | } |
| 194 | |
| 195 | void CompressorInstance::RealtimePassThrough( |
| 196 | size_t group, EffectSettings& settings, const float* const* inbuf, |
nothing calls this directly
no test coverage detected