**
** Copyright (c) 2003 Kevin Rosenberg
**
-** $Id: wdq2wav.h,v 1.6 2003/01/21 09:38:59 kevin Exp $
+** $Id: wdq2wav.h,v 1.10 2003/02/12 07:24:32 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
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
+#include <stdio.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <sstream>
#include <ctime>
#include <fcntl.h>
-#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef WIN32
+#include <io.h>
#include <getopt.h>
+#else
+#include <unistd.h>
+#endif
+
+#ifdef LINUX
+#include <endian.h>
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define WORDS_BIG_ENDIAN 1
+#endif
+#endif
extern const char* g_szIdStr;
extern bool g_quiet;
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
{
bool m_valid;
std::string m_error;
int m_fd;
- unsigned int m_nChannels;
+ int m_nChannels;
unsigned int m_nSamples;
double m_sample_rate;
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
unsigned int m_nBitsPerSample;
unsigned int m_nBytesPerSample;
signed short int* m_data;
+ unsigned long int m_nHeaderBytes;
+ unsigned long int m_nDataBytes;
+ unsigned long int m_nFileBytes;
WavFile (WindaqChannel& wdq_channel, const char* fname);
~WavFile ();
bool WriteFile ();
+
+ bool Play();
+
+ private:
+ bool fill_header();
};