Alex: Added the new sources for terminatorX 3.5
[terminatorX.git] / src / wav_file.h
1 /*
2     wav_file.h - taken from wav-tools 1.1
3     Copyright (C) by Colin Ligertwood
4
5     This program is free software; you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation; either version 2 of the License, or
8     (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with this program; if not, write to the Free Software
17     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18     
19     Changes:
20     
21     11 Mar 1999: -added license hint
22                  -slight changes for use with terminatorX
23
24     20 Mar 1999: now includes sys/types.h and uses types
25                  defined there for interplatform compability. 
26                 
27     28 Apr 1999: switch from filedescriptors to FILE*
28     
29     29 Apr 1999: added sox and mpg123 support
30 */
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif /* __cplusplus */
35
36 #ifndef _H_WAVFILE
37 #define _H_WAVFILE
38
39 #ifdef HAVE_CONFIG_H
40 #include <config.h>
41 #endif
42
43 #ifdef USE_SOX_INPUT
44 #define SOX_STR "sox \"%s\" -t raw -c 1 -r 44100 -s -w -"
45 #endif
46
47 #ifdef USE_MPG123_INPUT
48 /*#include "endian.h"   // I don't think this is required
49 #ifdef BIG_ENDIAN_MACHINE
50 #define MPG123_STR "mpg123 -s \"%s\" | sox -t raw -r 44100 -c 2 -s -w -x - -t wav -c 1 -r 44100 -s -w -"
51 #else*/
52 #define MPG123_STR "mpg123 -qms \"%s\""
53 /*#else
54 #define MPG123_STR "mpg123 -qs \"%s\" | sox -t raw -r 44100 -c 2 -s -w - -t raw -c 1 -r 44100 -s -w -"
55 #endif
56 /*#endif*/
57 #endif
58
59
60 #include "tX_global.h"
61 #include "tX_types.h"
62
63 typedef struct{
64         int32_t srate;
65         int8_t  chans;
66         int8_t  depth;
67         int32_t bps;
68         int8_t  blkalign;
69         int32_t len;
70         int32_t sofar;
71         
72         FILE*   handle;
73         char    name[PATH_MAX];
74         char    head[43];
75 #ifdef USE_SOX_INPUT
76         int     has_host_order;
77 #endif  
78 } wav_sig;
79
80 FILE* init_wav_read(char file_name[], wav_sig *info);
81 FILE* open_wav_rec(wav_sig *info);
82 extern int rewrite_head(wav_sig *info);
83 extern void wav_close(FILE* wav);
84 #ifdef __cplusplus
85 }
86 #endif /* __cplusplus */
87
88 #endif