From 048b6803e8c6d63e3ae00a84d35071fecc10ba91 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Mon, 24 Feb 2003 12:41:23 +0000 Subject: [PATCH] r4114: *** empty log message *** --- debian/changelog | 6 ++++++ wdq2wav.cpp | 23 +++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/debian/changelog b/debian/changelog index 056c0bc..7c736f5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +wdq2wav (0.5.1-1) unstable; urgency=low + + * Avoid possible divide by 0 + + -- Kevin M. Rosenberg Mon, 24 Feb 2003 05:36:33 -0700 + wdq2wav (0.5.0-1) unstable; urgency=low * New upstream, add support for scaling while preserving zero point diff --git a/wdq2wav.cpp b/wdq2wav.cpp index 16eddba..cd3af8b 100644 --- a/wdq2wav.cpp +++ b/wdq2wav.cpp @@ -8,7 +8,7 @@ ** ** Copyright (c) 2003 Kevin Rosenberg ** -** $Id: wdq2wav.cpp,v 1.17 2003/02/24 08:40:25 kevin Exp $ +** $Id: wdq2wav.cpp,v 1.18 2003/02/24 12:41:23 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -26,7 +26,7 @@ #include -const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.17 2003/02/24 08:40:25 kevin Exp $"; +const char* g_szIdStr = "$Id: wdq2wav.cpp,v 1.18 2003/02/24 12:41:23 kevin Exp $"; bool g_quiet = false; bool g_verbose = false; @@ -126,7 +126,7 @@ main (int argc, char *argv[]) const char* progname = argv[0]; - while ((c = getopt (argc, argv, "rqvdph")) != -1) { + while ((c = getopt (argc, argv, "rqvzdph")) != -1) { switch (c) { case 'r': std::cout << "Version " << g_szIdStr << std::endl; @@ -143,6 +143,9 @@ main (int argc, char *argv[]) case 'p': play = true; break; + case 'z': + g_ignore_zero = true; + break; case 'h': usage (progname); return (0); @@ -523,9 +526,10 @@ WavFile::WavFile (WindaqChannel& wdq_channel, const char* fname) wdq_channel.m_min_scaled_data); } else { double max_value = fabs(wdq_channel.m_max_scaled_data); - if (fabs(wdq_channel.m_min_scaled_data) > max_value) - max_value = fabs(wdq_channel.m_min_scaled_data); - data_scale = 32767. / max_value; + if (fabs (wdq_channel.m_min_scaled_data) > max_value) + max_value = fabs (wdq_channel.m_min_scaled_data); + if (max_value != 0.) + data_scale = 32767. / max_value; } if (g_debug) { @@ -553,9 +557,12 @@ WavFile::WavFile (WindaqChannel& wdq_channel, const char* fname) for (i = 0; i < m_nSamples; i++) { double value = input[i]; value = (slope * value) + intercept; - value = (value + data_offset) * data_scale; - if (g_ignore_zero) + if (g_ignore_zero) { + value = (value + data_offset) * data_scale; value += 0.5 - 32768; + } else + value = value * data_scale; + signed short int v = static_cast(value); #if WORDS_BIG_ENDIAN unsigned char* p = reinterpret_cast(&v); -- 2.34.1