/* * _alInit( void ) * * _alInit is called when the "first" context is created. If all * contexts are deleted, and then one is created, it is called again. * * Returns AL_TRUE unless some weird sort of memory allocation problem occurs, * in which case AL_FALSE is returned. */ ALboolean _alInit( void ) { ALboolean err; ALuint i; for(i = 0; i < _ALC_MAX_CHANNELS; i++) { f_buffers.data[i] = NULL; } f_buffers.len = 0; /* buffer initializations */ err = _alInitBuffers(); if(err == AL_FALSE) { return AL_FALSE; } /* extension initilizations */ err = _alInitExtensions(); if(err == AL_FALSE) { _alDestroyBuffers(); return AL_FALSE; } #ifdef BUILTIN_EXT_LOKI /* FIXME: dynamic-ify this */ /* register extension groups */ _alRegisterExtensionGroup( (const ALubyte*) "ALC_LOKI_audio_channel" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_buffer_data_callback" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_IMA_ADPCM_format" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_play_position" ); #ifdef VORBIS_SUPPORT _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_vorbis" ); #endif /* CAPTURE_SUPPORT */ #ifdef CAPTURE_SUPPORT _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_capture" ); #endif /* CAPTURE_SUPPORT */ #endif /* BUILTIN_EXT_LOKI */ for(i = 0; exts[i].addr != NULL; i++) { _alRegisterExtension(exts[i].name, exts[i].addr); } /* do builtin extensions initialization */ BUILTIN_EXT_LOKI_INIT; BUILTIN_EXT_CAPTURE_INIT; BUILTIN_EXT_MP3_INIT; BUILTIN_EXT_VORBIS_INIT; return AL_TRUE; }
/* * _alInit( void ) * * _alInit is called when the "first" device is created. If all * devices are deleted, and then one is created, it is called again. * * Returns AL_TRUE unless some weird sort of memory allocation problem occurs, * in which case AL_FALSE is returned. */ ALboolean _alInit( void ) { ALboolean err; ALuint i; _alDebug( ALD_MAXIMUS, __FILE__, __LINE__, "_alInit called" ); alDLInit_ (); _alDetectCPUCaps(); /* set up SIMD FloatMul */ #ifdef HAVE_SSE2 if (_alHaveSSE2()) _alFloatMul = _alFloatMul_SSE2; else #endif /* HAVE_SSE2 */ #ifdef HAVE_MMX if (_alHaveMMX()) _alFloatMul = _alFloatMul_MMX; else #endif /* HAVE_MMX */ _alFloatMul = _alFloatMul_portable; for(i = 0; i < _ALC_MAX_CHANNELS; i++) { f_buffers.data[i] = NULL; } f_buffers.len = 0; /* buffer initializations */ err = _alInitBuffers(); if(err == AL_FALSE) { return AL_FALSE; } if( _alInitMixer() == AL_FALSE ) { return AL_FALSE; } /* extension initilizations */ err = _alInitExtensions(); if(err == AL_FALSE) { _alDestroyBuffers(); return AL_FALSE; } #ifdef BUILTIN_EXT_LOKI /* FIXME: dynamic-ify this */ /* register extension groups */ _alRegisterExtensionGroup( (const ALubyte*) "ALC_LOKI_audio_channel" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_buffer_data_callback" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_IMA_ADPCM_format" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_WAVE_format" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_play_position" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_LOKI_quadriphonic" ); #ifdef ENABLE_EXTENSION_AL_EXT_MP3 _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_MP3" ); #endif /* ENABLE_EXTENSION_AL_EXT_MP3 */ #ifdef ENABLE_EXTENSION_AL_EXT_VORBIS _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_vorbis" ); #endif /* ENABLE_EXTENSION_AL_EXT_VORBIS */ #endif /* BUILTIN_EXT_LOKI */ _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_capture" ); _alRegisterExtensionGroup( (const ALubyte*) "ALC_EXT_capture" ); _alRegisterExtensionGroup( (const ALubyte*) "AL_EXT_offset" ); for(i = 0; exts[i].addr != NULL; i++) { _alRegisterExtension(exts[i].name, exts[i].addr); } /* do builtin extensions initialization */ BUILTIN_EXT_LOKI_INIT; BUILTIN_EXT_MP3_INIT; BUILTIN_EXT_VORBIS_INIT; return AL_TRUE; }