《電視原理》課件1第9章_第1頁
《電視原理》課件1第9章_第2頁
《電視原理》課件1第9章_第3頁
《電視原理》課件1第9章_第4頁
《電視原理》課件1第9章_第5頁
已閱讀5頁,還剩124頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

9.1數(shù)字電視的嵌入式系統(tǒng)設(shè)計9.2數(shù)字電視的開發(fā)環(huán)境與流程

9.3數(shù)字電視的多媒體功能開發(fā)9.4數(shù)字電視的網(wǎng)絡(luò)功能開發(fā)9.5視頻編解碼器設(shè)計實例 9.6完全高清1080p片上數(shù)字電視系統(tǒng)

數(shù)字電視的發(fā)展與普及很大程度上依賴現(xiàn)代顯示技術(shù)、嵌入式系統(tǒng)SoC的成熟,數(shù)字電視是在模擬電視的基礎(chǔ)上兼容并集成多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)的結(jié)果。

數(shù)字電視的體系結(jié)構(gòu)隨著產(chǎn)品的應(yīng)用與普及而逐步完善,從早期的功能單元集成,到目前的DTV單元與嵌入式SoC系統(tǒng)集成,未來將向著單一芯片系統(tǒng)架構(gòu)發(fā)展。數(shù)字電視結(jié)構(gòu)框架如圖9.1所示。9.1數(shù)字電視的嵌入式系統(tǒng)設(shè)計圖9.1數(shù)字電視結(jié)構(gòu)框架

數(shù)字電視的設(shè)計與開發(fā)以DTV硬件單元為基礎(chǔ),融合嵌入式系統(tǒng)SoC、多媒體信息處理、數(shù)字網(wǎng)絡(luò)智能傳輸,形成數(shù)字電視的產(chǎn)品架構(gòu)方案,如圖9.2所示。圖9.2數(shù)字電視的架構(gòu)方案1.硬件設(shè)計

數(shù)字電視的硬件設(shè)計應(yīng)注重兩點:

①具有功能拓展的足夠空間;

②具有性能提升的延展資源。針對上述要求,選擇適合的核心芯片及設(shè)計架構(gòu)是數(shù)字電視硬件設(shè)計的首要問題。1)核心芯片及設(shè)計架構(gòu)的選擇考慮到數(shù)字電視功能拓展與性能延展的空間和資源需求,核心芯片既可以選擇單芯片架構(gòu),也可以選擇雙芯片架構(gòu)。單芯片架構(gòu)的集成度高,性能優(yōu)異,但功耗引起的芯片散熱問題影響長期運行穩(wěn)定性,雙芯片架構(gòu)具有設(shè)計上的靈活性,在功能與性能上能實現(xiàn)最佳兼顧,設(shè)計與調(diào)試難度較低。

數(shù)字電視開發(fā)平臺框圖如圖9.3所示。圖9.3數(shù)字電視開發(fā)平臺框圖2)硬件功能單元配套設(shè)計數(shù)字電視組成單元由以下三大塊構(gòu)成:(1)圖像顯示單元;(2)信號處理與驅(qū)動核心單元;(3)模擬/數(shù)字電視信號接收與變換單元。各硬件組成單元的配套普遍遵循標準的電器與電子規(guī)范,通過單元組合、結(jié)構(gòu)配合、整機驗證的設(shè)計方法。實現(xiàn)DTV的配套設(shè)計。圖9.4給出了典型的數(shù)字電視硬件配套組成。圖9.4數(shù)字電視硬件配套組成框圖

2.軟件設(shè)計

數(shù)字電視的軟件設(shè)計依托于硬件架構(gòu)的多種形式。軟件設(shè)計的目的就是合理協(xié)調(diào)數(shù)字電視功能與性能的不同需求,通過核心架構(gòu)下的應(yīng)用程序來達到完備效果,形成數(shù)字電視的設(shè)計方案。因此,軟件設(shè)計的核心與精髓就是將實現(xiàn)各項功能的程序模塊按照性能最佳與操控便捷的原則,根據(jù)不同配置進行規(guī)劃并通過程序?qū)崿F(xiàn)。數(shù)字電視軟件設(shè)計流程:確定DTV的架構(gòu)核心芯片IC—確定DTV的信號輸入輸出接口—掌握核心IC的各類寄存器配置—確定DTV各類信號的單元格式—確定DTV的各項功能配置—設(shè)計功能單元程序模塊—確定各程序模塊的完備銜接關(guān)系—形成針對配置需求的程序設(shè)計流程—設(shè)計、調(diào)試、優(yōu)化應(yīng)用程序—下載到核心芯片IC運行。嵌入式Linux程序開發(fā)流程:定制并下載監(jiān)控引導(dǎo)程序Bootloader—定制并下載嵌入式系統(tǒng)內(nèi)核Kernel—設(shè)計并裝載設(shè)備底層驅(qū)動LDK—裁剪并下載文件系統(tǒng)NFS—配置并優(yōu)化系統(tǒng)資源—設(shè)計并下載應(yīng)用程序APP—調(diào)試定型與運行考核。

3.系統(tǒng)集成

數(shù)字電視DTV從電子信息工程的角度看既是硬件與軟件的集成,又是各功能單元的集成,也是設(shè)計理念與實現(xiàn)方法的集成,DTV設(shè)計本質(zhì)上是單元電路設(shè)計與單元程序設(shè)計構(gòu)成的系統(tǒng)集成設(shè)計。數(shù)字電視設(shè)計生產(chǎn)的每一個環(huán)節(jié)都至關(guān)重要,只有各個環(huán)節(jié)相互支撐、密切配合、優(yōu)化配置才能生產(chǎn)出合乎市場需求的產(chǎn)品。

(1)硬件功能單元與單元程序模塊的優(yōu)化集成。(2)系統(tǒng)硬件功能操作流程、數(shù)字視頻信號處理流程與軟件工作流程的系統(tǒng)集成。

數(shù)字電視的多媒體功能開發(fā)是在嵌入式平臺、影像壓縮編碼技術(shù)和流媒體技術(shù)的基礎(chǔ)上進行的,具體的設(shè)計內(nèi)容包括實現(xiàn)影像采集、壓縮編碼、廣播傳輸、影像解碼、實時顯示、自動存儲等功能。9.2數(shù)字電視的開發(fā)環(huán)境與流程1.數(shù)字電視開發(fā)環(huán)境

數(shù)字電視開發(fā)系統(tǒng)硬件包括數(shù)字電視處理電路、ARM嵌入式核心電路和外圍電路;軟件方面,上位機采用VMwareWorkstation作為虛擬機,在虛擬機上運行Fedora?10用以虛擬Linux系統(tǒng)并進行驅(qū)動層與應(yīng)用層的設(shè)計,完成各硬件驅(qū)動的設(shè)計與配置后,在交叉編譯器上對應(yīng)用程序交叉編譯,然后將編譯好的可執(zhí)行文件下載到下位機ARM開發(fā)板上調(diào)試運行。最后完成系統(tǒng)軟硬件整合以及整機性能的測試。系統(tǒng)軟硬件開發(fā)層級結(jié)構(gòu)如圖9.5所示。圖9.5系統(tǒng)軟硬件開發(fā)層級結(jié)構(gòu)圖1)開發(fā)系統(tǒng)硬件設(shè)計方案系統(tǒng)硬件架構(gòu)如圖9.6所示。開發(fā)系統(tǒng)以ARM11處理器S3C6410作為嵌入式硬件核心,負責處理實時影像數(shù)據(jù)流,符合本系統(tǒng)實時影像處理的性能要求。本系統(tǒng)硬件核心由ARM11核心單元和外圍電路單元構(gòu)成,系統(tǒng)硬件設(shè)計方案如圖9.7所示。圖9.6系統(tǒng)硬件架構(gòu)圖圖9.7系統(tǒng)硬件設(shè)計方案框圖2)開發(fā)系統(tǒng)軟件設(shè)計方案系統(tǒng)軟件架構(gòu)如圖9.8所示。數(shù)字電視開發(fā)板上運行的基礎(chǔ)軟件,即系統(tǒng)軟件,其整體設(shè)計思想如下:首先通過后臺進程并采用按鍵控制分別實現(xiàn)基于SMPlayer的mp4影像回放功能以及基于QtGUI圖形界面的各系統(tǒng)功能,包括終端的設(shè)定、影像廣播、影像交互以及MPEG-4影像流的自動存儲功能。系統(tǒng)軟件設(shè)計方案如圖9.9所示。圖9.8系統(tǒng)軟件架構(gòu)圖9.9系統(tǒng)軟件設(shè)計方案在用戶空間分別實現(xiàn)影像采集、影像壓縮編碼、影像傳輸、影像解碼、影像顯示以及影像回放。影像發(fā)送分為廣播發(fā)送與點對點發(fā)送兩種方式,首先通過影像采集單元采集影像數(shù)據(jù),并通過XvidCODEC編碼模塊對影像數(shù)據(jù)壓縮處理后,將流化的MPEG-4影像數(shù)據(jù)作為RTP負載發(fā)送至目的終端;另一方面,將通過IP/UDP/RTP傳輸方式接收到的MPEG-4影像流送入影像解碼單元和顯示單元,并同時完成影像的存儲與回放功能。系統(tǒng)影像廣播與交互的詳細設(shè)計方案如圖9.10所示。圖9.10系統(tǒng)影像廣播與交互軟件設(shè)計方案2.嵌入式Linux開發(fā)環(huán)境的搭建

系統(tǒng)采用“宿主機—目標機”的開發(fā)模式,宿主機又可以稱為上位機,首先在宿主機上搭建嵌入式交叉編譯環(huán)境和NFS網(wǎng)絡(luò)文件系統(tǒng),然后在目標機也即下位機上編譯移植需要的U-Boot、Linux2.6.36版本內(nèi)核以及Qt4.7庫。1)交叉編譯環(huán)境的搭建交叉編譯環(huán)境的搭建步驟如下:

(1)解壓安裝交叉編譯器源碼包arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz,如圖9.11所示。(2)編輯/root/.bashrc文件,把交叉編譯器路徑加入系統(tǒng)環(huán)境變量,如圖9.12所示。(3)為使上面的設(shè)置生效,需要重新登錄,在system菜單執(zhí)行l(wèi)ogoutroot…。(4)在命令行輸入arm-linux-gcc-v,在宿主機上顯示交叉編譯器版本信息,則表明交叉編譯環(huán)境已經(jīng)搭建完成,如圖9.13所示。圖9.11解壓安裝交叉編譯器圖9.12將編譯器路徑加入系統(tǒng)環(huán)境變量圖9.13交叉編譯環(huán)境搭建完成2)NFS環(huán)境的搭建

NFS環(huán)境的搭建步驟如下:

(1)?NFS服務(wù)器的配置。由于受到一些限制端口的制約,因此,首先要關(guān)閉防火墻,執(zhí)行#lokkit–disabled命令,然后執(zhí)行命令#serviceiptablesstop,關(guān)閉service方式。具體操作如圖9.14所示。(2)?NFS服務(wù)器的啟動。執(zhí)行#servicenfsrestart命令即可啟動NFS服務(wù)器,若重啟NFS服務(wù)器的各項操作均顯示“OK”,則表明NFS服務(wù)器啟動成功,如圖9.15所示。(3)目標板掛載到宿主機NFS服務(wù)器。圖9.14關(guān)閉防火墻與service圖9.15NFS服務(wù)器啟動成功3)QtGUI環(huán)境的搭建在宿主機上,執(zhí)行#df–hl命令查看存儲空間大小,找到一個空間較大的目錄用于建立解壓安裝Qt4.7.4的目錄,這里選用的是/home/qt目錄。打開該目錄,步驟如下:(1)解壓。執(zhí)行命令#tarxzvfqt-everywhere-opensource-src-4.7.4.tar.gz。(2)配置。在/home/qt/qt-everywhere-opensource-src-4.7.4目錄下配置Qt4.7.4,如圖9.16所示。(3)編譯。在/home/qt/qt-everywhere-opensource-src-4.7.4下執(zhí)行#make命令。(4)安裝。在上述目錄下執(zhí)行安裝命令#makeinstall。(5)設(shè)置環(huán)境變量。首先,在/etc/profile文件中加入以下語句:pathmunge/home/Qt/qt-everywhere-opensource-src-4.7.4/binpathmunge/home/Qt/qt-everywhere-opensource-src-4.7.4/binafter環(huán)境變量設(shè)置如圖9.17所示。然后,通過#source/etc/profile命令使上述文件生效。最后,通過#qmake–v查看Qt的版本信息,若在宿主機中打印如圖9.18所示的信息,則表示宿主機的Qt環(huán)境生效。

圖9.16配置Qt4.7.4圖9.17設(shè)置Qt4.7.4環(huán)境變量圖9.18查看Qt4.7.4的安裝及版本信息綜上所述,宿主機的QtGUI開發(fā)環(huán)境已搭建完成。目標板Qt庫移植的具體步驟如下:(1)打包下載。將宿主機編譯好的打包文件qt.tgz下載到目標板中。(2)解壓。在目標板的/home目錄下執(zhí)行#tarxvzfqt.tgz命令,解壓qt.tgz文件,并保證ARM板有足夠的解壓空間。

(3)設(shè)置Qt4.7環(huán)境變量。在/bin目錄下編寫腳本文件setqt4env,如圖9.19所示。

圖9.19setqt4env腳本文件3.Linux系統(tǒng)硬件驅(qū)動設(shè)計與移植

1)按鍵驅(qū)動設(shè)計設(shè)備驅(qū)動與底層硬件密切相關(guān)。在應(yīng)用層,硬件設(shè)備被看做設(shè)備文件,用戶進程就是通過這個設(shè)備文件實現(xiàn)對真正硬件的操作。操作系統(tǒng)可以像操作普通文件那樣,通過open()、close()、read()、write()以及ioctl()系統(tǒng)調(diào)用對硬件設(shè)備進行打開、關(guān)閉、讀/寫及控制操作。驅(qū)動設(shè)計的層次結(jié)構(gòu)圖如圖9.20所示。

圖9.20驅(qū)動設(shè)計層次結(jié)構(gòu)圖在按鍵的驅(qū)動程序中,首先,定義一個結(jié)構(gòu)體類型,包括三個域;其次,定義該類型的結(jié)構(gòu)體數(shù)組,然后,創(chuàng)建一個等待隊列,并定義一個靜態(tài)全局中斷標志變量;采用file_operations類型的結(jié)構(gòu)體變量dev_fops存儲內(nèi)核的驅(qū)動模塊對設(shè)備操作的函數(shù)指針;為了增加程序的可讀性和可移植性,這里將設(shè)備名“mybuttons”定義為宏;在本按鍵驅(qū)動程序的最后,定義了模塊加載函數(shù)和模塊卸載函數(shù)。編寫好驅(qū)動源碼后,將其復(fù)制到/home/linux-2.6.36/drivers/char/目錄下,然后修改該目錄下的Kconfig文件,加入相應(yīng)語句;保存退出后即可完成在Kconfig文件中添加按鍵驅(qū)動的編譯配置選項這一操作。底板按鍵的驅(qū)動配置如圖9.21所示。圖9.21按鍵驅(qū)動配置2)攝像頭驅(qū)動的配置與移植具體的步驟如下:

(1)?USB驅(qū)動配置。在DeviceDrivers→USBsupport頁面下,作如圖9.22所示的配置即選擇了系統(tǒng)內(nèi)核對USB主控制器的支持。(2)?UVC驅(qū)動配置,如圖9.23所示。(3)??V4L驅(qū)動配置。進入DeviceDrivers→Multimediasupport界面后,按空格鍵選中VideoForLinux,即選擇了內(nèi)核對V4L的支持,如圖9.24所示。圖9.22USB驅(qū)動配置圖9.23UVC驅(qū)動配置圖9.24V4L驅(qū)動配置經(jīng)過以上配置并編譯好內(nèi)核燒寫到ARM板后,插上該攝像頭,在SecureCRT串口終端即可發(fā)現(xiàn)該USB設(shè)備并看到設(shè)備ID為0ac8:3430,表明它是UVC系列攝像頭,如圖9.25所示。圖9.25攝像頭驅(qū)動成功3)Wi-Fi模塊驅(qū)動的配置與移植本系統(tǒng)采用的無線模塊為TendaW541UV2.0無線網(wǎng)卡。對于TendaW541UV2.0無線網(wǎng)卡的驅(qū)動需要內(nèi)核支持RalinkRT2800芯片組以及802.11g協(xié)議。下面將介紹如何通過內(nèi)核配置工具menuconfig修改該模塊在內(nèi)核中的驅(qū)動配置,然后編譯動態(tài)模塊并將其下載到ARM板中。

步驟如下:(1)配置編譯內(nèi)核。①配置Networkingsupport→Wireless→GenericIEEE802.11NetworkingStack(mac80211),如圖9.26所示。②在DeviceDrivers→Networkdevicesupport→WirelessLAN→Ralinkdriversupport下,選擇Ralinkrt2800(USB)support(EXPERIMENTAL),如圖9.27所示。(2)將編譯好的動態(tài)模塊復(fù)制到ARM板根文件系統(tǒng)/lib/modules/2.6.36的相應(yīng)目錄下,并完成動態(tài)加載。為避免每次開機啟動后加載各模塊的重復(fù)操作,直接將其寫入到腳本“w541u”中,并在開機啟動腳本中加入“./bin/w541u”,得到如圖9.28所示的信息,則表明支持無線網(wǎng)卡的各動態(tài)模塊加載完成。

(3)執(zhí)行#iwconfigwlan0命令,在串口終端出現(xiàn)了無線局域網(wǎng)的接口,并打印出如圖9.29所示的信息,則表明系統(tǒng)支持該模塊。圖9.28各動態(tài)模塊加載完成圖9.29無線網(wǎng)卡驅(qū)動成功系統(tǒng)初始化完成后,需配置無線網(wǎng)卡的工作模式、IP地址等參數(shù)以使該模塊在無線環(huán)境下正常工作。局域無線網(wǎng)絡(luò)環(huán)境的配置分為以下三個步驟:(1)配置無線網(wǎng)卡參數(shù)。(2)連接到Ad-hoc模式下essid為“haha”的對等網(wǎng)絡(luò)。執(zhí)行#iwconfigwlan0essidhaha命令將該無線網(wǎng)卡連接到essid為“haha”的對等網(wǎng)絡(luò)上,從圖9.30可以看到已經(jīng)產(chǎn)生接入點。

(3)?ping對等網(wǎng)絡(luò)的IP地址。

如圖9.31所示,表明無線網(wǎng)絡(luò)環(huán)境搭建成功。圖9.30連接到對等網(wǎng)絡(luò)圖9.31局域無線網(wǎng)絡(luò)環(huán)境搭建完成9.3數(shù)字電視的多媒體功能開發(fā)1.多媒體數(shù)據(jù)的解碼

為提高Wi-Fi環(huán)境下影像信息傳輸?shù)膶崟r性和高效性,需對原始影像進行壓縮編碼處理。這里,采用MPEG-4作為系統(tǒng)的影像壓縮標準,Xvid為MPEG-4的軟件編解碼平臺。1)MPEG-4標準

MPEG-4(MovingPictureExpertsGroups)壓縮編碼標準是基于從場景中抽取的單獨物理對象的一種編解碼方式,幀間處理機制是MPEG-4壓縮編碼標準的一個特色。根據(jù)幀的相關(guān)性和復(fù)雜程度將一個幀組劃分為I幀、P幀和B幀。一個完整視頻流的層次結(jié)構(gòu)由上至下依次是:視頻段(VS)、視頻對象(VO)、視頻對象層(VOL)以及視頻對象平面(VOP)。完整視頻流的層次結(jié)構(gòu)如圖9.32所示。

MPEG-4碼流的I幀頭部占用16?B,非關(guān)鍵幀(P幀和B幀)的幀頭占用8?B,幀頭格式如圖9.33和圖9.34所示。圖9.32完整視頻流的層次結(jié)構(gòu)圖9.33關(guān)鍵幀幀頭格式圖9.34非關(guān)鍵幀幀頭格式2)XvidCODEC的移植編譯移植xvidcore1.1.3的步驟如下:(1)解壓源代碼xvidcore1.1.3.tar.bz2,執(zhí)行命令#tarjxvfxvidcore1.1.3.tar.bz2。(2)配置xvidcore1.1.3,如圖9.35所示。執(zhí)行命令#cd/home/xvidcore1.1.3/build/generic進入Xvid配置目錄(3)編譯安裝。注意,如果直接編譯會出現(xiàn)如圖9.36所示的錯誤。若要修改configure文件,則將使用這個選項的語句注釋掉即可,如圖9.37所示。編譯安裝完成后的顯示如圖9.38所示。(4)將編譯生成的動態(tài)鏈接庫文件libxvidcore.so.4.1復(fù)制到ARM板的/usr/lib目錄下。圖9.35配置xvidcore-1.1.3圖9.36編譯xvidcore-1.1.3報錯圖9.37修改configure文件圖9.38編譯安裝完成3)影像編碼XvidCODEC編碼流程如圖9.39所示。

(1)全局初始化通過intxvid_global(NULL,XVID_GBL_INIT,&xvid_gbl_init,NULL)函數(shù)可以實現(xiàn)全局初始化。

(2)創(chuàng)建編碼實例

(3)影像編碼首先初始化碼流結(jié)構(gòu),然后在輸入碼流中獲取當前幀,并設(shè)置幀編碼參數(shù),最后判斷編碼幀的類型,分別進行I幀和P幀的幀內(nèi)編碼。編碼一幀影像的流程如圖9.40所示。圖9.39Xvid編碼流程圖9.40編碼一幀影像流程幀內(nèi)編碼通過調(diào)用函數(shù)staticintFrameCodeI(Encoder*pEnc,Bitstream*bs,uint32_t*pBits)實現(xiàn)。幀內(nèi)編碼流程圖如圖9.41所示。首先,設(shè)置當前幀類型為I-VOP,并設(shè)置宏塊的量化系數(shù),將VOL和VOP頭信息寫入碼流。然后,依次遍歷各宏塊進行編碼。

(4)銷毀編碼器銷毀編碼器可通過調(diào)用xvid_encore()函數(shù)實現(xiàn),并將此函數(shù)的第一個參數(shù)handle設(shè)置為創(chuàng)建Xvid編碼實例時所獲取的句柄enc_handle,opt設(shè)為XVID_ENC_DESTROY。圖9.41幀內(nèi)編碼流程圖4)影像解碼Xvid解碼流程如圖9.42所示。

(1)全局初始化全局初始化可通過調(diào)用xvid_global(NULL,0,&xvid_gbl_init,NULL)函數(shù)來實現(xiàn)。

(2)創(chuàng)建解碼實例

(3)影像解碼首先初始化xvid_dec_frame_t結(jié)構(gòu)體變量,并設(shè)置版本信息;其次設(shè)置待解碼的碼流參數(shù);然后設(shè)置解碼輸出參數(shù),最后調(diào)用xvid_decore()解碼一幀影像,進入解碼循環(huán),不斷解碼影像并調(diào)整解碼輸出緩沖區(qū)的指針,從而得到原始影像數(shù)據(jù)。(4)銷毀解碼實例銷毀解碼實例可由函數(shù)staticintdec_stop()實現(xiàn),并在其中調(diào)用xvid_decore()函數(shù)。2.多媒體信息的傳輸

系統(tǒng)影像的廣播傳輸與交互傳輸是基于Wi-Fi局域無線技術(shù)和流媒體協(xié)議實現(xiàn)的,將MPEG-4數(shù)據(jù)流封裝在RTP報頭、UDP報頭以及IP報頭中,經(jīng)過網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層的封裝,并在網(wǎng)絡(luò)中傳輸。1)RTP協(xié)議RTP協(xié)議是由實時傳輸協(xié)議(RTP,Real-timeTransportProtocol)與實時傳輸控制協(xié)議(RTCP,Real-timeTransportControlProtocol)這兩部分所組成的。

RTP數(shù)據(jù)包由報頭(Header)和有效載荷(Payload)兩部分組成。RTP報頭格式如圖9.43所示?;贗P/UDP/RTP傳輸方式,數(shù)據(jù)鏈路層的RTP負載包格式如圖9.44所示。圖9.43RTP報頭格式圖9.44RTP負載包格式2)JRTPLIB庫的移植為實現(xiàn)在arm-linux上MPEG-4影像流基于RTP協(xié)議的實時傳輸,本系統(tǒng)選用了JRTPLIB庫jrtplib3.7.1實現(xiàn)。移植步驟如下:

(1)解壓JRTPLIB庫源代碼jrtplib-3.7.1.tar.gz,執(zhí)行命令#tarxvzfjrtplib-3.7.1.tar.gz。(2)配置jrtplib-3.7.1。執(zhí)行命令#cd/home/jrtplib-3.7.1,然后進入JRTPLIB庫配置目錄。

(3)編譯安裝。在/home/rtp目錄下執(zhí)行#make命令,以對jrtplib-3.7.1進行編譯。如果直接編譯,會出現(xiàn)如圖9.45所示的錯誤。

這是由于在這兩個文件中找不到memcpy()函數(shù)的聲明,因此,在這兩個文件中包含定義該函數(shù)的頭文件#include<string.h>。最后,執(zhí)行命令#make&&makeinstall,編譯并安裝jrtplib-3.7.1,編譯安裝完成后的界面如圖9.46所示。

(4)將編譯生成的庫文件libjrtp-3.7.1.so復(fù)制到ARM板的/usr/lib目錄下,完成移植。

圖9.45編譯jrtplib-3.7.1時報錯圖9.46JRTPLIB庫編譯安裝完成3)MPEG-4影像流的RTP封裝與傳輸采用RTP協(xié)議傳輸時,首先要將原始影像壓縮編碼得到的MPEG-4影像流打包成RTP數(shù)據(jù)包,然后再通過網(wǎng)絡(luò)進行傳輸。將MPEG-4影像流以VOP為單位進行RTP打包封裝。MPEG-4影像流的RTP包封裝流程圖如圖9.47所示。按照上述封裝格式,在影像發(fā)送終端,首先配置RTP報頭參數(shù),然后將XvidCODEC編碼輸出的MPEG-4影像流裝入RTP報文的負載段;同時,不斷地接收RTCP包,通過提取的QoS控制信息對其參數(shù)進行動態(tài)調(diào)整。基于RTP/RTCP協(xié)議的MPEG-4影像流傳輸如圖9.48所示。

圖9.47MPEG-4流的RTP包封裝流程圖9.48基于RTP/RTCP的MPEG-4影像流傳輸4)影像發(fā)送基于RTP協(xié)議的流媒體數(shù)據(jù)傳輸如圖9.49所示?;赗TP協(xié)議的影像發(fā)送分為以下幾步:獲取接收端的IP和端口號、創(chuàng)建RTP會話、指定RTP會話的接收端、設(shè)置RTP會話默認參數(shù)、發(fā)送RTP數(shù)據(jù)。

圖9.49基于RTP協(xié)議的流媒體數(shù)據(jù)傳輸5)影像接收本系統(tǒng)采用RTP協(xié)議實現(xiàn)影像的接收,其具體的方法如下:首先,調(diào)用新創(chuàng)建的接收實例的sess_receive.Create()消息,用以創(chuàng)建RTP會話;其次,設(shè)置接收模式為RECEIVEMODE_ACCEPTSOME,并調(diào)用AddAcceptList()方法添加被接收的發(fā)送者列表,調(diào)用Poll()方法接收RTP/RTCP包;最后,遍歷所有的攜帶RTP數(shù)據(jù)的流,并從中抽取RTP數(shù)據(jù)包,將其負載存儲到MPEG-4影像接收緩沖區(qū),影像接收完成后將上述RTP包刪除?;赗TP協(xié)議的影像接收流程如圖9.50所示。圖9.50基于RTP協(xié)議的影像接收流程3.多媒體信息的顯示

1)基于Qt的GUI圖形界面設(shè)計在基于QtGUI的ARM11終端圖形界面設(shè)計中定義四個類,分別用以實現(xiàn)系統(tǒng)功能選擇、終端的設(shè)定、影像廣播、影像交互功能。2)功能選擇主界面各圖形子界面的設(shè)計步驟基本一致,如圖9.51所示。具體的實現(xiàn)方法如下:對于前三個按鈕,將其SIGNAL(clicked())信號連接到主界面隱藏this->hide()的槽函數(shù)上,并將按鈕對應(yīng)子界面對象的SIGNAL(t())信號連接到該界面的顯示this->show()槽函數(shù)上。對于最后一個退出按鈕,將SIGNAL(clicked())信號與SLOT(quit())槽函數(shù)相連,即退出圖形界面。圖9.51基于QtGUI的圖形界面設(shè)計步驟3)終端設(shè)定子界面終端設(shè)定即網(wǎng)段的設(shè)定,使得各接收終端可以完成同一網(wǎng)段內(nèi)廣播終端廣播影像的接收以及與廣播終端的影像交互功能。該子界面的設(shè)計步驟和功能主界面大體相同,界面中包括網(wǎng)段設(shè)置的下拉列表框和返回主界面按鈕兩個控件。4)影像廣播子界面廣播終端的影像廣播子界面類Three設(shè)計了三個按鈕:QPushButton*bcast_but、*stop_but和*ret_but,分別實現(xiàn)廣播開始、廣播停止以及返回主界面。接收終端與廣播終端影像廣播子界面的實現(xiàn)方法大體相同。二者的不同之處就在于廣播接收功能的實現(xiàn)廣播發(fā)送與廣播接收線程流程如圖9.52所示。影像顯示的設(shè)計思想是將解碼器輸出的原始影像保存為單個的.bmp格式圖片,在QtGUI界面中采用定時器事件完成。圖9.52廣播發(fā)送線程與廣播接收線程流程圖5)影像交互子界面在廣播端該子界面中實現(xiàn)了終端檢索功能。首先,在接收終端定義了4個QPushButton類的按鈕,設(shè)置各個按鈕的屬性,并將按鈕的圖標設(shè)置成與各個接收終端對應(yīng)的灰色圖標;其次,分別將各個按鈕的SIGNAL(clicked())點擊信號與影像發(fā)送槽函數(shù)SLOT(sendstart())、影像接收槽函數(shù)SLOT(recvstart())及定時器槽函數(shù)SLOT(timer())連接;最后,基于ARM板上的按鍵實現(xiàn)檢索功能。基于按鍵的檢索功能實現(xiàn)流程如圖9.53所示。圖9.53基于按鍵的檢索功能實現(xiàn)流程圖6)影像回放各接收終端將接收到的MPEG-4影像流存儲為.mp4格式的文件,再在ARM板上移植SMPlayer,從而實現(xiàn)對存儲影像的回放。SMPlayer是一款開源的軟件,它提供了視/音頻流的播放功能。9.4數(shù)字電視的網(wǎng)絡(luò)開發(fā)功能1.家庭Wi-Fi無線網(wǎng)絡(luò)

1)無線網(wǎng)卡的驅(qū)動本系統(tǒng)選用騰達公司的TendaW541UV2.0無線網(wǎng)卡作為Wi-Fi模塊,通過對它的驅(qū)動和配置來組建無線Wi-Fi局域網(wǎng)絡(luò)。要驅(qū)動TendaW541UV2.0無線網(wǎng)卡,就要配置Linux內(nèi)核,使它支持相應(yīng)的Wi-Fi硬件驅(qū)動和802.11無線網(wǎng)絡(luò)協(xié)議棧。詳細步驟如下:

(1)進入Linux內(nèi)核源碼目錄,執(zhí)行makemenuconfig命令開始配置內(nèi)核。然后進入DeviceDriver→Networkdevicesupport→WirelessLAN→Ralinkdriversupport界面,將Ralinkdriversupport界面下的全部驅(qū)動都加載到內(nèi)核中,這樣就可以支持TendaW541UV2.0硬件了。配置界面圖9.54所示。

(2)進入Networkingsupport→Wireless界面,選中GenericIEEE802.11NetworkingStack(mac80211),這樣就使內(nèi)核支持802.11無線網(wǎng)絡(luò)協(xié)議棧。配置界面如圖9.55所示。圖9.54Wi-Fi硬件驅(qū)動的配置界面圖9.55802.11網(wǎng)絡(luò)協(xié)議棧的配置界面要想組建一個Wi-Fi無線網(wǎng)絡(luò),需要對無線網(wǎng)卡進行Wi-Fi的配置。Linux下常用的Wi-Fi用戶層配置工具是iwconfig,使用iwconfig工具之前要進行移植,移植成功后在串口終端輸入iwconfig命令,會打印出圖9.56所示的信息,說明已檢測到了無線網(wǎng)卡,就可以進行Wi-Fi的配置了。圖9.56檢測無線網(wǎng)卡圖2)配置無線網(wǎng)卡組建Wi-Fi局域網(wǎng)用iwconfig進行Wi-Fi配置的方法有多種,下面介紹本設(shè)計用到的工作模式和網(wǎng)絡(luò)名稱的配置。

(1)設(shè)置無線網(wǎng)卡的工作模式。無線網(wǎng)卡有四種工作模式。本設(shè)計選用的是Ad-hoc模式,設(shè)置Ad-hoc工作模式的命令如下: iwconfigwlan0modead-hoc(2)設(shè)置Wi-Fi網(wǎng)絡(luò)的網(wǎng)絡(luò)名稱。用網(wǎng)絡(luò)名來區(qū)分不同的網(wǎng)絡(luò),只有處在同一個無線網(wǎng)絡(luò)內(nèi)的多個終端之間才可以通信,這樣可以防止不同的網(wǎng)絡(luò)之間相互干擾。設(shè)置網(wǎng)絡(luò)名稱為wenzi的命令如下:iwconfigwlan0essidwenzi(3)配置網(wǎng)絡(luò)終端的IP地址。無線網(wǎng)絡(luò)中的每一個網(wǎng)絡(luò)終端都要有一個IP地址,用IP地址的最后8位區(qū)分不同的終端。配置IP地址使用Linux自帶的ifconfig命令,使用方法如下:終端A:ifconfigwlan0192.168.2.3終端B:ifconfigwlan0192.168.2.5配置完成后,終端A和終端B之間就可以用ping命令檢測它們之間的連通狀態(tài)了。2.三網(wǎng)融合網(wǎng)絡(luò)

三網(wǎng)融合在技術(shù)上已經(jīng)成熟,發(fā)達國家已經(jīng)大量普及這一網(wǎng)絡(luò)技術(shù),起到了很好的使用效果。其最大的優(yōu)勢是節(jié)省了大量網(wǎng)絡(luò)設(shè)施和布線,解決了網(wǎng)絡(luò)帶寬和穩(wěn)定性的問題。三網(wǎng)融合在數(shù)字電視的結(jié)構(gòu)設(shè)計上只需加入一廣義的調(diào)制解調(diào)模塊(Modem),分別建立數(shù)字電視信息鏈路、固定電話信息鏈路、寬帶網(wǎng)絡(luò)信息鏈路,根據(jù)功能選擇激活某一鏈路,實現(xiàn)相應(yīng)的信息傳輸顯示與交互功能。3.移動網(wǎng)絡(luò)電視

隨著移動通信技術(shù)的飛速發(fā)展,3G、4G甚至5G網(wǎng)絡(luò)相繼出現(xiàn),使得基于移動網(wǎng)絡(luò)信息傳輸下的移動網(wǎng)絡(luò)電視成為可能。由于數(shù)字電視已實現(xiàn)高度模塊化結(jié)構(gòu),顯示單元模塊、信號處理模塊、網(wǎng)絡(luò)通信模塊與上述基于移動網(wǎng)絡(luò)的移動網(wǎng)絡(luò)電視終端具有結(jié)構(gòu)上的一致性,因此,設(shè)計上可以相互借鑒,只要根據(jù)市場需求定位來改變設(shè)計結(jié)構(gòu)與尺寸,在電路上根據(jù)固定應(yīng)用還是移動應(yīng)用選擇功耗等級和信號傳輸方式(有線、無線、移動),就可以確定產(chǎn)品系統(tǒng)架構(gòu),由此設(shè)計出相應(yīng)的產(chǎn)品。視頻編解碼器的設(shè)計與目標平臺、傳輸環(huán)境和用戶使用的環(huán)境相關(guān)。

1.視頻編解碼器的接口設(shè)計

圖9.57顯示了一個視頻編碼器和一個視頻解碼器的主要接口。

2.視頻輸入/輸出設(shè)計

作為編碼輸入和解碼輸出的未壓縮的視頻有很多種選擇。9.5視頻編解碼器設(shè)計實例圖9.57視頻編碼器和視頻解碼器接口

(1)?YUY2(4∶2∶2):這種格式的數(shù)據(jù)結(jié)構(gòu)如圖9.58所示。

(2)?YV12(4∶2∶0)(見圖9.59):當前幀的亮度分量連續(xù)存儲,接下來是CR分量,再接著是CB分量。CR和CB分量在水平和垂直方向上的分辨率都只有亮度分量的一半。原始圖像中的每個彩色像素平均需要12比特(1個Y分量,1/4個CB分量,1/4個CR分量),因此得名“YV12”。圖9.60顯示了一個按此格式存儲的幀,先是Y分量數(shù)據(jù),接著是長寬各半的CB和CR分量數(shù)據(jù)。

圖9.58YUY2格式圖9.59YV12格式圖9.60YV12格式數(shù)據(jù)示例如圖9.61所示,讀取新的輸入圖像,讀取在運動估計和運動補償中作為參考的圖像,寫重構(gòu)的圖像。這意味著編碼器的輸入端,對于ITU-R601的視頻流,內(nèi)存帶寬至少需要3×216=648Mb/s。如果允許在運動估計和運動補償中采用兩個或兩個以上的參考幀(例如,在MPEG-2中的B幀編碼),則需要更大的帶寬。圖9.61編碼器輸入的存儲存取

3.編碼數(shù)據(jù)的輸入/輸出設(shè)計

編碼后的視頻數(shù)據(jù)是描述了編碼視頻的各種語法元素(例如文件頭、變換后的相關(guān)系數(shù)和運動向量)的連續(xù)比特流。

圖9.62顯示了在采用H.263、MPEG-4編碼時一幀圖像中各塊組的位置,編碼單元(這種情況下就是塊組)對應(yīng)當前幀的特定位置。但是由于編碼的內(nèi)容不一樣,每個編碼單元編碼所用的位數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論