国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

應(yīng)用TMS320DM8168數(shù)字媒體處理器的視頻服務(wù)器設(shè)計

2018-01-17 09:34:20黃根勇
電子技術(shù)與軟件工程 2017年23期

摘 要 在TI 最新的TMS320DM8168開發(fā)平臺上實現(xiàn)了高質(zhì)量視頻服務(wù)器設(shè)計,從工程層面分析DaVinci平臺的硬件系統(tǒng)、架構(gòu)和組件,解釋達芬奇資源、系統(tǒng)移植、流媒體應(yīng)用搭建及中間件概念,提出利用DaVinci架構(gòu)和嵌入式Linux設(shè)計高質(zhì)量、低成本的基于SIP的流媒體傳輸系統(tǒng)的方法,重點闡述DaVinci平臺的特點、開發(fā)方法和監(jiān)控中心軟件的實現(xiàn) ,解決該芯片內(nèi)部DSP端和ARM 端之間的雙核通信及視頻服務(wù)程序的應(yīng)用問題。

【關(guān)鍵詞】DaVinci 視頻服務(wù)器 視頻編碼 SIP

1 DaVinci系統(tǒng)介紹

TMS320DM8168是德州儀器公司最新推出的一款DaVinci芯片,是當(dāng)前最合理的單片實時多格式編碼轉(zhuǎn)換解決方案, 其雙核結(jié)構(gòu)使得其開發(fā)過程為:其平臺程序的執(zhí)行都先由ARM 端操作系統(tǒng)執(zhí)行,而后由ARM端操作系統(tǒng)通過特定API函數(shù)調(diào)用DSP內(nèi)置編解碼引擎與操作系統(tǒng)服務(wù)結(jié)構(gòu)來觸發(fā)DSP 端的程序完成。從應(yīng)用的角度上來看,介于應(yīng)用與驅(qū)動之間的軟件模塊Codec Engine是用來例化和調(diào)用xDAIS算法的一組用戶編程接口。xDAIS是德州儀器公司的一種算法標(biāo)準(zhǔn),并在XDAIS基礎(chǔ)上補充雙核通信后的算法封裝標(biāo)準(zhǔn)是XDM。運行在遠端或本地,并與操作系統(tǒng)無關(guān)的Codec Engine API 調(diào)用的算法,無論Codec Engine 運行在ARM 端還是DSP上, 對應(yīng)的用戶編程接口函數(shù)都是完全一樣。通過stub接口和skeleton接口調(diào)用Engine SPI函數(shù)訪問實際算法VISA API函數(shù),其可為VISA process / create / control /delete四個子函數(shù),分別完成程序數(shù)據(jù)的處理、創(chuàng)建、控制和刪除四種應(yīng)用。Codec Server運行在DaVinci平臺的數(shù)字信號處理器端,其內(nèi)核為DSP/BIOS,控制實際的特殊功能寄存器, 編譯生成數(shù)字信號處理器端可執(zhí)行的鏡像程序。ARM端服務(wù)器與DSP端編解碼引擎相當(dāng)于服務(wù)器和客戶機之間的關(guān)系,ARM 端的應(yīng)用程序通過自定義接口或者VISA接口發(fā)出連接信號到DSP 端,并傳遞相關(guān)數(shù)據(jù),然后由DSP 端的Skeleton 接口送出相應(yīng)算法,反過來通過Skeleton接口將DSP端運算后的結(jié)果交由Stubs接口 送到ARM端操作系統(tǒng)實現(xiàn)交互。

2 DaVinci視頻編碼實現(xiàn)

2.1 程序的結(jié)構(gòu)

由于DSP端的特殊數(shù)據(jù)處理架構(gòu),所以在DSP端運行視頻編解碼算法的核心程序,來提高運算速度,ARM端負責(zé)芯片、接口的通信及對控制DSP端程序, DSP端完成分析編碼類型、視頻解碼和儲存參考幀等處理,ARM 端應(yīng)用網(wǎng)絡(luò)完成整理的源圖像數(shù)據(jù)、儲存?zhèn)鬏斁幋a后的文件及寫入的編解碼數(shù)據(jù), ARM端在寫入一幀圖像后,通過VISA 函數(shù)接口,調(diào)用DSP端的用戶接口函數(shù)完成一次編碼。

2.2 算法開發(fā)流程

先在CCS 工程下進行H.264 編碼程序移植,應(yīng)用DSP 端硬件完成仿真編碼,而后再通過DVSDK 的開發(fā)來實現(xiàn), 并在三個不同的文件夾進行處理,分以下三個步驟:

第一步, 在TI提供的編譯軟件文件夾example/ti/sdo/ce/example/codec下,生成可被Codec Engine 調(diào)用package,由源程序和配置文件生成xDAIS 文件、ARM 端及DSP 端庫等封裝程序。把在CCS 下實現(xiàn)的視頻編解碼算法中編碼一幀算法拷貝到此文件夾下, 編譯生成一個編解碼算法的庫文件,并更改package.xdc、package.xs、H264ENCODE.xdc、H264ENCODE.xs、package.bld等文件。

第二步, 調(diào)用軟件的example/ti/sdo/ce/example/server文件夾,編譯生成DSP 端可執(zhí)行文件,并配置與鏈接.tcf、link.cmd、.cfg、main.c等函數(shù)文件。

第三步,應(yīng)用軟件的example/ti/sdo/ce/example/App 文件夾,編譯生成ARM 端可執(zhí)行程序,其中含對XDM 接口調(diào)用、.cfg配置、makefile等文件。

最后,將運算得到的codec 包、DSP Server 和Engine 配置文件*.cfg,通過編譯、鏈接,生成ARM 端的可執(zhí)行文件。

2.3 雙核通信方法

雖然通過上述配置實現(xiàn)了關(guān)聯(lián)配置文件夾,但要程序執(zhí)行過程中能D ARM端和SP 端的數(shù)據(jù)正常通信,還要以下兩種數(shù)據(jù)的傳遞:

(1)編碼參數(shù):DSP 端進行視頻算法編碼時需傳遞大量的數(shù)據(jù), 其傳遞初始化算法的相關(guān)數(shù)據(jù)為VISA 接口中的*_create()函數(shù)的第三個數(shù)據(jù), 這些數(shù)據(jù)為一些通用的編碼數(shù)據(jù)。

(2)編碼前先將原圖像數(shù)據(jù)的存放地址等信息發(fā)送到DSP端,編碼結(jié)束后再將編碼數(shù)據(jù)發(fā)送回到ARM 端操作系統(tǒng), 通過VISA 接口中的*_process()函數(shù)來實現(xiàn)上述兩個過程的信息發(fā)送。

3 嵌入式系統(tǒng)的中間件

針對嵌入式系統(tǒng)架構(gòu)中諸如分布異構(gòu)、網(wǎng)絡(luò)訪問等技術(shù)問題,德州儀器公司將中間件和C/S框架引入到嵌入式系統(tǒng),針對音頻處理、圖像、話音和視頻搭建了VISA框架,包括達芬奇處理器平臺、實時操作系統(tǒng)、系統(tǒng)程序接口和應(yīng)用程序接口,中間件和符合XDIS或XDM規(guī)約的算法組件以及XDC集成工具箱。借助于嵌入式中間件,嵌入式系統(tǒng)由原來的“服務(wù)響應(yīng)+應(yīng)用請求”的兩層結(jié)構(gòu)轉(zhuǎn)變成為“服務(wù)響應(yīng)+嵌入式中間件+應(yīng)用請求”的三層結(jié)構(gòu)。

4 達芬奇子系統(tǒng)實現(xiàn)

子系統(tǒng)硬件部分采用DaVinci技術(shù)的TMS320DM8168為核心,外設(shè)包括視頻編碼芯片SAA7121H、視頻解碼芯片SAA7115H、ATA硬盤、64M bit SDRAM、Flash 單元、電源模塊、外接時鐘及以太網(wǎng)接口等構(gòu)成。軟件部分由 DM8168初始化程序、外圍設(shè)備驅(qū)動程序、MontavistaLinux嵌入式操作系統(tǒng)以及應(yīng)用層程序等組成。初始化程序?qū)崿F(xiàn)設(shè)置系統(tǒng)初始化、DSP和ARM啟動方式、工作模式等工作,驅(qū)動程序完成連接底層硬件和操作系統(tǒng)API函數(shù);嵌入式操作系統(tǒng)管理系統(tǒng)資源及調(diào)度多任務(wù);應(yīng)用層程序完成音頻和視頻采集、播放、處理及存儲。endprint

流媒體程序部分通過在主程序加入線程RTP/RTCP 線程和SIP 控制實現(xiàn)對視頻流數(shù)據(jù)的控制和傳輸,關(guān)健代碼流程如圖2所示。SIP_init()實現(xiàn)了對數(shù)據(jù)流的實時傳輸和對SIP協(xié)議棧的初始化,采用oRTPT 和eXoSIP兩個開源的協(xié)議棧解決兩個協(xié)議棧在系統(tǒng)中的實現(xiàn),通過交叉編譯可以把這兩個協(xié)議編譯成ARM-Linux 下運行的庫。

4.1 RTP/RTCP 實現(xiàn)

把oRTP 移植到DaVinci系統(tǒng)后就可以展開RTP/RTCP 模塊的編程任務(wù),采用一個全局結(jié)構(gòu)指針prtpstat對RTP/RTCP 模塊的訪問和控制。

struct RTP_stat * prtpstat

#define STREAME_COUNT 100

#define PACKET_SIZE 100000

struct RTP_stat{

int runcond;

int channels;

SessionSet *set;

RtpSession *session[STREAMS_COUNT];

Unsigned char *buffer[STREAMS_COUNT];

int user_ts[STREAMS_COUNT];

int connected[STREAMS_COUNT];};

4.2 SIP 信號控制模塊的實現(xiàn)

oSIP2用C 語言編寫,是一個開放源代碼的SIP 協(xié)議棧,具有短小簡潔的特點,專注于SIP 底層解析使得它的效率比較高,應(yīng)用eXoSIP2可以很方便地創(chuàng)建一個完整的SIP 程序。

5 PC子系統(tǒng)實現(xiàn)

系統(tǒng)中PC子系統(tǒng)作為用戶端的,通過IP網(wǎng)絡(luò)獲得達芬奇服務(wù)器端的視頻資源,并實現(xiàn)對視頻資源的回放、存儲管理等功能。要在Windows環(huán)境使用eXosip和oRTP庫,因此也需要它們在Windows 下的庫文件,可以從互聯(lián)網(wǎng)上下載或源文件自己編譯。用Sun的Java 開發(fā)平臺開發(fā)用戶端軟件,網(wǎng)絡(luò)傳輸模塊的結(jié)構(gòu)和ARM 下SIP 服務(wù)器的網(wǎng)絡(luò)傳輸模塊基本相同,不同之處是SIP消息循環(huán)中消息處理過程,用戶用鍵盤或鼠標(biāo)在程序界面上操作完成呼叫、SIP注冊、呼叫結(jié)束等過程。

6 結(jié)束語

由DaVinci平臺的特點,借助 Codec Engine API 函數(shù)實現(xiàn)音視頻數(shù)據(jù)的壓縮、RTSP 狀態(tài)轉(zhuǎn)換的實現(xiàn)方法、RTSP 會話中信令的交互過程、使用音視頻驅(qū)動程序捕獲實時數(shù)據(jù)的方法、使用 ffmpeg 解析多媒體文件的步驟、將多媒體數(shù)據(jù)打成 RTP 包發(fā)送、開發(fā) DirectShow 播放鏈路應(yīng)用等子系統(tǒng), 并對代碼在數(shù)據(jù)結(jié)構(gòu)、內(nèi)存管理、執(zhí)行效率等方面進行優(yōu)化,將流媒體系統(tǒng)的開發(fā)分解為媒體文件解析模塊、RTSP 信令模塊、DirectShow 播放模塊、RTP 網(wǎng)絡(luò)發(fā)送模塊和實時數(shù)據(jù)處理模塊,由此提出基于DaVinci技術(shù)的DM8168的嵌入式視頻服務(wù)器在處理復(fù)雜環(huán)境監(jiān)控下完整實現(xiàn)方案。

參考文獻

[1]TMS320DM8168 Digital Media System-on-Chip(SPRS403A)。

[2]程曉東,黃根勇.嵌入式DaVinci平臺視頻服務(wù)器的設(shè)計[J].內(nèi)蒙古大學(xué)學(xué)報,2010(40):309-313.

[3]陳冒銀.DAVINCI技術(shù)在便攜式視頻偵察系統(tǒng)中的應(yīng)用[J].數(shù)據(jù)采集與處理,2008(29):23-26.

[4]吳駿,楊照選.ARM與DSP雙核視頻交通檢測系統(tǒng)通信接口設(shè)計[J].計算機工程,2007(13):33-35.

作者簡介

黃根勇(1982-),男,碩士學(xué)位。講師。主要研究方向為嵌入式系統(tǒng)。

作者單位

江西制造職業(yè)技術(shù)學(xué)院 江西省南昌市 330095endprint

九龙城区| 江西省| 建湖县| 博客| 政和县| 辽宁省| 巴楚县| 武夷山市| SHOW| 宁阳县| 从化市| 门头沟区| 安乡县| 德阳市| 栾城县| 遂川县| 山阳县| 芷江| 连城县| 夏津县| 祁阳县| 阿合奇县| 龙南县| 赤壁市| 莆田市| 邳州市| 昌江| 澄江县| 成都市| 鄄城县| 托里县| 冷水江市| 宝坻区| 珠海市| 洛南县| 特克斯县| 寻甸| 南昌县| 温州市| 涞源县| 黄大仙区|