]> git.sesse.net Git - c64tapwav/blobdiff - sync.cpp
Preallocate aligned_pcm and mono_pcm.
[c64tapwav] / sync.cpp
index d29180858eee42111fb288f2c2c8520b4533913a..e5e5120c3afc78d389a3eadb84c8a7f867f24ea1 100644 (file)
--- a/sync.cpp
+++ b/sync.cpp
@@ -182,17 +182,17 @@ int main(int argc, char **argv)
        double inv_sd = sqrt(2.0) / sqrt(var_left + var_right);
        std::vector<stereo_sample> aligned_pcm;
        std::vector<short> mono_pcm;
+       aligned_pcm.resize(total_end);
+       mono_pcm.resize(total_end);
        for (unsigned i = 0; i < total_end; ++i) {
                double d = lanczos_interpolate(best_path, i / double(BUFSIZE));
                int left = pcm[i].left;
                int right = lanczos_interpolate_right(pcm, i + d);
 
-               stereo_sample ss;
-               ss.left = left;
-               ss.right = clip(right);
-               aligned_pcm.push_back(ss);
+               aligned_pcm[i].left = left;
+               aligned_pcm[i].right = clip(right);
 
-               mono_pcm.push_back(clip(lrintf(inv_sd * 4096.0 * (left + right))));
+               mono_pcm[i] = clip(lrintf(inv_sd * 4096.0 * (left + right)));
 
                if (i % 4096 == 0) {
                        fprintf(stderr, "\b\b\b\b\b\b\b\b%7.2f%%", 100.0 * i / total_end);