openalbridge/loaders.c
changeset 2216 82e7da49c26a
parent 2215 1d78579e06c2
child 2220 110266ba2ef7
equal deleted inserted replaced
2215:1d78579e06c2 2216:82e7da49c26a
    23 #endif 
    23 #endif 
    24 	
    24 	
    25 	int load_WavPcm (const char *filename, ALenum *format, char ** data, ALsizei *bitsize, ALsizei *freq) {
    25 	int load_WavPcm (const char *filename, ALenum *format, char ** data, ALsizei *bitsize, ALsizei *freq) {
    26 		WAV_header_t WAVHeader;
    26 		WAV_header_t WAVHeader;
    27 		FILE *wavfile;
    27 		FILE *wavfile;
    28 		int t, n = 0;
    28 		int32_t t;
       
    29 		uint32_t n = 0;
    29 		
    30 		
    30 		wavfile = Fopen(filename, "rb");
    31 		wavfile = Fopen(filename, "rb");
    31 		
    32 		
    32 		fread(&WAVHeader.ChunkID, sizeof(uint32_t), 1, wavfile);
    33 		fread(&WAVHeader.ChunkID, sizeof(uint32_t), 1, wavfile);
    33 		fread(&WAVHeader.ChunkSize, sizeof(uint32_t), 1, wavfile);
    34 		fread(&WAVHeader.ChunkSize, sizeof(uint32_t), 1, wavfile);
    73 #ifdef DEBUG
    74 #ifdef DEBUG
    74 		fprintf(stderr, "Subchunk2ID: %X\n", invert_endianness(WAVHeader.Subchunk2ID));
    75 		fprintf(stderr, "Subchunk2ID: %X\n", invert_endianness(WAVHeader.Subchunk2ID));
    75 		fprintf(stderr, "Subchunk2Size: %d\n", WAVHeader.Subchunk2Size);
    76 		fprintf(stderr, "Subchunk2Size: %d\n", WAVHeader.Subchunk2Size);
    76 #endif
    77 #endif
    77 		
    78 		
    78 		*data = (char*) malloc (sizeof(char) * WAVHeader.Subchunk2Size);
    79 		*data = (char*) Malloc (sizeof(char) * WAVHeader.Subchunk2Size);
    79 		
    80 		
    80 		/*this could be improved*/
    81 		/*this could be improved*/
    81 		do {
    82 		do {
    82 			n += fread(&((*data)[n]), sizeof(uint8_t), 1, wavfile);
    83 			n += fread(&((*data)[n]), sizeof(uint8_t), 1, wavfile);
    83 		} while (n < WAVHeader.Subchunk2Size);
    84 		} while (n < WAVHeader.Subchunk2Size);
   146 		
   147 		
   147 #ifdef DEBUG
   148 #ifdef DEBUG
   148 		vorbisComment = ov_comment(&oggStream, -1);
   149 		vorbisComment = ov_comment(&oggStream, -1);
   149 		fprintf(stderr, "Version: %d\n", vorbisInfo->version);
   150 		fprintf(stderr, "Version: %d\n", vorbisInfo->version);
   150 		fprintf(stderr, "Channels: %d\n", vorbisInfo->channels);
   151 		fprintf(stderr, "Channels: %d\n", vorbisInfo->channels);
   151 		fprintf(stderr, "Rate (Hz): %d\n", vorbisInfo->rate);
   152 		fprintf(stderr, "Rate (Hz): %ld\n", vorbisInfo->rate);
   152 		fprintf(stderr, "Bitrate Upper: %d\n", vorbisInfo->bitrate_upper);
   153 		fprintf(stderr, "Bitrate Upper: %ld\n", vorbisInfo->bitrate_upper);
   153 		fprintf(stderr, "Bitrate Nominal: %d\n", vorbisInfo->bitrate_nominal);
   154 		fprintf(stderr, "Bitrate Nominal: %ld\n", vorbisInfo->bitrate_nominal);
   154 		fprintf(stderr, "Bitrate Lower: %d\n", vorbisInfo->bitrate_lower);
   155 		fprintf(stderr, "Bitrate Lower: %ld\n", vorbisInfo->bitrate_lower);
   155 		fprintf(stderr, "Bitrate Windows: %d\n", vorbisInfo->bitrate_window);
   156 		fprintf(stderr, "Bitrate Windows: %ld\n", vorbisInfo->bitrate_window);
   156 		fprintf(stderr, "Vendor: %s\n", vorbisComment->vendor);
   157 		fprintf(stderr, "Vendor: %s\n", vorbisComment->vendor);
   157 		fprintf(stderr, "PCM data size: %d\n", pcm_length);
   158 		fprintf(stderr, "PCM data size: %ld\n", pcm_length);
   158 		fprintf(stderr, "# comment: %d\n", vorbisComment->comments);
   159 		fprintf(stderr, "# comment: %d\n", vorbisComment->comments);
   159 		for (i = 0; i < vorbisComment->comments; i++)
   160 		for (i = 0; i < vorbisComment->comments; i++)
   160 			fprintf(stderr, "\tComment %d: %s\n", i, vorbisComment->user_comments[i]);
   161 			fprintf(stderr, "\tComment %d: %s\n", i, vorbisComment->user_comments[i]);
   161 #endif
   162 #endif
   162 		
   163 		
   163 		/*allocates enough room for the decoded data*/
   164 		/*allocates enough room for the decoded data*/
   164 		*data = (char*) malloc (sizeof(char) * pcm_length);
   165 		*data = (char*) Malloc (sizeof(char) * pcm_length);
   165 		
   166 		
   166 		/*there *should* not be ogg at 8 bits*/
   167 		/*there *should* not be ogg at 8 bits*/
   167 		if (vorbisInfo->channels == 1)
   168 		if (vorbisInfo->channels == 1)
   168 			*format = AL_FORMAT_MONO16;
   169 			*format = AL_FORMAT_MONO16;
   169 		else {
   170 		else {