1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-11-23 17:30:17 +01:00

More members of Mixer are const

This commit is contained in:
Paul Licameli
2020-11-30 18:25:01 -05:00
parent c9a9f0f906
commit 55ad1b43b8
3 changed files with 20 additions and 25 deletions

View File

@@ -1953,8 +1953,11 @@ bool AudioIO::AllocateBuffers(
1, 1,
std::max( mPlaybackSamplesToCopy, mPlaybackQueueMinimum ), std::max( mPlaybackSamplesToCopy, mPlaybackQueueMinimum ),
false, false,
mRate, floatSample, false); mRate, floatSample,
mPlaybackMixers[i]->ApplyTrackGains(false); false, // low quality dithering and resampling
nullptr,
false // don't apply track gains
);
} }
} }

View File

@@ -240,9 +240,11 @@ Mixer::Mixer(const WaveTrackConstArray &inputTracks,
double startTime, double stopTime, double startTime, double stopTime,
unsigned numOutChannels, size_t outBufferSize, bool outInterleaved, unsigned numOutChannels, size_t outBufferSize, bool outInterleaved,
double outRate, sampleFormat outFormat, double outRate, sampleFormat outFormat,
bool highQuality, MixerSpec *mixerSpec) bool highQuality, MixerSpec *mixerSpec, bool applyTrackGains)
: mNumInputTracks { inputTracks.size() } : mNumInputTracks { inputTracks.size() }
, mApplyTrackGains{ applyTrackGains }
// This is the number of samples grabbed in one go from a track // This is the number of samples grabbed in one go from a track
// and placed in a queue, when mixing with resampling. // and placed in a queue, when mixing with resampling.
// (Should we use WaveTrack::GetBestBlockSize instead?) // (Should we use WaveTrack::GetBestBlockSize instead?)
@@ -252,6 +254,9 @@ Mixer::Mixer(const WaveTrackConstArray &inputTracks,
, mNumChannels{ numOutChannels } , mNumChannels{ numOutChannels }
, mGains{ mNumChannels } , mGains{ mNumChannels }
, mFormat{ outFormat }
, mRate{ outRate }
, mMayThrow{ mayThrow } , mMayThrow{ mayThrow }
{ {
mHighQuality = highQuality; mHighQuality = highQuality;
@@ -270,10 +275,7 @@ Mixer::Mixer(const WaveTrackConstArray &inputTracks,
mTime = startTime; mTime = startTime;
mBufferSize = outBufferSize; mBufferSize = outBufferSize;
mInterleaved = outInterleaved; mInterleaved = outInterleaved;
mRate = outRate;
mSpeed = 1.0; mSpeed = 1.0;
mFormat = outFormat;
mApplyTrackGains = true;
if( mixerSpec && mixerSpec->GetNumChannels() == mNumChannels && if( mixerSpec && mixerSpec->GetNumChannels() == mNumChannels &&
mixerSpec->GetNumTracks() == mNumInputTracks ) mixerSpec->GetNumTracks() == mNumInputTracks )
mMixerSpec = mixerSpec; mMixerSpec = mixerSpec;
@@ -351,11 +353,6 @@ void Mixer::MakeResamplers()
mResample[i] = std::make_unique<Resample>(mHighQuality, mMinFactor[i], mMaxFactor[i]); mResample[i] = std::make_unique<Resample>(mHighQuality, mMinFactor[i], mMaxFactor[i]);
} }
void Mixer::ApplyTrackGains(bool apply)
{
mApplyTrackGains = apply;
}
void Mixer::Clear() void Mixer::Clear()
{ {
for (unsigned int c = 0; c < mNumBuffers; c++) { for (unsigned int c = 0; c < mNumBuffers; c++) {

View File

@@ -106,16 +106,11 @@ class AUDACITY_DLL_API Mixer {
double startTime, double stopTime, double startTime, double stopTime,
unsigned numOutChannels, size_t outBufferSize, bool outInterleaved, unsigned numOutChannels, size_t outBufferSize, bool outInterleaved,
double outRate, sampleFormat outFormat, double outRate, sampleFormat outFormat,
bool highQuality = true, MixerSpec *mixerSpec = NULL); bool highQuality = true, MixerSpec *mixerSpec = nullptr,
bool applytTrackGains = true);
virtual ~ Mixer(); virtual ~ Mixer();
//
// Setup
//
void ApplyTrackGains(bool apply = true); // True by default
// //
// Processing // Processing
// //
@@ -165,18 +160,18 @@ class AUDACITY_DLL_API Mixer {
private: private:
// Input // Input
size_t mNumInputTracks; const size_t mNumInputTracks;
ArrayOf<WaveTrackCache> mInputTrack; ArrayOf<WaveTrackCache> mInputTrack;
bool mbVariableRates; bool mbVariableRates;
const BoundedEnvelope *mEnvelope; const BoundedEnvelope *mEnvelope;
ArrayOf<sampleCount> mSamplePos; ArrayOf<sampleCount> mSamplePos;
bool mApplyTrackGains; const bool mApplyTrackGains;
Doubles mEnvValues; Doubles mEnvValues;
double mT0; // Start time double mT0; // Start time
double mT1; // Stop time (none if mT0==mT1) double mT1; // Stop time (none if mT0==mT1)
double mTime; // Current time (renamed from mT to mTime for consistency with AudioIO - mT represented warped time there) double mTime; // Current time (renamed from mT to mTime for consistency with AudioIO - mT represented warped time there)
ArrayOf<std::unique_ptr<Resample>> mResample; ArrayOf<std::unique_ptr<Resample>> mResample;
size_t mQueueMaxLen; const size_t mQueueMaxLen;
FloatBuffers mSampleQueue; FloatBuffers mSampleQueue;
ArrayOf<int> mQueueStart; ArrayOf<int> mQueueStart;
ArrayOf<int> mQueueLen; ArrayOf<int> mQueueLen;
@@ -185,21 +180,21 @@ class AUDACITY_DLL_API Mixer {
// Output // Output
size_t mMaxOut; size_t mMaxOut;
unsigned mNumChannels; const unsigned mNumChannels;
Floats mGains; Floats mGains;
unsigned mNumBuffers; unsigned mNumBuffers;
size_t mBufferSize; size_t mBufferSize;
size_t mInterleavedBufferSize; size_t mInterleavedBufferSize;
sampleFormat mFormat; const sampleFormat mFormat;
bool mInterleaved; bool mInterleaved;
ArrayOf<SampleBuffer> mBuffer, mTemp; ArrayOf<SampleBuffer> mBuffer, mTemp;
Floats mFloatBuffer; Floats mFloatBuffer;
double mRate; const double mRate;
double mSpeed; double mSpeed;
bool mHighQuality; bool mHighQuality;
std::vector<double> mMinFactor, mMaxFactor; std::vector<double> mMinFactor, mMaxFactor;
bool mMayThrow; const bool mMayThrow;
}; };
#endif #endif