#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
+#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
static int64_t fsize(FILE *f) {
int64_t end, pos = ftell(f);
signal = malloc(siglen * sizeof(*signal));
if (fread(data , 1, datlen, f[0]) != datlen)
- return 1;
+ goto read_fail;
if (fread(signal, 1, siglen, f[1]) != siglen)
- return 1;
+ goto read_fail;
datlen /= 2;
siglen /= 2;
int j = pos + i;
c += signal[i] * data[j];
}
- if (fabs(c) > sigamp * 0.94)
- maxshift = FFMIN(maxshift, fabs(pos)+32);
- if (fabs(c) > fabs(bestc)) {
+ if (FFABS(c) > sigamp * 0.94)
+ maxshift = FFMIN(maxshift, FFABS(pos)+32);
+ if (FFABS(c) > FFABS(bestc)) {
bestc = c;
bestpos = pos;
}
}
printf("presig: %d postsig:%d c:%7.4f lenerr:%d\n", bestpos, datlen - siglen - bestpos, bestc / sigamp, datlen - siglen);
+ free(data);
+ free(signal);
return 0;
+
+read_fail:
+ free(data);
+ free(signal);
+ return 1;
}