新闻中心

EEPW首页 > 消费电子 > 设计应用 > 基于S3C6410的视频监控系统的设计与实现

基于S3C6410的视频监控系统的设计与实现

作者:时间:2012-02-08来源:网络收藏

3.1 数据采集程序
采集程序使用内存映射的方式进行读取。通过内存映射直接把设备文件映射到内存中,绕过内核缓冲区,进程访问设备文件时和访问普通内存一样,极大的提高了数据的读取速度。
视频采集部分的流程图如图3所示。
下面列出视频采集部分的关键代码。
首先打开设备,其中CODEC_NODE为预定义宏,表示摄像头结点文件路径。
dev_fp=open(CODEC_NODE,O_RDWR);
在设置参数部分,首先要得到设备能力参数,检查是否具有所需的功能,然后再进行参数的设置。使用下面的代码来
ioctl(dev_fp,VIDIOC_QUERYCAP,&cap);
上一行代码得到设备的功能信息,存储到参数caF中。在检查设备具有所需功能后,下一行代码进行参数设置。
ioctl(dev_fp,VIE)IOC_S_FMT,codec_fmt);
其中,codec_fmt为一个格式信息的结构体类型参数。
在Linux平台,采集图像数据部分的方式与文件读取类似,采用下面的代码
read(dev_fp,g_yuv,YUV_FR_BUF_SIZE);
而将数据传送给MFC模块这部分,可以采取直接共享缓冲区的方式,这样减少了一次数据在内存中的传输,增加了效率。
最后是关闭设备文件。先停止图像的采集,然后关闭文件。
ioctl(dev_fp,VIDIOC_STREAMOFF,&start);
close(dev_fp);
上述代码片段是视频采集部分的关键代码段。在实现部分还有很多的条件判断和分支选择等控制流程部分,这里不进行详细描述。
3.2 视频编码程序
视频编码部分直接采用的MFC视频编解码模块进行视频的编码。由于采用硬件编码,编码效率非常高。同时在程序的方面,不用涉及具体的硬件细节,只需要通过提供的驱动模块进行。编码部分的流程图如图4所示。

本文引用地址:http://www.eepw.com.cn/article/165899.htm

c.jpg



评论


相关推荐

技术专区

关闭