vlc的结构分析(一)

给新人交接vlc的代码,顺便记下来。

1.vlc的代码结构

compat:跨平台的函数

src/control:外部接口

src:调用逻辑

modules:插件

前文提到过,vlc用c语言实现了多态。这里具体说一说。

1.1插件的导出函数

以modules/access/fs.c为例

宏vlc_module_begin,宏vlc_module_end导出函数vlc_entry__filesystem( module_t *p_module ) 

宏set_callbacks( Open, Close )设置 module->pf_activate, module->pf_deactivate。

宏set_capability,设置插件的能力。可以用于访问的"access",解复用的“demux”,解码的“decoder”


1.2src/modules/modules.c

遍历plugins下的所有动态库,将这些module_t 放入module_bank。


1.3使用插件

src/input/access.c

 p_access->p_module = module_need( p_access, "access", psz_access, true );

遍历module_bank,找到有"access"能力,而且可以处理文件的插件。

调用插件的 module->pf_activate,调用下面的代码,将access_t的成员函数指针指向modules/access/fs.c文件中的函数,这就是“c语言实现多态”的全过程。

{

    p_access->pf_write = Write;
    p_access->pf_read  = Read;
    p_access->pf_seek  = Seek;
    p_access->pf_control = Control;

}


2.线程结构

以播放视频文件(PS+H264)为例,一路视频共有4个线程

A input线程

B decoder线程

C video_output线程

D 窗口消息循环线程

AB,BC之间使用数据队列联系,典型的消费/生产模型。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值