基于嵌入式Linux與S3C2440雙USB接口的視頻存儲
2.2 視頻采集存儲程序設(shè)計本文引用地址:http://m.butianyuan.cn/article/151471.htm
Vide04Linux設(shè)備驅(qū)動程序只提供了在系統(tǒng)層面*問硬件設(shè)備的一系列讀、寫等函數(shù)的接口,要實(shí)現(xiàn)存儲,還需再編寫一個對視頻流采集的應(yīng)用程序,總體上創(chuàng)建兩個進(jìn)程:進(jìn)程一實(shí)時掃描串口接收到的信息,通過讀取命名管道內(nèi)容將編碼信息發(fā)送給進(jìn)程二;進(jìn)程二根據(jù)接收到的編碼做出判斷,區(qū)別各種不規(guī)范駕駛行為,設(shè)定定時器不同時長以控制存儲時間,并將視頻分類存儲到不同目錄中。
Video4Linux設(shè)備驅(qū)動程序支持兩種捕獲圖像的方式:內(nèi)存影射mmap方式和直接讀取read方式。mmap方式采用共享內(nèi)存方式,數(shù)據(jù)采集速度快,但這種采集方式需攝像頭硬件支持。結(jié)合本文中使用的攝像頭,在圖像采集過程中,采用read方式直接讀取設(shè)備文件,將獲得的一幀數(shù)據(jù)保存到緩沖區(qū)中,通過convertframe()函數(shù)將pFramebuffer中的數(shù)據(jù)轉(zhuǎn)換成完整的JPEG格式的數(shù)據(jù)存儲到ptframe中,然后調(diào)用fWrite()函數(shù)將緩沖區(qū)中的JPEG格式的數(shù)據(jù)寫到指定文件中,從而得到一副JPEG格式原始數(shù)據(jù)塊。部分程序如下:
對于存儲的控制,本文采用“命名管道”方式,這是一種簡單的進(jìn)程間通信機(jī)制,在同一計算機(jī)的不同進(jìn)程之間,支持可靠的,單向或雙向的數(shù)據(jù)通信。
命名管道由視頻存儲進(jìn)程利用函數(shù)int mkfifo(constchar*pathname,mode_t mode)創(chuàng)建,負(fù)責(zé)讀取由串口掃描接收進(jìn)程接收到的控制信息。部分程序如下:
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論