obs.h 引用头文件介绍
c99defs.h:这个头文件提供了一些 C99 标准的定义和声明,包括一些常用的宏定义和类型定义,用于提高代码的可移植性和兼容性。
bmem.h:这个头文件提供了对内存分配和管理的功能,包括一些内存分配和释放的函数和宏定义,用于方便地进行内存操作。
profiler.h:这个头文件提供了性能分析和调试的功能,包括一些性能分析和调试的函数和宏定义,用于分析和优化程序的性能。
text-lookup.h:这个头文件提供了对文本查找和处理的功能,包括一些文本查找和处理的函数和宏定义,用于方便地处理文本数据。
graphics.h:这个头文件提供了对图形处理的功能,包括一些图形处理的函数和宏定义,用于处理图形数据和图形显示。
vec2.h 和 vec3.h:这两个头文件提供了对二维向量和三维向量的定义和操作,包括向量的创建、计算、转换等功能。
audio-io.h 和 video-io.h:这两个头文件提供了对音频和视频输入输出的功能,包括音频和视频的采集、处理、编码、解码等功能。
signal.h 和 proc.h:这两个头文件提供了对回调函数和信号处理的功能,包括对信号的发送、接收和处理等功能。
obs-config.h 和 obs-defs.h:这两个头文件提供了对 OBS Studio 配置和定义的功能,包括对配置文件的读取、写入和管理等功能。
obs-data.h 和 obs-properties.h:这两个头文件提供了对 OBS Studio 数据和属性的功能,包括对数据的读取、写入和管理,以及对属性的定义和操作等功能。
obs-interaction.h:这个头文件提供了对 OBS Studio 交互的功能,包括对交互的定义和操作,用于实现用户与程序的交互。
obs-missing-files.h:这个头文件可能包含了一些缺失的文件或者需要特别处理的文件。它通常用于处理一些特殊情况或者缺失的文件。
obs-source.h:这个头文件包含了对源(Source)的定义和声明,包括对源的创建、销毁、配置、显示等操作的声明。通过这个头文件,可以实现对视频和音频源的管理和控制。
obs-encoder.h:这个头文件包含了对编码器(Encoder)的定义和声明,包括对编码器的创建、销毁、配置、编码等操作的声明。通过这个头文件,可以实现对视频和音频的编码和处理。
obs-output.h:这个头文件包含了对输出(Output)的定义和声明,包括对输出的创建、销毁、配置、发送等操作的声明。通过这个头文件,可以实现对输出的管理和控制。
obs-service.h:这个头文件包含了对服务(Service)的定义和声明,包括对服务的创建、销毁、配置、连接等操作的声明。通过这个头文件,可以实现对服务的管理和控制。
obs-audio-controls.h:这个头文件包含了对音频控制的定义和声明,包括对音频的采集、处理、控制等操作的声明。通过这个头文件,可以实现对音频的管理和控制。
obs-hotkey.h:这个头文件包含了对热键(Hotkey)的定义和声明,包括对热键的创建、销毁、绑定等操作的声明。通过这个头文件,可以实现对热键的管理和控制。
结构体
/** 用于改变项目的顺序(例如,源中的滤镜或场景中的项目)的枚举类型 */ enum obs_order_movement { OBS_ORDER_MOVE_UP, /**< 将项目向上移动 */ OBS_ORDER_MOVE_DOWN, /**< 将项目向下移动 */ OBS_ORDER_MOVE_TOP, /**< 将项目移动到顶部 */ OBS_ORDER_MOVE_BOTTOM, /**< 将项目移动到底部 */ }; /** * 与 obs_source_process_filter 一起使用,用于指定滤镜应该直接使用指定效果渲染源, * 还是应该将其渲染到纹理上 */ enum obs_allow_direct_render { OBS_NO_DIRECT_RENDERING, /**< 不允许直接渲染 */ OBS_ALLOW_DIRECT_RENDERING /**< 允许直接渲染 */ }; /** 用于指定缩放类型的枚举类型 */ enum obs_scale_type { OBS_SCALE_DISABLE, /**< 禁用缩放 */ OBS_SCALE_POINT, /**< 最近邻插值 */ OBS_SCALE_BICUBIC, /**< 双三次插值 */ OBS_SCALE_BILINEAR, /**< 双线性插值 */ OBS_SCALE_LANCZOS, /**< Lanczos 插值 */ OBS_SCALE_AREA /**< 区域插值 */ }; /** 用于指定混合方法的枚举类型 */ enum obs_blending_method { OBS_BLEND_METHOD_DEFAULT, /**< 默认混合方法 */ OBS_BLEND_METHOD_SRGB_OFF /**< 关闭 sRGB */ }; /** 用于指定混合类型的枚举类型 */ enum obs_blending_type { OBS_BLEND_NORMAL, /**< 正常混合 */ OBS_BLEND_ADDITIVE, /**< 加法混合 */ OBS_BLEND_SUBTRACT, /**< 减法混合 */ OBS_BLEND_SCREEN, /**< 屏幕混合 */ OBS_BLEND_MULTIPLY, /**< 乘法混合 */ OBS_BLEND_LIGHTEN, /**< 变亮混合 */ OBS_BLEND_DARKEN /**< 变暗混合 */ }; /** * 用于指示场景项使用的边界类型的枚举类型。主要确定图像在这些边界内如何缩放,或者是否使用边界。 */ enum obs_bounds_type { OBS_BOUNDS_NONE, /**< 没有边界 */ OBS_BOUNDS_STRETCH, /**< 拉伸(忽略基本比例) */ OBS_BOUNDS_SCALE_INNER, /**< 缩放到内部矩形 */ OBS_BOUNDS_SCALE_OUTER, /**< 缩放到外部矩形 */ OBS_BOUNDS_SCALE_TO_WIDTH, /**< 缩放到宽度 */ OBS_BOUNDS_SCALE_TO_HEIGHT, /**< 缩放到高度 */ OBS_BOUNDS_MAX_ONLY, /**< 无缩放,仅最大尺寸 */ }; /** * 视频转换信息结构体 */ struct obs_transform_info { struct vec2 pos; /**< 位置 */ float rot; /**< 旋转角度 */ struct vec2 scale; /**< 缩放比例 */ uint32_t alignment; /**< 对齐方式 */ enum obs_bounds_type bounds_type; /**< 边界类型 */ uint32_t bounds_alignment; /**< 边界对齐方式 */ struct vec2 bounds; /**< 边界尺寸 */ }; /** * 视频初始化结构体 */ struct obs_video_info { #ifndef SWIG /** * 要使用的图形模块(通常为 "libobs-opengl" 或 "libobs-d3d11") */ const char *graphics_module; #endif uint32_t fps_num; /**< 输出帧率的分子 */ uint32_t fps_den; /**< 输出帧率的分母 */ uint32_t base_width; /**< 基本合成宽度 */ uint32_t base_height; /**< 基本合成高度 */ uint32_t output_width; /**< 输出宽度 */ uint32_t output_height; /**< 输出高度 */ enum video_format output_format; /**< 输出格式 */ /** 要使用的视频适配器索引(注意:避免在优化型笔记本电脑上使用) */ uint32_t adapter; /** 使用着色器将颜色转换为不同的颜色格式 */ bool gpu_conversion; enum video_colorspace colorspace; /**< YUV 类型(如果是 YUV) */ enum video_range_type range; /**< YUV 范围(如果是 YUV) */ enum obs_scale_type scale_type; /**< 缩放类型 */ }; /** * 音频初始化结构体 */ struct obs_audio_info { uint32_t samples_per_sec; /**< 每秒采样数 */ enum speaker_layout speakers; /**< 扬声器布局 */ }; struct obs_audio_info2 { uint32_t samples_per_sec; /**< 每秒采样数 */ enum speaker_layout speakers; /**< 扬声器布局 */ uint32_t max_buffering_ms; /**< 最大缓冲时间(毫秒) */ bool fixed_buffering; /**< 是否固定缓冲 */ }; /** * 通过 filter_audio 回调发送给源滤镜,允许对音频数据进行过滤 */ struct obs_audio_data { uint8_t *data[MAX_AV_PLANES]; /**< 音频数据 */ uint32_t frames; /**< 帧数 */ uint64_t timestamp; /**< 时间戳 */ }; /** * 源音频输出结构体。用于 obs_source_output_audio 输出源音频。 * 音频会根据需要进行自动重新采样和混音。 */ struct obs_source_audio { const uint8_t *data[MAX_AV_PLANES]; /**< 音频数据 */ uint32_t frames; /**< 帧数 */ enum speaker_layout speakers; /**< 扬声器布局 */ enum audio_format format; /**< 音频格式 */ uint32_t samples_per_sec; /**< 每秒采样数 */ uint64_t timestamp; /**< 时间戳 */ }; struct obs_source_cea_708 { const uint8_t *data; /**< 数据 */ uint32_t packets; /**< 数据包数量 */ uint64_t timestamp; /**< 时间戳 */ }; #define OBS_SOURCE_FRAME_LINEAR_ALPHA (1 << 0) /**< 线性 Alpha 帧 */ /** * 用于指定源异步视频输出的结构体。与 obs_source_output_video 一起用于输出异步视频。 * 视频根据时间戳进行必要的缓冲以按照时间戳播放。当与音频输出一起使用时,音频将与视频同步播放。 * * 如果指定了 YUV 格式,它将自动在图形处理器上通过着色器进行上采样和转换为 RGB。 * * 注意:对于非 YUV 格式,此结构体将始终被视为全范围! * 如果要对非 YUV 视频格式进行部分范围支持,请使用 obs_source_frame2 和 obs_source_output_video2。 */ struct obs_source_frame { uint8_t *data[MAX_AV_PLANES]; /**< 视频数据 */ uint32_t linesize[MAX_AV_PLANES]; /**< 每行的大小 */ uint32_t width; /**< 宽度 */ uint32_t height; /**< 高度 */ uint64_t timestamp; /**< 时间戳 */ enum video_format format; /**< 视频格式 */ float color_matrix[16]; /**< 颜色矩阵 */ bool full_range; /**< 是否全范围 */ uint16_t max_luminance; /**< 最大亮度 */ float color_range_min[3]; /**< 颜色范围的最小值 */ float color_range_max[3]; /**< 颜色范围的最大值 */ bool flip; /**< 是否翻转 */ uint8_t flags; /**< 标志位 */ uint8_t trc; /**< 视频 TRC(电荷重组时间)的枚举类型 */ /* libobs 内部使用 */ volatile long refs; /**< 引用计数 */ bool prev_frame; /**< 上一帧 */ }; /** * 源帧结构体,用于 obs_source_output_video2 输出源视频。 * 视频根据时间戳进行必要的缓冲以按照时间戳播放。 * * 注意:对于非 YUV 格式,此结构体将始终被视为全范围! * 如果要对非 YUV 视频格式进行部分范围支持,请使用 obs_source_frame2 和 obs_source_output_video2。 */ struct obs_source_frame2 { uint8_t *data[MAX_AV_PLANES]; /**< 视频数据 */ uint32_t linesize[MAX_AV_PLANES]; /**< 每行的大小 */ uint32_t width; /**< 宽度 */ uint32_t height; /**< 高度 */ uint64_t timestamp; /**< 时间戳 */ enum video_format format; /**< 视频格式 */ enum video_range_type range; /**< 视频范围类型 */ float color_matrix[16]; /**< 颜色矩阵 */ float color_range_min[3]; /**< 颜色范围的最小值 */ float color_range_max[3]; /**< 颜色范围的最大值 */ bool flip; /**< 是否翻转 */ uint8_t flags; /**< 标志位 */ uint8_t trc; /**< 视频 TRC(电荷重组时间)的枚举类型 */ }; /** 获取用于启动 OBS 的 argc/argv。 */ struct obs_cmdline_args { int argc; /**< 参数数量 */ char **argv; /**< 参数列表 */ };
导出函数说明
/* OBS context */ /** * 查找核心 libobs 数据文件 * @param path 基本文件名 * @return 包含文件完整路径的字符串。 * 使用后请使用 bfree。 */ EXPORT char *obs_find_data_file(const char *file); /** * 添加一个路径以在 libobs 数据文件中搜索。 * @param path 要查找的目录的完整路径。 * 字符串将被复制。 */ EXPORT void obs_add_data_path(const char *path); /** * 从 libobs 核心数据路径中删除路径。 * @param path 与当前设置的路径进行比较的路径。 * 它不需要是相同的指针,但是 * 路径字符串必须完全匹配。 * @return 是否成功删除路径。 * 如果为 false,则找不到该路径。 */ EXPORT bool obs_remove_data_path(const char *path); /** * 初始化 OBS * * @param locale 用于模块的语言环境 * @param module_config_path 模块配置存储目录的路径 * (如果没有则为 NULL) * @param store OBS 要使用的分析器名称存储,或为 NULL */ EXPORT bool obs_startup(const char *locale, const char *module_config_path, profiler_name_store_t *store); /** 释放与 OBS 关联的所有数据并终止 OBS 上下文 */ EXPORT void obs_shutdown(void); /** @return 主 OBS 上下文是否已初始化 */ EXPORT bool obs_initialized(void); /** @return 当前核心版本 */ EXPORT uint32_t obs_get_version(void); /** @return 当前核心版本字符串 */ EXPORT const char *obs_get_version_string(void); /** * 为调用 obs_get_cmdline_args 设置东西。只在启动时调用一次 * 并安全地从 main() 复制 argv/argc。后续调用不执行任何操作。 * * @param argc main() 中的命令行参数计数 * @param argv 从 main() 复制的命令行参数数组,以 NULL 结尾。 */ EXPORT void obs_set_cmdline_args(int argc, const char *const *argv); /** * 获取用于启动 OBS 的 argc/argv * * @return 用于 main() 的命令行参数。不要修改这个,否则会影响其他调用者。 */ EXPORT struct obs_cmdline_args obs_get_cmdline_args(void); /** * 设置模块的新语言环境。这将为每个模块调用 obs_module_set_locale。 * * @param locale 用于模块的语言环境 */ EXPORT void obs_set_locale(const char *locale); /** @return 当前语言环境 */ EXPORT const char *obs_get_locale(void); /** 初始化 Windows 特定的崩溃处理程序 */ #ifdef _WIN32 EXPORT void obs_init_win32_crash_handler(void); #endif /** * 返回 OBS 使用的分析器名称存储(见 util/profiler.h), * 它可以是传递给 obs_startup 的名称存储、内部名称存储,或者在 obs_initialized() 返回 false 时为 NULL。 */ EXPORT profiler_name_store_t *obs_get_profiler_name_store(void); /** * 设置基本视频输出基本分辨率/fps/格式。 * * @note 如果当前有输出活动,则无法更改此数据。 * @note 无法更改图形模块,而不完全销毁 OBS 上下文。 * * @param ovi 包含图形子系统规范的 obs_video_info 结构的指针, * @return 如果成功返回 OBS_VIDEO_SUCCESS * 如果适配器缺乏功能,则返回 OBS_VIDEO_NOT_SUPPORTED * 如果参数无效,则返回 OBS_VIDEO_INVALID_PARAM * 如果当前视频活动,则返回 OBS_VIDEO_CURRENTLY_ACTIVE * 如果找不到图形模块,则返回 OBS_VIDEO_MODULE_NOT_FOUND * 对于一般失败返回 OBS_VIDEO_FAIL */ EXPORT int obs_reset_video(struct obs_video_info *ovi); /** * 设置基本音频输出格式/声道/样本等 * * @note 如果当前有输出活动,则无法重置基本音频。 */ EXPORT bool obs_reset_audio(const struct obs_audio_info *oai); EXPORT bool obs_reset_audio2(const struct obs_audio_info2 *oai); /** 获取当前视频设置,如果没有视频则返回 false */ EXPORT bool obs_get_video_info(struct obs_video_info *ovi); /** 获取 SDR 白平衡,如果没有视频则返回 300.f */ EXPORT float obs_get_video_sdr_white_level(void); /** 获取 HDR 标称峰值水平,如果没有视频则返回 1000.f */ EXPORT float obs_get_video_hdr_nominal_peak_level(void); /** 设置视频级别 */ EXPORT void obs_set_video_levels(float sdr_white_level, float hdr_nominal_peak_level); /** 获取当前音频设置,如果没有音频则返回 false */ EXPORT bool obs_get_audio_info(struct obs_audio_info *oai); /** * 直接从特定路径打开一个插件模块。 * * 如果模块已经存在,则函数将返回成功,并且 * 模块参数将获得指向现有模块的指针。 * * 这不会初始化模块,它只加载模块映像。要 * 初始化模块,调用 obs_init_module。 * * @param module 指向已创建模块的指针。 * @param path 指定模块库文件的路径。如果 * 没有指定扩展名,则将使用适用于操作系统的扩展名。 * @param data_path 指定模块数据文件存储的目录的路径。 * @returns 如果成功则返回 MODULE_SUCCESS * 如果发生一般错误则返回 MODULE_ERROR * 如果找不到模块则返回 MODULE_FILE_NOT_FOUND * 如果缺少必需的导出则返回 MODULE_MISSING_EXPORTS * 如果版本不兼容则返回 MODULE_INCOMPATIBLE_VER */ EXPORT int obs_open_module(obs_module_t **module, const char *path, const char *data_path); /** * 初始化模块,调用其 obs_module_load 导出。如果 * 模块已经加载,则此函数不执行任何操作并返回成功。 */ EXPORT bool obs_init_module(obs_module_t *module); /** 根据名称返回模块,如果找不到则返回 NULL */ EXPORT obs_module_t *obs_get_module(const char *name); /** 获取模块的库 */ EXPORT void *obs_get_module_lib(obs_module_t *module); /** 从特定模块获取本地化文本 */ EXPORT bool obs_module_get_locale_string(const obs_module_t *mod, const char *lookup_string, const char **translated_string); EXPORT const char *obs_module_get_locale_text(const obs_module_t *mod, const char *text); /** 记录已加载的模块 */ EXPORT void obs_log_loaded_modules(void); /** 返回模块文件名 */ EXPORT const char *obs_get_module_file_name(obs_module_t *module); /** 返回模块的完整名称 */ EXPORT const char *obs_get_module_name(obs_module_t *module); /** 返回模块的作者 */ EXPORT const char *obs_get_module_author(obs_module_t *module); /** 返回模块的描述 */ EXPORT const char *obs_get_module_description(obs_module_t *module); /** 返回模块的二进制路径 */ EXPORT const char *obs_get_module_binary_path(obs_module_t *module); /** 返回模块的数据路径 */ EXPORT const char *obs_get_module_data_path(obs_module_t *module); #ifndef SWIG /** * 添加用于 obs_find_modules 的模块搜索路径。如果搜索 * 路径字符串包含 %module%,则在使用时将该文本替换为模块 * 名称。 * * @param bin 指定模块的二进制目录搜索路径。 * @param data 指定模块数据目录搜索路径。 */ EXPORT void obs_add_module_path(const char *bin, const char *data); /** * 将模块添加到允许在安全模式下加载的模块列表中。 * 如果列表为空,则允许加载所有模块。 * * @param name 指定模块的名称(不带扩展名的文件名)。 */ EXPORT void obs_add_safe_module(const char *name); /** 自动从模块路径加载所有模块(便利函数) */ EXPORT void obs_load_all_modules(void); struct obs_module_failure_info { char **failed_modules; size_t count; }; /** * 释放模块加载失败信息的内存 * * @param mfi 指向模块失败信息结构体的指针 */ EXPORT void obs_module_failure_info_free(struct obs_module_failure_info *mfi); /** * 加载所有模块 * * @param mfi 指向模块失败信息结构体的指针 */ EXPORT void obs_load_all_modules2(struct obs_module_failure_info *mfi); /** * 通知所有模块已加载完毕。应在所有模块加载完成后调用。 */ EXPORT void obs_post_load_modules(void); /** * 模块信息结构体 */ struct obs_module_info { const char *bin_path; // 模块的二进制路径 const char *data_path; // 模块的数据路径 }; /** * 模块查找回调函数类型 */ typedef void (*obs_find_module_callback_t)(void *param, const struct obs_module_info *info); /** * 在搜索路径中查找模块 * * @param callback 回调函数,用于在找到模块时调用 * @param param 传递给回调函数的参数 */ EXPORT void obs_find_modules(obs_find_module_callback_t callback, void *param); /** * 更详细的模块信息结构体,包含模块的二进制路径、数据路径和名称 */ struct obs_module_info2 { const char *bin_path; // 模块的二进制路径 const char *data_path; // 模块的数据路径 const char *name; // 模块名称 }; /** * 更详细的模块查找回调函数类型 */ typedef void (*obs_find_module_callback2_t)( void *param, const struct obs_module_info2 *info); /** * 在搜索路径中查找模块 * * @param callback 回调函数,用于在找到模块时调用 * @param param 传递给回调函数的参数 */ EXPORT void obs_find_modules2(obs_find_module_callback2_t callback, void *param); /** * 模块枚举回调函数类型 */ typedef void (*obs_enum_module_callback_t)(void *param, obs_module_t *module); /** * 枚举所有加载的模块 * * @param callback 回调函数,用于枚举每个加载的模块 * @param param 传递给回调函数的参数 */ EXPORT void obs_enum_modules(obs_enum_module_callback_t callback, void *param); /** * 使用默认模块语言环境的辅助函数 * * @param module OBS 模块指针 * @param default_locale 默认语言环境 * @param locale 语言环境 * @return lookup_t 结构体指针 */ EXPORT lookup_t *obs_module_load_locale(obs_module_t *module, const char *default_locale, const char *locale); /** * 返回插件模块数据文件的位置 * * @note 模块应使用 obs_module_file 函数(在 obs-module.h 中定义)作为更加优雅的方式获取它们的文件,而无需指定模块参数。 * * @param module 要定位文件的模块 * @param file 要定位的文件 * @return 路径字符串,如果找不到则为 NULL。使用 bfree 释放字符串。 */ EXPORT char *obs_find_module_file(obs_module_t *module, const char *file); /** * 返回插件模块配置文件的路径(无论是否存在) * * @note 模块应使用 obs_module_config_path 函数(在 obs-module.h 中定义)作为更加优雅的方式获取它们的文件,而无需指定模块参数。 * * @param module 与路径关联的模块 * @param file 要获取路径的文件 * @return 路径字符串,如果找不到则为 NULL。使用 bfree 释放字符串。 */ EXPORT char *obs_module_get_config_path(obs_module_t *module, const char *file); /** 枚举所有源类型(输入、滤镜、转场等) */ EXPORT bool obs_enum_source_types(size_t idx, const char **id); /** * 枚举所有可用的输入源类型 * * 输入是通用的源输入(例如捕获源、设备源等)。 */ EXPORT bool obs_enum_input_types(size_t idx, const char **id); EXPORT bool obs_enum_input_types2(size_t idx, const char **id, const char **unversioned_id); EXPORT const char *obs_get_latest_input_type_id(const char *unversioned_id); /** * 枚举所有可用的滤镜源类型 * * 滤镜是用于修改其他源的视频/音频输出的源。 */ EXPORT bool obs_enum_filter_types(size_t idx, const char **id); /** * 枚举所有可用的转场源类型 * * 转场是用于在两个或多个其他源之间进行转换的源。 */ EXPORT bool obs_enum_transition_types(size_t idx, const char **id); /** 枚举所有可用的输出类型 */ EXPORT bool obs_enum_output_types(size_t idx, const char **id); /** 枚举所有可用的编码器类型 */ EXPORT bool obs_enum_encoder_types(size_t idx, const char **id); /** 枚举所有可用的服务类型 */ EXPORT bool obs_enum_service_types(size_t idx, const char **id); /** 进入 OBS 图形上下文的辅助函数 */ EXPORT void obs_enter_graphics(void); /** 离开 OBS 图形上下文的辅助函数 */ EXPORT void obs_leave_graphics(void); /** 获取此 OBS 上下文的主要音频输出处理程序 */ EXPORT audio_t *obs_get_audio(void); /** 获取此 OBS 上下文的主要视频输出处理程序 */ EXPORT video_t *obs_get_video(void); /** 如果视频处于活动状态则返回 true,否则返回 false */ EXPORT bool obs_video_active(void); /** 为通道设置主要输出源 */ EXPORT void obs_set_output_source(uint32_t channel, obs_source_t *source); /** * 获取通道的主要输出源,并增加该源的引用计数。使用 obs_source_release 释放。 */ EXPORT obs_source_t *obs_get_output_source(uint32_t channel); /** * 枚举所有输入源 * * 回调函数返回 true 以继续枚举,或者返回 false 以结束枚举。 * * 如果您希望在 obs_enum_sources 完成后保留引用,请使用 obs_source_get_ref 或 obs_source_get_weak_source。 */ EXPORT void obs_enum_sources(bool (*enum_proc)(void *, obs_source_t *), void *param); /** 枚举场景 */ EXPORT void obs_enum_scenes(bool (*enum_proc)(void *, obs_source_t *), void *param); /** 枚举所有源(不考虑类型) */ EXPORT void obs_enum_all_sources(bool (*enum_proc)(void *, obs_source_t *), void *param); /** 枚举输出 */ EXPORT void obs_enum_outputs(bool (*enum_proc)(void *, obs_output_t *), void *param); /** 枚举编码器 */ EXPORT void obs_enum_encoders(bool (*enum_proc)(void *, obs_encoder_t *), void *param); /** 枚举服务 */ EXPORT void obs_enum_services(bool (*enum_proc)(void *, obs_service_t *), void *param); /** * 根据名称获取源 * * 增加源的引用计数,使用 obs_source_release 释放。 */ EXPORT obs_source_t *obs_get_source_by_name(const char *name); /** * 根据 UUID 获取源 * * 增加源的引用计数,使用 obs_source_release 释放。 */ EXPORT obs_source_t *obs_get_source_by_uuid(const char *uuid); /** 根据名称获取转场源 */ EXPORT obs_source_t *obs_get_transition_by_name(const char *name); /** 根据 UUID 获取转场源 */ EXPORT obs_source_t *obs_get_transition_by_uuid(const char *uuid); /** 根据名称获取输出 */ EXPORT obs_output_t *obs_get_output_by_name(const char *name); /** 根据名称获取编码器 */ EXPORT obs_encoder_t *obs_get_encoder_by_name(const char *name); /** 根据名称获取服务 */ EXPORT obs_service_t *obs_get_service_by_name(const char *name); /** 常用基础效果 */ enum obs_base_effect { OBS_EFFECT_DEFAULT, /**< RGB/YUV */ OBS_EFFECT_DEFAULT_RECT, /**< RGB/YUV(使用 texture_rect) */ OBS_EFFECT_OPAQUE, /**< RGB/YUV(alpha 设置为 1.0) */ OBS_EFFECT_SOLID, /**< RGB/YUV(仅固体颜色) */ OBS_EFFECT_BICUBIC, /**< 双三次下采样 */ OBS_EFFECT_LANCZOS, /**< Lanczos 下采样 */ OBS_EFFECT_BILINEAR_LOWRES, /**< 双线性低分辨率下采样 */ OBS_EFFECT_PREMULTIPLIED_ALPHA, /**< 预乘 alpha */ OBS_EFFECT_REPEAT, /**< RGB/YUV(重复) */ OBS_EFFECT_AREA, /**< 区域重新缩放 */ }; /** 获取常用基础效果 */ EXPORT gs_effect_t *obs_get_base_effect(enum obs_base_effect effect); #ifndef SWIG /* 不推荐使用:获取 texture_rect 默认效果 */ OBS_DEPRECATED EXPORT gs_effect_t *obs_get_default_rect_effect(void); #endif /** 返回主要的 OBS 信号处理程序 */ EXPORT signal_handler_t *obs_get_signal_handler(void); /** 返回主要的 OBS 过程处理程序 */ EXPORT proc_handler_t *obs_get_proc_handler(void); #ifndef SWIG /** 渲染主视图 */ OBS_DEPRECATED EXPORT void obs_render_main_view(void); #endif
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章