QNX 下嵌入式視頻監控系統研究
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卡中。本文引用地址:http://www.j9360.com/article/148216.htm
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標準,可移植性較強,可支持多種視頻格式編解碼。
評論