日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 消費(fèi)電子 > 消費(fèi)電子
[導(dǎo)讀]隨著視頻壓縮技術(shù)的迅猛發(fā)展,新的視頻壓縮標(biāo)準(zhǔn)不斷推出。MPEG-4是由國際運(yùn)動圖像專家組(MPEG)在繼MPEG-1和MPEG-2之后,制訂的又一個ISO/IEC標(biāo)準(zhǔn),即ISO/IEC 14496。它能夠獲得更高的音/視頻壓縮率,具有基于內(nèi)容

隨著視頻壓縮技術(shù)的迅猛發(fā)展,新的視頻壓縮標(biāo)準(zhǔn)不斷推出。MPEG-4是由國際運(yùn)動圖像專家組(MPEG)在繼MPEG-1和MPEG-2之后,制訂的又一個ISO/IEC標(biāo)準(zhǔn),即ISO/IEC 14496。它能夠獲得更高的音/視頻壓縮率,具有基于內(nèi)容的交互能力。目前,國內(nèi)外許多公司都在開發(fā)有關(guān)MPEG-4視頻標(biāo)準(zhǔn)的產(chǎn)品,最具代表意義的即是數(shù)字視頻錄像機(jī)(DVR)。

1 數(shù)字視頻錄像機(jī)的硬件設(shè)計(jì)

在基于S3C2410與AT2042的數(shù)字視頻錄像機(jī)的設(shè)計(jì)和實(shí)現(xiàn)中,其終端設(shè)備以Samsung公司的32位處理器S3C2410為主控處理器,利用Pentamicro公司的AT2042芯片完成雙通道視頻編碼與解碼,其視頻錄像功能具有高分辨率和高質(zhì)量。本文將介紹此終端的系統(tǒng)整體設(shè)計(jì),并詳細(xì)分析系統(tǒng)軟硬件設(shè)計(jì),最后給出測試結(jié)果和結(jié)論。根據(jù)市場的需求,本系統(tǒng)預(yù)計(jì)實(shí)現(xiàn)下列幾項(xiàng)指標(biāo):

(1)實(shí)現(xiàn)對視頻數(shù)據(jù)的MPEG-4標(biāo)準(zhǔn)的編解碼;

(2)編解碼像素為720X576像素點(diǎn),實(shí)現(xiàn)25 f/s;

(3)實(shí)現(xiàn)JPEG編碼和解碼;

(4)實(shí)現(xiàn)USB/SD卡儲存。

1.1 基于S3C2410與AT2042的數(shù)字視頻錄像機(jī)整體設(shè)計(jì)

該系統(tǒng)主要依靠AT2042的編解碼功能,系統(tǒng)的硬件框圖如圖1所示,它主要由視頻編碼子系統(tǒng)、主控系統(tǒng)、數(shù)據(jù)處理子系統(tǒng)和視頻解碼子系統(tǒng)4大部分構(gòu)成。

韓國Pentamicro公司生產(chǎn)的AT2042芯片的功能模塊如圖2所示,AT2042是一個內(nèi)置微控制器ARM946E的2通道音視頻編解碼(A/VCODEC)芯片,主要完成對視頻和語音數(shù)據(jù)的編碼和解碼,支持多種音視頻編解碼標(biāo)準(zhǔn),可直接與IBM,Motorola,ARM,XscaIe和Axis等多種CPU接口,無需其他附加電路。

1.2 視頻編解碼電路設(shè)計(jì)

視頻編解碼電路主要包括視頻編解碼電路和視頻壓縮/解壓芯片AT2042。其中,AT2042主要負(fù)責(zé)對數(shù)字視頻數(shù)據(jù)進(jìn)行硬件壓縮和解壓縮,而視頻編解碼電路則是基帶模擬視頻信號和AT2042之間的一個接口電路,它包括一個視頻編碼芯片和一個視頻解碼芯片,主要負(fù)責(zé)視頻數(shù)據(jù)的模/數(shù)和數(shù)/模轉(zhuǎn)換,以及數(shù)字視頻信號格式的轉(zhuǎn)換。在壓縮編碼過程中,輸入的NTSC/PAL/SECAM視頻信號先經(jīng)過視頻解碼芯片進(jìn)行前端處理,產(chǎn)生符合AT2042視頻接口標(biāo)準(zhǔn)的8 b ITU-R BT.656數(shù)字視頻信號。在外部主CPU的控制下,該數(shù)字視頻數(shù)據(jù)由壓縮/解壓芯片AT2042進(jìn)行硬件壓縮編碼,產(chǎn)生的編碼數(shù)據(jù)流通過芯片內(nèi)部集成的Mux FIFO接口輸出。網(wǎng)絡(luò)視頻服務(wù)器的解壓縮編碼是壓縮編碼的逆過程,需要解壓的數(shù)據(jù)流通過AT2042內(nèi)部集成的Demux FIFO接口輸入。視頻采集接口框圖如圖3所示:

攝像頭采集輸出信號為NTSC,PAL或SECAM制式的電視信號,必須經(jīng)過視頻解碼處理才能轉(zhuǎn)化成適合AT2042進(jìn)行編碼的數(shù)字信號。TVP5150是TI公司生產(chǎn)的一款電視信號解碼專用芯片,它對輸入的模擬信號進(jìn)行A/D轉(zhuǎn)化,通過設(shè)置相應(yīng)的寄存器可以使輸出信號滿足RGB格式或YUV422格式。由于在本系統(tǒng)中AT2042視頻接口滿足ITU.RBT656標(biāo)準(zhǔn),故TVP5150輸出配置為8位YUV422格式。如圖4所示。

現(xiàn)在的數(shù)字電視視頻接口還沒有實(shí)現(xiàn)統(tǒng)一的工業(yè)標(biāo)準(zhǔn),故在視頻輸出端設(shè)計(jì)時(shí),仍使用現(xiàn)在比較流行的A/V接口或S-video接口。由于上述2種接口傳輸?shù)臑槟M電視信號,故在AT2042的視頻輸出端口需要增加一級處理,即將數(shù)字信號轉(zhuǎn)化為模擬電視信號。在后端設(shè)計(jì)中選用SAA7121,它是一款專用的電視信號編碼芯片,可以將輸入的數(shù)字信號經(jīng)過內(nèi)部的D/A轉(zhuǎn)化為適于傳輸?shù)哪M電視信號,通過配置相應(yīng)的寄存器可以輸出滿足S-video接口或復(fù)用接口的信號。

1.3 AT2042的主機(jī)接口

主控CPU(S3C2410)和AT2042是數(shù)字視頻錄像機(jī)的核心處理芯片,S3C2410控制整個數(shù)字視頻錄像機(jī)系統(tǒng)的運(yùn)行,AT2042除完成對視頻信號的硬件壓縮編碼外,還可對壓縮后的視頻數(shù)據(jù)進(jìn)行硬件解壓縮。AT2042壓縮編碼后的視頻數(shù)據(jù)通過芯片內(nèi)部集成的Mux FIFO接口輸出后,外部主CPU負(fù)責(zé)對其進(jìn)行USB存儲器處理,處理后的視頻數(shù)據(jù)可以存儲在物理介質(zhì)上,以便在需要時(shí)通過鍵盤操作進(jìn)行回放。

圖5為S3C2410與AT2042接口框圖。

AT2042的CPU_SEL[2:0]是主控CPU選擇引腳,經(jīng)配置這幾個引腳的高低電平,使AT2042可選擇主控CPU,CPU_SEL[2:0]為010選擇ARM結(jié)構(gòu)芯片;

nCS,nWAIT等為總線控制信號線;

HCLK是AT2042主機(jī)接口的工作時(shí)鐘,一般要求工作在50 MHz,當(dāng)S3C2410在復(fù)位后設(shè)置FCLK為200MHz,HCLK為100 MHz,PCLK為50 MHz。故將S3C2410的PCLK引腳與AT2042的HCLK引腳相連。

通過這種機(jī)制,S3C2410可以實(shí)現(xiàn)簡單的訪問AT2042。

AT2042與CPU的通信機(jī)制如圖6所示,CPU對AT2042的控制和訪問主要通過AT2042的2個寄存器(status register和command register)和4個FIFO(Tx FIFO,Rx FIFO,Multiplex FIFO和De-Multiplex FIFO)完成。

2 數(shù)字視頻錄像機(jī)的軟件實(shí)現(xiàn)

數(shù)字視頻錄像機(jī)系統(tǒng)的軟件設(shè)計(jì)包括:Bootload代碼的編寫、Linux操作系統(tǒng)的內(nèi)核生成和Linux下驅(qū)動程序和應(yīng)用程序的開發(fā)、文件系統(tǒng)的生成和配置以及用戶應(yīng)用程序4大塊。

數(shù)字視頻錄像機(jī)軟件開發(fā)的整體架構(gòu)如圖7所示。

2.1 系統(tǒng)啟動Bootloader程序設(shè)計(jì)編寫

Bootloader是系統(tǒng)啟動時(shí)執(zhí)行的第一個程序,其主要完成對硬件系統(tǒng)的初始化。具體包括:S3C2410的初始化、TVP5150功能配置、SAA7121功能配置、加載AT2042固件、以太網(wǎng)及串口初始化。由于在開機(jī)時(shí)要顯示開機(jī)畫面,故除在Bootloader中初始化相應(yīng)硬件資源外,還應(yīng)將開機(jī)畫面的圖片數(shù)據(jù),傳送到AT2042SDRAM中。Bootloader整體流程圖如圖8所示。

顯示開機(jī)畫面,其主要通過AT2042的JPEG解碼功能來實(shí)現(xiàn)。首先配置AT2042的JPEG解碼功能,將要顯示圖像先以頭文件的形式添加到程序中,當(dāng)需要顯示時(shí)再將圖像數(shù)據(jù)發(fā)送給AT2042。

2.2 Linux系統(tǒng)的配置及設(shè)備驅(qū)動程序的編寫

本系統(tǒng)使用的是Linux2.4.18內(nèi)核,在內(nèi)核配置中需增加以下幾個內(nèi)容:由于本系統(tǒng)中要實(shí)現(xiàn)對視頻編碼數(shù)據(jù)的存儲,故要添加內(nèi)核配置中USB support選項(xiàng)中的USB Mass storage support;在調(diào)試時(shí)需要通過以太網(wǎng)來燒些程序,故內(nèi)核配置時(shí)需添加LAN91C111網(wǎng)卡驅(qū)動,方法為在NetWork device support選項(xiàng)下選擇SMC91111 support,同時(shí)內(nèi)核要支持各種文件系統(tǒng),需在File system選項(xiàng)下進(jìn)行相應(yīng)配置。

系設(shè)備驅(qū)動程序主要完成以下的功能:

AT2042設(shè)備驅(qū)動子模塊系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核和上層應(yīng)用程序之間的接口,AT2042設(shè)備驅(qū)動子模塊是操作系統(tǒng)內(nèi)核和AT2042硬件設(shè)備之間的接口。操作系統(tǒng)內(nèi)核向AT2042設(shè)備驅(qū)動子模塊提供內(nèi)核API和其他的內(nèi)核支持。AT2042設(shè)備驅(qū)動子模塊為上層應(yīng)用程序屏蔽了AT2042硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,AT2042硬件設(shè)備只是一個設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對AT2042硬件設(shè)備進(jìn)行操作。AT2042設(shè)備驅(qū)動子模塊作為系統(tǒng)內(nèi)核的一部分,主要完成對AT2042的初始化、編解碼數(shù)據(jù)的讀寫、以及編解碼功能參數(shù)的設(shè)置。包含的功能函數(shù)主要有模塊入口函數(shù)、設(shè)備操作函數(shù)集合和中斷服務(wù)程序等。

2.3 數(shù)字視頻錄像機(jī)應(yīng)用軟件的設(shè)計(jì)與實(shí)現(xiàn)

(1)界面顯示與菜單功能的設(shè)計(jì)與實(shí)現(xiàn)。界面和菜單的顯示是通過AT2042的OSD(on Screen Display)功能來實(shí)現(xiàn)的,AT2042共有3個顯示層面,分別為底層是背景層、中間是回放層,頂層是OSD層。

OSD層支持16色的調(diào)色板。由于AT2042自身沒有相應(yīng)的ROM存儲OSD所要顯示的圖片及文字?jǐn)?shù)據(jù),故在利用OSD功能來顯示圖片或文字時(shí),首先要將需顯示的圖片或文字?jǐn)?shù)據(jù)加載到AT2042的SDRAM中,然后調(diào)用顯示功能將圖片或文字顯示在OSD層上。

這個功能的實(shí)現(xiàn)過程中主要調(diào)用以下2個函數(shù):

void at2042_load_font(uns8 * font_data,uns32font_data_size)該函數(shù)的主要功能是把要顯示的數(shù)據(jù)加載到AT2042的SDRAM中,同時(shí)設(shè)置顯示位置,即垂直、水平像素點(diǎn)的位置。

void osd_on_off(uns8 temp)該函數(shù)的功能是打開或關(guān)閉OSD模式。

(2)MPEG-4視頻編碼實(shí)現(xiàn)。該功能主要利用AT2042來實(shí)現(xiàn)。首先,配置相應(yīng)的編碼寄存器,例如編碼模式、編碼像素點(diǎn)、編碼幀率及設(shè)置編碼流格式(PES,PS,TS)等。本系統(tǒng)中采用MPEG-4模式、720X576、每秒25幀及生成PES流來對視頻數(shù)據(jù)進(jìn)行編碼。

AT2042視頻編碼的流程如圖9所示。

實(shí)現(xiàn)這一功能主要通過對以下幾個函數(shù)的調(diào)用:

void set_encoder_parameter(uns16 hsize,uns16vsize,uns8 rate,uns8 mode)該函數(shù)用來設(shè)置編碼參數(shù);

void video_encoder_start(uns8 mode)該函數(shù)用來啟動AT2042的編碼功能;

void video_encoder_stop(uns8 mode)該函數(shù)用來關(guān)閉AT2042的編碼功能;

void encoding_stream_read(uns8 * data,uns32 data_size)該函數(shù)實(shí)現(xiàn)將編碼數(shù)據(jù)從MuxFIFO中讀出。

(3)解碼功能實(shí)現(xiàn)。實(shí)現(xiàn)的具體流程如圖10所示。

實(shí)現(xiàn)這些功能主要通過對以下幾個函數(shù)的調(diào)用:

void set_decoder_parameter(uns16 hsize,uns16 vsize,uns8 rate,uns8 mode)該函數(shù)用來設(shè)置解碼參數(shù);

void video_decoder_start(uns8 mode)該函數(shù)用來啟動AT2042的解碼功能;

void video_decoder_stop(uns8 mode)該函數(shù)用來關(guān)閉AT2042的解碼功能;

void get_file_length(const char * file_name)該函數(shù)用來獲取文件的長度;

void video_replay(const char * file_name,uns8mode)該函主要實(shí)現(xiàn)對視頻文件的播放控制,mode控制播放模式(暫停、快進(jìn)、快退)。

3 測試結(jié)果

實(shí)驗(yàn)結(jié)果進(jìn)行測試,可以采用2套方案來完成。

(1)使用自行設(shè)計(jì)的硬件平臺,在該平臺上完成對視頻編解碼的測試。圖11為在本系統(tǒng)平臺上對編碼數(shù)據(jù)的解碼播放截圖。 

(2)將編碼后的視頻文件拷貝到PC機(jī)上,應(yīng)用Media Player、暴風(fēng)音影和風(fēng)雷音影等視頻播放軟件對編碼結(jié)果進(jìn)行測試,同時(shí)可以對比解碼播放的效果。因?yàn)楸鞠到y(tǒng)中視頻文件是以PES流形式保存到儲存介質(zhì)。PES滿足ISO13818標(biāo)準(zhǔn),所以PC平臺上的普通視頻播放器都能播放該文件。圖12是用風(fēng)雷音影播放器對編碼結(jié)果進(jìn)行解碼播放的截圖。

由圖可以看出,解碼出的視頻文件是720X576像素點(diǎn),解碼播放的速率為25.59 f/s。畫面沒有出現(xiàn)失真現(xiàn)象,沒有明顯的塊效應(yīng)。由表1中的數(shù)據(jù)可得,在使用AT2042對靜止圖像編碼時(shí),可實(shí)現(xiàn)接近100:1的壓縮比,在對動態(tài)畫面進(jìn)行編碼時(shí),可以實(shí)現(xiàn)40:1的壓縮比。

4 結(jié) 語

本文詳細(xì)介紹基于專用視頻編解碼芯片AT2042的數(shù)字視頻錄像機(jī)系統(tǒng)的硬件設(shè)計(jì)和軟件開發(fā)流程。該系統(tǒng)已實(shí)現(xiàn)對視頻數(shù)據(jù)的編碼和解碼,同時(shí)實(shí)現(xiàn)了MPEG-4/MPEG-2/MPEG-1 H.263視頻標(biāo)準(zhǔn),并已作為成型產(chǎn)品推向市場。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

星標(biāo)/置頂?公眾號,硬核文章第一時(shí)間送達(dá)!鏈接|?https://zhuanlan.zhihu.com/p/274473971題很多,先上題后上答案,便于大家思考問題點(diǎn):1、C和C的特點(diǎn)與區(qū)別?2、C的多態(tài)3、虛函數(shù)實(shí)現(xiàn)...

關(guān)鍵字: 騰訊 函數(shù) 進(jìn)程 AI

程序接口是操作系統(tǒng)為用戶提供的兩類接口之一,編程人員在程序中通過程序接口來請求操作系統(tǒng)提供服務(wù)。面向過程語言最基本的單元是過程和函數(shù)。

關(guān)鍵字: 程序接口 過程 函數(shù)

星標(biāo)「嵌入式大雜燴」,一起進(jìn)步!鏈接:https://www.cnblogs.com/jozochen/p/8541714.html一、問題復(fù)現(xiàn)穩(wěn)定復(fù)現(xiàn)問題才能正確的對問題進(jìn)行定位、解決以及驗(yàn)證。一般來說,越容易復(fù)現(xiàn)的問...

關(guān)鍵字: 嵌入式開發(fā) 函數(shù) 代碼 寄存器

基本上,沒有人會將大段的C語言代碼全部塞入main()函數(shù)。更好的做法是按照復(fù)用率高、耦合性低的原則,盡可能的將代碼拆分不同的功能模塊,并封裝成函數(shù)。C語言代碼的組合千變?nèi)f化,因此函數(shù)的功能可能會比較復(fù)雜,不同的輸入,常...

關(guān)鍵字: 函數(shù) PEN C語言代碼 C語言程序

Part1一、讓自己習(xí)慣C條款01:視C為一個語言聯(lián)邦C并不是一個帶有一組守則的一體語言:他是從四個次語言(C、Object-OrientedC、Template、STL)?組成的聯(lián)邦政府,每個次語言都有自己的規(guī)約。記住...

關(guān)鍵字: TI 函數(shù) ASPECT 編譯器

為什么會寫篇棧變化的文章?做系統(tǒng)分析的話你肯定遇到過一些crash,oops等棘手問題,一般大家都會用gdb,objdump或者addr2line等工具分析pc位置來定位出錯的地方。但是這些分析工具背后的本質(zhì)原理就不見得...

關(guān)鍵字: 函數(shù) ARM C語言 AI

前言:一轉(zhuǎn)眼從事前端已經(jīng)6年了,從當(dāng)時(shí)的小白到如今大廠的技術(shù)專家,中間也走過不少彎路,從今天開始我會持續(xù)更新前端技術(shù)文章,并且整體的文章會進(jìn)行體系梳理,整個知識體系分為:基礎(chǔ)精講,框架講解,框架及工具原理,前端面試題精講...

關(guān)鍵字: 函數(shù) GE FUNCTION APP

關(guān)于C的lambda是函數(shù)還是對象,這其實(shí)不是一個一概而論的問題。先說結(jié)論:對于有捕獲的lambda,其等價(jià)于對象。對于沒有任何捕獲的lambda,其等價(jià)于函數(shù)!首先,很多C程序員從lambda用法上反推容易發(fā)現(xiàn)是對象,...

關(guān)鍵字: 函數(shù)

1.說明在工作過程中,我發(fā)現(xiàn)在實(shí)際使用RTOS完成項(xiàng)目時(shí),理解這些知識僅能達(dá)到會用RTOS的水平,要想用好RTOS,還需要了解一些比較細(xì)節(jié)的機(jī)制,否則容易掉坑進(jìn)去,花大量時(shí)間定位問題。本文結(jié)合TencentOS-Tiny...

關(guān)鍵字: RTOS 函數(shù)

關(guān)注、星標(biāo)公眾號,直達(dá)精彩內(nèi)容來源:明日科技當(dāng)我們討論指針時(shí),通常假設(shè)它是一種可以用?void*?指針來表示的東西,在x86_64平臺下是8個字節(jié)大小。例如,下面是來自?維基百科中關(guān)于x86_64的文章?的摘錄:Push...

關(guān)鍵字: 函數(shù)

消費(fèi)電子

95976 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉