新聞中心

EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于S3C6410的視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

基于S3C6410的視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

作者: 時間:2012-02-08 來源:網(wǎng)絡(luò) 收藏

3.1 數(shù)據(jù)采集程序
采集程序使用內(nèi)存映射的方式進行讀取。通過內(nèi)存映射直接把設(shè)備文件映射到內(nèi)存中,繞過內(nèi)核緩沖區(qū),進程訪問設(shè)備文件時和訪問普通內(nèi)存一樣,極大的提高了數(shù)據(jù)的讀取速度。
視頻采集部分的流程圖如圖3所示。
下面列出視頻采集部分的關(guān)鍵代碼。
首先打開設(shè)備,其中CODEC_NODE為預(yù)定義宏,表示攝像頭結(jié)點文件路徑。
dev_fp=open(CODEC_NODE,O_RDWR);
在設(shè)置參數(shù)部分,首先要得到設(shè)備能力參數(shù),檢查是否具有所需的功能,然后再進行參數(shù)的設(shè)置。使用下面的代碼來。
ioctl(dev_fp,VIDIOC_QUERYCAP,&cap);
上一行代碼得到設(shè)備的功能信息,存儲到參數(shù)caF中。在檢查設(shè)備具有所需功能后,下一行代碼進行參數(shù)設(shè)置。
ioctl(dev_fp,VIE)IOC_S_FMT,codec_fmt);
其中,codec_fmt為一個格式信息的結(jié)構(gòu)體類型參數(shù)。
在Linux平臺,采集圖像數(shù)據(jù)部分的方式與文件讀取類似,采用下面的代碼。
read(dev_fp,g_yuv,YUV_FR_BUF_SIZE);
而將數(shù)據(jù)傳送給MFC模塊這部分,可以采取直接共享緩沖區(qū)的方式,這樣減少了一次數(shù)據(jù)在內(nèi)存中的傳輸,增加了效率。
最后是關(guān)閉設(shè)備文件。先停止圖像的采集,然后關(guān)閉文件。
ioctl(dev_fp,VIDIOC_STREAMOFF,&start);
close(dev_fp);
上述代碼片段是視頻采集部分的關(guān)鍵代碼段。在實現(xiàn)部分還有很多的條件判斷和分支選擇等控制流程部分,這里不進行詳細描述。
3.2 視頻編碼程序
視頻編碼部分直接采用的MFC視頻編解碼模塊進行視頻的編碼。由于采用硬件編碼,編碼效率非常高。同時在程序的方面,不用涉及具體的硬件細節(jié),只需要通過提供的驅(qū)動模塊進行。編碼部分的流程圖如圖4所示。

本文引用地址:http://m.butianyuan.cn/article/165899.htm

c.jpg



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉