From 4121387a53d943466988c9e7a0a6308c56f82156 Mon Sep 17 00:00:00 2001 From: mj Date: Mon, 19 Dec 2005 00:42:54 +0000 Subject: [PATCH] Fixed a cupola bugs. --- vorbiscut.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/vorbiscut.c b/vorbiscut.c index f4ad4b5..9fa51e5 100644 --- a/vorbiscut.c +++ b/vorbiscut.c @@ -151,6 +151,8 @@ static void scan_streams(void) total_samples += samples; } + if (ov_pcm_total(&vf, -1) != total_samples) + die("ov_pcm_total mismatch"); if (start_pos < 0) { @@ -233,7 +235,12 @@ static int in_read(s16 *buf, s64 pos, int nsamp) if (inmode == IN_OGG) { if (ov_pcm_tell(&vf) != pos) - printf("!!! CONFUSED POSITION\n"); + { + printf("!!! CONFUSED POSITION\n"); + ov_pcm_seek(&vf, pos); + if (ov_pcm_tell(&vf) != pos) + printf(">>> unable to correct :(\n"); + } for (;;) { int bp; @@ -244,6 +251,8 @@ static int in_read(s16 *buf, s64 pos, int nsamp) printf("!!! BAD LINK\n"); else if (e % 4) die("ov_read returned %d bytes, which means non-integer number of samples. Huh.", e); + else if (e < 0) + die("ov_read returned %d. Huh!", e); else if (e/4 <= nsamp) return e/4; else @@ -391,8 +400,8 @@ static void editor(void) M_POST, } mode = M_START; int silence = 0; - int step = rate; - double fst = 1; + int step = rate*4; + double fst = 4; double fsil = 1; int lback = 3*rate; for(;;) @@ -504,6 +513,7 @@ static void editor(void) break; case 0x3027e: // Delete mode = M_END; + go = end_pos - lback; break; case '[': mode = M_PRE; @@ -575,8 +585,8 @@ static void editor(void) else { nsamp = sizeof(buf)/4; - if (pos + nsamp > end_pos) - nsamp = end_pos - pos; + if (pos + nsamp > pos) + nsamp = end - pos; nsamp = cooked_read(buf, pos, nsamp, (mode == M_PRE), (mode == M_POST)); nread = nsamp; } -- 2.39.5