MCPcopy Create free account
hub / github.com/audacity/audacity / ProcessPass

Method ProcessPass

libraries/lib-builtin-effects/TwoPassSimpleMono.cpp:61–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59}
60
61bool EffectTwoPassSimpleMono::ProcessPass(EffectSettings &settings)
62{
63 // Iterate over each track
64 mCurTrackNum = 0;
65
66 auto outTracks =
67 (*mTrackLists[1 - mPass]).Selected<WaveTrack>().begin();
68 for (auto track : (*mTrackLists[mPass]).Selected<WaveTrack>()) {
69 auto outTrack = *outTracks;
70
71 // Get start and end times from the orignal track
72 double trackStart = mPass == 0 ? track->GetStartTime() : (*outTracks)->GetStartTime();
73 double trackEnd = mPass == 0 ? track->GetEndTime() : (*outTracks)->GetEndTime();
74
75 // Set the current bounds to whichever left marker is
76 // greater and whichever right marker is less:
77 mCurT0 = std::max(trackStart, mT0);
78 mCurT1 = std::min(trackEnd, mT1);
79
80 // So that in ProcessOne(), when mPass == 0, samples are
81 // appended starting at mCurT0
82 if (!mSecondPassDisabled && mPass == 0 && mCurT0 > 0)
83 (*outTracks)->InsertSilence(0, mCurT0);
84
85 // Process only if the right marker is to the right of the left marker
86 if (mCurT1 > mCurT0) {
87 // Transform the marker timepoints to samples
88 auto start = track->TimeToLongSamples(mCurT0);
89 auto end = track->TimeToLongSamples(mCurT1);
90
91 // Get the track rate and samples
92 mCurRate = track->GetRate();
93
94 // NewTrackPass1/2() returns true by default
95 bool ret;
96 if (mPass == 0)
97 ret = NewTrackPass1();
98 else
99 ret = NewTrackPass2();
100 if (!ret)
101 return false;
102
103 // ProcessOne() (implemented below) processes a single track
104 auto outIter = outTrack->Channels().begin();
105 for (const auto pChannel : track->Channels())
106 if (!ProcessOne(*pChannel, **outIter++, start, end))
107 return false;
108 if (!mSecondPassDisabled && mPass == 0)
109 outTrack->Flush();
110 }
111
112 ++mCurTrackNum;
113 ++outTracks;
114 }
115
116 return true;
117}
118

Callers

nothing calls this directly

Calls 11

maxFunction · 0.85
ProcessOneFunction · 0.85
TimeToLongSamplesMethod · 0.80
ChannelsMethod · 0.80
minFunction · 0.50
beginMethod · 0.45
GetStartTimeMethod · 0.45
GetEndTimeMethod · 0.45
InsertSilenceMethod · 0.45
GetRateMethod · 0.45
FlushMethod · 0.45

Tested by

no test coverage detected