From 56e126ff144ebe3204eb6b74cb78e9b11f4d4c75 Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Tue, 27 Jul 2010 11:34:43 +0200 Subject: [PATCH] Added stub android sound system --- Makefile.android | 2 +- src/audio/SDL_audio.c | 4 + src/audio/android/SDL_androidaudio.c | 106 +++++++++++++++++++++++++++ src/audio/android/SDL_androidaudio.h | 42 +++++++++++ src/audio/android/SDL_androidaudio.o | Bin 0 -> 8744 bytes 5 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 src/audio/android/SDL_androidaudio.c create mode 100644 src/audio/android/SDL_androidaudio.h create mode 100644 src/audio/android/SDL_androidaudio.o diff --git a/Makefile.android b/Makefile.android index 7959f76de..5a7da8748 100755 --- a/Makefile.android +++ b/Makefile.android @@ -28,7 +28,7 @@ SOURCES = \ src/timer/*.c \ src/video/*.c \ src/power/*.c \ - src/audio/dummy/*.c \ + src/audio/android/*.c \ src/video/android/*.c \ src/joystick/dummy/*.c \ src/haptic/dummy/*.c \ diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index fe2f3ff86..572cdb4a7 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -69,6 +69,7 @@ extern AudioBootStrap MMEAUDIO_bootstrap; extern AudioBootStrap DART_bootstrap; extern AudioBootStrap NDSAUD_bootstrap; extern AudioBootStrap FUSIONSOUND_bootstrap; +extern AudioBootStrap ANDROIDAUD_bootstrap; /* Available audio drivers */ @@ -136,6 +137,9 @@ static const AudioBootStrap *const bootstrap[] = { #endif #if SDL_AUDIO_DRIVER_FUSIONSOUND &FUSIONSOUND_bootstrap, +#endif +#if SDL_AUDIO_DRIVER_ANDROID + &ANDROIDAUD_bootstrap, #endif NULL }; diff --git a/src/audio/android/SDL_androidaudio.c b/src/audio/android/SDL_androidaudio.c new file mode 100644 index 000000000..1b26d5170 --- /dev/null +++ b/src/audio/android/SDL_androidaudio.c @@ -0,0 +1,106 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org + + This file written by Ryan C. Gordon (icculus@icculus.org) +*/ +#include "SDL_config.h" + +/* Output audio to Android */ + +#include "SDL_audio.h" +#include "../SDL_audio_c.h" +#include "SDL_androidaudio.h" + +#include + +static int +AndroidAUD_OpenDevice(_THIS, const char *devname, int iscapture) +{ + //TODO: Sample rates etc + __android_log_print(ANDROID_LOG_INFO, "SDL", "AndroidAudio Open\n"); + + return 1; +} + +static void +AndroidAUD_PlayDevice(_THIS) +{ + __android_log_print(ANDROID_LOG_INFO, "SDL", "AndroidAudio Play\n"); + + + + //playGenericSound(this->hidden->mixbuf, this->hidden->mixlen); + +#if 0 +// sound->data = this->hidden->mixbuf;/* pointer to raw audio data */ +// sound->len = this->hidden->mixlen; /* size of raw data pointed to above */ +// sound->rate = 22050; /* sample rate = 22050Hz */ +// sound->vol = 127; /* volume [0..127] for [min..max] */ +// sound->pan = 64; /* balance [0..127] for [left..right] */ +// sound->format = 0; /* 0 for 16-bit, 1 for 8-bit */ +// playSound(sound); +#endif +} + + +static Uint8 * +AndroidAUD_GetDeviceBuf(_THIS) +{ + return this->hidden->mixbuf; /* is this right? */ +} + +static void +AndroidAUD_WaitDevice(_THIS) +{ + /* stub */ +} + +static void +AndroidAUD_CloseDevice(_THIS) +{ + /* stub */ +} + +static int +AndroidAUD_Init(SDL_AudioDriverImpl * impl) +{ + /* Set the function pointers */ + impl->OpenDevice = AndroidAUD_OpenDevice; + impl->PlayDevice = AndroidAUD_PlayDevice; + impl->WaitDevice = AndroidAUD_WaitDevice; + impl->GetDeviceBuf = AndroidAUD_GetDeviceBuf; + impl->CloseDevice = AndroidAUD_CloseDevice; + + /* and the capabilities */ + impl->HasCaptureSupport = 0; //TODO + impl->OnlyHasDefaultOutputDevice = 1; + impl->OnlyHasDefaultInputDevice = 1; + + __android_log_print(ANDROID_LOG_INFO, "SDL","Audio init\n"); + + return 1; /* this audio target is available. */ +} + +AudioBootStrap ANDROIDAUD_bootstrap = { + "android", "SDL Android audio driver", AndroidAUD_Init, 0 /*1? */ +}; + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/audio/android/SDL_androidaudio.h b/src/audio/android/SDL_androidaudio.h new file mode 100644 index 000000000..7bf55e33b --- /dev/null +++ b/src/audio/android/SDL_androidaudio.h @@ -0,0 +1,42 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_androidaudio_h +#define _SDL_androidaudio_h + +#include "../SDL_sysaudio.h" + +/* Hidden "this" pointer for the audio functions */ +#define _THIS SDL_AudioDevice *this + +struct SDL_PrivateAudioData +{ + /* The file descriptor for the audio device */ + Uint8 *mixbuf; + Uint32 mixlen; + Uint32 write_delay; + Uint32 initial_calls; +}; + +#endif /* _SDL_androidaudio_h */ +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/audio/android/SDL_androidaudio.o b/src/audio/android/SDL_androidaudio.o new file mode 100644 index 0000000000000000000000000000000000000000..2068b1a726b866209ac8f3ea3bc98740919ed2c1 GIT binary patch literal 8744 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