diff options
author | Jörg Müller <nexyon@gmail.com> | 2017-08-18 09:24:12 +0300 |
---|---|---|
committer | Jörg Müller <nexyon@gmail.com> | 2017-08-18 09:24:12 +0300 |
commit | 986267300ba42a5c99d2802cd701803dd558e389 (patch) | |
tree | 9bf6a84f8e3ebb8d01e5617b1cccfd2693cc1345 /intern/audaspace/SDL | |
parent | d0dad0260434c4420fa9756264c1cc5e745e5ec9 (diff) |
Audaspace: Moving audaspace 1.3 into extern.
Deleting the old internal audaspace.
Major changes from there are:
- The whole library was refactored to use C++11.
- Many stability and performance improvements.
- Major Python API refactor:
- Most requested: Play self generated sounds using numpy arrays.
- For games: Sound list, random sounds and dynamic music.
- Writing sounds to files.
- Sequencing API.
- Opening sound devices, eg. Jack.
- Ability to choose different OpenAL devices in the user settings.
Diffstat (limited to 'intern/audaspace/SDL')
-rw-r--r-- | intern/audaspace/SDL/AUD_SDLDevice.cpp | 97 | ||||
-rw-r--r-- | intern/audaspace/SDL/AUD_SDLDevice.h | 86 |
2 files changed, 0 insertions, 183 deletions
diff --git a/intern/audaspace/SDL/AUD_SDLDevice.cpp b/intern/audaspace/SDL/AUD_SDLDevice.cpp deleted file mode 100644 index 23729a7a171..00000000000 --- a/intern/audaspace/SDL/AUD_SDLDevice.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * Copyright 2009-2011 Jörg Hermann Müller - * - * This file is part of AudaSpace. - * - * Audaspace is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * AudaSpace is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Audaspace; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file audaspace/SDL/AUD_SDLDevice.cpp - * \ingroup audsdl - */ - - -#include "AUD_SDLDevice.h" -#include "AUD_IReader.h" - -void AUD_SDLDevice::SDL_mix(void *data, Uint8* buffer, int length) -{ - AUD_SDLDevice* device = (AUD_SDLDevice*)data; - - device->mix((data_t*)buffer,length/AUD_DEVICE_SAMPLE_SIZE(device->m_specs)); -} - -static const char* open_error = "AUD_SDLDevice: Device couldn't be opened."; -static const char* format_error = "AUD_SDLDevice: Obtained unsupported sample " - "format."; - -AUD_SDLDevice::AUD_SDLDevice(AUD_DeviceSpecs specs, int buffersize) -{ - if(specs.channels == AUD_CHANNELS_INVALID) - specs.channels = AUD_CHANNELS_STEREO; - if(specs.format == AUD_FORMAT_INVALID) - specs.format = AUD_FORMAT_S16; - if(specs.rate == AUD_RATE_INVALID) - specs.rate = AUD_RATE_48000; - - m_specs = specs; - - SDL_AudioSpec format, obtained; - - format.freq = m_specs.rate; - if(m_specs.format == AUD_FORMAT_U8) - format.format = AUDIO_U8; - else - format.format = AUDIO_S16SYS; - format.channels = m_specs.channels; - format.samples = buffersize; - format.callback = AUD_SDLDevice::SDL_mix; - format.userdata = this; - - if(SDL_OpenAudio(&format, &obtained) != 0) - AUD_THROW(AUD_ERROR_SDL, open_error); - - m_specs.rate = (AUD_SampleRate)obtained.freq; - m_specs.channels = (AUD_Channels)obtained.channels; - if(obtained.format == AUDIO_U8) - m_specs.format = AUD_FORMAT_U8; - else if(obtained.format == AUDIO_S16LSB || obtained.format == AUDIO_S16MSB) - m_specs.format = AUD_FORMAT_S16; - else - { - SDL_CloseAudio(); - AUD_THROW(AUD_ERROR_SDL, format_error); - } - - create(); -} - -AUD_SDLDevice::~AUD_SDLDevice() -{ - lock(); - SDL_CloseAudio(); - unlock(); - - destroy(); -} - -void AUD_SDLDevice::playing(bool playing) -{ - SDL_PauseAudio(playing ? 0 : 1); -} diff --git a/intern/audaspace/SDL/AUD_SDLDevice.h b/intern/audaspace/SDL/AUD_SDLDevice.h deleted file mode 100644 index c4ff9e80aa9..00000000000 --- a/intern/audaspace/SDL/AUD_SDLDevice.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * Copyright 2009-2011 Jörg Hermann Müller - * - * This file is part of AudaSpace. - * - * Audaspace is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * AudaSpace is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Audaspace; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file audaspace/SDL/AUD_SDLDevice.h - * \ingroup audsdl - */ - - -#ifndef __AUD_SDLDEVICE_H__ -#define __AUD_SDLDEVICE_H__ - -#include "AUD_SoftwareDevice.h" - -/* SDL force defines __SSE__ and __SSE2__ flags, which generates warnings - * because we pass those defines via command line as well. For until there's - * proper ifndef added to SDL headers we ignore the redefinition warning. - */ -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable : 4005) -#endif -#include <SDL.h> -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -/** - * This device plays back through SDL, the simple direct media layer. - */ -class AUD_SDLDevice : public AUD_SoftwareDevice -{ -private: - /** - * Mixes the next bytes into the buffer. - * \param data The SDL device. - * \param buffer The target buffer. - * \param length The length in bytes to be filled. - */ - static void SDL_mix(void *data, Uint8* buffer, int length); - - // hide copy constructor and operator= - AUD_SDLDevice(const AUD_SDLDevice&); - AUD_SDLDevice& operator=(const AUD_SDLDevice&); - -protected: - virtual void playing(bool playing); - -public: - /** - * Opens the SDL audio device for playback. - * \param specs The wanted audio specification. - * \param buffersize The size of the internal buffer. - * \note The specification really used for opening the device may differ. - * \exception AUD_Exception Thrown if the audio device cannot be opened. - */ - AUD_SDLDevice(AUD_DeviceSpecs specs, - int buffersize = AUD_DEFAULT_BUFFER_SIZE); - - /** - * Closes the SDL audio device. - */ - virtual ~AUD_SDLDevice(); -}; - -#endif //__AUD_SDLDEVICE_H__ |