#include <stdint.h>
#include <stdlib.h>
-double StdDeviation(double *, uint32_t, double * mean = NULL);
+double StdDeviation(double *, uint32_t, double * pMean = NULL);
+double StdDeviationWave(uint32_t * sync, uint32_t num, double * pMean = NULL);
double Largest(double *, uint32_t);
uint32_t Largest(uint32_t *, uint32_t);
uint32_t LargestIndex(double *, uint32_t);
uint32_t Smallest(uint32_t *, uint32_t);
uint32_t SmallestIndex(double *, uint32_t);
uint32_t SmallestIndex(uint32_t *, uint32_t);
+bool Equal(uint32_t * a1, uint32_t * a2, uint32_t num);
+uint32_t IndexForTime(uint32_t trackNum, uint32_t time);
-#if 0
-uint32_t Synthesize(uint32_t * sync, uint32_t num, uint32_t * wave, float * amp);
-bool FindSync(uint32_t, uint32_t, uint32_t &, uint32_t &);
-void FindSyncForStreams(uint32_t * sync, uint32_t num);
-void FindInitialSyncForStreams(uint32_t * sync, uint32_t num);
-void BacktrackInitialSync(uint32_t * sync, uint32_t num);
-void BacktrackInitialSync2(uint32_t * sync, uint32_t num);
-void BacktrackInitialSync3(uint32_t * sync, uint32_t num);
-void BacktrackInitialSync4(uint32_t * sync, uint32_t num);
-void StepBackUntilBad(uint32_t * sync, double * a, uint32_t num);
-bool StepBackThruBad(uint32_t * sync, double * a, uint32_t num);
-void StepBack(uint32_t * sync, double * a, uint32_t num);
-void StepAndAddBack(uint32_t * sync, double * a, uint32_t num);
-void StepAndAddBack(uint32_t & sync, double & a, uint32_t i);
-void StepForward(uint32_t * sync, double * a, uint32_t num);
-void StepAndAddForward(uint32_t * sync, double * a, uint32_t num);
-void StepAndAddForward(uint32_t & sync, double & a, uint32_t i);
-uint32_t Lookahead(uint32_t * sync, uint32_t num, int32_t dir = 1);
-int Resync(uint32_t * sync, double * a, uint32_t num, int32_t dir = 1);
-#endif
+uint32_t LookaheadWave(uint32_t * passedInSync, uint32_t num, int8_t dir = 1, bool * perfect = NULL);
+uint32_t FindSyncBetweenFirstTwo(uint32_t * sync);
void FindInitialSyncForStreams2(uint32_t * sync, uint32_t num);
uint32_t Synthesize2(uint32_t * sync, uint32_t num, uint32_t * wave, float * amp);
-
+bool ResyncWave(uint32_t * sync, uint32_t num, int8_t dir = 1);
bool AttemptToFindStart(uint32_t * sync, uint32_t num);
bool InitialSync(uint32_t * sync, uint32_t num);
+uint32_t LoopLookahead(uint32_t trackNum, uint32_t start, uint32_t loopPoint, bool * test = NULL);
void SynthesizeTrack(uint32_t trackNum);
+//void MakeLoop(uint32_t trackNum);
+//uint32_t FindLoopPoint(uint32_t trackNum);
+bool FindLoopPoint(uint32_t trackNum, uint32_t & start, uint32_t & end);
+
// Exported variables
extern uint32_t sNum[];
-//extern double ratio[];
extern double initSyncTime[];
#endif // __DSP_H__