This replaces SDL_mixer with an internal streaming and mixing system, relying only on basic SDL audio support. It's also a partial refactor of the audio API, most notably BGM-related. The BGM metadata resource type is gone, as well as the `.bgm` files. The metadata is now stored inside the `.opus` files directly, using standard Opus tags.
58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
/*
|
|
* This software is licensed under the terms of the MIT License.
|
|
* See COPYING for further information.
|
|
* ---
|
|
* Copyright (c) 2011-2019, Lukas Weber <laochailan@web.de>.
|
|
* Copyright (c) 2012-2019, Andrei Alexeyev <akari@taisei-project.org>.
|
|
*/
|
|
|
|
#include "taisei.h"
|
|
|
|
#include "sfxbgm_common.h"
|
|
#include "audio/backend.h"
|
|
#include "util.h"
|
|
|
|
static const char *const *get_exts(bool isbgm, uint *numexts) {
|
|
const char *const *exts = (isbgm
|
|
? _a_backend.funcs.get_supported_bgm_exts(numexts)
|
|
: _a_backend.funcs.get_supported_sfx_exts(numexts)
|
|
);
|
|
|
|
if(!exts) {
|
|
*numexts = 0;
|
|
}
|
|
|
|
return exts;
|
|
}
|
|
|
|
char *sfxbgm_make_path(const char *prefix, const char *name, bool isbgm) {
|
|
char *p = NULL;
|
|
|
|
uint numexts;
|
|
const char *const *exts = get_exts(isbgm, &numexts);
|
|
|
|
for(uint i = 0; i < numexts; ++i) {
|
|
if((p = try_path(prefix, name, exts[i]))) {
|
|
return p;
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
bool sfxbgm_check_path(const char *prefix, const char *path, bool isbgm) {
|
|
if(prefix && !strstartswith(path, prefix)) {
|
|
return false;
|
|
}
|
|
|
|
uint numexts;
|
|
const char *const *exts = get_exts(isbgm, &numexts);
|
|
|
|
for(uint i = 0; i < numexts; ++i) {
|
|
if(strendswith(path, exts[i])) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|