<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM+Linux的視頻采集編碼系統設計

基于A(yíng)RM+Linux的視頻采集編碼系統設計

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

  3. 設置窗口的高度和寬度

本文引用地址:http://dyxdggzs.com/article/248474.htm

  編碼器輸入的是 CIF 格式的YUV420 碼流,故將采集窗口的高度設置為 288,寬度為352。

  4. 獲取視頻幀

  使用mmap()(內存映射) 方式截取視頻,mmap()系統調用使得進(jìn)程之間通過(guò)映射同一個(gè)普通文件實(shí)現共享內存。[5]

  主要部分介紹如下:

  a. 初始化及設置

  使用ioctl(camera_fd,VIDIOCGMBUF,&camera_mbuf) 函數初始video_mbuf,獲得攝像頭存儲緩沖區的幀信息,之后修改 video_mmap和幀狀態(tài)的設置。

  b. 實(shí)現攝像頭設備文件到內存區的映射

  調用buf=void *mmap(void *addr,size_t len,int prot,int flags,int fd,off_t offset) 函數,將設備文件的內容映射到內存區。

  c. 數據采集

  調用ioctl(fd,VIDIOCMCAPTURE,&camera_buf)截取圖像,失敗將返回-1 ,若函數成功調用,便開(kāi)始一幀圖像數據的截取,并將當前幀號按緩沖區總幀數的模加上1,為下一幀截取作準備。然后調用 ioctl(fd,VIDIOCSYNC,&frame) 函數,成功返回則表示圖像截取已完成,可以開(kāi)始作下一幀圖像的采集。圖像捕捉函數 v41_frame_grab()是mmap內存映射方式捕捉視頻數據的具體實(shí)現,每次采集一幀YUV420P格式的原始圖像數據。在使用雙緩沖區輪換采集時(shí),對于每個(gè)緩沖區進(jìn)行連續幀采集,通過(guò)外加循環(huán)控制對攝像頭幀緩沖區采集的次數來(lái)實(shí)現,以達到提高效率的目的[6]。

  在此基礎上也可實(shí)現連續幀的采集,Video4最多支持一次采集32幀,首先需要設置采集的幀數 camera_buf.frame,并將data+camera_mbuf.offsets[frame] 定義每一幀數據在內存中的起始位置,利用 ioctl(fd,VIDIOCGMBUF,&camera_mbuf) 便可獲得camera_mbuf 的信息。除此之外還要設置數據緩沖區的大小,然后利用 ioctl VIDIOCMCAPTURE 操作進(jìn)行數據的連續采集,直到緩沖區中的剩余空間無(wú)法保存一個(gè)完整的數據幀。當緩沖區中沒(méi)有可利用的空間時(shí),系統調用 ioctl VIDIOCSYNC 來(lái)檢查視頻采集過(guò)程是否完成。若完成時(shí),應用程序為數據幀分配地址,使緩沖區的數據幀可被安全用于其他進(jìn)程。

  4. 關(guān)閉視頻設備

  在采集完成后,需要關(guān)閉設備,并收回系統資源。如果是采用內存映射方法進(jìn)行視頻采集,在系統任務(wù)完成后必須用munmap 函數關(guān)閉映射內存,close函數可關(guān)閉視頻設備文件。

  5 視頻采集系統的多線(xiàn)程設計

  在采集和處理模塊的設計中創(chuàng )建圖像采集和圖像處理兩個(gè)線(xiàn)程,并開(kāi)辟兩個(gè)緩沖區輪換采集圖像幀,以便解決視頻采集模塊與編碼模塊的同步。在采集程序寫(xiě)滿(mǎn)緩沖區1 后,改變線(xiàn)程等待條件,釋放被阻塞的圖像處理線(xiàn)程對該緩沖區數據進(jìn)行編碼輸出。同時(shí)采集線(xiàn)程轉到緩沖區2,若此時(shí)圖像處理線(xiàn)程已完成對緩沖區 2 的處理,則將采集獲得的幀圖像覆蓋,保存至緩沖區 2,否則阻塞。兩個(gè)緩沖輪流使用,不丟棄任何幀,并且圖像采集與處理同步進(jìn)行,提高了效率。

  6 結論

  本文給出了遠程監控系統中視頻采集技術(shù)的分析和研究并得到實(shí)驗結果。S3C2440 處理器USB Host控制器兼容USB1.1標準,支持低速 1.5Mbps 和全速12Mbps USB 設備。實(shí)驗表明,視頻采集程序對 CIFQVGA 格式的圖像采集效率最高,采集速率分別達到 9fps ,12fps以上,接近全速模式下的極限速率。對 QCIF格式的圖像采集效率較低,距離 USB1.1全速傳輸的理論值相差較遠,這既與攝像頭的硬件特性有關(guān)(包括圖像傳感器的特性以及 DSP 橋接芯片對圖像格式的處理) ,也與驅動(dòng)程序的實(shí)現有關(guān)。不過(guò)單從采集幀速率上看,9fps 的CIF 采集速度和24fps的QCIF采集速度己經(jīng)可以滿(mǎn)足一般嵌入式實(shí)時(shí)應用的要求。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


攝像頭相關(guān)文章:攝像頭原理

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: ARM Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>