OBS模块WASAPI的其中OBS_DECLARE_MODULE和OBS_MODULE_USE_DEFAULT_LOCALE
2024-03-20
20
0
OBS插件模块WASAPI用于实现Windows音频的。其源文件目录位于:
obs-studio-master\plugins\win-wasapi
源文件有:
CMakeLists.txt
data //资源文件目录
enum-wasapi.cpp
enum-wasapi.hpp
plugin-main.cpp
wasapi-notify.cpp
wasapi-notify.hpp
win-wasapi.cpp
编译出来的文件为 win-wasapi.dll
在系统中查找该文件,竟然发现钉钉也大量用了OBS的插件DLL。看来我是真的out
在plugin-main.cpp中首先引入2个宏。批量实现一些DLL回调的可选导出函数。
OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE("win-wasapi", "en-US")
其中OBS_DECLARE_MODULE()定义为
/** Required: Declares a libobs module. */
#define OBS_DECLARE_MODULE() \
static obs_module_t *obs_module_pointer; \
MODULE_EXPORT void obs_module_set_pointer(obs_module_t *module); \
void obs_module_set_pointer(obs_module_t *module) \
{ \
obs_module_pointer = module; \
} \
obs_module_t *obs_current_module(void) \
{ \
return obs_module_pointer; \
} \
MODULE_EXPORT uint32_t obs_module_ver(void); \
uint32_t obs_module_ver(void) \
{ \
return LIBOBS_API_VER; \
}
可以看到,实现的是HMODULE及版本相关的函数。
OBS_MODULE_USE_DEFAULT_LOCALE()实现与本地语言相关的处理。
/** Optional: Use this macro in a module to use default locale handling. */
#define OBS_MODULE_USE_DEFAULT_LOCALE(module_name, default_locale) \
lookup_t *obs_module_lookup = NULL; \
const char *obs_module_text(const char *val) \
{ \
const char *out = val; \
text_lookup_getstr(obs_module_lookup, val, &out); \
return out; \
} \
bool obs_module_get_string(const char *val, const char **out) \
{ \
return text_lookup_getstr(obs_module_lookup, val, out); \
} \
void obs_module_set_locale(const char *locale) \
{ \
if (obs_module_lookup) \
text_lookup_destroy(obs_module_lookup); \
obs_module_lookup = obs_module_load_locale( \
obs_current_module(), default_locale, locale); \
} \
void obs_module_free_locale(void) \
{ \
text_lookup_destroy(obs_module_lookup); \
obs_module_lookup = NULL; \
}