1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-02-05 19:21:59 +01:00

Remove naked new[] in: various

This commit is contained in:
Paul Licameli
2016-04-14 12:25:43 -04:00
parent ce2e154e89
commit 692a033968
17 changed files with 196 additions and 260 deletions

View File

@@ -189,7 +189,6 @@ FreqWindow::FreqWindow(wxWindow * parent, wxWindowID id,
const wxPoint & pos)
: wxDialogWrapper(parent, id, title, pos, wxDefaultSize,
wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX),
mData(NULL),
mAnalyst(std::make_unique<SpectrumAnalyst>())
{
SetName(GetTitle());
@@ -514,8 +513,6 @@ FreqWindow::FreqWindow(wxWindow * parent, wxWindowID id,
FreqWindow::~FreqWindow()
{
if (mData)
delete[] mData;
}
bool FreqWindow::Show(bool show)
@@ -546,10 +543,7 @@ bool FreqWindow::Show(bool show)
void FreqWindow::GetAudio()
{
if (mData) {
delete [] mData;
mData = NULL;
}
mData.reset();
mDataLen = 0;
int selcount = 0;
@@ -571,23 +565,21 @@ void FreqWindow::GetAudio()
else
// dataLen is not more than 10 * 2 ^ 20
mDataLen = dataLen.as_size_t();
mData = new float[mDataLen];
track->Get((samplePtr)mData, floatSample, start, mDataLen);
mData = Floats{ mDataLen };
track->Get((samplePtr)mData.get(), floatSample, start, mDataLen);
}
else {
if (track->GetRate() != mRate) {
wxMessageBox(_("To plot the spectrum, all selected tracks must be the same sample rate."));
delete[] mData;
mData = NULL;
mData.reset();
mDataLen = 0;
return;
}
auto start = track->TimeToLongSamples(p->mViewInfo.selectedRegion.t0());
float *buffer2 = new float[mDataLen];
track->Get((samplePtr)buffer2, floatSample, start, mDataLen);
Floats buffer2{ mDataLen };
track->Get((samplePtr)buffer2.get(), floatSample, start, mDataLen);
for (size_t i = 0; i < mDataLen; i++)
mData[i] += buffer2[i];
delete[] buffer2;
}
selcount++;
}
@@ -1000,7 +992,7 @@ void FreqWindow::Recalc()
wxYieldIfNeeded();
mAnalyst->Calculate(alg, windowFunc, mWindowSize, mRate,
mData, mDataLen,
mData.get(), mDataLen,
&mYMin, &mYMax, mProgress);
}
if (hadFocus) {
@@ -1202,22 +1194,22 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
auto half = mWindowSize / 2;
mProcessed.resize(mWindowSize);
float *in = new float[mWindowSize];
float *out = new float[mWindowSize];
float *out2 = new float[mWindowSize];
float *win = new float[mWindowSize];
Floats in{ mWindowSize };
Floats out{ mWindowSize };
Floats out2{ mWindowSize };
Floats win{ mWindowSize };
for (size_t i = 0; i < mWindowSize; i++) {
mProcessed[i] = 0.0f;
win[i] = 1.0f;
}
WindowFunc(windowFunc, mWindowSize, win);
WindowFunc(windowFunc, mWindowSize, win.get());
// Scale window such that an amplitude of 1.0 in the time domain
// shows an amplitude of 0dB in the frequency domain
double wss = 0;
for(size_t i = 0; i < mWindowSize; i++)
for (size_t i = 0; i<mWindowSize; i++)
wss += win[i];
if(wss > 0)
wss = 4.0 / (wss*wss);
@@ -1236,7 +1228,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
switch (alg) {
case Spectrum:
PowerSpectrum(mWindowSize, in, out);
PowerSpectrum(mWindowSize, in.get(), out.get());
for (size_t i = 0; i < half; i++)
mProcessed[i] += out[i];
@@ -1247,7 +1239,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
case EnhancedAutocorrelation:
// Take FFT
RealFFT(mWindowSize, in, out, out2);
RealFFT(mWindowSize, in.get(), out.get(), out2.get());
// Compute power
for (size_t i = 0; i < mWindowSize; i++)
in[i] = (out[i] * out[i]) + (out2[i] * out2[i]);
@@ -1265,7 +1257,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
in[i] = pow(in[i], 1.0f / 3.0f);
}
// Take FFT
RealFFT(mWindowSize, in, out, out2);
RealFFT(mWindowSize, in.get(), out.get(), out2.get());
// Take real part of result
for (size_t i = 0; i < half; i++)
@@ -1273,7 +1265,8 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
break;
case Cepstrum:
RealFFT(mWindowSize, in, out, out2);
RealFFT(mWindowSize, in.get(), out.get(), out2.get());
// Compute log power
// Set a sane lower limit assuming maximum time amplitude of 1.0
{
@@ -1288,7 +1281,7 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
in[i] = log(power);
}
// Take IFFT
InverseRealFFT(mWindowSize, in, NULL, out);
InverseRealFFT(mWindowSize, in.get(), NULL, out.get());
// Take real part of result
for (size_t i = 0; i < half; i++)
@@ -1407,11 +1400,6 @@ bool SpectrumAnalyst::Calculate(Algorithm alg, int windowFunc,
break;
}
delete[]in;
delete[]out;
delete[]out2;
delete[]win;
if (pYMin)
*pYMin = mYMin;
if (pYMax)