OBS0.2.4基础框架
+ -

scene注册obs_register_source

2024-10-08 6 0
本想着从简单的开始,但是发现核心的渲染如D3D11和新的版本基本差不多,还不如直接用新的代码调试,所以本章节放弃。

obs_init函数中最后一项功能是注册一个输入源:scene类型。这样用户就可以在OBS界面中创建场景了。

static bool obs_init(void)
{
    obs = bzalloc(sizeof(struct obs_core));

    if (!obs_init_data())
        return false;


    if (!obs_init_handlers())
        return false;

    obs_register_source(&scene_info);
    return true;
}

scene_info内容如下:

const struct obs_source_info scene_info =
{
    .id           = "scene",
    .type         = OBS_SOURCE_TYPE_INPUT,
    .output_flags = OBS_SOURCE_VIDEO | OBS_SOURCE_CUSTOM_DRAW,
    .getname      = scene_getname,
    .create       = scene_create,
    .destroy      = scene_destroy,
    .video_render = scene_video_render,
    .getwidth     = scene_getwidth,
    .getheight    = scene_getheight,
    .load         = scene_load,
    .save         = scene_save,
    .enum_sources = scene_enum_sources
};

源的类型有三种:

enum obs_source_type {
    OBS_SOURCE_TYPE_INPUT,
    OBS_SOURCE_TYPE_FILTER,
    OBS_SOURCE_TYPE_TRANSITION,
};

其相关的标识信息output_flags如下:

#define OBS_SOURCE_VIDEO        (1<<0)
#define OBS_SOURCE_AUDIO        (1<<1)
#define OBS_SOURCE_ASYNC        (1<<2) //异步
#define OBS_SOURCE_CUSTOM_DRAW  (1<<3)//如果指定了此标志,video_render回调将传递NULL效果,基于效果的过滤器将不使用直接渲染。
#define OBS_SOURCE_COLOR_MATRIX (1<<4)//源实现YUV->RGB

0 篇笔记 写笔记

OBS源类型注册函数obs_register_source
OBS的插件模块通过obs_register_source函数注册“源”。该函数通过obs_source_info结构体提供源相关的属性信息和回调函数。#define obs_register_source(info) obs_register_source_s(info, sizeo......
scene注册obs_register_source
obs_init函数中最后一项功能是注册一个输入源:scene类型。这样用户就可以在OBS界面中创建场景了。static bool obs_init(void){ obs = bzalloc(sizeof(struct obs_core)); if (!obs_init_dat......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!