72 lines
2.3 KiB
C++
72 lines
2.3 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
TwoPassSimpleMono.h
|
|
|
|
Dominic Mazzoni
|
|
|
|
This bit by Martyn Shaw.
|
|
|
|
**********************************************************************/
|
|
#ifndef __AUDACITY_EFFECT_TWOPASSSIMPLEMONO__
|
|
#define __AUDACITY_EFFECT_TWOPASSSIMPLEMONO__
|
|
|
|
#include "SimpleMono.h"
|
|
|
|
|
|
class WaveTrack;
|
|
|
|
class EffectTwoPassSimpleMono:public Effect {
|
|
|
|
public:
|
|
virtual bool Process();
|
|
|
|
private:
|
|
bool ProcessOne(WaveTrack * t,
|
|
sampleCount start, sampleCount end);
|
|
bool ProcessPass();
|
|
|
|
protected:
|
|
|
|
// Override these methods if you need to initialize something
|
|
// before each pass. Return None if processing should stop.
|
|
// These should not depend on mOutputTracks having been set up via CopyInputTracks().
|
|
virtual bool InitPass1();
|
|
virtual bool InitPass2();
|
|
|
|
// Override these methods if you need to do things
|
|
// before every track (including the first one)
|
|
virtual bool NewTrackPass1();
|
|
virtual bool NewTrackPass2();
|
|
|
|
// Override this method to actually process audio
|
|
virtual bool ProcessPass1(float * WXUNUSED(buffer), sampleCount WXUNUSED(len)) { return false; }
|
|
virtual bool ProcessPass2(float * WXUNUSED(buffer), sampleCount WXUNUSED(len)) { return false; }
|
|
|
|
// Override this method to actually process audio with access to 2 sequential buffers at a time
|
|
// Either buffer1 or buffer2 may be modified as needed
|
|
// This allows implementation of processing with delays
|
|
// The default just calls the one-buffer-at-a-time method
|
|
virtual bool TwoBufferProcessPass1(float *buffer1, sampleCount len1, float * WXUNUSED(buffer2), sampleCount WXUNUSED(len2))
|
|
{ if(buffer1 != NULL) return ProcessPass1(buffer1, len1); else return true; }
|
|
virtual bool TwoBufferProcessPass2(float *buffer1, sampleCount len1, float * WXUNUSED(buffer2), sampleCount WXUNUSED(len2))
|
|
{ if(buffer1 != NULL) return ProcessPass2(buffer1, len1); else return true; }
|
|
|
|
// Call this if you know in advance that no second pass will be needed.
|
|
// This is used as a hint for the progress bar
|
|
void DisableSecondPass() { mSecondPassDisabled = true; }
|
|
|
|
// Other useful information
|
|
int mCurTrackNum;
|
|
double mCurRate;
|
|
double mCurT0;
|
|
double mCurT1;
|
|
int mCurChannel;
|
|
int mPass;
|
|
bool mSecondPassDisabled;
|
|
|
|
};
|
|
|
|
#endif
|