Mercurial > hg > dmlib
changeset 641:c3852e49a610
Change how audio configuration works.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 15 Apr 2013 09:20:45 +0300 |
parents | 55743025d628 |
children | 0888971cbff8 |
files | dmengine.h dmsimple.c |
diffstat | 2 files changed, 75 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/dmengine.h Mon Apr 15 08:58:02 2013 +0300 +++ b/dmengine.h Mon Apr 15 09:20:45 2013 +0300 @@ -25,9 +25,20 @@ // Video setup type -#define DM_VSETUP_NONE 0x00 // No video setup, just set window/screen to what demo specifies -#define DM_VSETUP_ASPECT 0x01 // Only modes that match the optVidAspect aspect ratio are ok -#define DM_VSETUP_ANY 0x02 // Any available mode is okay, the code can adapt +enum +{ + DM_VSETUP_NONE = 0x00, // No video setup, just set window/screen to what demo specifies + DM_VSETUP_ASPECT = 0x01, // Only modes that match the optVidAspect aspect ratio are ok + DM_VSETUP_ANY = 0x02, // Any available mode is okay, the code can adapt +}; + +// Audio setup type +enum +{ + DM_ASETUP_NONE = 0, + DM_ASETUP_JSS = 1, + DM_ASETUP_TREMOR = 2, +}; @@ -225,6 +236,7 @@ SDL_Surface *screen; SDL_Event event; SDL_AudioSpec optAfmt; + int optAudioSetup; int optVidWidth, optVidHeight, optVidDepth, optVFlags,
--- a/dmsimple.c Mon Apr 15 08:58:02 2013 +0300 +++ b/dmsimple.c Mon Apr 15 09:20:45 2013 +0300 @@ -64,23 +64,29 @@ memset(stream, 0, len); } else -#ifdef DM_USE_JSS + switch (engine.optAudioSetup) { - if (engine.dev != NULL) - jvmRenderAudio(engine.dev, stream, len / jvmGetSampleSize(engine.dev)); - } +#ifdef DM_USE_JSS + case DM_ASETUP_JSS: + if (engine.dev != NULL) + jvmRenderAudio(engine.dev, stream, len / jvmGetSampleSize(engine.dev)); + break; #endif #ifdef DM_USE_TREMOR - if (engine.audioPos + len >= engine.audioRes->rdataSize) - { - engine.exitFlag = TRUE; + case DM_ASETUP_TREMOR: + if (engine.audioPos + len >= engine.audioRes->rdataSize) + engine.exitFlag = TRUE; + else + { + memcpy(stream, engine.audioRes->rdata + engine.audioPos, len); + engine.audioPos += len; + } + break; +#endif + + default: + break; } - else - { - memcpy(stream, engine.audioRes->rdata + engine.audioPos, len); - engine.audioPos += len; - } -#endif } @@ -633,33 +639,46 @@ if (engine.optAfmt.samples == 0) engine.optAfmt.samples = engine.optAfmt.freq / 16; -#ifdef DM_USE_JSS - jssInit(); - - switch (engine.optAfmt.format) + switch (engine.optAudioSetup) { - case AUDIO_S16SYS: engine.jss_format = JSS_AUDIO_S16; break; - case AUDIO_U16SYS: engine.jss_format = JSS_AUDIO_U16; break; - case AUDIO_S8: engine.jss_format = JSS_AUDIO_S8; break; - case AUDIO_U8: engine.jss_format = JSS_AUDIO_U8; break; - } + case DM_ASETUP_JSS: +#ifdef DM_USE_JSS + jssInit(); + + switch (engine.optAfmt.format) + { + case AUDIO_S16SYS: engine.jss_format = JSS_AUDIO_S16; break; + case AUDIO_U16SYS: engine.jss_format = JSS_AUDIO_U16; break; + case AUDIO_S8: engine.jss_format = JSS_AUDIO_S8; break; + case AUDIO_U8: engine.jss_format = JSS_AUDIO_U8; break; + } + + dmPrint(1, "Initializing miniJSS mixer with fmt=%d, chn=%d, freq=%d\n", + engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq); - dmPrint(1, "Initializing miniJSS mixer with fmt=%d, chn=%d, freq=%d\n", - engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq); + if ((engine.dev = jvmInit(engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq, JMIX_AUTO)) == NULL) + { + dmError("jvmInit() returned NULL, voi perkele.\n"); + goto error_exit; + } - if ((engine.dev = jvmInit(engine.jss_format, engine.optAfmt.channels, engine.optAfmt.freq, JMIX_AUTO)) == NULL) - { - dmError("jvmInit() returned NULL, voi perkele.\n"); - goto error_exit; + if ((engine.plr = jmpInit(engine.dev)) == NULL) + { + dmError("jmpInit() returned NULL\n"); + goto error_exit; + } +#else + dmError("miniJSS support not included.\n"); +#endif + break; + + case DM_ASETUP_TREMOR: +#ifndef DM_USE_TREMOR + dmError("Tremor support not included.\n"); +#endif + break; } - if ((engine.plr = jmpInit(engine.dev)) == NULL) - { - dmError("jmpInit() returned NULL\n"); - goto error_exit; - } -#endif - // Initialize SDL audio dmPrint(1, "Trying to init SDL audio with: fmt=%d, chn=%d, freq=%d\n", engine.optAfmt.format, engine.optAfmt.channels, engine.optAfmt.freq); @@ -850,9 +869,12 @@ SDL_LockAudio(); SDL_PauseAudio(1); #ifdef DM_USE_JSS - jmpClose(engine.plr); - jvmClose(engine.dev); - jssClose(); + if (engine.optAudioSetup == DM_ASETUP_JSS) + { + jmpClose(engine.plr); + jvmClose(engine.dev); + jssClose(); + } #endif SDL_UnlockAudio();