装备对于linux的看频编程

gdwkb ,Aug 1 14:11 , 文章教程 , 评论(0) , 引用(0) , 阅读(116) , 本站原创 | |
装备  格局  制式  形式  板子  队列  次序  函数  数据  缓存  功用  摄像头  细致  如许  旌旗  号令  文件  边框  开端  宽度  标记  属性  通道  高度  东西  欧洲  亚洲  缩放  协定  今朝  方才  声卡  注释  媒介  底层  声响  局部  本土  才华  源码  个数  原始  上述  很大  流程  权利  音频  内存  需求  消息
Dui∴Yu∴linuxDe∴Kan∴Pin∴Bian∴Cheng媒介今朝正正在忙于ARM平台的Linux使用次序递次的开拓底层的东西不用考虑了!开拓板子供给了NAND Bootloader!和Linux 2.6的源码!并且都编译好了自己编译的bootloader能够用!可是Linux编译后!文件很大年夜!暂且就用人家编译的系统!先分心写使用次序递次吧
注释要做的权利是!把壹块板子上的摄像头收集的像和声卡收集的声响经过TCP/IP协定传输到另壹块板子上第壹步!先把看频获得并且正在本土LCD上浮现看了板子供给的文档!看频传输需求用V4L2的API
壹.甚么是video4linux
Video4linux2
1. 打开装备文件 int fd=open。
2. 取得装备的capability!看看装备具有甚么功用!比如可否具有看频输进!或者许音频输进输进等VIDIOC_QUERYCAP!struct v4l2_capability
3. 挑选看频输进!壹个看频装备能够有多个看频输进VIDIOC_S_INPUT!struct v4l2_input
4. 设置看频的制式和帧格局!制式包含PAL!NTSC!帧的格局个包含宽度和高度等
VIDIOC_S_STD!VIDIOC_S_FMT!struct v4l2_std_id!struct v4l2_format
5. 向驱动恳求帧缓冲!一般不超越5个struct v4l2_requestbuffers
6. 将恳求到的帧缓冲映照到用户空间!如许就可以够间接操纵收集到的帧了!而不用往复制mmap
7. 将恳求到的帧缓冲局部进队列!以便寄存收集到的数据.VIDIOC_QBUF!struct v4l2_buffer
8. 开端看频的收集VIDIOC_STREAMON
9. 出队列以取得已收集数据的帧缓冲!取得原始收集数据VIDIOC_DQBUF
10. 将缓冲从头进队列尾!如许能够轮收受接管集VIDIOC_QBUF
11. 中断看频的收集VIDIOC_STREAMOFF
12. 封闭看频装备close。
叁!经常使用的结构体
struct v4l2_requestbuffers reqbufs。//向驱动恳求帧缓冲的恳求!外面包含恳求的个数
struct v4l2_capability cap。//这个装备的功用!比如可否是看频输进装备
struct v4l2_input input。 //看频输进
struct v4l2_standard std。//看频的制式!比如PAL!NTSC
struct v4l2_format fmt。//帧的格局!比如宽度!高度等
struct v4l2_buffer buf。//代表驱动中的壹帧
v4l2_std_id stdid。//看频制式!例如V4L2_STD_PAL_B
struct v4l2_queryctrl query。//查询的控制
struct v4l2_control control。//细致控制的值
下面细致说明开拓流程
打开看频装备
正在V4L2中!看频装备被看作壹个文件使用open函数打开这个装备
// 用非堵塞形式打开摄像头装备
int cameraFd。
cameraFd = open。
// 假设用堵塞形式打开摄像头装备!上述代码变成
//cameraFd = open。
对于堵塞形式和非堵塞形式
使用次序递次能够使用堵塞形式或者非堵塞形式打开看频装备!假设使用非堵塞形式调用看频装备!即使还没有捕捉到消息!驱动照陈会把缓存里的东西前往给使用次序递次
设定属性及收集方法
打开看频装备后!能够设置该看频装备的属性!例如裁剪!缩放等这壹步是可选的正在Linux编程中!一般使用ioctl函数来对装备的I/O通道停止治理
extern int ioctl  __THROW。
__fd装备的ID!例如方才才用open函数打开看频通道后前往的cameraFd
__request细致的号令标记符
正在停止V4L2开拓中!一般会用到以下的号令标记符
VIDIOC_REQBUFS分派内存  
VIDIOC_QUERYBUF把VIDIOC_REQBUFS平分派的数据缓存转换成物理地址  
VIDIOC_QUERYCAP查询驱动功用  
VIDIOC_ENUM_FMT获得以后驱动支撑的看频格局  
VIDIOC_S_FMT设置以后驱动的频捕捉格局  
VIDIOC_G_FMT读取以后驱动的频捕捉格局  
VIDIOC_TRY_FMT考据以后驱动的浮现格局  
VIDIOC_CROPCAP查询驱动的修剪才华  
VIDIOC_S_CROP设置看频旌旗灯号的边框  
VIDIOC_G_CROP读取看频旌旗灯号的边框  
VIDIOC_QBUF把数据从缓存中读取出现  
VIDIOC_DQBUF把数据放回缓存队列  
VIDIOC_STREAMON开端看频浮现函数  
VIDIOC_STREAMOFF完毕看频浮现函数  
VIDIOC_QUERYSTD检查以后看频装备支撑的规范!例如PAL或者NTSC  
这些IO调用!有些是必须的!有些是可挑选的
检查以后看频装备支撑的规范
正在亚洲!一般使用PAL制式的摄像头!而欧洲一般使用NTSC!使用VIDIOC_QUERYSTD来检测媒介今朝正正在忙于ARM平台的Linux使用次序递次的开拓底层的东西不用考虑了!开拓板子供给了NAND Bootloader
飞扬黑客网  http://www.gdwkb.cn
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]