VLC数据访问模块

数据访问模块



译者: 捞刀客



access模块的能力处在VLC功能模块链表的最后和最前的位置。数据访问的输入和输出函数实现VLC大部分的基本IO功能。这些通常是一些协议如 (http,ftp,...)或一些设备访问如网络摄像头,图像采集卡。本文只讨论输入型数据访问模块。


编写数据访问模块



为了能编写数据访问模块,请首先阅读”功能模块编写指南”一文。数据访问模块应该指定为access类型:

set_capability( "access", 60 )  
set_category( CAT_INPUT )                                                                                                                                                                                  
set_subcategory( SUBCAT_INPUT_ACCESS )

根据媒体介质类型,模块要么是 'Block'类型,要么是'Read'类型:

  • 如果采用的协议返回未知大小的数据块,Block类型比较合适。

  • 如果能够控制给采用的协议的数据大小,Read类型比较合适。


需要实现的函数



除了实现Open() Close()函数以外,还需要实现几个主要的数据访问类模块的函数。在 include/vlc_access.h定义了下面几个函数:

  • Seek, pf_seek 指针指向的函数。

  • Control, pf_control 指针指向的函数

  • Read Block,依据模块类型而定

在实现这些函数以后,应该将这些函数地址赋值给对应的函数指针。



Seek

原型:

int         (*pf_seek) ( access_t *, uint64_t );

数据位置定位函数可以根据请求随时调用。该函数的参数为模块指针和请求的位置。

注意:如果制定的协议或设备不支持数据位置定位功能,该可以为空。如果函数正常工作,需要将 p_access->info.b_eof设置为false.



返回值:

如果函数运行成功,返回VLC_SUCCESS,否则,返回VLC_EGENERIC.



Control

原型:

int         (*pf_control)( access_t *, int i_query, va_list args);

控制函数非常简单,运行核将使用下面的参数对模块进行查询:

  • 指向模块结构的指针。

  • i_query参数可以有几种类型,稍后详细说明。

  • args,根据i_query的类型,通过列表输入一些子参数。


返回值:

如果运行成功,返回VLC_SUCCESS.否则,返回VLC_EGENERIC.



控制查询类型

下面的标记必须设置为true.

ACCESS_CAN_SEEK,        
ACCESS_CAN_FASTSEEK,    
ACCESS_CAN_PAUSE,       
ACCESS_CAN_CONTROL_PACE,


下面的参数用于PTS延迟,必须为true.

ACCESS_GET_PTS_DELAY,


下面的参数可以为false,这些主要请求输入模块各种额外的信息如metadat,标题,章节或设备信号长度。

ACCESS_GET_TITLE_INFO,  
ACCESS_GET_META,        
ACCESS_GET_CONTENT_TYPE,
ACCESS_GET_SIGNAL,      


根据模块返回的值,运行核还可以查询下面的参数或属性,如暂停,更改标题或章节。

ACCESS_SET_PAUSE_STATE,
ACCESS_SET_TITLE,
ACCESS_SET_SEEKPOINT,

可以在vlc_access.h找到不同查询类型对应的一些参数。


Read

原型:

ssize_t     (*pf_read) ( access_t *, uint8_t *, size_t );

返回值:

如果还没有数据,返回 -1;如果数据已经读取完毕,返回0;否则,返回实际读取到的数据大小。


Block

原型:

block_t    *(*pf_block)( access_t * );

返回值:

返回原始大小的数据块,如果没有数据或到数据末尾,将返回NULL。没有数据和已经到达数据末尾的区别是,在到达数据末尾的时候,p_access->info.b_eof应该为true.














专注领域: 机器视觉,智能监控,网络视频。

应用平台:WINDOWSLINUXEMBEDDED

合作网站: http:// www.hdy.net.cn 怡心大院

http:// www.m20.com.cn 麦子频道

QQ494761986 EMAIL:buffi@qq.com



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值