摘? 要: 數(shù)字視頻技術(shù)正從便攜式攝像機(jī)與安全監(jiān)控系統(tǒng)等專用應(yīng)用領(lǐng)域向各種消費(fèi)類電子產(chǎn)品快速推廣,,向傳統(tǒng)視頻開發(fā)技術(shù)提出了巨大挑戰(zhàn),。過去,,這些傳統(tǒng)技術(shù)需要熟悉最新編碼/解碼(編解碼器)標(biāo)準(zhǔn)并能為高性能信號(hào)處理平臺(tái)編寫匯編代碼的專家手工編寫大量代碼,。
信號(hào)處理技術(shù)制造商推出了將處理器,、開發(fā)工具,、軟件以及系統(tǒng)專業(yè)技術(shù)高度集成的開發(fā)環(huán)境,,使設(shè)計(jì)人員能夠在高系統(tǒng)級(jí)別的抽象環(huán)境下開發(fā)視頻應(yīng)用,,從而解決這一繁瑣而復(fù)雜的難題,。這使設(shè)計(jì)人員能集中精力開發(fā)應(yīng)用功能,,通過簡單調(diào)用應(yīng)用編程接口(API)就能實(shí)施視頻,、音頻、語音和影像技術(shù),,以處理諸如實(shí)施特定編解碼器引擎以及匹配屏幕分辨率等細(xì)節(jié),。
關(guān)鍵詞: DSP數(shù)字信號(hào)處理器;video視頻,;coding/decoding編碼/解碼,; codec編解碼器
?
新一代視頻應(yīng)用
隨著實(shí)施數(shù)字視頻的成本不斷下降,更多嵌入式開發(fā)人員開始在各種產(chǎn)品中集成音,、視頻技術(shù),。圖1顯示了機(jī)頂盒(STB)作為家庭安全集成監(jiān)控系統(tǒng)的功能,它使得家庭用戶能在電視屏幕上查看訪客情況,。同時(shí),,傳統(tǒng)與非傳統(tǒng)視頻應(yīng)用的質(zhì)量也在不斷提高。為了可智能化地調(diào)整對(duì)比度與聚焦,,TI正在開發(fā)計(jì)算性能更高的算法,。高靈活性的處理選項(xiàng)也使用戶能通過包括黑白、彩色,、紅外,、熱感等在內(nèi)的各種設(shè)置捕獲影像。此外,,也正在開發(fā)智能攝像頭,,它僅當(dāng)鏡頭框中的所有人都睜眼時(shí)才捕獲影像。
?
傳統(tǒng)的編解碼器實(shí)施方法
日益廣泛的視頻使用與復(fù)雜性不斷提高的新型視頻應(yīng)用使人們開始重視傳統(tǒng)視頻開發(fā)方法的局限性問題,。傳統(tǒng)方法的最大障礙之一就是需要對(duì)編解碼器算法進(jìn)行手工編碼之后,,才能壓縮數(shù)據(jù)流進(jìn)行傳輸存儲(chǔ),也才能解壓縮用于查看和編輯,。目前,,編解碼器標(biāo)準(zhǔn)非常復(fù)雜,并在不斷地演進(jìn)發(fā)展,,以增強(qiáng)視頻質(zhì)量和降低帶寬占用,。
因此,工程師往往需要很多人月的工作才能完成嵌入式視頻應(yīng)用的實(shí)施,。通常,,編解碼器先采用C/C++等較高級(jí)語言開發(fā),然后再將部分代碼用匯編語言重寫,,從而根據(jù)硬件實(shí)施優(yōu)化性能與功耗,。上述編程工作的第二階段需要熟練掌握特定硬件平臺(tái)的大量專業(yè)技能。
諸如MPEG 2等前代編解碼器已穩(wěn)定成型,但MPEG 4與H.264等最新的高效編解碼器仍在不斷改進(jìn),,因此必須在產(chǎn)品開發(fā)過程中和未來升級(jí)中考慮到編解碼器變動(dòng)的可能性。此外,,新型編解碼器也提供了更豐富的工具套件(toolset),,能夠?yàn)殚_發(fā)人員在設(shè)置視頻流時(shí)提供更多的選擇。例如,,有的編解碼器視頻流可允許使用隔行掃描規(guī)范,,而有的則不行。
硬件考慮事項(xiàng)
編解碼器通常運(yùn)行于專用集成電路(ASIC)或數(shù)字信號(hào)處理器(DSP)上,。ASIC是針對(duì)特定應(yīng)用而設(shè)計(jì)定制的,,因此功耗通常較低,外形尺寸也相對(duì)較小,。使用ASIC的不利因素在于,,工程設(shè)計(jì)僅適用于特定應(yīng)用,因此成本較高,。而且如果要根據(jù)不斷發(fā)展的編解碼器標(biāo)準(zhǔn)進(jìn)行實(shí)施更改,,成本也會(huì)比較高。新編解碼器的實(shí)施通常需要增加ASIC器件的裸片大小,。
DSP則能提供全面的軟件可編程性,,其中包括現(xiàn)場(chǎng)再編程功能,以使用戶在推出MPEG 2產(chǎn)品之后還能再讓其升級(jí)產(chǎn)品支持H.264視頻編解碼器,。此外,,DSP還有助于簡化可支持多種編解碼器產(chǎn)品的開發(fā),而且還能根據(jù)標(biāo)準(zhǔn)的變化實(shí)時(shí)更新編解碼器,。此外,,還可將DSP集成在片上系統(tǒng)(SoC)中,與通用處理器(GPP)和加速器等更多功能結(jié)合在一起,,從而有助于減少組件數(shù),。
應(yīng)用領(lǐng)域的問題
數(shù)字視頻實(shí)施只是當(dāng)今大量數(shù)創(chuàng)新型應(yīng)用的一部分,通常運(yùn)行于GPP之上的應(yīng)用則構(gòu)成另一部分,,可提供用戶界面并實(shí)現(xiàn)產(chǎn)品差異化的特定性能,。此類應(yīng)用的重要角色之一就是實(shí)現(xiàn)軟硬件的統(tǒng)一。例如,,在編解碼器與視頻端口之間提供視頻緩存,。此外,應(yīng)用還需要諸如Linux或Windows CE等操作系統(tǒng)來處理以太網(wǎng)協(xié)議棧,、無線協(xié)議棧,、輸入/輸出設(shè)備驅(qū)動(dòng)器等。
通過軟件實(shí)現(xiàn)硬件抽象
新一代視頻產(chǎn)品的開發(fā)人員必須快速向市場(chǎng)推出具備高級(jí)特性的產(chǎn)品,才能確保在競爭中脫穎而出,。為了實(shí)現(xiàn)上述目標(biāo),,他們必須盡可能地集中優(yōu)勢(shì)資源用于應(yīng)用本身的開發(fā)工作,而不應(yīng)被視頻實(shí)施的具體細(xì)節(jié)所干擾,。
視頻硬件開發(fā)人員為了滿足上述要求,,推出了包含軟硬件、工具以及支持等在內(nèi)的集成式環(huán)境,,大幅簡化數(shù)字視頻技術(shù)的實(shí)施,。這種環(huán)境提供了一個(gè)開放式平臺(tái)以供眾多企業(yè)開發(fā)和集成可構(gòu)成數(shù)字視頻系統(tǒng)的不同組件,從而降低視頻系統(tǒng)的復(fù)雜性,。這些高性能信號(hào)處理平臺(tái)目前包含生產(chǎn)就緒型軟件(如硬件驅(qū)動(dòng)器,、手工優(yōu)化的編解碼器)以及管理網(wǎng)絡(luò)上音視頻同步和流媒體的應(yīng)用代碼等。
新架構(gòu)提供的API使開發(fā)人員能專注于應(yīng)用開發(fā)工作,,而無需為視頻實(shí)施問題浪費(fèi)過多時(shí)間,,也不必進(jìn)行DSP編程。通過將硬件實(shí)施細(xì)節(jié)與硬件在應(yīng)用中的使用相分離,,開發(fā)人員可非常便捷地將應(yīng)用移植到新平臺(tái)與新操作系統(tǒng)上,,一般只需更改API之后的驅(qū)動(dòng)器即可。
編寫應(yīng)用程序的開發(fā)人員只需調(diào)用標(biāo)準(zhǔn)函數(shù)庫就能實(shí)現(xiàn)各種視頻,、影像,、話音與音頻編解碼器以及其他視頻和音頻功能。例如,,圖2顯示了設(shè)計(jì)人員在無需考慮實(shí)際編解碼器實(shí)施細(xì)節(jié)的情況下通過ProcessVideo等函數(shù)調(diào)用接入視頻流的情況,。
?
API本身由硬件制造商提供,并已針對(duì)硬件實(shí)施進(jìn)行了優(yōu)化,。如果換用新的硬件,,則只需替換驅(qū)動(dòng)程序,而無需更改應(yīng)用代碼,。如果標(biāo)準(zhǔn)發(fā)生更改或者發(fā)布了新標(biāo)準(zhǔn),,則硬件制造商可以更新編解碼器,這樣應(yīng)用開發(fā)人員只需下載新的軟件庫即可,,而不必重新編寫代碼,。這種方案有助于大幅降低視頻開發(fā)的成本并縮短產(chǎn)品的上市進(jìn)程。
訪問任何來源的視頻
上述方案的主要優(yōu)勢(shì)在于無需對(duì)應(yīng)用代碼做出重大更改即能訪問各種來源的視頻流,。例如,,可用下列代碼來訪問硬盤驅(qū)動(dòng)器等ATA外設(shè)中的視頻,而且只要對(duì)這段代碼范例稍做修改,,就能訪問任何來源的視頻,。
InitPeripherals()
InitEthernet(),;
InitUSB();
InitATA(),;
InitDisplay(),;
InitH264Decoder();
OpenCodec()
OpenH264Channel(),;
StartDecode(ATA.Address,,H264.Channel,
Display.Address),;
通過API,開發(fā)人員能根據(jù)視頻引擎來配置硬件,,以確保特殊應(yīng)用能夠滿足復(fù)雜節(jié)目的要求(如影像尺寸,、單位像素位(bpp)等),此外還能管理幀緩沖器與內(nèi)置屏幕顯示功能等,。
更改顯示尺寸
下列代碼范例顯示,,打開并配置視頻流之后即可輕松更改顯示尺寸。這段代碼使機(jī)頂盒能使用相同的代碼與家庭影院監(jiān)視器直接相連,,并將內(nèi)容下載至個(gè)人視頻播放器,。
InitPeripherals()
//Display driver is passed arguments to move away from default values
InitDisplay(QCIF | CIF | D1 | 720p | 1080i);
新系統(tǒng)級(jí)抽象方案可顯著簡化高級(jí)視頻特性的實(shí)施,。圖3所示的代碼顯示,,可用這種方案來實(shí)施時(shí)移技術(shù),以便將實(shí)時(shí)視頻存儲(chǔ)至磁盤上,,而不必立即播放,,這樣用戶即便暫時(shí)沒時(shí)間收看也可以看重播,從而不會(huì)錯(cuò)過任何節(jié)目,。
?
I/O層驅(qū)動(dòng)程序
上述各種特性背后的復(fù)雜細(xì)節(jié)均由通用 API 訪問低層驅(qū)動(dòng)程序完成,,因而對(duì)開發(fā)人員而言是完全透明的。采用界面熟悉,、獲廣泛支持的Linux驅(qū)動(dòng)程序可簡化視頻技術(shù)在嵌入式應(yīng)用中的集成工作,。使用Linux社區(qū)非常熟悉的API,如捕獲側(cè)(capture side)上的 Video for Linux Two(V4L2)API與通用FBDev API等,,能夠簡化從PC開發(fā)環(huán)境向嵌入式SoC環(huán)境的升級(jí),。
?在無需使用任何匯編語言編程的情況下,可以以最佳方式實(shí)施硬件產(chǎn)品的計(jì)算資源,,可以執(zhí)行各種復(fù)雜操作,,包括優(yōu)化使用DSP資源和基于硬件的加速引擎,通過信號(hào)鏈模式使用增強(qiáng)型直接存儲(chǔ)器存取外設(shè)以提高數(shù)據(jù)傳輸效率,,并通過中斷和小片任務(wù)模式(Interrupt vs.Tasklet)中的分組處理來靈活滿足不同應(yīng)用要求等,。
總之,新型設(shè)計(jì)方法使開發(fā)人員能夠通過API實(shí)現(xiàn)全面的視頻功能,而不必考慮視頻處理的細(xì)節(jié)問題,??奢p松對(duì)視頻處理的低級(jí)別細(xì)節(jié)進(jìn)行修改,以滿足編解碼器或硬件更改的要求,,而毋需更改上層應(yīng)用代碼,。這種方案消除了對(duì) DSP進(jìn)行編程的麻煩,使開發(fā)團(tuán)隊(duì)能將大部分精力集中于應(yīng)用本身的開發(fā)上,。此外,,新方案還有助于以更低的成本大幅縮短集成領(lǐng)先視頻功能的產(chǎn)品的上市時(shí)間,同時(shí)減少未來產(chǎn)品維護(hù)與升級(jí)所需的時(shí)間和成本,。