OBS
+ -

OBS模块插件功能启用

2024-03-22 3 0

OBS插件激活:

static void activate_source(obs_source_t *source)
{
    if (source->context.data && source->info.activate)
        source->info.activate(source->context.data);
    obs_source_dosignal(source, "source_activate", "activate");
}

对应于WASAPI相应的activate函数:

info.activate = ActivateWASAPISource; //在主视图中激活源时调用

其中对应的函数为:

static void ActivateWASAPISource(void *obj)
{
    static_cast<WASAPISource *>(obj)->Activate();
}

传输的参数就是类的指针,也就对应了前面的:

 source->context.data =    info->create(source->context.settings, source);

其不过是创建一个线程,不过前提是该线程不存在。不然多创建了就坏了。
线程创建完后,设置reconnectExitSignal事件。

 void WASAPISource::Activate()
{
    if (!reconnectThread.Valid())
    {
        ResetEvent(reconnectExitSignal);
        reconnectThread = CreateThread(nullptr, 0,
                           WASAPISource::ReconnectThread,
                           this, 0, nullptr);
    }
}

该线程增加了一些处理退出的信号外,最终调用的是

WASAPISource *source
source->Start();

Start函数根据是否支持RTWorkQ技术,实现的代码是不一样的。

0 篇笔记 写笔记

作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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