<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          3.1 數(shù)據(jù)采集程序
          采集程序使用內(nèi)存映射的方式進(jìn)行讀取。通過(guò)內(nèi)存映射直接把設(shè)備文件映射到內(nèi)存中,繞過(guò)內(nèi)核緩沖區(qū),進(jìn)程訪問(wèn)設(shè)備文件時(shí)和訪問(wèn)普通內(nèi)存一樣,極大的提高了數(shù)據(jù)的讀取速度。
          視頻采集部分的流程圖如圖3所示。
          下面列出視頻采集部分的關(guān)鍵代碼。
          首先打開(kāi)設(shè)備,其中CODEC_NODE為預(yù)定義宏,表示攝像頭結(jié)點(diǎn)文件路徑。
          dev_fp=open(CODEC_NODE,O_RDWR);
          在設(shè)置參數(shù)部分,首先要得到設(shè)備能力參數(shù),檢查是否具有所需的功能,然后再進(jìn)行參數(shù)的設(shè)置。使用下面的代碼來(lái)。
          ioctl(dev_fp,VIDIOC_QUERYCAP,&cap);
          上一行代碼得到設(shè)備的功能信息,存儲(chǔ)到參數(shù)caF中。在檢查設(shè)備具有所需功能后,下一行代碼進(jìn)行參數(shù)設(shè)置。
          ioctl(dev_fp,VIE)IOC_S_FMT,codec_fmt);
          其中,codec_fmt為一個(gè)格式信息的結(jié)構(gòu)體類型參數(shù)。
          在Linux平臺(tái),采集圖像數(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)鍵代碼段。在實(shí)現(xiàn)部分還有很多的條件判斷和分支選擇等控制流程部分,這里不進(jìn)行詳細(xì)描述。
          3.2 視頻編碼程序
          視頻編碼部分直接采用的MFC視頻編解碼模塊進(jìn)行視頻的編碼。由于采用硬件編碼,編碼效率非常高。同時(shí)在程序的方面,不用涉及具體的硬件細(xì)節(jié),只需要通過(guò)提供的驅(qū)動(dòng)模塊進(jìn)行。編碼部分的流程圖如圖4所示。

          本文引用地址:http://www.ex-cimer.com/article/165899.htm

          c.jpg



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();