# HG changeset patch # User koda # Date 1247425928 0 # Node ID 31756e21c436f939d1f61339f436aec195dd336e # Parent ca42efdce3cefdbb944c84a2d70a91f3bbc4a586 other indentation, binding and miscellaneous fixes to openalbridge diff -r ca42efdce3ce -r 31756e21c436 QTfrontend/SDLs.h --- a/QTfrontend/SDLs.h Sun Jul 12 15:42:54 2009 +0000 +++ b/QTfrontend/SDLs.h Sun Jul 12 19:12:08 2009 +0000 @@ -21,20 +21,20 @@ #include -extern "C" int openal_init (unsigned int memorysize); -extern "C" int openal_close (void); -extern "C" int openal_ready (void); -extern "C" int openal_loadfile (const char *filename); -extern "C" int openal_toggleloop (unsigned int index); -extern "C" int openal_setvolume (unsigned int index, unsigned char percentage); -extern "C" int openal_setglobalvolume (unsigned char percentage); -extern "C" int openal_togglemute (void); -extern "C" int openal_fadeout (unsigned int index, unsigned short int quantity); -extern "C" int openal_fadein (unsigned int index, unsigned short int quantity); -extern "C" int openal_fade (unsigned int index, unsigned short int quantity, unsigned char direction); -extern "C" int openal_playsound (unsigned int index); -extern "C" int openal_stopsound (unsigned int index); -extern "C" int openal_pausesound (unsigned int index); +extern "C" bool openal_init (unsigned int memorysize); +extern "C" bool openal_close (void); +extern "C" bool openal_ready (void); +extern "C" int openal_loadfile (const char *filename); +extern "C" bool openal_toggleloop (unsigned int index); +extern "C" bool openal_setvolume (unsigned int index, unsigned char percentage); +extern "C" bool openal_setglobalvolume (unsigned char percentage); +extern "C" bool openal_togglemute (void); +extern "C" bool openal_fadeout (unsigned int index, unsigned short int quantity); +extern "C" bool openal_fadein (unsigned int index, unsigned short int quantity); +extern "C" bool openal_fade (unsigned int index, unsigned short int quantity, bool direction); +extern "C" bool openal_playsound (unsigned int index); +extern "C" bool openal_stopsound (unsigned int index); +extern "C" bool openal_pausesound (unsigned int index); class SDLInteraction : public QObject { diff -r ca42efdce3ce -r 31756e21c436 openalbridge/endianness.c --- a/openalbridge/endianness.c Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/endianness.c Sun Jul 12 19:12:08 2009 +0000 @@ -21,12 +21,12 @@ #ifdef __CPLUSPLUS extern "C" { #endif - - /*from big endian to little endian*/ - int invert_endianness(uint32_t number){ - return bswap_32(number); - } - + + /*from big endian to little endian*/ + int invert_endianness(uint32_t number){ + return bswap_32(number); + } + #ifdef __CPLUSPLUS } #endif diff -r ca42efdce3ce -r 31756e21c436 openalbridge/endianness.h --- a/openalbridge/endianness.h Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/endianness.h Sun Jul 12 19:12:08 2009 +0000 @@ -25,11 +25,11 @@ #ifdef __CPLUSPLUS extern "C" { #endif - + #pragma once - - int invert_endianness(uint32_t number); - + + int invert_endianness(uint32_t number); + #ifdef __CPLUSPLUS } #endif diff -r ca42efdce3ce -r 31756e21c436 openalbridge/globals.h --- a/openalbridge/globals.h Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/globals.h Sun Jul 12 19:12:08 2009 +0000 @@ -65,48 +65,46 @@ #define bswap_16(x) ((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)) -#define bswap_32(x) ((((x) & 0xFF000000) >> 24) | \ -(((x) & 0x00FF0000) >> 8) | \ -(((x) & 0x0000FF00) << 8) | \ -(((x) & 0x000000FF) << 24) ) +#define bswap_32(x) ((((x) & 0xFF000000) >> 24) | (((x) & 0x00FF0000) >> 8) | \ + (((x) & 0x0000FF00) << 8) | (((x) & 0x000000FF) << 24) ) #endif /* HAVE_BYTESWAP_H */ #ifdef __CPLUSPLUS extern "C" { #endif - - /*data type for WAV header*/ + + /*data type for WAV header*/ #pragma pack(1) - typedef struct _WAV_header_t { - uint32_t ChunkID; - uint32_t ChunkSize; - uint32_t Format; - uint32_t Subchunk1ID; - uint32_t Subchunk1Size; - uint16_t AudioFormat; - uint16_t NumChannels; - uint32_t SampleRate; - uint32_t ByteRate; - uint16_t BlockAlign; - uint16_t BitsPerSample; - uint32_t Subchunk2ID; - uint32_t Subchunk2Size; - } WAV_header_t; + typedef struct _WAV_header_t { + uint32_t ChunkID; + uint32_t ChunkSize; + uint32_t Format; + uint32_t Subchunk1ID; + uint32_t Subchunk1Size; + uint16_t AudioFormat; + uint16_t NumChannels; + uint32_t SampleRate; + uint32_t ByteRate; + uint16_t BlockAlign; + uint16_t BitsPerSample; + uint32_t Subchunk2ID; + uint32_t Subchunk2Size; + } WAV_header_t; #pragma pack() - - /*data type for passing data between threads*/ + + /*data type for passing data between threads*/ #pragma pack(1) - typedef struct _fade_t { - uint32_t index; - uint16_t quantity; - } fade_t; + typedef struct _fade_t { + uint32_t index; + uint16_t quantity; + } fade_t; #pragma pack() - - /*other defines*/ + + /*other defines*/ #define FADE_IN true #define FADE_OUT false - + #ifdef __CPLUSPLUS } #endif diff -r ca42efdce3ce -r 31756e21c436 openalbridge/loaders.c --- a/openalbridge/loaders.c Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/loaders.c Sun Jul 12 19:12:08 2009 +0000 @@ -132,8 +132,7 @@ OggVorbis_File oggStream; /*stream handle*/ vorbis_info *vorbisInfo; /*some formatting data*/ int64_t pcm_length; /*length of the decoded data*/ - int size = 0; - int section, result; + int section, result, size = 0; #ifdef DEBUG int i; vorbis_comment *vorbisComment; /*other less useful data*/ @@ -141,7 +140,6 @@ oggFile = Fopen(filename, "rb"); result = ov_open(oggFile, &oggStream, NULL, 0); /*TODO: check returning value of result*/ - fclose(oggFile); vorbisInfo = ov_info(&oggStream, -1); pcm_length = ov_pcm_total(&oggStream, -1) << vorbisInfo->channels; @@ -173,6 +171,8 @@ *format = AL_FORMAT_STEREO16; else { fprintf(stderr, "ERROR: wrong OGG header - channel value (%d)\n", vorbisInfo->channels); + ov_clear (&oggStream); + fclose(oggFile); return AL_FALSE; } } @@ -187,6 +187,8 @@ break; else { fprintf(stderr, "ERROR: end of file from OGG stream\n"); + ov_clear (&oggStream); + fclose(oggFile); return AL_FALSE; } } @@ -197,6 +199,7 @@ *freq = vorbisInfo->rate; ov_clear (&oggStream); + fclose (oggFile); return AL_TRUE; } diff -r ca42efdce3ce -r 31756e21c436 openalbridge/loaders.h --- a/openalbridge/loaders.h Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/loaders.h Sun Jul 12 19:12:08 2009 +0000 @@ -28,10 +28,10 @@ #ifdef __CPLUSPLUS extern "C" { #endif - - int load_wavpcm (const char *filename, ALenum *format, char **data, ALsizei *bitsize, ALsizei *freq); - int load_oggvorbis (const char *filename, ALenum *format, char **data, ALsizei *bitsize, ALsizei *freq); - + + int load_wavpcm (const char *filename, ALenum *format, char **data, ALsizei *bitsize, ALsizei *freq); + int load_oggvorbis (const char *filename, ALenum *format, char **data, ALsizei *bitsize, ALsizei *freq); + #ifdef __CPLUSPLUS } #endif diff -r ca42efdce3ce -r 31756e21c436 openalbridge/oggvorbis.h --- a/openalbridge/oggvorbis.h Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/oggvorbis.h Sun Jul 12 19:12:08 2009 +0000 @@ -17,192 +17,151 @@ #ifndef ogg_int64_t #define ogg_int64_t int64_t #endif - typedef struct { - unsigned char *data; - int storage; - int fill; - int returned; - - int unsynced; - int headerbytes; - int bodybytes; + unsigned char *data; + int storage; + int fill; + int returned; + int unsynced; + int headerbytes; + int bodybytes; } ogg_sync_state; typedef struct vorbis_info{ - int version; - int channels; - long rate; - - /* The below bitrate declarations are *hints*. - Combinations of the three values carry the following implications: - - all three set to the same value: - implies a fixed rate bitstream - only nominal set: - implies a VBR stream that averages the nominal bitrate. No hard - upper/lower limit - upper and or lower set: - implies a VBR bitstream that obeys the bitrate limits. nominal - may also be set to give a nominal rate. - none set: - the coder does not care to speculate. - */ - - long bitrate_upper; - long bitrate_nominal; - long bitrate_lower; - long bitrate_window; - - void *codec_setup; + int version; + int channels; + long rate; + /* The below bitrate declarations are *hints*. + Combinations of the three values carry the following implications: + all three set to the same value: implies a fixed rate bitstream + only nominal set: implies a VBR stream that averages the nominal bitrate. No hard upper/lower limit + upper and or lower set: implies a VBR bitstream that obeys the bitrate limits. nominal may also be set to give a nominal rate. + none set: the coder does not care to speculate. */ + long bitrate_upper; + long bitrate_nominal; + long bitrate_lower; + long bitrate_window; + void *codec_setup; } vorbis_info; typedef struct vorbis_comment{ - /* unlimited user comment fields. libvorbis writes 'libvorbis' whatever vendor is set to in encode */ - char **user_comments; - int *comment_lengths; - int comments; - char *vendor; - + /* unlimited user comment fields. libvorbis writes 'libvorbis' whatever vendor is set to in encode */ + char **user_comments; + int *comment_lengths; + int comments; + char *vendor; } vorbis_comment; typedef struct { - unsigned char *body_data; /* bytes from packet bodies */ - long body_storage; /* storage elements allocated */ - long body_fill; /* elements stored; fill mark */ - long body_returned; /* elements of fill returned */ - - - int *lacing_vals; /* The values that will go to the segment table */ - ogg_int64_t *granule_vals; - /* granulepos values for headers. Not compact - this way, but it is simple coupled to the lacing fifo */ - long lacing_storage; - long lacing_fill; - long lacing_packet; - long lacing_returned; - - unsigned char header[282]; /* working space for header encode */ - int header_fill; - - int e_o_s; /* set when we have buffered the last packet in the logical bitstream */ - int b_o_s; /* set after we've written the initial page of a logical bitstream */ - long serialno; - long pageno; - ogg_int64_t packetno; - /* sequence number for decode; the framing - knows where there's a hole in the data, - but we need coupling so that the codec - (which is in a seperate abstraction - layer) also knows about the gap */ - ogg_int64_t granulepos; - + unsigned char *body_data; /* bytes from packet bodies */ + long body_storage; /* storage elements allocated */ + long body_fill; /* elements stored; fill mark */ + long body_returned; /* elements of fill returned */ + int *lacing_vals; /* The values that will go to the segment table */ + ogg_int64_t *granule_vals; + /* granulepos values for headers. Not compact + this way, but it is simple coupled to the lacing fifo */ + long lacing_storage; + long lacing_fill; + long lacing_packet; + long lacing_returned; + unsigned char header[282]; /* working space for header encode */ + int header_fill; + int e_o_s; /* set when we have buffered the last packet in the logical bitstream */ + int b_o_s; /* set after we've written the initial page of a logical bitstream */ + long serialno; + long pageno; + ogg_int64_t packetno; + /* sequence number for decode; the framing knows where there's a hole in the data, + but we need coupling so that the codec (which is in a seperate abstraction layer) also knows about the gap */ + ogg_int64_t granulepos; } ogg_stream_state; typedef struct vorbis_dsp_state{ - int analysisp; - vorbis_info *vi; - - float **pcm; - float **pcmret; - int pcm_storage; - int pcm_current; - int pcm_returned; - - int preextrapolate; - int eofflag; - - long lW; - long W; - long nW; - long centerW; - - ogg_int64_t granulepos; - ogg_int64_t sequence; - - ogg_int64_t glue_bits; - ogg_int64_t time_bits; - ogg_int64_t floor_bits; - ogg_int64_t res_bits; - - void *backend_state; + int analysisp; + vorbis_info *vi; + float **pcm; + float **pcmret; + int pcm_storage; + int pcm_current; + int pcm_returned; + int preextrapolate; + int eofflag; + long lW; + long W; + long nW; + long centerW; + ogg_int64_t granulepos; + ogg_int64_t sequence; + ogg_int64_t glue_bits; + ogg_int64_t time_bits; + ogg_int64_t floor_bits; + ogg_int64_t res_bits; + void *backend_state; } vorbis_dsp_state; typedef struct { - long endbyte; - int endbit; - - unsigned char *buffer; - unsigned char *ptr; - long storage; + long endbyte; + int endbit; + unsigned char *buffer; + unsigned char *ptr; + long storage; } oggpack_buffer; typedef struct vorbis_block{ - /* necessary stream state for linking to the framing abstraction */ - float **pcm; /* this is a pointer into local storage */ - oggpack_buffer opb; - - long lW; - long W; - long nW; - int pcmend; - int mode; - - int eofflag; - ogg_int64_t granulepos; - ogg_int64_t sequence; - vorbis_dsp_state *vd; /* For read-only access of configuration */ - - /* local storage to avoid remallocing; it's up to the mapping to structure it */ - void *localstore; - long localtop; - long localalloc; - long totaluse; - struct alloc_chain *reap; - - /* bitmetrics for the frame */ - long glue_bits; - long time_bits; - long floor_bits; - long res_bits; - - void *internal; - + /* necessary stream state for linking to the framing abstraction */ + float **pcm; /* this is a pointer into local storage */ + oggpack_buffer opb; + long lW; + long W; + long nW; + int pcmend; + int mode; + int eofflag; + ogg_int64_t granulepos; + ogg_int64_t sequence; + vorbis_dsp_state *vd; /* For read-only access of configuration */ + /* local storage to avoid remallocing; it's up to the mapping to structure it */ + void *localstore; + long localtop; + long localalloc; + long totaluse; + struct alloc_chain *reap; + /* bitmetrics for the frame */ + long glue_bits; + long time_bits; + long floor_bits; + long res_bits; + void *internal; } vorbis_block; typedef struct { - size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); - int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); - int (*close_func) (void *datasource); - long (*tell_func) (void *datasource); + size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource); + int (*seek_func) (void *datasource, ogg_int64_t offset, int whence); + int (*close_func) (void *datasource); + long (*tell_func) (void *datasource); } ov_callbacks; typedef struct OggVorbis_File { - void *datasource; /* Pointer to a FILE *, etc. */ - int seekable; - ogg_int64_t offset; - ogg_int64_t end; - ogg_sync_state oy; - - /* If the FILE handle isn't seekable (eg, a pipe), only the current stream appears */ - int links; - ogg_int64_t *offsets; - ogg_int64_t *dataoffsets; - long *serialnos; - ogg_int64_t *pcmlengths; - /* overloaded to maintain binary - compatability; x2 size, stores both - beginning and end values */ - vorbis_info *vi; - vorbis_comment *vc; - - /* Decoding working state local storage */ - ogg_int64_t pcm_offset; - int ready_state; - long current_serialno; - int current_link; - - double bittrack; - double samptrack; - - ogg_stream_state os; /* take physical pages, weld into a logical stream of packets */ - vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ - vorbis_block vb; /* local working space for packet->PCM decode */ - - ov_callbacks callbacks; - + void *datasource; /* Pointer to a FILE *, etc. */ + int seekable; + ogg_int64_t offset; + ogg_int64_t end; + ogg_sync_state oy; + /* If the FILE handle isn't seekable (eg, a pipe), only the current stream appears */ + int links; + ogg_int64_t *offsets; + ogg_int64_t *dataoffsets; + long *serialnos; + ogg_int64_t *pcmlengths; + /* overloaded to maintain binary + compatability; x2 size, stores both + beginning and end values */ + vorbis_info *vi; + vorbis_comment *vc; + /* Decoding working state local storage */ + ogg_int64_t pcm_offset; + int ready_state; + long current_serialno; + int current_link; + double bittrack; + double samptrack; + ogg_stream_state os; /* take physical pages, weld into a logical stream of packets */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + ov_callbacks callbacks; } OggVorbis_File; diff -r ca42efdce3ce -r 31756e21c436 openalbridge/openalwrap.c --- a/openalbridge/openalwrap.c Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/openalwrap.c Sun Jul 12 19:12:08 2009 +0000 @@ -125,11 +125,13 @@ ALboolean helper_realloc (void) { /*expands allocated memory when loading more sound files than expected*/ -#ifdef DEBUG - fprintf(stderr, "OpenAL: Realloc in process %d\n", globalsize); -#endif + int oldsize = globalsize; globalsize += increment; +#ifdef DEBUG + fprintf(stderr, "OpenAL: Realloc in process from %d to %d\n", oldsize, globalsize); +#endif + Buffers = (ALuint*) Realloc(Buffers, sizeof(ALuint)*globalsize); Sources = (ALuint*) Realloc(Sources, sizeof(ALuint)*globalsize); @@ -338,14 +340,14 @@ #ifndef _WIN32 pthread_create(&thread, NULL, helper_fadein, (void*) fade); #else - Thread = _beginthread(&helper_fadein, 0, (void*) fade); + Thread = _beginthread(&helper_fadein, 0, (void*) fade); #endif else { if (direction == FADE_OUT) #ifndef _WIN32 pthread_create(&thread, NULL, helper_fadeout, (void*) fade); #else - Thread = _beginthread(&helper_fadeout, 0, (void*) fade); + Thread = _beginthread(&helper_fadeout, 0, (void*) fade); #endif else { fprintf(stderr, "ERROR: unknown direction for fade (%d)\n", direction); diff -r ca42efdce3ce -r 31756e21c436 openalbridge/wrappers.h --- a/openalbridge/wrappers.h Sun Jul 12 15:42:54 2009 +0000 +++ b/openalbridge/wrappers.h Sun Jul 12 19:12:08 2009 +0000 @@ -22,13 +22,20 @@ #include "globals.h" -void *Malloc (size_t nbytes); -void *Realloc (void *aptr, size_t nbytes); -FILE *Fopen (const char *fname, char *mode); -ALint AlGetError (const char *str); -ALint AlGetError2 (const char *str, int num); -void *helper_fadein (void *tmp); -void *helper_fadeout (void *tmp); - +#ifdef __CPLUSPLUS +extern "C" { +#endif + + void *Malloc (size_t nbytes); + void *Realloc (void *aptr, size_t nbytes); + FILE *Fopen (const char *fname, char *mode); + ALint AlGetError (const char *str); + ALint AlGetError2 (const char *str, int num); + void *helper_fadein (void *tmp); + void *helper_fadeout (void *tmp); + +#ifdef __CPLUSPLUS +} +#endif #endif /*_OALB_WRAPPERS_H*/