win-test代码流程分析

1.流程图示

绘图1.png

2.代码分析

void base_set_log_handler(log_handler_t *handler, void param)
函数说明:设置log的回调函数,obs提供默认函数def_log_handler,def_log_handler内部实现将log重新定向到stdout或者stderr。
参数:log_handler_t 定义typedef void (
log_handler_t)(int lvl, const char *msg, va_list args, void *) 详见base.h 70
参数:param 回调函数的输入参数,一般设为null;

bool obs_startup(const char*locale, const char *module_config_path, profiler_name_store_t *store)
函数说明:初始化obs的相关资源,如:各类互斥量、句柄、热键等
参数:locale 国际化,切换各种语言。例如:“en-US”、“zh-CN”等。
参数:module_config_path 模块配置文件目录。
参数:store 未关注,待定
返回值: bool

int obs_reset_video(struct obs_video_info *ovi)
函数说明:初始化video参数
参数: ovi video参数

struct obs_video_info {
#ifndef SWIG
    /**
     * Graphics module to use (usually "libobs-opengl" or "libobs-d3d11")
     */
    const char *graphics_module;
#endif

    uint32_t fps_num; /**< Output FPS numerator */
    uint32_t fps_den; /**< Output FPS denominator */

    uint32_t base_width;  /**< Base compositing width */
    uint32_t base_height; /**< Base compositing height */

    uint32_t output_width;           /**< Output width */
    uint32_t output_height;          /**< Output height */
    enum video_format output_format; /**< Output format */

    /** Video adapter index to use (NOTE: avoid for optimus laptops) */
    uint32_t adapter;

    /** Use shaders to convert to different color formats */
    bool gpu_conversion;

    enum video_colorspace colorspace; /**< YUV type (if YUV) */
    enum video_range_type range;      /**< YUV range (if YUV) */

    enum obs_scale_type scale_type; /**< How to scale if scaling */
};

返回值:0(OBS_VIDEO_SUCCESS)表示成功,非0表示失败,具体参见宏定义obs-defs.h(45-50行)

void obs_load_all_modules()
函数说明:自动加载指定目录的所有模块,若不通过obs_add_module_path增加新目录,默认加载目录是../../obs-plugins/32bit(64bit)和../../data/obs-plugins/%module%。

obs_source_t *obs_source_create(const char *id, const char *name, obs_data_t *settings, obs_data_t *hotkey_data)
函数说明:创建source
参数:id source标识符
name source的名称。若给定的name不唯一,则自动修改唯一
settings source配置,可以设置null
hotkey_data source hotkey , 可以设置null
返回值:source数据指针,null表示失败

void obs_source_filter_add(obs_source_t *source, obs_source_t *filter)
函数说明: 给source增加filter

obs_scene_t *obs_scene_create(const char *name)
函数说明:创建scene
参数:name scene source的名称,若名称不唯一,则自动修改唯一
返回值:scene指针

obs_sceneitem_t *obs_scene_add(obs_scene_t *scene, obs_source_t *source)
函数说明:给scene增加source
返回值:scene的一个新的item指针

void obs_set_output_source(uint32_t channel, obs_source_t *source)
函数说明:为channel设置输出source

obs_display_t *obs_display_create(const struct gs_init_data *graphics_data, uint32_t background_color)
函数说明:增加新窗体连接渲染管线。这个过程会创建一个新的swap chain,每一帧都会更新。
参数:graphics_data

struct gs_init_data {
    struct gs_window window;
    uint32_t cx, cy;
    uint32_t num_backbuffers;
    enum gs_color_format format;
    enum gs_zstencil_format zsformat;
    uint32_t adapter;
};

参数:background_color 背景色
返回值:obs_display_t 显示上下文,失败返回null

struct obs_display {
    bool update_color_space;
    bool enabled;
    uint32_t cx, cy;
    uint32_t next_cx, next_cy;
    uint32_t background_color;
    gs_swapchain_t *swap;
    pthread_mutex_t draw_callbacks_mutex;
    pthread_mutex_t draw_info_mutex;
    DARRAY(struct draw_callback) draw_callbacks;

    struct obs_display *next;
    struct obs_display **prev_next;
};

void obs_display_add_draw_callback(obs_display_t display, void (draw)(void *param, uint32_t cx, uint32_t cy), void *param)
函数说明:为显示上下文增加渲染回调,窗体渲染后调用回调。
参数:display 显示上下文
参数:draw 每帧更新回调
参数:param 关联回调函数参数

void obs_display_destroy(obs_display_t *display)
函数说明:释放显示上下文

void obs_shutdown()
函数说明:释放obs相关资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容