FILE *f;
double p;
int in_pos;
- short prev_sample;
+ short prev_sample, sample;
public:
InterpolatingReader(FILE *f) : f(f), p(0.0), in_pos(-1) {}
double read_sample(double speed)
{
- short sample;
-
p += speed;
while ((int)(ceil(p)) > in_pos) {
prev_sample = sample;
// open (estimated) skew
if (strcmp(argv[3], "-") == 0) {
- skew = stderr;
+ skew = stdout;
} else {
skew = fopen(argv[3], "wb");
if (skew == NULL) {
}
FlankDetector f1, f2;
+ InterpolatingReader intp(in2);
+ double speed = 1.000;
// initial sync, reference
do {
// initial sync, input
do {
- short s;
- if (fread(&s, sizeof(short), 1, in2) != 1) {
- exit(0);
- }
-
+ short s = (short)intp.read_sample(speed);
f2.update(s);
- } while (!f2.check_flag() || !f2.get_status());
- InterpolatingReader intp(in2);
- double speed = 1.000;
+ fwrite(&speed, sizeof(double), 1, skew);
+ } while (!f2.check_flag() || !f2.get_status());
while (!feof(in1) && !feof(in2)) {
short refs;
double s = intp.read_sample(speed);
f2.update((short)s);
++num_inp;
+
+ fwrite(&speed, sizeof(double), 1, skew);
}
double ns = filter(speed * double(num_inp) / double(num_ref));