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

下載本文檔

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

文檔簡(jiǎn)介

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

9.3數(shù)字電視的多媒體功能開發(fā)9.4數(shù)字電視的網(wǎng)絡(luò)功能開發(fā)9.5視頻編解碼器設(shè)計(jì)實(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)集成,未來(lái)將向著單一芯片系統(tǒng)架構(gòu)發(fā)展。數(shù)字電視結(jié)構(gòu)框架如圖9.1所示。9.1數(shù)字電視的嵌入式系統(tǒng)設(shè)計(jì)圖9.1數(shù)字電視結(jié)構(gòu)框架

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

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

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

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

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

2.軟件設(shè)計(jì)

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

3.系統(tǒng)集成

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

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

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

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

系統(tǒng)采用“宿主機(jī)—目標(biāo)機(jī)”的開發(fā)模式,宿主機(jī)又可以稱為上位機(jī),首先在宿主機(jī)上搭建嵌入式交叉編譯環(huán)境和NFS網(wǎng)絡(luò)文件系統(tǒng),然后在目標(biāo)機(jī)也即下位機(jī)上編譯移植需要的U-Boot、Linux2.6.36版本內(nèi)核以及Qt4.7庫(kù)。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,在宿主機(jī)上顯示交叉編譯器版本信息,則表明交叉編譯環(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ù)器的啟動(dòng)。執(zhí)行#servicenfsrestart命令即可啟動(dòng)NFS服務(wù)器,若重啟NFS服務(wù)器的各項(xiàng)操作均顯示“OK”,則表明NFS服務(wù)器啟動(dòng)成功,如圖9.15所示。(3)目標(biāo)板掛載到宿主機(jī)NFS服務(wù)器。圖9.14關(guān)閉防火墻與service圖9.15NFS服務(wù)器啟動(dòng)成功3)QtGUI環(huán)境的搭建在宿主機(jī)上,執(zhí)行#df–hl命令查看存儲(chǔ)空間大小,找到一個(gè)空間較大的目錄用于建立解壓安裝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文件中加入以下語(yǔ)句: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所示。然后,通過(guò)#source/etc/profile命令使上述文件生效。最后,通過(guò)#qmake–v查看Qt的版本信息,若在宿主機(jī)中打印如圖9.18所示的信息,則表示宿主機(jī)的Qt環(huán)境生效。

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

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

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

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

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

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

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

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

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

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

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

MPEG-4(MovingPictureExpertsGroups)壓縮編碼標(biāo)準(zhǔn)是基于從場(chǎng)景中抽取的單獨(dú)物理對(duì)象的一種編解碼方式,幀間處理機(jī)制是MPEG-4壓縮編碼標(biāo)準(zhǔn)的一個(gè)特色。根據(jù)幀的相關(guān)性和復(fù)雜程度將一個(gè)幀組劃分為I幀、P幀和B幀。一個(gè)完整視頻流的層次結(jié)構(gòu)由上至下依次是:視頻段(VS)、視頻對(duì)象(VO)、視頻對(duì)象層(VOL)以及視頻對(duì)象平面(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進(jìn)入Xvid配置目錄(3)編譯安裝。注意,如果直接編譯會(huì)出現(xiàn)如圖9.36所示的錯(cuò)誤。若要修改configure文件,則將使用這個(gè)選項(xiàng)的語(yǔ)句注釋掉即可,如圖9.37所示。編譯安裝完成后的顯示如圖9.38所示。(4)將編譯生成的動(dòng)態(tài)鏈接庫(kù)文件libxvidcore.so.4.1復(fù)制到ARM板的/usr/lib目錄下。圖9.35配置xvidcore-1.1.3圖9.36編譯xvidcore-1.1.3報(bào)錯(cuò)圖9.37修改configure文件圖9.38編譯安裝完成3)影像編碼XvidCODEC編碼流程如圖9.39所示。

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

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

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

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

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

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

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

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

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

(1)解壓JRTPLIB庫(kù)源代碼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,然后進(jìn)入JRTPLIB庫(kù)配置目錄。

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

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

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

圖9.45編譯jrtplib-3.7.1時(shí)報(bào)錯(cuò)圖9.46JRTPLIB庫(kù)編譯安裝完成3)MPEG-4影像流的RTP封裝與傳輸采用RTP協(xié)議傳輸時(shí),首先要將原始影像壓縮編碼得到的MPEG-4影像流打包成RTP數(shù)據(jù)包,然后再通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸。將MPEG-4影像流以VOP為單位進(jìn)行RTP打包封裝。MPEG-4影像流的RTP包封裝流程圖如圖9.47所示。按照上述封裝格式,在影像發(fā)送終端,首先配置RTP報(bào)頭參數(shù),然后將XvidCODEC編碼輸出的MPEG-4影像流裝入RTP報(bào)文的負(fù)載段;同時(shí),不斷地接收RTCP包,通過(guò)提取的QoS控制信息對(duì)其參數(shù)進(jìn)行動(dòng)態(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所示。基于RTP協(xié)議的影像發(fā)送分為以下幾步:獲取接收端的IP和端口號(hào)、創(chuàng)建RTP會(huì)話、指定RTP會(huì)話的接收端、設(shè)置RTP會(huì)話默認(rèn)參數(shù)、發(fā)送RTP數(shù)據(jù)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論