mirror of
https://github.com/cookiengineer/audacity
synced 2026-01-02 14:17:07 +01:00
Remove GetLink(ed) in various other places
This commit is contained in:
@@ -75,47 +75,40 @@ bool EffectStereoToMono::Process()
|
||||
this->CopyInputTracks(); // Set up mOutputTracks.
|
||||
bool bGoodResult = true;
|
||||
|
||||
auto trackRange = mOutputTracks->Selected< WaveTrack >();
|
||||
mLeftTrack = *trackRange.first;
|
||||
auto trackRange = mOutputTracks->SelectedLeaders< WaveTrack >();
|
||||
bool refreshIter = false;
|
||||
|
||||
if(mLeftTrack)
|
||||
{
|
||||
// create a NEW WaveTrack to hold all of the output
|
||||
AudacityProject *p = GetActiveProject();
|
||||
mOutTrack = p->GetTrackFactory()->NewWaveTrack(floatSample, mLeftTrack->GetRate());
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
while ( trackRange.first != trackRange.second ) {
|
||||
mLeftTrack = *trackRange.first;
|
||||
if (mLeftTrack->GetLinked()) {
|
||||
auto channels = TrackList::Channels( mLeftTrack );
|
||||
if (channels.size() != 2) {
|
||||
// TODO: more-than-two-channels
|
||||
++ trackRange.first;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Assume linked track is wave
|
||||
mRightTrack = * ++ trackRange.first;
|
||||
mRightTrack = * channels.rbegin();
|
||||
|
||||
if ((mLeftTrack->GetRate() == mRightTrack->GetRate())) {
|
||||
auto leftTrackStart = mLeftTrack->TimeToLongSamples(mLeftTrack->GetStartTime());
|
||||
auto rightTrackStart = mRightTrack->TimeToLongSamples(mRightTrack->GetStartTime());
|
||||
mStart = wxMin(leftTrackStart, rightTrackStart);
|
||||
if ((mLeftTrack->GetRate() == mRightTrack->GetRate())) {
|
||||
auto leftTrackStart = mLeftTrack->TimeToLongSamples(mLeftTrack->GetStartTime());
|
||||
auto rightTrackStart = mRightTrack->TimeToLongSamples(mRightTrack->GetStartTime());
|
||||
mStart = wxMin(leftTrackStart, rightTrackStart);
|
||||
|
||||
auto leftTrackEnd = mLeftTrack->TimeToLongSamples(mLeftTrack->GetEndTime());
|
||||
auto rightTrackEnd = mRightTrack->TimeToLongSamples(mRightTrack->GetEndTime());
|
||||
mEnd = wxMax(leftTrackEnd, rightTrackEnd);
|
||||
auto leftTrackEnd = mLeftTrack->TimeToLongSamples(mLeftTrack->GetEndTime());
|
||||
auto rightTrackEnd = mRightTrack->TimeToLongSamples(mRightTrack->GetEndTime());
|
||||
mEnd = wxMax(leftTrackEnd, rightTrackEnd);
|
||||
|
||||
bGoodResult = ProcessOne(count);
|
||||
if (!bGoodResult)
|
||||
break;
|
||||
bGoodResult = ProcessOne(count);
|
||||
if (!bGoodResult)
|
||||
break;
|
||||
|
||||
mOutTrack->Clear(mOutTrack->GetStartTime(), mOutTrack->GetEndTime());
|
||||
|
||||
// The right channel has been deleted, so we must restart from the beginning
|
||||
refreshIter = true;
|
||||
}
|
||||
// The right channel has been deleted, so we must restart from the beginning
|
||||
refreshIter = true;
|
||||
}
|
||||
|
||||
if (refreshIter) {
|
||||
trackRange = mOutputTracks->Selected< WaveTrack >();
|
||||
trackRange = mOutputTracks->SelectedLeaders< WaveTrack >();
|
||||
refreshIter = false;
|
||||
}
|
||||
else
|
||||
@@ -128,11 +121,6 @@ bool EffectStereoToMono::Process()
|
||||
return bGoodResult;
|
||||
}
|
||||
|
||||
void EffectStereoToMono::End()
|
||||
{
|
||||
mOutTrack.reset();
|
||||
}
|
||||
|
||||
bool EffectStereoToMono::ProcessOne(int count)
|
||||
{
|
||||
float curLeftFrame;
|
||||
@@ -145,6 +133,10 @@ bool EffectStereoToMono::ProcessOne(int count)
|
||||
Floats rightBuffer{ idealBlockLen };
|
||||
bool bResult = true;
|
||||
|
||||
AudacityProject *p = GetActiveProject();
|
||||
auto outTrack =
|
||||
p->GetTrackFactory()->NewWaveTrack(floatSample, mLeftTrack->GetRate());
|
||||
|
||||
while (index < mEnd) {
|
||||
bResult &= mLeftTrack->Get((samplePtr)leftBuffer.get(), floatSample, index, idealBlockLen);
|
||||
bResult &= mRightTrack->Get((samplePtr)rightBuffer.get(), floatSample, index, idealBlockLen);
|
||||
@@ -156,15 +148,15 @@ bool EffectStereoToMono::ProcessOne(int count)
|
||||
curMonoFrame = (curLeftFrame + curRightFrame) / 2.0;
|
||||
leftBuffer[i] = curMonoFrame;
|
||||
}
|
||||
mOutTrack->Append((samplePtr)leftBuffer.get(), floatSample, limit);
|
||||
outTrack->Append((samplePtr)leftBuffer.get(), floatSample, limit);
|
||||
if (TrackProgress(count, 2.*(index.as_double() / (mEnd - mStart).as_double())))
|
||||
return false;
|
||||
}
|
||||
|
||||
double minStart = wxMin(mLeftTrack->GetStartTime(), mRightTrack->GetStartTime());
|
||||
mLeftTrack->Clear(mLeftTrack->GetStartTime(), mLeftTrack->GetEndTime());
|
||||
mOutTrack->Flush();
|
||||
mLeftTrack->Paste(minStart, mOutTrack.get());
|
||||
outTrack->Flush();
|
||||
mLeftTrack->Paste(minStart, outTrack.get());
|
||||
mLeftTrack->SetLinked(false);
|
||||
mRightTrack->SetLinked(false);
|
||||
mLeftTrack->SetChannel(Track::MonoChannel);
|
||||
|
||||
Reference in New Issue
Block a user