VLC 模块构造宏的展开(access_output_http为例)

宏的定义:

vlc_module_begin ()
    set_description( N_("HTTP stream output") )
    set_capability( "sout access", 0 )
    set_shortname( "HTTP" )
    add_shortcut( "http", "https", "mmsh" )
    set_category( CAT_SOUT )
    set_subcategory( SUBCAT_SOUT_ACO )
    add_string( SOUT_CFG_PREFIX "user", "",
                USER_TEXT, USER_LONGTEXT, true )
    add_password( SOUT_CFG_PREFIX "pwd", "",
                  PASS_TEXT, PASS_LONGTEXT, true )
    add_string( SOUT_CFG_PREFIX "mime", "",
                MIME_TEXT, MIME_LONGTEXT, true )
    add_bool( SOUT_CFG_PREFIX "metacube", false,
              METACUBE_TEXT, METACUBE_LONGTEXT, true )
    set_callbacks( Open, Close )
vlc_module_end ()

宏展开后:展开方式,VS中属性-〉C/C++/预处理器:预处理到文件 选择 是 编译后在相应的工程文件目录下有*.i文件,从中可取出以下宏的展开部分。例子里是VLC2.2.6

plugins/access_output/access_output_http.c
__declspec(dllexport) int __cdecl vlc_entry__2_2_0b (vs_cb vs, void *op) {
    module_t *module;     module_cf_t *cf = ((void *)0);
    if (vs (op, ((void *)0), VLC_MODULE_CREATE, &module)) goto error;
    if (vs (op, module, VLC_MODULE_NAME, ("access_output_http"))) goto error;
    if (vs (op, module, VLC_MODULE_DESCRIPTION, (("HTTP stream output")))) goto error;
    if (vs (op, module, VLC_MODULE_CAPABILITY, ("sout access")) || vs (op, module, VLC_MODULE_SCORE, (int)(0))) goto error;
    if (vs (op, module, VLC_MODULE_SHORTNAME, ("HTTP"))) goto error;
    const char *shortcuts[] = { "http", "https", "mmsh" };
    if (vs (op, module, VLC_MODULE_SHORTCUT, sizeof(shortcuts)/sizeof(shortcuts[0]), shortcuts)) goto error;
    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x06) CONFIG_CATEGORY, &cf);
    vs (op, cf, VLC_CONFIG_VALUE, (int64_t)(5) CAT_SOUT);
    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x07) CONFIG_SUBCATEGORY, &cf);
    vs (op, cf, VLC_CONFIG_VALUE, (int64_t)(504) SUBCAT_SOUT_ACO);

    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x80) CONFIG_ITEM_STRING, &cf);
    vs (op, cf, VLC_CONFIG_DESC, (("Username")), (("User name memo.")));if (1) vs (op, cf, VLC_CONFIG_ADVANCED);
    vs (op, cf, VLC_CONFIG_NAME, ("sout-http-user"));vs (op, cf, VLC_CONFIG_VALUE, (""));

    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x81) CONFIG_ITEM_PASSWORD, &cf);
    vs (op, cf, VLC_CONFIG_DESC, (("Password")), (("Password memo.")));if (1) vs (op, cf, VLC_CONFIG_ADVANCED);
    vs (op, cf, VLC_CONFIG_NAME, ("sout-http-pwd"));vs (op, cf, VLC_CONFIG_VALUE, (""));

    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x80) CONFIG_ITEM_STRING, &cf);
    vs (op, cf, VLC_CONFIG_DESC, (("Mime")), (("MIME memo.")));if (1) vs (op, cf, VLC_CONFIG_ADVANCED);
    vs (op, cf, VLC_CONFIG_NAME, ("sout-http-mime"));vs (op, cf, VLC_CONFIG_VALUE, (""));

    vs (op, ((void *)0), VLC_CONFIG_CREATE, (0x60) CONFIG_ITEM_BOOL, &cf);
    vs (op, cf, VLC_CONFIG_DESC, (("Metacube")), (("Metacube memo.")));if (1) vs (op, cf, VLC_CONFIG_ADVANCED);
    vs (op, cf, VLC_CONFIG_NAME, ("sout-http-metacube"));if (0) vs (op, cf, VLC_CONFIG_VALUE, (int64_t)1);

    if (vs (op, module, VLC_MODULE_CB_OPEN, Open) || vs (op, module, VLC_MODULE_CB_CLOSE, Close)) goto error;
    return 0;
error: return -1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值