X-Git-Url: http://git.kpe.io/?p=wdq2wav.git;a=blobdiff_plain;f=wdq2wav.h;h=5dd00ceb8123fe0bc2a7222515bc75ed01d4af3f;hp=60b5dc54f7b1ce9abd2c9e8cc74024dcb24eab65;hb=7ca37015588adb2dee7054808e5bc6849dc4ff41;hpb=746824cc3ac28397a58be87f75a250dbfe95c53d diff --git a/wdq2wav.h b/wdq2wav.h index 60b5dc5..5dd00ce 100644 --- a/wdq2wav.h +++ b/wdq2wav.h @@ -8,7 +8,7 @@ ** ** Copyright (c) 2003 Kevin Rosenberg ** -** $Id: wdq2wav.h,v 1.6 2003/01/21 09:38:59 kevin Exp $ +** $Id: wdq2wav.h,v 1.15 2003/02/25 18:18:26 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 @@ -24,6 +24,7 @@ ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ******************************************************************************/ +#include #include #include #include @@ -31,8 +32,21 @@ #include #include #include -#include +#include +#include +#ifdef WIN32 +#include #include +#else +#include +#endif + +#ifdef LINUX +#include +#if __BYTE_ORDER == __BIG_ENDIAN +#define WORDS_BIG_ENDIAN 1 +#endif +#endif extern const char* g_szIdStr; extern bool g_quiet; @@ -45,7 +59,7 @@ void error_msg (const char *msg); void info_msg (const char *msg); void info_msg_sans_newline (const char *msg); -bool wdq2wav (const char* wdq_fname, const int channel, const char *wav_fname); +bool wdq2wav (const char* wdq_fname, const int channel, const char *wav_fname, bool play); class WindaqFile { @@ -54,30 +68,30 @@ public: ~WindaqFile (); bool ReadHeader(); - std::string m_strFile; bool m_valid; std::string m_error; int m_fd; - unsigned int m_nChannels; - unsigned int m_nSamples; + int m_nChannels; + unsigned long int m_nSamples; double m_sample_rate; + std::string m_strFile; unsigned int m_sr_denom, m_sr_numer; - unsigned int m_nHeader_bytes, m_channel_offset, m_nBytes_channel_header; + unsigned short int m_nHeader_bytes, m_channel_offset, m_nBytes_channel_header; unsigned int m_nData_bytes; - unsigned long int m_time_acq_start; - unsigned long int m_time_acq_stop; + unsigned int m_time_acq_start; + unsigned int m_time_acq_stop; }; class WindaqChannel { public: - bool m_valid; - unsigned int m_channel; - std::string m_units; + WindaqFile& r_wdq; + signed short int *m_data; double m_slope; double m_intercept; - signed short int *m_data; - WindaqFile& r_wdq; + unsigned int m_channel; + bool m_valid; + std::string m_units; signed short int m_min_raw_data; signed short int m_max_raw_data; double m_max_scaled_data; @@ -94,18 +108,33 @@ public: class WavFile { public: - std::string m_strFile; - int m_fd; bool m_valid; + signed short int* m_data; unsigned long int m_nSamples; + std::string m_strFile; + int m_fd; double m_rate; unsigned int m_nChannels; unsigned int m_nBitsPerSample; unsigned int m_nBytesPerSample; - signed short int* m_data; + unsigned long int m_nHeaderBytes; + long int m_nDataBytes; + long int m_nFileBytes; WavFile (WindaqChannel& wdq_channel, const char* fname); ~WavFile (); bool WriteFile (); + + bool Play(); + + private: + bool fill_header(); }; + +template +inline T nearest (double x) +{ + return (x > 0 ? + static_cast(x+0.5) : static_cast(x-0.5)); +}