Mercurial > almixer_isolated
diff Isolated/LGPL/wav.c @ 76:12e4e093c6e0
Compiler warning cleanups for wav.c on Windows/CodeBlocks.
Johnson Lin wanted to clean up warnings he was getting. I'm a little nervous about the struct definition change from signed to unsigned for the chunkSize in the data struct. But for the usage cases, it looks reasonable to me.
author | Eric Wing <ewing . public |-at-| gmail . com> |
---|---|
date | Mon, 13 Aug 2012 01:40:17 -0700 |
parents | 71b465ff0622 |
children |
line wrap: on
line diff
--- a/Isolated/LGPL/wav.c Mon Aug 13 00:06:12 2012 -0700 +++ b/Isolated/LGPL/wav.c Mon Aug 13 01:40:17 2012 -0700 @@ -17,11 +17,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* - Attention: This is a stripped down file of SDL_endian for our purposes. +/* + Attention: This is a stripped down file of SDL_endian for our purposes. This code is licensed under the LGPL. This means we must not compile this code into anything that we are not willing to - publicly release source code. + publicly release source code. You should compile this into a separate dynamic library that is isolated from proprietary code. */ @@ -46,11 +46,12 @@ #include <stdlib.h> #include <string.h> -//#include "SDL_sound.h" +/* +#include "SDL_sound.h" -//#define __SDL_SOUND_INTERNAL__ -//#include "SDL_sound_internal.h" - +#define __SDL_SOUND_INTERNAL__ +#include "SDL_sound_internal.h" +*/ #include "SoundDecoder.h" @@ -121,17 +122,17 @@ static __inline__ uint16_t SDL_ReadLE16( ALmixer_RWops *rw ) { uint16_t result = 0; - + int rc = read_le16( rw, &result ); - + return result; } static __inline__ uint32_t SDL_ReadLE32( ALmixer_RWops *rw ) { uint32_t result = 0; - + int rc = read_le32( rw, &result ); - + return result; } @@ -177,7 +178,7 @@ uint16_t wBitsPerSample; uint32_t next_chunk_offset; - + uint32_t sample_frame_size; uint32_t data_starting_offset; uint32_t total_bytes; @@ -209,7 +210,7 @@ /* * Read in a fmt_t from disk. This makes this process safe regardless of * the processor's byte order or how the fmt_t structure is packed. - * Note that the union "fmt" is not read in here; that is handled as + * Note that the union "fmt" is not read in here; that is handled as * needed in the read_fmt_* functions. */ static int read_fmt_chunk(ALmixer_RWops *rw, fmt_t *fmt) @@ -217,11 +218,11 @@ /* skip reading the chunk ID, since it was already read at this point... */ fmt->chunkID = fmtID; - BAIL_IF_MACRO(!read_le32(rw, &fmt->chunkSize), NULL, 0); + BAIL_IF_MACRO(!read_le32(rw, (uint32_t*)&fmt->chunkSize), NULL, 0); BAIL_IF_MACRO(fmt->chunkSize < 16, "WAV: Invalid chunk size", 0); fmt->next_chunk_offset = ALmixer_RWtell(rw) + fmt->chunkSize; - - BAIL_IF_MACRO(!read_le16(rw, &fmt->wFormatTag), NULL, 0); + + BAIL_IF_MACRO(!read_le16(rw, (uint16_t*)&fmt->wFormatTag), NULL, 0); BAIL_IF_MACRO(!read_le16(rw, &fmt->wChannels), NULL, 0); BAIL_IF_MACRO(!read_le32(rw, &fmt->dwSamplesPerSec), NULL, 0); BAIL_IF_MACRO(!read_le32(rw, &fmt->dwAvgBytesPerSec), NULL, 0); @@ -242,7 +243,12 @@ typedef struct { uint32_t chunkID; - int32_t chunkSize; + + /* Johnson Lin wanted to clean up compiler warnings on Windows/CodeBlocks. + * This was originally a signed int32_t. The code usage and intent seems to imply that it should be a uint32_t. + */ + /* int32_t chunkSize; */ + uint32_t chunkSize; /* Then, (chunkSize) bytes of waveform data... */ } data_t; @@ -382,10 +388,10 @@ BAIL_IF_MACRO(!read_le16(rw, &headers[i].iDelta), NULL, 0); for (i = 0; i < max; i++) - BAIL_IF_MACRO(!read_le16(rw, &headers[i].iSamp1), NULL, 0); + BAIL_IF_MACRO(!read_le16(rw, (uint16_t*)&headers[i].iSamp1), NULL, 0); for (i = 0; i < max; i++) - BAIL_IF_MACRO(!read_le16(rw, &headers[i].iSamp2), NULL, 0); + BAIL_IF_MACRO(!read_le16(rw, (uint16_t*)&headers[i].iSamp2), NULL, 0); fmt->fmt.adpcm.samples_left_in_block = fmt->fmt.adpcm.wSamplesPerBlock; fmt->fmt.adpcm.nibble_state = 0; @@ -449,7 +455,7 @@ int16_t iCoef1 = fmt->fmt.adpcm.aCoef[headers[i].bPredictor].iCoef1; int16_t iCoef2 = fmt->fmt.adpcm.aCoef[headers[i].bPredictor].iCoef2; int32_t lPredSamp = ((headers[i].iSamp1 * iCoef1) + - (headers[i].iSamp2 * iCoef2)) / + (headers[i].iSamp2 * iCoef2)) / FIXED_POINT_COEF_BASE; if (fmt->fmt.adpcm.nibble_state == 0) @@ -610,7 +616,7 @@ /* * Read in the adpcm-specific info from disk. This makes this process - * safe regardless of the processor's byte order or how the fmt_t + * safe regardless of the processor's byte order or how the fmt_t * structure is packed. */ static int read_fmt_adpcm(ALmixer_RWops *rw, fmt_t *fmt) @@ -635,8 +641,8 @@ for (i = 0; i < fmt->fmt.adpcm.wNumCoef; i++) { - BAIL_IF_MACRO(!read_le16(rw, &fmt->fmt.adpcm.aCoef[i].iCoef1), NULL, 0); - BAIL_IF_MACRO(!read_le16(rw, &fmt->fmt.adpcm.aCoef[i].iCoef2), NULL, 0); + BAIL_IF_MACRO(!read_le16(rw, (uint16_t*)&fmt->fmt.adpcm.aCoef[i].iCoef1), NULL, 0); + BAIL_IF_MACRO(!read_le16(rw, (uint16_t*)&fmt->fmt.adpcm.aCoef[i].iCoef2), NULL, 0); } /* for */ i = sizeof (ADPCMBLOCKHEADER) * fmt->wChannels; @@ -699,7 +705,7 @@ */ static int find_chunk(ALmixer_RWops *rw, uint32_t id) { - int32_t siz = 0; + uint32_t siz = 0; uint32_t _id = 0; uint32_t pos = ALmixer_RWtell(rw);