MCPcopy Create free account
hub / github.com/audacity/audacity / RealtimeProcess

Method RealtimeProcess

libraries/lib-builtin-effects/CompressorInstance.cpp:156–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

154} // namespace
155
156size_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
195void CompressorInstance::RealtimePassThrough(
196 size_t group, EffectSettings& settings, const float* const* inbuf,

Callers

nothing calls this directly

Calls 6

GetOutputDbFunction · 0.85
GetSettingsMethod · 0.80
sizeMethod · 0.45
lockMethod · 0.45
PutMethod · 0.45

Tested by

no test coverage detected