[vlc-devel] audio_filter_patch
jpd at videolan.org
jpd at videolan.org
Wed Aug 12 09:40:42 CEST 2009
On Wed, Aug 12, 2009 at 11:08:48AM +0800, wangxiang wrote:
>
A bit of text describing the patch and so on would be helpful.
You'll want to double-check your sources since the patch appears to be
reversed, the copyright seems a bit out of date, and, well, the spelling
could stand some improvements (eg. `emphisize', `emphsized'). I have a
few more quibbles on form but let's look at the code first.
> -void Allpass :: Initialize (void)
> -{
> - int bufferLength = int(delay*samplingRate/1000);
> - bufferStart = new float[bufferLength];
Not too sure what a bad_alloc exception will do when it gets back to the
(C) core but I think it's reasonable to assume it won't be good. So it's
probably a better idea to use new (nothrow) and do something useful if
you get a 0 pointer back.
#include <new>
using std::nothrow;
float *buffer = new (nothrow) float[buflen];
if( !buffer )
/* report the error, bail out */;
You'll also want to make sure the rounding for your bufferLength
calculations does what you expect. What happens if (delay*rate)%1000!=0 ?
> -public:
> - Allpass(float delay, float gain); //delay in milliseconds
> - void Initialize(void);
> - void Process(void);
> - void Cleanup(void);
> - void SetParam(float delayTime, float feedbackGain,int numsamples);
> - void SetSignal(float * inputs, float * outputs);
> -
> - ~Allpass(){;}
Why do you have a separate constructor and _then_ call Initialize?
Same with Cleanup and the destructor.
> -#define samplingRate 441000
> -#define f_delay 30
> -#define f_feedback 0.6
Please use all-caps to identify macros or use a const variable to hold
the value. Either is fine.
More information about the vlc-devel
mailing list