1 /*----------------------------------------------------------------------------
2  *
3  * File:
4  * eas_wave.h
5  *
6  * Contents and purpose:
7  * Writes output to a .WAV file
8  *
9  * DO NOT MODIFY THIS FILE!
10  *
11  * Copyright Sonic Network Inc. 2005
12 
13  * Licensed under the Apache License, Version 2.0 (the "License");
14  * you may not use this file except in compliance with the License.
15  * You may obtain a copy of the License at
16  *
17  *      http://www.apache.org/licenses/LICENSE-2.0
18  *
19  * Unless required by applicable law or agreed to in writing, software
20  * distributed under the License is distributed on an "AS IS" BASIS,
21  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22  * See the License for the specific language governing permissions and
23  * limitations under the License.
24  *----------------------------------------------------------------------------
25  * Revision Control:
26  *   $Revision: 82 $
27  *   $Date: 2006-07-10 11:45:19 -0700 (Mon, 10 Jul 2006) $
28  *----------------------------------------------------------------------------
29 */
30 
31 #include "eas_types.h"
32 
33 /* sentinel */
34 #ifndef _EAS_WAVE_H
35 #define _EAS_WAVE_H
36 
37 /* .WAV file format chunk */
38 typedef struct {
39     EAS_U16 wFormatTag;
40     EAS_U16 nChannels;
41     EAS_U32 nSamplesPerSec;
42     EAS_U32 nAvgBytesPerSec;
43     EAS_U16 nBlockAlign;
44     EAS_U16 wBitsPerSample;
45 } FMT_CHUNK;
46 
47 /* .WAV file header */
48 typedef struct {
49     EAS_U32 nRiffTag;
50     EAS_U32 nRiffSize;
51     EAS_U32 nWaveTag;
52     EAS_U32 nFmtTag;
53     EAS_U32 nFmtSize;
54     FMT_CHUNK fc;
55     EAS_U32 nDataTag;
56     EAS_U32 nDataSize;
57 } WAVE_HEADER;
58 
59 typedef struct {
60     WAVE_HEADER wh;
61     FILE *file;
62     EAS_BOOL write;
63     EAS_U32 dataSize;
64 } WAVE_FILE;
65 
66 WAVE_FILE *WaveFileCreate (const char *filename, EAS_I32 nChannels, EAS_I32 nSamplesPerSec, EAS_I32 wBitsPerSample);
67 EAS_I32 WaveFileWrite (WAVE_FILE *wFile, void *buffer, EAS_I32 n);
68 EAS_BOOL WaveFileClose (WAVE_FILE *wFile);
69 WAVE_FILE *WaveFileOpen (const char *filename);
70 
71 #endif /* end #ifndef _EAS_WAVE_H */
72 
73 
74 
75