82b7c69a595c180c2b47931e5656c70c3a8fa994
[blender.git] / intern / SoundSystem / SND_Utils.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29 #ifndef SND_UTILS_H
30 #define SND_UTILS_H
31
32 #include "SND_WaveSlot.h"
33
34 #ifdef __cplusplus
35 extern "C"
36
37 #endif
38
39 typedef struct
40 {
41         unsigned char   riff[4];
42         signed int              size;
43         unsigned char   type[4];
44 } WavFileHeader;
45
46 typedef struct
47 {
48         unsigned short  format;
49         unsigned short  numberofchannels;
50         unsigned int    samplerate;
51         unsigned int    bytespersec;
52         unsigned short  blockalignment;
53         unsigned short  bitrate;
54 } WavFmtHeader;
55
56 typedef struct
57 {
58         unsigned short  size;
59         unsigned short  samplesperblock;
60 } WavFmtExHeader;
61
62 typedef struct
63 {
64         unsigned int            Manufacturer;
65         unsigned int            Product;
66         unsigned int            SamplePeriod;
67         unsigned int            Note;
68         unsigned int            FineTune;
69         unsigned int            SMPTEFormat;
70         unsigned int            SMPTEOffest;
71         unsigned int            loops;
72         unsigned int            SamplerData;
73         struct
74         {
75                 unsigned int    Identifier;
76                 unsigned int    Type;
77                 unsigned int    Start;
78                 unsigned int    End;
79                 unsigned int    Fraction;
80                 unsigned int    Count;
81         } Loop[1];
82 } WavSampleHeader;
83
84 typedef struct
85 {
86         unsigned char   id[4];
87         unsigned int    size;
88 } WavChunkHeader;
89
90 /**  
91  *      loads a sample and returns a pointer
92  */
93 extern void* SND_LoadSample(char *filename);
94
95 extern bool SND_IsSampleValid(const STR_String& name, void* memlocation);
96 extern unsigned int SND_GetSampleFormat(void* sample);
97 extern unsigned int SND_GetNumberOfChannels(void* sample);
98 extern unsigned int SND_GetSampleRate(void* sample);
99 extern unsigned int SND_GetBitRate(void* sample);
100 extern unsigned int SND_GetNumberOfSamples(void* sample, unsigned int sample_length);
101 extern unsigned int SND_GetHeaderSize(void* sample, unsigned int sample_length);
102 extern unsigned int SND_GetExtraChunk(void* sample);
103
104 extern void SND_GetSampleInfo(signed char* sample, SND_WaveSlot* waveslot);
105
106 #ifdef __cplusplus
107 }
108 #endif
109
110 #endif
111