• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于N32926與RT-Thread的嵌入式視頻系統(tǒng)的設(shè)計與實現(xiàn)

    2016-05-26 07:31:48丁冰冰廈門大學(xué)物聯(lián)網(wǎng)技術(shù)研究室福建廈門361005
    山東工業(yè)技術(shù) 2016年2期
    關(guān)鍵詞:開發(fā)板解碼器線程

    丁冰冰(廈門大學(xué)物聯(lián)網(wǎng)技術(shù)研究室,福建 廈門 361005)

    ?

    基于N32926與RT-Thread的嵌入式視頻系統(tǒng)的設(shè)計與實現(xiàn)

    丁冰冰
    (廈門大學(xué)物聯(lián)網(wǎng)技術(shù)研究室,福建 廈門 361005)

    摘 要:以新唐公司的N32926開發(fā)板作為研究平臺,實現(xiàn)了視頻的實時采集播放。開發(fā)板以RT-Thread作為其操作系統(tǒng)。系統(tǒng)的視頻通過OV7725攝像頭進行采集,然后對圖像數(shù)據(jù)進行H.264編碼,最后將解碼的YUV數(shù)據(jù)轉(zhuǎn)成RGB格式顯示。通過實驗證明,整個視頻采集和編解碼顯示的方法是可行的。

    關(guān)鍵詞:N32926;RT-Thread;H.264 視頻

    0 引言

    隨著圖像的數(shù)字化處理在軍事、科研、工業(yè)、農(nóng)業(yè)和醫(yī)療等領(lǐng)域得到廣泛應(yīng)用,各種新的圖像和視頻壓縮標準不斷提出,許多用于圖像采集和處理的芯片也相繼推出,處理功能越來越強大,使用也越來越方便。數(shù)字視頻日益成為一種廣泛應(yīng)用的媒體,視頻技術(shù)的產(chǎn)品開發(fā)也頗具前景,而嵌入式視頻采集系統(tǒng)的實現(xiàn)方法正是其中的關(guān)鍵技術(shù)。

    1 系統(tǒng)平臺

    系統(tǒng)的硬件采用新唐公司的N32926。N32926功耗非常低,而且成本低,并有很強的支持高清能力,高清編碼如1280× 720P實時編碼的時候,最高功耗不到400mW。這使得N32926成為視頻/音頻流媒體設(shè)備的最佳選擇。

    2 視頻系統(tǒng)設(shè)計

    首先進行視頻采集。(1)開辟內(nèi)存。本視頻系統(tǒng)采集的圖像大小為640*480,格式是YUV420,每一幀圖像所需要的內(nèi)存空間大小為640*480*3/2字節(jié),用來依次存放Y、U、V三個分量。因為是實時采集和播放,為了避免數(shù)據(jù)存儲和讀取之間存在沖突,在設(shè)計時開辟了兩個大小相同的內(nèi)存空間輪流存放采集的圖像數(shù)據(jù);(2)硬件初始化設(shè)置。N32926提供了無系統(tǒng)視頻采集VideoIn的API,可以經(jīng)過適當修改移植到RT-Thread上;(3)圖像數(shù)據(jù)存儲。初始化設(shè)置后,就要把攝像頭讀取到的數(shù)據(jù)存放到一開始開辟的內(nèi)存中,存放數(shù)據(jù)格式為MARCO_PLANAR,因為N32926只支持這個格式的h.264編碼。

    視頻采集是不斷在進行的,因此我們采用一個回調(diào)函數(shù)來不斷執(zhí)行圖像采集的過程,每一次中斷到來就調(diào)用VideoIn_InterruptHandler函數(shù)將采集到的圖像數(shù)據(jù)傳到指定的內(nèi)存地址,重復(fù)圖像數(shù)據(jù)存儲的過程,并在開辟的兩個內(nèi)存之間輪流存放,避免讀取與存儲的沖突。每一幀存儲結(jié)束后,返回當前的幀數(shù)g_u32FrameCount 。

    視頻的采集并沒有在采集線程中實現(xiàn),而是放在了main函數(shù)中,采集線程主要是用來判斷返回的g_u32FrameCount 是否發(fā)生變化,當g_u32FrameCount發(fā)生變化時,釋放一個信號量rt_sem_release(sem),來通知編碼線程對數(shù)據(jù)進行編碼處理。

    接收到采集線程釋放的信號后,編碼線程開始執(zhí)行。參數(shù)encoder_setting是關(guān)于H.264編碼參數(shù)的結(jié)構(gòu)體,包括了對編碼的各項參數(shù),比如比特率、數(shù)據(jù)大小、幀率、Q值等的設(shè)置,同時在函數(shù)里把數(shù)據(jù)賦給H.264編碼結(jié)構(gòu)體enc_param。編碼器初始化會根據(jù)enc_ param傳進來的圖像大小開辟內(nèi)存空間,編碼函數(shù)將會通知編碼器去存放采集數(shù)據(jù)的數(shù)組pict[0] 、pict [1]、pict [2]中分別讀取Y、U、V數(shù)據(jù),并根據(jù)傳進來的編碼參數(shù)對每一幀圖像進行編碼,然后傳輸?shù)街付ǖ膬?nèi)存空間out_virt_buffer1當中去。編碼完后會返回一個編碼數(shù)據(jù)長度length。編碼完一幀后釋放一個信號量rt_sem_release(sem1)通知解碼線程開始解碼。

    接受到編碼線程釋放的信號量rt_sem_take(sem1,RT_WAITING_ FOREVER)開始執(zhí)行解碼線程。解碼線程包括了解碼和顯示,所以必須先進行解碼器和屏幕顯示的初始化。decoder_setting傳入的是解碼器的參數(shù)設(shè)置,out_virt_buffer1存放的是編碼后的數(shù)據(jù),解碼器將根據(jù)這個地址去讀取數(shù)據(jù)進行解碼,然后把解碼后的數(shù)據(jù)存放到數(shù)組pict_ptr= &pict_dec[0],pict_ptr指向了之前開辟的用來存放解碼數(shù)據(jù)的內(nèi)存空間。Length是編碼完后返回的數(shù)據(jù)大小,解碼器必須要有這個參數(shù)才能確定每一幀要讀取的編碼數(shù)據(jù)長度是多少。解碼后的YUV不能直接顯示,而需要用調(diào)用

    根據(jù)轉(zhuǎn)化原理: 將其轉(zhuǎn)化成RGB進行顯示。

    完成對視頻系統(tǒng)的軟件設(shè)計后,即可在N32926開發(fā)板上安裝上OV7725攝像頭進行測試。視頻質(zhì)量流暢清晰,幀率為15幀每秒,延時大概在300ms左右。

    3 小結(jié)

    本文介紹了在N32926開發(fā)板上移植RT-Thread系統(tǒng),并在此平臺上實現(xiàn)嵌入式視頻的采集、編碼解碼和顯示的視頻系統(tǒng)的過程。RT-Thread還支持Lwip,加上網(wǎng)絡(luò)通信功能后可將此視頻系統(tǒng)運用于無線視頻監(jiān)控、移動醫(yī)療等行業(yè)中,具有廣闊的應(yīng)用前景。

    參考文獻:

    [1]NIE fei, PAN yu: The realization method of the embedded video acquisition system research.TV TECHONOLOGY. No.254, 46-49 (2003).

    [2]LIU Xilong, SHI Zhongsuo: Design Of The Embedded Video Server On H264.MICRO COMPUTER INFORMATION. VOL.21, No.1, 133-135(2005).

    [3]ZHU Zhiguo: The Research About RT-Thread Operating System Transplant To STM32.Computer CD software and Applications. No.22, 119-120(2012).

    作者簡介:丁冰冰(1989-),男,福建廈門人,碩士研究生,研究方向:嵌入式軟件開發(fā)。

    DOI:10.16640/j.cnki.37-1222/t.2016.02.214

    猜你喜歡
    開發(fā)板解碼器線程
    科學(xué)解碼器(一)
    科學(xué)解碼器(二)
    科學(xué)解碼器(三)
    線圣AudioQuest 發(fā)布第三代Dragonfly Cobalt藍蜻蜓解碼器
    Microchip最新推出兩款PIC32 Curiosity開發(fā)板
    淺談linux多線程協(xié)作
    淺析單片機開發(fā)板的設(shè)計與制作
    電子制作(2017年22期)2017-02-02 07:10:14
    Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
    Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
    Linux線程實現(xiàn)技術(shù)研究
    扎兰屯市| 屏东市| 屯昌县| 西乌珠穆沁旗| 合作市| 乌兰察布市| 柳河县| 蒙阴县| 乐清市| 清水河县| 木兰县| 长岛县| 上饶县| 鄂州市| 六盘水市| 红原县| 淮阳县| 中山市| 三穗县| 梁河县| 湛江市| 临夏县| 翁源县| 双柏县| 滨州市| 奉新县| 兴城市| 合水县| 合江县| 霸州市| 德阳市| 略阳县| 宿松县| 宕昌县| 桃园县| 沂南县| 临澧县| 铅山县| 石门县| 潮安县| 义乌市|