加载插件(三)

接着(二),重新把vlc_entry__core 写出来:

int vlc_entry__core (vlc_set_cb vlc_set, void *opaque) 
{ 
    module_t *module; 
    module_config_t *config = NULL; 
    if (vlc_set (opaque, NULL, VLC_MODULE_CREATE, &module)  
        goto error; 
    if (vlc_set (opaque, module, VLC_MODULE_NAME, (MODULE_STRING))) 
        goto error;

vlc_set 实际上是开始传进来的vlc_plugin_setter ,看下VLC_MODULE_CREATE传进来后的代码:

static int vlc_plugin_setter (void *plugin, void *tgt, int propid, ...) {
    switch (propid)
    {
        case VLC_MODULE_CREATE:
        {
            module = *pprimary;
            module_t *submodule = vlc_module_create (module);

            *(va_arg (ap, module_t **)) = submodule;
        .......
}

注意(va_arg (ap, module_t *)) = submodule;这句,ap正好对应第四个参数,它是&module, 因此module被创建出来了。后面的vlc_set (opaque, module, VLC_MODULE_NAME, (MODULE_STRING))也是类似。

再看回(二)中的:

vlc_module_begin ()
    set_category( CAT_AUDIO )
    set_subcategory( SUBCAT_AUDIO_GENERAL )
    add_category_hint( N_("Audio"), AOUT_CAT_LONGTEXT , false )
    中间的设置非常多!!!
vlc_module_end ()

其实set_category( CAT_AUDIO )等等这些都是宏,他们实际上都是通过vlc_plugin_setter 给module设置参数,就不一一详述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值