Some compilability fixes for Equalization48x.cpp
This commit is contained in:
parent
a1f08ad4e0
commit
e09c17d0c5
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "MemoryX.h"
|
||||
|
||||
#define fft_type float
|
||||
using fft_type = float;
|
||||
|
||||
int SmallRB(int bits, int numberBits);
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#ifdef EXPERIMENTAL_EQ_SSE_THREADED
|
||||
#include "../Project.h"
|
||||
#include "Equalization.h"
|
||||
#include "../WaveClip.h"
|
||||
#include "../WaveTrack.h"
|
||||
#include "../float_cast.h"
|
||||
#include <vector>
|
||||
|
@ -300,7 +301,7 @@ bool EffectEqualization48x::Process(EffectEqualization* effectEqualization)
|
|||
auto cleanup = finally( [&] { FreeBuffersWorkers(); } );
|
||||
int count = 0;
|
||||
for( auto track :
|
||||
mEffectEqualization->mOutputTracks->Selected< WaveTrack >() {
|
||||
mEffectEqualization->mOutputTracks->Selected< WaveTrack >() ) {
|
||||
double trackStart = track->GetStartTime();
|
||||
double trackEnd = track->GetEndTime();
|
||||
double t0 = mEffectEqualization->mT0 < trackStart? trackStart: mEffectEqualization->mT0;
|
||||
|
@ -333,24 +334,26 @@ bool EffectEqualization48x::TrackCompare()
|
|||
auto cleanup = finally( [&] { FreeBuffersWorkers(); } );
|
||||
// Reset map
|
||||
// PRL: These two maps aren't really used
|
||||
std::vector<Track*> SecondIMap;
|
||||
std::vector<const Track*> SecondIMap;
|
||||
std::vector<Track*> SecondOMap;
|
||||
SecondIMap.clear();
|
||||
SecondOMap.clear();
|
||||
|
||||
TrackList SecondOutputTracks;
|
||||
auto pSecondOutputTracks = TrackList::Create();
|
||||
auto &SecondOutputTracks = *pSecondOutputTracks;
|
||||
|
||||
for (auto aTrack : mEffectEqualization->mTracks->Any< WaveTrack >()) {
|
||||
for (auto aTrack :
|
||||
mEffectEqualization->inputTracks()->Any< const WaveTrack >()) {
|
||||
|
||||
// Include selected tracks, plus sync-lock selected tracks for Track::All.
|
||||
if (aTrack->GetSelected() ||
|
||||
(// mEffectEqualization->mOutputTracksType == TrackKind::All &&
|
||||
aTrack->IsSyncLockSelected()))
|
||||
{
|
||||
auto o = aTrack->Duplicate();
|
||||
auto o = mEffectEqualization->mFactory->DuplicateWaveTrack( *aTrack );
|
||||
SecondIMap.push_back(aTrack);
|
||||
SecondIMap.push_back(o.get());
|
||||
SecondOutputTracks.push_back( o );
|
||||
SecondOutputTracks.Add( o );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -359,7 +362,7 @@ bool EffectEqualization48x::TrackCompare()
|
|||
int count = 0;
|
||||
for( auto track :
|
||||
( i ? mEffectEqualization->mOutputTracks.get()
|
||||
: &SecondOutputTracks ) -> Selected< WaveTrack >() {
|
||||
: &SecondOutputTracks ) -> Selected< WaveTrack >() ) {
|
||||
double trackStart = track->GetStartTime();
|
||||
double trackEnd = track->GetEndTime();
|
||||
double t0 = mEffectEqualization->mT0 < trackStart? trackStart: mEffectEqualization->mT0;
|
||||
|
@ -380,7 +383,7 @@ bool EffectEqualization48x::TrackCompare()
|
|||
auto iter2 = (SecondOutputTracks.Selected< const WaveTrack >()).first;
|
||||
auto track2 = *iter2;
|
||||
for ( auto track :
|
||||
mEffectEqualization->mOutputTracks->Selected< const WaveTrack >() {
|
||||
mEffectEqualization->mOutputTracks->Selected< WaveTrack >() ) {
|
||||
double trackStart = track->GetStartTime();
|
||||
double trackEnd = track->GetEndTime();
|
||||
double t0 = mEffectEqualization->mT0 < trackStart? trackStart: mEffectEqualization->mT0;
|
||||
|
@ -398,7 +401,8 @@ bool EffectEqualization48x::TrackCompare()
|
|||
return bBreakLoop; // return !bBreakLoop ?
|
||||
}
|
||||
|
||||
bool EffectEqualization48x::DeltaTrack(WaveTrack * t, WaveTrack * t2, sampleCount start, sampleCount len)
|
||||
bool EffectEqualization48x::DeltaTrack(
|
||||
WaveTrack * t, const WaveTrack * t2, sampleCount start, sampleCount len)
|
||||
{
|
||||
|
||||
auto trackBlockSize = t->GetMaxBlockSize();
|
||||
|
@ -427,6 +431,8 @@ bool EffectEqualization48x::DeltaTrack(WaveTrack * t, WaveTrack * t2, sampleCoun
|
|||
return true;
|
||||
}
|
||||
|
||||
#include <wx/stopwatch.h>
|
||||
|
||||
bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
|
||||
{
|
||||
mEffectEqualization=effectEqualization;
|
||||
|
@ -464,7 +470,7 @@ bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
|
|||
timer.Start();
|
||||
int count = 0;
|
||||
for (auto track :
|
||||
mEffectEqualization->mOutputTracks->Selected< WaveTrack >() {
|
||||
mEffectEqualization->mOutputTracks->Selected< WaveTrack >() ) {
|
||||
double trackStart = track->GetStartTime();
|
||||
double trackEnd = track->GetEndTime();
|
||||
double t0 = mEffectEqualization->mT0 < trackStart? trackStart: mEffectEqualization->mT0;
|
||||
|
@ -493,7 +499,8 @@ bool EffectEqualization48x::Benchmark(EffectEqualization* effectEqualization)
|
|||
wxTimeSpan tsDefaultThreaded(0, 0, 0, times[3]);
|
||||
wxTimeSpan tsDefault(0, 0, 0, times[4]);
|
||||
|
||||
Effect::MessageBox(wxString::Format(_("Benchmark times:\nOriginal: %s\nDefault Segmented: %s\nDefault Threaded: %s\nSSE: %s\nSSE Threaded: %s\n"),tsDefault.Format(wxT("%M:%S.%l")),
|
||||
mEffectEqualization->MessageBox(
|
||||
wxString::Format(_("Benchmark times:\nOriginal: %s\nDefault Segmented: %s\nDefault Threaded: %s\nSSE: %s\nSSE Threaded: %s\n"),tsDefault.Format(wxT("%M:%S.%l")),
|
||||
tsDefaultEnhanced.Format(wxT("%M:%S.%l")), tsDefaultThreaded.Format(wxT("%M:%S.%l")),tsSSE.Format(wxT("%M:%S.%l")),tsSSEThreaded.Format(wxT("%M:%S.%l"))));
|
||||
return bBreakLoop; // return !bBreakLoop ?
|
||||
}
|
||||
|
@ -632,7 +639,9 @@ bool EffectEqualization48x::ProcessOne1x(int count, WaveTrack * t,
|
|||
if(bigRuns == 0)
|
||||
singleProcessLength = len.as_size_t();
|
||||
else
|
||||
singleProcessLength=(mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize));
|
||||
singleProcessLength =
|
||||
((mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize)))
|
||||
.as_size_t();
|
||||
auto currentSample=start;
|
||||
bool bBreakLoop = false;
|
||||
for(int bigRun=0;bigRun<bigRuns;bigRun++)
|
||||
|
@ -812,7 +821,9 @@ bool EffectEqualization48x::ProcessOne4x(int count, WaveTrack * t,
|
|||
auto bigRuns = len/(subBufferSize-mBlockSize);
|
||||
int trackBlocksPerBig=subBufferSize/trackBlockSize;
|
||||
int trackLeftovers=subBufferSize-trackBlocksPerBig*trackBlockSize;
|
||||
size_t singleProcessLength=(mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize));
|
||||
size_t singleProcessLength =
|
||||
((mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize)))
|
||||
.as_size_t();
|
||||
auto currentSample=start;
|
||||
|
||||
bool bBreakLoop = false;
|
||||
|
@ -847,12 +858,14 @@ bool EffectEqualization48x::ProcessOne4x(int count, WaveTrack * t,
|
|||
return bBreakLoop;
|
||||
}
|
||||
|
||||
#include <wx/thread.h>
|
||||
|
||||
void *EQWorker::Entry()
|
||||
{
|
||||
while(!mExitLoop) {
|
||||
int i = 0;
|
||||
{
|
||||
wxMutexLocker locker( mMutex );
|
||||
wxMutexLocker locker( *mMutex );
|
||||
for(; i < mBufferInfoCount; i++) {
|
||||
if(mBufferInfoList[i].mBufferStatus==BufferReady) { // we found an unlocked ready buffer
|
||||
mBufferInfoList[i].mBufferStatus=BufferBusy; // we own it now
|
||||
|
@ -899,7 +912,9 @@ bool EffectEqualization48x::ProcessOne1x4xThreaded(int count, WaveTrack * t,
|
|||
auto bigRuns = len/(subBufferSize-mBlockSize);
|
||||
int trackBlocksPerBig=subBufferSize/trackBlockSize;
|
||||
int trackLeftovers=subBufferSize-trackBlocksPerBig*trackBlockSize;
|
||||
size_t singleProcessLength=(mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize));
|
||||
size_t singleProcessLength =
|
||||
((mFilterSize>>1)*bigRuns + len%(bigRuns*(subBufferSize-mBlockSize)))
|
||||
.as_size_t();
|
||||
auto currentSample=start;
|
||||
|
||||
int bigBlocksRead=mWorkerDataCount, bigBlocksWritten=0;
|
||||
|
|
|
@ -17,6 +17,11 @@ Intrinsics (SSE/AVX) and Threaded Equalization
|
|||
|
||||
#include "../MemoryX.h"
|
||||
|
||||
#include <wx/thread.h> // to inherit
|
||||
#include <audacity/Types.h>
|
||||
class WaveTrack;
|
||||
using fft_type = float;
|
||||
|
||||
#ifdef __AVX_ENABLED
|
||||
#define __MAXBUFFERCOUNT 8
|
||||
#else
|
||||
|
@ -129,7 +134,7 @@ public:
|
|||
private:
|
||||
bool RunFunctionSelect(int flags, int count, WaveTrack * t, sampleCount start, sampleCount len);
|
||||
bool TrackCompare();
|
||||
bool DeltaTrack(WaveTrack * t, WaveTrack * t2, sampleCount start, sampleCount len);
|
||||
bool DeltaTrack(WaveTrack * t, const WaveTrack * t2, sampleCount start, sampleCount len);
|
||||
bool AllocateBuffersWorkers(int nThreads);
|
||||
bool FreeBuffersWorkers();
|
||||
|
||||
|
|
Loading…
Reference in New Issue