openalbridge/loaders.c
changeset 2420 b7390a3040f8
parent 2418 538a777f90c4
child 2421 a4b039ee2eb0
equal deleted inserted replaced
2419:dbaaba09146d 2420:b7390a3040f8
   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*/
   212                 size += result;
   216                 size += result;
   213             } else {
   217             } else {
   214                 if (result == 0)
   218                 if (result == 0)
   215                     break;
   219                     break;
   216                 else { 
   220                 else { 
   217                     fprintf(stderr, "ERROR 'load_oggvorbis()': end of file from OGG stream\n");
   221                         errno = EILSEQ;
       
   222                         err_ret("(%s) ERROR - End of file from OGG stream", prog);
   218                     ov_clear(&oggStream);
   223                     ov_clear(&oggStream);
   219                     return AL_FALSE;
   224                     return AL_FALSE;
   220                 }
   225                 }
   221             }
   226             }
   222         }
   227         }