QNX 下嵌入式视频监控系统研究
为了提供进一步预测用的参考图像,编码器必须具有重建图像的功能。使残差图像经反量化、反变化后得到Dn',与预测值P相加得到uFn'。为了提高参考帧的图像质量以提高压缩图像的性能,设置了一个环路滤波器,滤波后的输出Fn'即为重建图像,可用作参考图像。
(2)解码部分
H.264解码器如图5所示。由编码器的NAL输出一个压缩后的H.264比特流,经熵解码得到量化后的一组变换系数X,再经反量化、反变换,得到残差的Dn'。利用从该比特流中解码出的头信息,解码器产生一个预测块PRED,它和编码器中的原始PRED相同。当解码器产生的PRED与残差Dn'相加后,就产生uFn',再经滤波后,最后得到Fn',即最后解码输出的图像。
3 系统软件设计
3.1 视频处理流程
视频处理流程如图6所示。监控系统软件设计的核心部分是视频信号的采集、编码等处理,主要由Capture thread、Video thread、Stream writerthread来实现。Capture thread主要完成采集设备的初始化,使它工作在合适的状态,从采集设备获取原始视频数据放到缓冲区,为Video thread编码作准备。Video thread对Capture thread放到缓冲区中的原始图像数据进行编码,得到H.264码流。Stream writer thread的主要工作是把H.264码流写入循环缓冲区。放在循环流缓冲区的码流可以根据用户的需求进行进一步的处理,本系统主要将H.264码流存储到SD卡中。
3.2 视频采集设计
这里主要介绍系统对于USB接口摄像头的处理方法,其驱动程序中需要提供I/O操作接口函数open()、read()、write()、close(),对中断的处理,内存映射功能以对I/O通道的控制借口函数ioctl()等,并把他们定义在struct file_operations中。视频采集系统软件流程如图7所示。
软件的主要函数如下:
Camera_open():用来开启视频设备,使用前需要首先声明一个camera_device类型的设备文件。
camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到camera_capability结构里。
camera_get_picture():通过调用ioctl()函数取得图像相关信息,并存放到camera_picture结构里。
camera_capture():用来抓取图像,采用mmap方式,直接将设备文件/dev/videoO映射到内存,加速文件I/O操作,共享内存通信。
camera_timer:设定一个定时器,用于控制视频设备采集图像的时隙。
picture_save():保存采集的图片。
picture_num():对保存的图片计数,设定一个最大值,每当该计数器达到最大值时,调用删除图片函数picture_del(),一次性将已发送的几张图片删除。
camera_close():用来关闭视频设备。
结语
对于视频处理来说,采用QNX+OMAP处理器的解决方案是个不错的选择。由于视频编解码算法实现需要大流量的计算,使用OMAP3530开发平台,利用OMAP3530的DSP芯片来完成视频编解码,可以较好地提高编解码的速率;同时,QNX实时操作系统的编程接口符合POSIX标准,可移植性较强,可支持多种视频格式编解码。
QNX 视频监控系统 视频编解码 OMAP3530 相关文章:
- 构建面向未来的灵活信息娱乐系统(12-20)
- QNX 发布安全关键型系统的认证支持包(09-12)
- QNX软件系统有限公司发布完整的无线架构软件解决方(09-12)
- QNX为安全可靠的嵌入式系统提供移动级用户体验(09-12)
- Flying-Cam无人航拍系统采用QNX技术(09-12)
- QNX CAR 2应用平台可快速构建车载娱乐信息系统(10-24)