Mercurial > hg > dmlib
changeset 792:bfb1d2bacd54
Merged.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 15 Aug 2013 14:09:18 +0300 |
parents | cb15452f738d (current diff) 7ea8775b265a (diff) |
children | 21ad08cdf408 |
files | |
diffstat | 3 files changed, 44 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/dmengine.c Tue Aug 06 14:59:57 2013 +0300 +++ b/dmengine.c Thu Aug 15 14:09:18 2013 +0300 @@ -396,6 +396,48 @@ } +void engineAudioCallback(void *userdata, Uint8 *stream, int len) +{ + (void) userdata; + + dmMutexLock(engine.audioStreamMutex); + engine.audioStreamBuf = stream; + engine.audioStreamLen = len / engine.audioSampleSize; + engine.audioTimePos += (1000 * engine.audioStreamLen) / engine.optAfmt.freq; + + if (engine.paused) + { + memset(stream, 0, len); + } + else + switch (engine.optAudioSetup) + { +#ifdef DM_USE_JSS + case DM_ASETUP_JSS: + if (engine.jssDev != NULL) + jvmRenderAudio(engine.jssDev, stream, len / engine.audioSampleSize); + break; +#endif +#ifdef DM_USE_TREMOR + case DM_ASETUP_TREMOR: + if (engine.audioPos + len >= engine.audioRes->resSize) + engine.exitFlag = TRUE; + else + { + memcpy(stream, engine.audioRes->resData + engine.audioPos, len); + engine.audioPos += len; + } + break; +#endif + + default: + break; + } + + dmMutexUnlock(engine.audioStreamMutex); +} + + void enginePauseAudio(int status) { if (status)
--- a/dmengine.h Tue Aug 06 14:59:57 2013 +0300 +++ b/dmengine.h Thu Aug 15 14:09:18 2013 +0300 @@ -258,6 +258,7 @@ DMMutex *audioStreamMutex; Uint8 * audioStreamBuf; size_t audioStreamLen; // Length in samples + Uint32 audioTimePos; // Approximate audio time (in milliseconds) int audioSampleSize; // Size of one audio sample in bytes (incl. all channels) // No-sound audio simulation thread stuff @@ -366,6 +367,7 @@ int engineGetTick(DMEngineData *eng); float engineGetTimeDT(DMEngineData *eng); +void engineAudioCallback(void *userdata, Uint8 *stream, int len); void enginePauseAudio(int status); int engineGetVideoAspect(int width, int height);
--- a/dmsimple.c Tue Aug 06 14:59:57 2013 +0300 +++ b/dmsimple.c Thu Aug 15 14:09:18 2013 +0300 @@ -61,54 +61,6 @@ } -static void engineAudioCallback(void *userdata, Uint8 *stream, int len) -{ - (void) userdata; - - dmMutexLock(engine.audioStreamMutex); - engine.audioStreamBuf = stream; - engine.audioStreamLen = len; - - if (engine.paused) - { - memset(stream, 0, len); - } - else - switch (engine.optAudioSetup) - { -#ifdef DM_USE_JSS - case DM_ASETUP_JSS: - if (engine.jssDev != NULL) - { - jvmRenderAudio(engine.jssDev, stream, len / jvmGetSampleSize(engine.jssDev)); - } - - JSS_LOCK(engine.jssPlr); - if (engine.jssPlr != NULL && !engine.jssPlr->isPlaying) - engine.exitFlag = TRUE; - JSS_UNLOCK(engine.jssPlr); - break; -#endif -#ifdef DM_USE_TREMOR - case DM_ASETUP_TREMOR: - if (engine.audioPos + len >= engine.audioRes->resSize) - engine.exitFlag = TRUE; - else - { - memcpy(stream, engine.audioRes->resData + engine.audioPos, len); - engine.audioPos += len; - } - break; -#endif - - default: - break; - } - - dmMutexUnlock(engine.audioStreamMutex); -} - - static int engineAudioThreadFunc(void *userdata) { do