102 } while (n < ENDIAN_LITTLE_32(WAVHeader.Subchunk2Size)); |
102 } while (n < ENDIAN_LITTLE_32(WAVHeader.Subchunk2Size)); |
103 |
103 |
104 fclose(wavfile); |
104 fclose(wavfile); |
105 |
105 |
106 #ifdef DEBUG |
106 #ifdef DEBUG |
107 fprintf(stderr, "WAV data loaded\n"); |
107 err_msg("(%s) INFO - WAV data loaded", prog); |
108 #endif |
108 #endif |
109 |
109 |
110 /*set parameters for OpenAL*/ |
110 /*set parameters for OpenAL*/ |
111 /*Valid formats are AL_FORMAT_MONO8, AL_FORMAT_MONO16, AL_FORMAT_STEREO8, and AL_FORMAT_STEREO16*/ |
111 /*Valid formats are AL_FORMAT_MONO8, AL_FORMAT_MONO16, AL_FORMAT_STEREO8, and AL_FORMAT_STEREO16*/ |
112 if (ENDIAN_LITTLE_16(WAVHeader.NumChannels) == 1) { |
112 if (ENDIAN_LITTLE_16(WAVHeader.NumChannels) == 1) { |
114 *format = AL_FORMAT_MONO8; |
114 *format = AL_FORMAT_MONO8; |
115 else { |
115 else { |
116 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 16) |
116 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 16) |
117 *format = AL_FORMAT_MONO16; |
117 *format = AL_FORMAT_MONO16; |
118 else { |
118 else { |
119 fprintf(stderr, "ERROR 'load_wavpcm()': wrong WAV header - bitsample value\n"); |
119 errno = EILSEQ; |
120 return AL_FALSE; |
120 err_ret("(%s) ERROR - wrong WAV header [bitsample value]", prog); |
|
121 return AL_FALSE; |
121 } |
122 } |
122 } |
123 } |
123 } else { |
124 } else { |
124 if (ENDIAN_LITTLE_16(WAVHeader.NumChannels) == 2) { |
125 if (ENDIAN_LITTLE_16(WAVHeader.NumChannels) == 2) { |
125 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 8) |
126 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 8) |
126 *format = AL_FORMAT_STEREO8; |
127 *format = AL_FORMAT_STEREO8; |
127 else { |
128 else { |
128 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 16) |
129 if (ENDIAN_LITTLE_16(WAVHeader.BitsPerSample) == 16) |
129 *format = AL_FORMAT_STEREO16; |
130 *format = AL_FORMAT_STEREO16; |
130 else { |
131 else { |
131 fprintf(stderr, "ERROR 'load_wavpcm()': wrong WAV header - bitsample value\n"); |
132 errno = EILSEQ; |
|
133 err_ret("(%s) ERROR - wrong WAV header [bitsample value]", prog); |
132 return AL_FALSE; |
134 return AL_FALSE; |
133 } |
135 } |
134 } |
136 } |
135 } else { |
137 } else { |
136 fprintf(stderr, "ERROR 'load_wavpcm()': wrong WAV header - format value\n"); |
138 errno = EILSEQ; |
137 return AL_FALSE; |
139 err_ret("(%s) ERROR - wrong WAV header [format value]", prog); |
|
140 return AL_FALSE; |
138 } |
141 } |
139 } |
142 } |
140 |
143 |
141 *bitsize = ENDIAN_LITTLE_32(WAVHeader.Subchunk2Size); |
144 *bitsize = ENDIAN_LITTLE_32(WAVHeader.Subchunk2Size); |
142 *freq = ENDIAN_LITTLE_32(WAVHeader.SampleRate); |
145 *freq = ENDIAN_LITTLE_32(WAVHeader.SampleRate); |
155 vorbis_comment *vorbisComment; /*other less useful data*/ |
158 vorbis_comment *vorbisComment; /*other less useful data*/ |
156 #endif |
159 #endif |
157 |
160 |
158 result = ov_fopen((char*) filename, &oggStream); |
161 result = ov_fopen((char*) filename, &oggStream); |
159 if (result < 0) { |
162 if (result < 0) { |
160 fprintf (stderr, "ERROR 'load_oggvorbis()': ov_fopen failed with %X", result); |
163 errno = EINVAL; |
|
164 err_ret("(%s) ERROR - ov_fopen() failed with %X", prog, result); |
161 ov_clear(&oggStream); |
165 ov_clear(&oggStream); |
162 return AL_FALSE; |
166 return AL_FALSE; |
163 } |
167 } |
164 |
168 |
165 /*load OGG header and determine the decoded data size*/ |
169 /*load OGG header and determine the decoded data size*/ |