1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-01-02 14:17:07 +01:00

Rewrite many iterations over tracks and channels in src/effects

This commit is contained in:
Paul Licameli
2018-09-11 13:07:32 -04:00
parent b94e8fec96
commit aee4005044
15 changed files with 113 additions and 231 deletions

View File

@@ -75,8 +75,8 @@ bool EffectStereoToMono::Process()
this->CopyInputTracks(); // Set up mOutputTracks.
bool bGoodResult = true;
SelectedTrackListOfKindIterator iter(Track::Wave, mOutputTracks.get());
mLeftTrack = (WaveTrack *)iter.First();
auto trackRange = mOutputTracks->Selected< WaveTrack >();
mLeftTrack = *trackRange.first;
bool refreshIter = false;
if(mLeftTrack)
@@ -87,13 +87,12 @@ bool EffectStereoToMono::Process()
}
int count = 0;
while (mLeftTrack) {
if (mLeftTrack->GetKind() == Track::Wave &&
mLeftTrack->GetSelected() &&
mLeftTrack->GetLinked()) {
while ( trackRange.first != trackRange.second ) {
mLeftTrack = *trackRange.first;
if (mLeftTrack->GetLinked()) {
// Assume linked track is wave
mRightTrack = static_cast<WaveTrack*>(iter.Next());
mRightTrack = * ++ trackRange.first;
if ((mLeftTrack->GetRate() == mRightTrack->GetRate())) {
auto leftTrackStart = mLeftTrack->TimeToLongSamples(mLeftTrack->GetStartTime());
@@ -116,12 +115,12 @@ bool EffectStereoToMono::Process()
}
if (refreshIter) {
mLeftTrack = (WaveTrack *)iter.First();
trackRange = mOutputTracks->Selected< WaveTrack >();
refreshIter = false;
}
else {
mLeftTrack = (WaveTrack *)iter.Next();
}
else
++trackRange.first;
count++;
}