專利名稱:一種用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明是一種在網(wǎng)絡(luò)電視(IPTV)機(jī)頂盒上開發(fā)可視電話系統(tǒng)的方法,此方案主 要是擴(kuò)展網(wǎng)絡(luò)電視機(jī)頂盒的增值業(yè)務(wù)功能,所依賴的硬件平臺是TI公司提供的面向視頻 開發(fā)領(lǐng)域的達(dá)芬奇平臺(DaVinci)TMS320DM6446。屬于嵌入式應(yīng)用領(lǐng)域。
背景技術(shù):
可視電話(Video Phone)業(yè)務(wù)是一種通過傳統(tǒng)電話網(wǎng)、互聯(lián)網(wǎng)或視訊專網(wǎng)的形式, 集圖像、話音于一體的多媒體通信業(yè)務(wù),來實(shí)現(xiàn)人們面對面的實(shí)時溝通,即通話雙方在通話 過程中能夠互相看到對方場景,近年來已在遠(yuǎn)程會議、遠(yuǎn)程教學(xué)、遠(yuǎn)程醫(yī)療等方面得到了快 速的發(fā)展。目前的可視電話的實(shí)現(xiàn)基本上基于PC的軟件,通過IP的網(wǎng)絡(luò)服務(wù)提供視頻電 話。對于這種解決方案,用戶需要電腦、攝像頭、寬帶上網(wǎng)和一定的電腦操作知識等基礎(chǔ)條 件,所以很大程度上局限了其擁有的用戶群體。隨著IPTV交互式網(wǎng)絡(luò)電視的推廣,普通家 庭可以有兩種方式享受IPTV服務(wù)計(jì)算機(jī)或者IPTV終端。IPTV終端能夠很好地適應(yīng)當(dāng)今 網(wǎng)絡(luò)飛速發(fā)展的趨勢,充分地利用網(wǎng)絡(luò)資源。IPTV既不同于傳統(tǒng)的模擬式有線電視,也不同 于數(shù)字電視??梢曤娫捵鳛镮PTV的一個增值業(yè)務(wù)提供給用戶,對IPTV的運(yùn)營起到了積極 的作用。 TI公司提供的面向音、視頻開發(fā)領(lǐng)域的達(dá)芬奇數(shù)字平臺(DaVinci)TMS320DM6446, 該平臺是擁有ARM (Advanced RISC Machines)禾口 DSP (DigitalSi卿al Processor)雙 CPU(Central Processing Unit)內(nèi)核的高端嵌入式開發(fā)平臺,主頻高達(dá)720MHZ。該平臺 上擁有豐富的硬件接口如USB (Universal SerialBus)、網(wǎng)卡、IDE硬盤接口 (Integrated Drive Electronics)等等。此平臺在音視頻編解碼的處理上采用了達(dá)芬奇(DaVinci)技 術(shù)。達(dá)芬奇(DaVinci)技術(shù)是一種專門針對數(shù)字音視頻應(yīng)用、基于信號處理的解決方案, 能為音視頻設(shè)備制造商提供集成處理器、軟件、工具等支持,以簡化設(shè)計(jì)進(jìn)程,加速產(chǎn)品創(chuàng) 新。由于大量的音視頻編解碼工作需要一個強(qiáng)勁的DSP處理器作為支撐,此硬件平臺自帶 的DVEVM開發(fā)套件,能通過DSP對音、視頻進(jìn)行編解碼,音頻支持G. 711編解碼算法,視頻支 持MPEG4和H. 264兩種編解碼算法。
發(fā)明內(nèi)容
技術(shù)問題本發(fā)明的目的是提供一種用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的 實(shí)現(xiàn)方法,該平臺是擁有ARM和DSP雙核的高端嵌入式開發(fā)平臺,考慮到機(jī)頂盒自帶的只采 用DSP進(jìn)行音、視頻編解碼所產(chǎn)生的高負(fù)載問題,本發(fā)明通過使用ARM音頻軟編解碼、DSP視 頻編解碼,大大減輕了 DSP的負(fù)荷,使得ARM的CPU占用率和DSP的CPU占用率能達(dá)到很好 的平衡。 技術(shù)方案本發(fā)明的一種用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法 利用TI公司推出的DM6446 DVEVM開發(fā)套件為硬件平臺,對音頻和視頻數(shù)據(jù)分別進(jìn)行采集 和捕獲,視頻數(shù)據(jù)采用DSP自帶的H. 264視頻編解碼,音頻則采用軟編解碼方式,直接調(diào)用G. 711編解碼算法,由ARM來處理。音視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸采用UDP協(xié)議作為傳輸層協(xié)議, 而在應(yīng)用層進(jìn)行RTP打包。 用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法如下 用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法是利用TI公司推出的 DM6446DVEVM開發(fā)套件為硬件平臺,對音頻和視頻數(shù)據(jù)分別進(jìn)行采集和捕獲,視頻數(shù)據(jù)采用 數(shù)字信號處理DSP自帶的高性能的視頻編解碼技術(shù)H. 264視頻編解碼,音頻則采用軟編解 碼方式,直接調(diào)用語音壓縮標(biāo)準(zhǔn)G. 711編解碼算法,由微處理器ARM來處理;音視頻數(shù)據(jù)的 網(wǎng)絡(luò)傳輸采用用戶數(shù)據(jù)報(bào)協(xié)議作為傳輸層協(xié)議,而在應(yīng)用層進(jìn)行實(shí)時傳送協(xié)議打包,具體 實(shí)現(xiàn)方法如下 步驟1).進(jìn)行需求分析,對網(wǎng)絡(luò)機(jī)頂盒之間的可視電話系統(tǒng)進(jìn)行分析,并對劃分 的模塊和功能的需求進(jìn)行設(shè)計(jì); 步驟2).按照步驟1設(shè)計(jì)的各功能模塊,熟悉各模塊之間的交互流程,對各個模塊 之間的邏輯關(guān)系和功能進(jìn)行說明; 步驟3).按照步驟2的功能說明,首先設(shè)計(jì)與實(shí)現(xiàn)人機(jī)交互的人性化界面,采用 MiniGUI在Linux系統(tǒng)下界面編程,在可視電話系統(tǒng)運(yùn)行之后,會彈出可視化界面,包括IP 地址輸入按鈕、設(shè)置按鈕和關(guān)閉按鈕,點(diǎn)擊以上按鈕,會彈出相應(yīng)的對話框,供用戶簡捷的 操作, 步驟4).利用硬件平臺自帶的DVEVM開發(fā)套件,可以對音、視頻數(shù)據(jù)進(jìn)行采集和捕 獲,并且還能通過數(shù)字信號處理DSP對音、視頻進(jìn)行編解碼,音頻支持語音壓縮標(biāo)準(zhǔn)G. 711 編解碼算法,視頻支持視頻、音頻和多媒體編碼標(biāo)準(zhǔn)MPEG4和高性能的視頻編解碼技術(shù)
H. 264兩種編解碼算法;考慮到數(shù)字信號處理DSP的高負(fù)荷問題,此系統(tǒng)音頻不用自帶的編 解碼引擎,而是直接在程序中加入編解碼算法代碼,采用微處理器來處理,視頻則采用自帶 的編解碼引擎,由此微處理器和數(shù)字信號處理DSP資源占用均衡, 步驟5).各模塊設(shè)計(jì)完成后,系統(tǒng)的運(yùn)行主要是多個線程的交互和執(zhí)行,可視電 話系統(tǒng)運(yùn)行后,首先運(yùn)行網(wǎng)絡(luò)監(jiān)聽回調(diào)函數(shù)和控制線程,控制線程主要負(fù)責(zé)用戶界面,不停 的查看遙控器是否有命令輸入;用戶輸入對方IP地址請求對方應(yīng)答,得到返回的接受消息 后,運(yùn)行音頻線程、播放線程、視頻線程、捕獲線程、顯示線程和網(wǎng)絡(luò)傳輸線程,以此來進(jìn)行 雙方音、視頻的正常交互, 步驟6).網(wǎng)絡(luò)傳輸流媒體數(shù)據(jù)是可視電話系統(tǒng)中必不可少的一個重要環(huán)節(jié),考慮 到音、視頻所要求的實(shí)時傳輸性,雖然采用傳輸控制協(xié)議傳輸具有高可靠性,但是由于三步 握手帶來的延遲和過多交互數(shù)據(jù)使其不適合發(fā)送大量的實(shí)時視頻數(shù)據(jù),在這種情況下,選 用專為發(fā)送大量音、視頻等多媒體數(shù)據(jù)的實(shí)時傳送協(xié)議,實(shí)時傳送協(xié)議由數(shù)據(jù)協(xié)議和控制 協(xié)議兩部分組成,實(shí)時傳送協(xié)議通常使用用戶數(shù)據(jù)報(bào)傳送數(shù)據(jù),控制協(xié)議用來支持其協(xié)議 的功能,考慮使用一些開放源代碼的實(shí)時傳送協(xié)議庫。 有益效果本發(fā)明方法提出了在網(wǎng)絡(luò)電視機(jī)頂盒上開發(fā)可視電話系統(tǒng),并在具體 實(shí)現(xiàn)中采用音頻ARM軟編解碼、視頻DSP編解碼,主要用于解決了 DSP高負(fù)載的問題,通過 使用這種發(fā)明方法,不僅擴(kuò)展了網(wǎng)絡(luò)電視機(jī)頂盒的增值業(yè)務(wù)功能,還在一定程度上緩解了 只采用DSP進(jìn)行音、視頻編解碼的低效性和不穩(wěn)定性。此發(fā)明方法還考慮人機(jī)交互問題,采 用MiniGUI系統(tǒng)進(jìn)行了人性化的界面設(shè)計(jì)??梢曤娫捪到y(tǒng)低耦合的模塊化設(shè)計(jì),具有良好的可擴(kuò)展性。以下給出具體的說明 高度的穩(wěn)定性本發(fā)明方法的可視電話系統(tǒng)功能完善,關(guān)鍵技術(shù)的運(yùn)用合理,擺脫
了只是運(yùn)用DSP自帶的音、視頻編解碼設(shè)計(jì)方式,采用了ARM和DSP共同協(xié)作來完成系統(tǒng)的
設(shè)計(jì),使得ARM和DSP之間的CPU占用率均衡穩(wěn)定,達(dá)到了預(yù)期的設(shè)計(jì)目的。 高效的實(shí)時性可視電話系統(tǒng)在音、視頻數(shù)據(jù)流的實(shí)時傳輸方面,根據(jù)多媒體數(shù)據(jù)
流要求實(shí)時性高、延遲小和可容忍適當(dāng)?shù)膩G包率等特點(diǎn),采用了專為發(fā)送大量實(shí)時音、視頻
等多媒體數(shù)據(jù)的RTP協(xié)議,其數(shù)據(jù)以UDP形式發(fā)送,增加了控制功能。相比TCP三次握手而
產(chǎn)生的延遲,本發(fā)明方法選用RTP協(xié)議在實(shí)時性方面得到了很大的提高。 良好的擴(kuò)展性本發(fā)明方法采用低耦合的模塊化設(shè)計(jì),其功能模塊大體由以下六
個部分組成音頻采集播放模塊、音頻編解碼模塊、視頻捕捉顯示模塊、視頻編解碼模塊、系
統(tǒng)控制模塊和網(wǎng)絡(luò)傳輸模塊。系統(tǒng)各模塊之間的層次化分明,提供了各模塊通信的接口,因
此也很容易升級各功能模塊。如果更換音頻或視頻的編解碼算法,只需在相應(yīng)的音頻編解
碼模塊或是視頻編解碼模塊上操作即可。也可很容易升級為PC對網(wǎng)絡(luò)機(jī)頂盒的可視電話系統(tǒng)。 人性化的界面在人機(jī)界面的操作方面,引入了 MiniGUI系統(tǒng),為用戶提供界面編 程,如IP地址輸入、呼叫和圖像顯示等對話框或窗口,使用戶更易于操作。
圖1可視電話系統(tǒng)各模塊交互的總體架構(gòu), 圖2音頻所有相關(guān)的流程圖, 圖3是可視電話系統(tǒng)用戶交互的框圖, 圖4是可視電話系統(tǒng)各個線程之間的交互圖, 圖5視頻所有相關(guān)的流程圖, 圖6是運(yùn)行此系統(tǒng)后用戶通信的詳細(xì)流程。
具體實(shí)施例方式—、體系結(jié)構(gòu) 本發(fā)明是在P2P IPTV終端上對可視電話進(jìn)行的研究。其功能模塊大體由以下六 個部分組成音頻采集播放模塊、音頻編解碼模塊、視頻捕捉顯示模塊、視頻編解碼模塊、系 統(tǒng)控制模塊和網(wǎng)絡(luò)傳輸模塊。如圖1所示。
下面我們對各模塊進(jìn)行具體的介紹 音頻采集播放模塊語音采集、播放模塊為嵌入式視頻系統(tǒng)的必備組件。該 模塊完成音頻信號的采集、播放等功能。它主要由TI生產(chǎn)的低功耗立體聲編解碼芯片 TLV320AIC33組成。該芯片有多個輸入端口和多個可編程輸出端口 ?;诩拇嫫鞯碾娫纯?制模塊使其在48KHz DAC回路播放時系統(tǒng)功耗只有14mw。極低的功耗使其特別適合于嵌入 式系統(tǒng)的應(yīng)用。 AIC33輸入端有數(shù)控立體聲麥克風(fēng)前置放大、自動增益控制和對多路輸入混音處 理等許多強(qiáng)大的功能。輸出端有4路普通輸出和3路差分輸出。同時其DAC和ADC支持 8KHz到96KHz之間的多種頻率采樣。AIC33使用多種電壓,其中模擬電壓2. 7V-3. 6V,數(shù)字內(nèi)核電壓1. 525-1. 95V,數(shù)字1/0電壓1. IV-3. 6V。 AIC33與DSP的音頻端接口 (ASP)相連, 工作模式為全雙工串行通信。 音頻編解碼模塊語音通信是可視電話最基本的功能。受網(wǎng)絡(luò)條件的限制,可視電 話通常工作在較低碼率下。為了適應(yīng)這種低碼率語音應(yīng)用,ITU—T推出了一系列音頻和語音 壓縮標(biāo)準(zhǔn)。其中G. 711、G. 723. 1、G. 728、 G. 729和G. 729A在可視電話中得到了廣泛應(yīng)用。
G. 711也稱為PCM(脈沖編碼調(diào)制),是國際電信聯(lián)盟訂定出來的一套語音壓縮標(biāo) 準(zhǔn),主要用于電話。它主要用脈沖編碼調(diào)制對音頻采樣,采樣率為8k每秒。它利用一個 64Kbps未壓縮通道傳輸語音訊號。起壓縮率為l : 2,即把16位數(shù)據(jù)壓縮成8位。G.711 是主流的波形聲音編解碼器。 視頻捕捉顯示模塊對于視頻捕捉,在系統(tǒng)上電后,TMS320DM6446通過SPI接口對 時序信號發(fā)生器(CXD2457R)進(jìn)行初始化。初始化完成后,TMS320DM6446的CCD控制器產(chǎn) 生行、場驅(qū)動信號送給時序信號發(fā)生器,時序信號發(fā)生器產(chǎn)生CCD時序控制信號和A/D轉(zhuǎn)換 芯片的采樣時序信號。CCD采集的原始圖像數(shù)據(jù),送到A/D轉(zhuǎn)換芯片,輸出10bitBayer模 板原始數(shù)據(jù)信號送給TMS320匿6446的CCD控制器進(jìn)行處理。CCD控制器主要產(chǎn)生合適的 行、場時序信號和對原始圖像進(jìn)行數(shù)字箝位和黑電平補(bǔ)償?shù)忍幚?,處理后的圖像送到DDR2 存儲器。DSP從DDR2存儲器取到原始數(shù)據(jù)后,進(jìn)行中值濾波和噪聲濾波,CFA插值和RGB到 YUV轉(zhuǎn)換等算法處理,輸出分辨率為1024X768的YUV(4:2:2)格式的數(shù)字視頻信號。
數(shù)字視頻顯示系統(tǒng)主要由DM6446的視頻后端處理子系統(tǒng)、CPLD器件EPM570、 LCD 屏LQ057Q3DC12和LCD的背光源電路組成。其中,DM6446芯片采用ARM與DSP雙核結(jié)構(gòu), ARM子系統(tǒng)搭載297MHz主頻的ARM926核,DSP部分采用594MHz的C64X+DSP核,視頻處理 子系統(tǒng)(VPSS)具有豐富的視頻前后處理功能,特色功能單元VICP專用的媒體協(xié)處理器,外 圍存儲均支持DDR2、 Flash、 ATA、 CF、 SD等外設(shè)接口 。由于DM6446的數(shù)字視頻輸出管腳電 壓是1. 8V,須經(jīng)EPM570轉(zhuǎn)換為3. 3V,再與LCD屏的3. 3V相應(yīng)管腳連接。
視頻編解碼模塊視頻編碼模塊設(shè)計(jì)DM6446片內(nèi)的VPBE模塊包含4個54MHz的 D/A轉(zhuǎn)換器,可在匿6446內(nèi)部將數(shù)字視頻信號直接轉(zhuǎn)化為模擬視頻信號,4路輸出,并且支 持CVBS、S-端子、YprPb 3種模擬視頻格式。因此,視頻編碼模塊設(shè)計(jì)較為簡單,只需對4 路模擬輸出信號放大,就可直接與監(jiān)視設(shè)備連接。選用TI公司的電壓反饋CMOS運(yùn)算放大 器0PA357進(jìn)行運(yùn)算放大。 視頻解碼模塊設(shè)計(jì)這里選用專用的視頻解碼器ADV7189B,它支持12路模擬視頻 通道,包含3個具有防噪性能的12位54腿z的A/D轉(zhuǎn)換器。支持CVBS、 S-端子、YprPb 3 種格式的模擬視頻信號輸入,能夠自動偵測NTSL/PAL/SECAM制式,輸出ITU-R BT. 656標(biāo)準(zhǔn) 的數(shù)字視頻信號。選用12路模擬通道中的3路,復(fù)用的支持3種模擬視頻格式。ADV7189B 輸出10位數(shù)字視頻信號、獨(dú)立的垂直同步信號VD、水平同步信號HD和像素同步時鐘LLC1, 電壓均為3. 3V電平,經(jīng)過FPGA轉(zhuǎn)換為DM6446要求的1. 8V,然后從DM6446的VPFE模塊專 用數(shù)字視頻信號接口送入DSP。壓縮編碼前,VPFE模塊將ITU-R BT.656標(biāo)準(zhǔn)的視頻數(shù)據(jù)轉(zhuǎn) 換為H. 264兼容的YUV4:2:0格式,存入DDR2 SDRAM中。VPFE模塊還支持對視頻數(shù)據(jù)進(jìn)行 白平衡、縮放等預(yù)處理操作。ADG3301實(shí)現(xiàn)I2C總線的電平轉(zhuǎn)換。 系統(tǒng)控制模塊主要是保證可視電話連接的正常建立、釋放及提供可視電話會話 過程中的信息控制,如終端間的主從決定、能力交換、邏輯信道的打開與關(guān)閉等。運(yùn)用到實(shí)際環(huán)境中,WCDMA/TD-SCDMA電路域可視電話業(yè)務(wù)中采用ITU-T H. 245作為控制協(xié)議。
網(wǎng)絡(luò)傳輸模塊主要是音頻和視頻編碼后的網(wǎng)絡(luò)傳輸,一般采用RTP/UDP/IP協(xié) 議。該音視頻傳輸平臺采用UDP協(xié)議作為傳輸層協(xié)議,而且在應(yīng)用層進(jìn)行RTP打包。在網(wǎng) 絡(luò)發(fā)送數(shù)據(jù)之前,視頻通過DSP的H. 264編碼壓縮,音頻通過G. 711編碼進(jìn)行壓縮,以利于 在網(wǎng)絡(luò)中更好的進(jìn)行音、視頻的傳輸。
二、方法流程 基于網(wǎng)絡(luò)機(jī)頂盒之間的可視電話系統(tǒng)的流程如圖6所示。首先用戶在用戶界面內(nèi) 輸入對方的IP地址,發(fā)起連接請求,對方同意后,兩者建立連接。之后雙方的操作步驟是相 似的初始化視頻設(shè)備,通過攝像頭捕獲視頻數(shù)據(jù),并用DSP自帶的H. 264進(jìn)行編碼;初始 化音頻設(shè)備,通過音頻采集設(shè)備,采集音頻數(shù)據(jù),并用G.711算法進(jìn)行編碼。然后通過網(wǎng)絡(luò), 發(fā)送給對方音、視頻數(shù)據(jù)包,對方接收數(shù)據(jù)后,再分別對音頻和視頻數(shù)據(jù)解碼,音頻由揚(yáng)聲 器播放出來,視頻通過電視機(jī)進(jìn)行顯示。 此發(fā)明的可視電話系統(tǒng)的實(shí)現(xiàn)方法,總體上把握可以歸結(jié)為以下四塊的實(shí)現(xiàn)線 程之間交互的實(shí)現(xiàn)、音頻所有相關(guān)的實(shí)現(xiàn),視頻所有相關(guān)的實(shí)現(xiàn)和網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)。以下詳 細(xì)介紹各塊的實(shí)現(xiàn)。 線程之間交互的實(shí)現(xiàn)本發(fā)明的所依賴的是MontaVista Linux嵌入式操作系 統(tǒng),在此基礎(chǔ)上所編寫的程序由多個線程組成。首先主線程進(jìn)行一些初始化的工作,用 戶輸入對方IP地址,在請求對方連接并得到響應(yīng)后,開始創(chuàng)建捕獲線程、顯示線程、視頻 線程、音頻編碼線程和音頻解碼線程,以上線程創(chuàng)建完畢,開始調(diào)用控制線程里的函數(shù) ctrlThrFxn (),此時主線程轉(zhuǎn)化為控制線程。 為保證各線程穩(wěn)定的執(zhí)行,需要為各個線程設(shè)定優(yōu)先權(quán)。除了主線程基于預(yù)定的 (SCHED_FIF0)優(yōu)先權(quán)之外,視頻線程和顯示線程享有最高優(yōu)先權(quán),其次是捕獲線程,再次是 音頻編碼線程和音頻解碼線程,最低優(yōu)先權(quán)是控制線程。 程序運(yùn)行后,各線程也相應(yīng)的創(chuàng)建??刂凭€程主要負(fù)責(zé)用戶界面,它使用 msp4301ib庫去監(jiān)測控制IR接口的msp430處理器,查看是否有IR命令輸入。 一旦接收到一 個由遙控器鍵入的新IR命令,命令就能夠被識別并且響應(yīng)的動作會在keyAction中執(zhí)行。 在視頻方面,捕獲線程從video線程取得一個空的raw buffer。用已經(jīng)移除重疊部分后的 數(shù)據(jù)填充它,這個buffer隨后被發(fā)送到視頻線程使用VIDENC—process()調(diào)用DSP H. 264進(jìn) 行編碼,captured buffer隨后被寫入1/0buffer,然后發(fā)送給對方。當(dāng)接收到對方的視頻編 碼數(shù)據(jù)后,寫入raw buffer,視頻線程使用VIDENC—process()調(diào)用DSP H. 264進(jìn)行解碼,為 了能把解碼幀顯示出來,調(diào)用函數(shù)FifoUtil—put()給顯示線程傳遞一個指向raw buffer 的指針,之后顯示線程使用VPSS resizer模塊和Rszcopy—execute()函數(shù)拷貝raw buffer 到FBDev幀緩沖設(shè)備中顯示出來。在音頻方面,音頻編碼線程通過調(diào)用Read()函數(shù)獲取音 頻數(shù)據(jù),寫入分配的raw buffer,直接調(diào)用G. 711編碼算法代碼進(jìn)行編碼,并寫入另一塊分 配的buffer,發(fā)送給對方。音頻解碼線程接收到對方發(fā)來的音頻數(shù)據(jù),寫入raw buffer,直 接調(diào)用G. 711解碼算法代碼進(jìn)行解碼,并寫入另一塊分配的buffer,調(diào)用Write()函數(shù)進(jìn)行 音頻播放。當(dāng)用戶需要終止通話時,只需通過遙控器鍵入終止鍵,則控制線程會響應(yīng)并終止 雙方此次的通話。線程交互如圖4所示。 音頻所有相關(guān)的實(shí)現(xiàn)網(wǎng)絡(luò)電視機(jī)頂盒上需要連接用于音頻采集的話筒。OSS為多種Unix (或Unix兼容的操作系統(tǒng))提供聲卡和其他聲音設(shè)備的驅(qū)動,AIC33聲音設(shè)備驅(qū) 動是OSS其中一種設(shè)備驅(qū)動,用于音頻數(shù)據(jù)的采集。本發(fā)明考慮音、視頻都采用DSP編解碼 產(chǎn)生高負(fù)荷問題,采用了音頻軟編解碼的方式,把G.711算法代碼加入到音頻線程中直接 調(diào)用,避免了使用DSP的操作。其具體的方法流程如圖2所示,步驟如下
(1)首先用InitSoundDevice()函數(shù),初始化AIC33設(shè)備驅(qū)動。
(2)為原始的立體聲(stereo)采樣數(shù)據(jù)分配緩沖區(qū),因?yàn)檫@個緩沖區(qū)不會涉及到 DSP (stereo-to-mono的轉(zhuǎn)換是由ARM實(shí)現(xiàn)的),所以此處分配的緩沖區(qū)不要求一定是連續(xù) 的,使用malloc()函數(shù)。 (3)調(diào)用Read()函數(shù)來采集音頻數(shù)據(jù),又因?yàn)锳IC33設(shè)備只支持立體聲,所以要從 兩個信道上讀取stereo采樣數(shù)據(jù)放入緩沖區(qū)。 (4)調(diào)用stereoToMono ()函數(shù),把立體雙聲道數(shù)據(jù)轉(zhuǎn)換成單聲道。
(5)在音頻線程里調(diào)用G. 711編碼函數(shù)(g711a—Encode0)進(jìn)行音頻數(shù)據(jù)的編碼。
調(diào)用編碼函數(shù)編碼好音頻數(shù)據(jù)后,通過網(wǎng)絡(luò)傳輸發(fā)送給對方,對方也首先需要 AIC33設(shè)備驅(qū)動的初始化,以及分配緩沖區(qū)等,然后解碼音頻數(shù)據(jù),調(diào)用Write ()函數(shù)寫入 緩沖區(qū),通過AIC33設(shè)備播放出來。 視頻所有相關(guān)的實(shí)現(xiàn)網(wǎng)絡(luò)電視機(jī)頂盒上首先需要連接用于視頻捕獲的攝像頭。 視頻處理前端系統(tǒng)(VPFE)用于負(fù)責(zé)從外設(shè)(攝像頭)接收并處理原始的視頻流信號,視頻 處理前端中的CCD控制器(CCDC)將具體負(fù)責(zé)對視頻數(shù)據(jù)的采集工作。Li皿x內(nèi)核中關(guān)于 管理視頻采集設(shè)備的驅(qū)動接口是V4L2 (Video for Linux Two)。獲取采集到得數(shù)據(jù)后,DSP 把視頻的數(shù)據(jù)格式由RGB到Y(jié)UV轉(zhuǎn)換處理,輸出分辨率為1024x768的YUV(4:2:2)格式的 數(shù)字視步員信號o利用mm即(map device memory into即plication address space)將內(nèi)核 空間的設(shè)備內(nèi)存地址空間映射到用戶空間的地址空間的方式,方便進(jìn)程訪問數(shù)據(jù)。
視頻程序首先通過FifoUtil—open()函數(shù)打開與捕獲程序之間的通信緩沖,調(diào)用 FifoUtil_get()函數(shù)和FifoUtil_put()函數(shù)作為視頻線程與捕獲線程之間的數(shù)據(jù)交流通 道。視頻線程對數(shù)據(jù)的編碼步驟如下 (1)使用CodecEngine的Engine_open ()來創(chuàng)建視頻編碼算法引擎,返回一個句 柄,所有使用相同Engine的模塊線程都需要單獨(dú)的句柄,來確定線程的安全;
(2)使用videoEncodeAlgCreate()創(chuàng)建編碼算法,使用VIDENC_create ()里的靜 態(tài)參數(shù)來創(chuàng)建"H. 264"視頻編碼器; (3)使用Memory—contigAlloc()函數(shù)為編碼緩存與原始視頻數(shù)據(jù)緩存分配一段 連續(xù)的內(nèi)存空間; (4)使用VIDENC_process ()函數(shù)調(diào)用H. 264算法對數(shù)據(jù)進(jìn)行編碼。 編碼好的視頻數(shù)據(jù)通過網(wǎng)絡(luò)傳輸發(fā)送給對方,對方的視頻線程對數(shù)據(jù)進(jìn)行解碼,
步驟如下 (1)使用CodecEngine的Engine_open ()來創(chuàng)建視頻解碼算法引擎,返回一個句 柄,所有使用相同Engine的模塊線程都需要單獨(dú)的句柄,來確定線程的安全;
(2)使用videoDecodeAlgCreate ()創(chuàng)建解碼算法,這包括a.使用VIDDEC— create ()里的靜態(tài)參數(shù)來創(chuàng)建"H. 264dec"視頻解碼器;b.使用VIDDEC_control ()和XDM_ GETSTATUS來設(shè)置動態(tài)的視頻解碼參數(shù),查詢編解碼緩沖區(qū)大?。?br>
(3)使用Memory—contigAlloc()函數(shù)為解碼緩存分配一段連續(xù)的內(nèi)存空間;
(4)使用VIDDEC_process ()函數(shù)調(diào)用H. 264算法對數(shù)據(jù)進(jìn)行解碼。
對于解碼好的視頻幀,通過FifoUtil_put ()函數(shù),發(fā)送解碼好的視頻幀給顯示線 程,顯示線程通過FifoUtil—get()函數(shù)收到視頻解碼幀,然后用initDispaly-Device()函 數(shù)來初始化FBDev (Frame Buffer Device)顯示設(shè)備驅(qū)動,幀緩沖設(shè)備FBDev用來訪問視頻 輸入輸出硬件,是視頻硬件的一個抽象表示,這樣應(yīng)用程序不用了解任務(wù)低層次的接口 。顯 示線程選擇幀緩沖設(shè)備/dev/fh/3進(jìn)行視頻的顯示播放。視頻處理后端系統(tǒng)系統(tǒng)(VPBE) 實(shí)現(xiàn)對視頻流信號進(jìn)行顯示、輸出等功能。流程如圖5所示。 網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)根據(jù)可視電話自身的特點(diǎn),需要傳輸實(shí)時流多媒體數(shù)據(jù),本 發(fā)明選用專為發(fā)送大量音視頻等多媒體數(shù)據(jù)的RTP協(xié)議。對采集到得音視頻數(shù)據(jù),壓縮 后寫入FIFO緩沖隊(duì)列,進(jìn)行RTP打包,形成RTP流發(fā)送到網(wǎng)絡(luò)中(可選用JRTPLIB庫中 SendPacket()函數(shù)),對方接收到數(shù)據(jù)包后,根據(jù)RTP包頭里的信息進(jìn)行排序處理,送入緩 沖區(qū)。等待解碼處理。 在處理RTP數(shù)據(jù)包的時候,采用緩沖技術(shù)來處理數(shù)據(jù)。數(shù)據(jù)在網(wǎng)絡(luò)傳輸中可以分 解成若干個RTP數(shù)據(jù)包,由于網(wǎng)絡(luò)的動態(tài)變化,每個包的傳輸路徑和到達(dá)接收端的時間都 可能不一樣,因此采用緩沖技術(shù)來彌補(bǔ)延遲和變化的影響。接收端將接收到的RTP數(shù)據(jù)包 解包后放入緩沖區(qū),根據(jù)RTP包頭中的序列號將數(shù)據(jù)重新排列,送入解碼緩沖區(qū)進(jìn)行實(shí)時 解碼。
權(quán)利要求
一種用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法,其特征是利用TI公司推出的DM6446DVEVM開發(fā)套件為硬件平臺,對音頻和視頻數(shù)據(jù)分別進(jìn)行采集和捕獲,視頻數(shù)據(jù)采用數(shù)字信號處理DSP自帶的高性能的視頻編解碼技術(shù)H.264視頻編解碼,音頻則采用軟編解碼方式,直接調(diào)用語音壓縮標(biāo)準(zhǔn)G.711編解碼算法,由微處理器ARM來處理;音視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸采用用戶數(shù)據(jù)報(bào)協(xié)議作為傳輸層協(xié)議,而在應(yīng)用層進(jìn)行實(shí)時傳送協(xié)議打包,具體實(shí)現(xiàn)方法如下步驟1).進(jìn)行需求分析,對網(wǎng)絡(luò)機(jī)頂盒之間的可視電話系統(tǒng)進(jìn)行分析,并對劃分的模塊和功能的需求進(jìn)行設(shè)計(jì);步驟2).按照步驟1設(shè)計(jì)的各功能模塊,熟悉各模塊之間的交互流程,對各個模塊之間的邏輯關(guān)系和功能進(jìn)行說明;步驟3).按照步驟2的功能說明,首先設(shè)計(jì)與實(shí)現(xiàn)人機(jī)交互的人性化界面,采用MiniGUI在Linux系統(tǒng)下界面編程,在可視電話系統(tǒng)運(yùn)行之后,會彈出可視化界面,包括IP地址輸入按鈕、設(shè)置按鈕和關(guān)閉按鈕,點(diǎn)擊以上按鈕,會彈出相應(yīng)的對話框,供用戶簡捷的操作,步驟4).利用硬件平臺自帶的DVEVM開發(fā)套件,可以對音、視頻數(shù)據(jù)進(jìn)行采集和捕獲,并且還能通過數(shù)字信號處理DSP對音、視頻進(jìn)行編解碼,音頻支持語音壓縮標(biāo)準(zhǔn)G.711編解碼算法,視頻支持視頻、音頻和多媒體編碼標(biāo)準(zhǔn)MPEG4和高性能的視頻編解碼技術(shù)H.264兩種編解碼算法;考慮到數(shù)字信號處理DSP的高負(fù)荷問題,此系統(tǒng)音頻不用自帶的編解碼引擎,而是直接在程序中加入編解碼算法代碼,采用微處理器來處理,視頻則采用自帶的編解碼引擎,由此微處理器和數(shù)字信號處理DSP資源占用均衡,步驟5).各模塊設(shè)計(jì)完成后,系統(tǒng)的運(yùn)行主要是多個線程的交互和執(zhí)行,可視電話系統(tǒng)運(yùn)行后,首先運(yùn)行網(wǎng)絡(luò)監(jiān)聽回調(diào)函數(shù)和控制線程,控制線程主要負(fù)責(zé)用戶界面,不停的查看遙控器是否有命令輸入;用戶輸入對方IP地址請求對方應(yīng)答,得到返回的接受消息后,運(yùn)行音頻線程、播放線程、視頻線程、捕獲線程、顯示線程和網(wǎng)絡(luò)傳輸線程,以此來進(jìn)行雙方音、視頻的正常交互,步驟6).網(wǎng)絡(luò)傳輸流媒體數(shù)據(jù)是可視電話系統(tǒng)中必不可少的一個重要環(huán)節(jié),考慮到音、視頻所要求的實(shí)時傳輸性,雖然采用傳輸控制協(xié)議傳輸具有高可靠性,但是由于三步握手帶來的延遲和過多交互數(shù)據(jù)使其不適合發(fā)送大量的實(shí)時視頻數(shù)據(jù),在這種情況下,選用專為發(fā)送大量音、視頻等多媒體數(shù)據(jù)的實(shí)時傳送協(xié)議,實(shí)時傳送協(xié)議由數(shù)據(jù)協(xié)議和控制協(xié)議兩部分組成,實(shí)時傳送協(xié)議通常使用用戶數(shù)據(jù)報(bào)傳送數(shù)據(jù),控制協(xié)議用來支持其協(xié)議的功能,考慮使用一些開放源代碼的實(shí)時傳送協(xié)議庫。
全文摘要
一種用于網(wǎng)絡(luò)電視機(jī)頂盒之間的可視電話系統(tǒng)的實(shí)現(xiàn)方法,是一種在網(wǎng)絡(luò)電視(IPTV)機(jī)頂盒上開發(fā)可視電話系統(tǒng)的方法,此方案主要是擴(kuò)展網(wǎng)絡(luò)電視機(jī)頂盒的增值業(yè)務(wù)功能,所依賴的硬件平臺是TI公司提供的面向視頻開發(fā)領(lǐng)域的達(dá)芬奇平臺(DaVinci)TMS320DM6446。利用TI公司推出的DM6446DVEVM開發(fā)套件為硬件平臺,對音頻和視頻數(shù)據(jù)分別進(jìn)行采集和捕獲,視頻數(shù)據(jù)采用數(shù)字信號處理DSP自帶的高性能的視頻編解碼技術(shù)H.264視頻編解碼,音頻則采用軟編解碼方式,直接調(diào)用語音壓縮標(biāo)準(zhǔn)G.711編解碼算法,由微處理器ARM來處理;音視頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸采用用戶數(shù)據(jù)報(bào)協(xié)議作為傳輸層協(xié)議,而在應(yīng)用層進(jìn)行實(shí)時傳送協(xié)議打包。
文檔編號H04N7/26GK101742218SQ20101001822
公開日2010年6月16日 申請日期2010年1月19日 優(yōu)先權(quán)日2010年1月19日
發(fā)明者吳敏, 徐鶴, 支萌萌, 李致遠(yuǎn), 王汝傳, 薛鵬, 邵星, 韓志杰 申請人:南京郵電大學(xué)