• 沒有找到結果。

MPEG4影音壓縮Linux平台技術開發

N/A
N/A
Protected

Academic year: 2021

Share "MPEG4影音壓縮Linux平台技術開發"

Copied!
64
0
0

加載中.... (立即查看全文)

全文

(1)

目錄

緒論 p-2 第ㄧ節 研究計畫背景 p-2 第二節 國內外相關之研究情形 p-4 第一章 第三節 研究動機與目的 p-8 嵌入式MPEG-4 串流平台實現 p-11 第ㄧ節 硬體架構與規劃 p-13 第二節 嵌入式系統開發平台 p-14 第三節 嵌入式系統 OS p-18 第四節 多媒體影像編碼及解碼 p-23 第二章 第五節 整合多媒體影像的硬體開發平台 p-29 MPEG-4 串流軟體設計與規劃 p-34 第ㄧ節 軟體架構及環境介紹 p-34 第二節 QT 視窗程式介紹 p-40 第三節 現行 Streaming 軟體的介紹 p-43 第四節 軟體架構設計 p-47 第三章 第五節 串流軟體實現 p-53 軟硬體設計架構 p-54 第ㄧ節 整合多媒體影像的硬體開發平台 p-54 第四章 第二節 多媒體影音串流的軟體介面 p-61 附錄 參考文獻 p-62

(2)

第一章 緒論

第一節 研究計畫背景

近幾年來微軟(Microsoft)以及英特爾(Intel)兩大廠都積極推動『數 位家庭』的計畫。Microsoft 自從 1997 年併購網路電視服務的 WebTV 後,

開始積極開拓『數位家庭』市場,電視遊戲主機Xbox、作業系統 Windows

Media Center Edition 的相繼推出,「決戰客廳」的行銷策略,展現搶奪數 位家庭市場的野心。Intel 也於 2003 年 6 月與 Sony 等消費性電子、電腦、

行動通訊廠商共同發起成立「數位家庭工作小組」(Digital Home Working

Group, DHWG),試圖為數位家電建立起相互操作性。 在國外大廠聯盟積極制定標準下,促使全球PC、家電與影音播放軟體 等廠商紛紛推出相關概念的產品。為搶奪這塊市場大餅,經濟部工業局將 「數位家庭」產業列為台灣新一波科技產業的扶植重點。由於數位家庭的 精神在於數位裝置間溝通性,必須整合各產業的力量,經濟部工業局、工 研院結合國內資訊、家電大廠共同組成「數位家庭產業推動聯盟」,希望 藉由聯盟的建立,可以促進產、官、學界的彼此整合,結合國內上下游廠 商的智慧與經驗,提早實現相關的商業應用。 隨著處理器性能與多媒體技術不斷提升,數位資訊的製作更為容易, 各種多媒體資料大量被數位化。加上傳輸頻寬的擴張及無線區域網路普 及,為資訊的流通提供更快速的平台。在這三股趨勢的推波助瀾之下,「數 位家庭」的輪廓也越來越明顯,成長力道愈趨強勁。 在「數位家庭」裡,人們將面臨新的生活形態,電腦的界定變的模糊, 離開書房,走進客廳與家電緊密結合,與網路連接的不再只有電腦,消費 性電子、通訊裝置、家電以及保全等數位化電子產品都將透過網路進行互 通整合,共享數位內容。除滿足消費者在家中的娛樂休閒需求外,更強調

(3)

在任何時間、任何地點,存取、控制任何裝置。可以想見在不遠的未來, 數位電視、機上盒、網路冰箱、…等資訊家電的來臨將使人們接收資訊、 學習新知、享受娛樂的方式大為改變,變的更容易、直接,提供共舒適、 安全的生活。 多媒體娛樂中心是構成「數位家庭」的重要環節,尤其結合多媒體與 網路的「串流視訊」應用將佔極大的比例,例如在視訊電話(Video Phone)、

遠距教學(Distance Learning)、安全監控(Home Digital Security)等應 用上,發展後勢備受看好。為搶搭這股風潮,國內中華電信、數位聯合電 信(Seednet),先後分別推出隨選視訊 MOD(Movie On Demand)、數位家 庭中心DFC(Digital Family Center)。MOD 強調隨選視訊,透過寬頻網路連 接家用電視機,提供多樣化的影音服務。DFC 的特色則在於功能多元,期 望滿足家庭用戶中所有族群,提供電影、音樂、股市、即時路況等服務, 還可收發E-mail 或使用網路電話。卡位並催生這個估計有數十億元商機的 市場。 本計畫的目的,便在於整合MPEG-4 與嵌入式技術,提供更高品質、 頻寬需求低的「串流視訊」系統。

(4)

第二節 國內外相關之研究情形

一、

MPEG-4 技術介紹:

影像的壓縮/解壓縮可以利用三種方式完成,一是軟體的解決方案,用 軟體撰寫壓縮/解壓縮程式交由一般電腦 CPU 運算;二是利用韌體開發, 強調以DSP(Digital Signal Processor)為核心,搭配撰寫高、低階的程式

語言,下載到 DSP 平台來執行;三是硬體解決方案,即將壓縮/解壓縮功

能設計成 IC,獨立負擔影像壓縮/解壓縮的動作,此方式為最具高效率的

作法。

財團法人工業研究院電通所已開發完整的多媒體串流平台,支援 Simple Profile 視訊壓縮和 AAC 音效壓縮標準,用於家庭電視娛樂中心。 其的壓縮/解壓縮功能乃採用軟體的解決方案。在文獻[1]中,實現影像傳 輸彈性錯誤描述,影像保護使用頻域劃分及H.263 數據劃分等二種方法。 利用軟體方式進行影像壓縮/解壓縮,並且透過記憶體的使用量,測試嵌入 式系統的適合性。在文獻[2]中,影像壓縮/解壓縮被設計成 IP 模組且應用 在嵌入式處理器,在這研究過程中,執行平台獨立的軟體優化,其中算法 的最佳化被處理為一台通用處理器(GPP)以改進軟體性能。最後證明影像 編碼解碼的 IP 模組使得 (SP/LI)編碼在較短的開週期內完成。在文獻[3] 中,描述非常有效率的演算法偵測影像改變和一台即時MPEG 編碼器加以 實現,並認為MPEG 編碼適用於軟體的編碼器。 由於晶片 IC 設計的發展訊速,IC 設計已經越來越複雜,文獻[4]利 用軟/硬體共同設計的概念,在系統層次上實際地去建構一個簡單視訊編解 碼系統,並且透過ARM 公司發展的 SoC 平台實現視訊編碼系統。 MPEG-4 之硬體,通常是指 CODEC(Coding-Decoding)編碼解碼晶片。 一 般 的 廠 商 為 巨 積(LSI Logic) 、 飛 利 浦 (Philips) 、 意 法 半 導 體 (ST Microelectronics)、昇陽(SUN)、德儀(TI)、VWEB 等。

(5)

德州儀器(TI)所發展的硬體是以 DSP 為基礎的串流媒體參考設計,巨 積(LSI Logic)推出”ZSP”DSP 多媒體平台加速數位影音裝置開發。飛利浦 (Philips)整合 ASICs Leading-edge 處理技術,開發專門用於影像的處理晶 片。 文獻[5] 指出 Entropy coding 是在很多多媒體應用方面的漏失數據壓 縮的主要技術之一。結果顯示基于CMOS 技術的一 0.25 的矽面 proposed IP 核心在時脈波頻率 125 MHz 消耗 0.22 mm/sup 2/ 矽面。文獻[6] 為 應 用提出一座嵌入的記憶架構。 它使用簡化的 affine 轉變算法。 存儲器架 構是為0.35 p CMOS 技術使用 TSMC 標準單元和 Dvp2 電池類比合成。 文 獻[7] 將可調節的 H.264 影像譯碼器,充分利用記憶頻寬,設計實現多媒 體CODEC,並且最佳化記憶進入區間。為了滿足記憶頻寬每個實用的塊的 要求,參考框架記憶架構,雙記憶控制單元和雙匯流排已經被實現,並且 這樣的設計選擇的基本原理已經被證實。文獻[8]實現即時 MPEG-4 影像串 流,並且可以確保串流時的安全性。文獻[9]在 CDMA 裡,資源分發是一 項對這天生干擾的性能關鍵的限制技術。提出這個解決最佳的資源分發的 問題的方法interference generated,運用於 MPEG-4 FGS 影像的類比顯 示系統有不錯成效。

二、 串流視訊(Video Streaming)技術介紹:

串流視訊技術是將連續的影像和聲音資訊經壓縮處理後,由伺服端經 過網際網路傳送到用戶的接收器,讓用戶可一邊下載,一面觀看相關的多 媒體內容而不需要等候龐大檔案完成下載後才收看影像或收聽聲音。 串流視訊的技術應用部份如圖1-1 所示,分為以下三部分: 1. 串流媒體製作端:主要工作在於串流媒體(Streaming media)的 製作(Creation)。先將一般多媒體格式,如 mpeg、avi、wave,經

(6)

不同的專屬系統、製作工具,將其轉換成串流支援的格式,如 wmv、wma、asf、rm、ra、mov 等。 2. 串流伺服器(Server):主要工作在於散佈串流視訊(Distribution)。 包括監控、管理串流主機系統服務的狀況,與傳輸內容品質,壓縮的 控制,還有訊號輸入的處理等。 3. 接收/播放端(Client):主要工作在於播放(Playback)串流視訊。包括 接收經由網路傳送到達的片段資料,經由解碼、資料重組之後,透過 播放器觀看多媒體內容。 圖1-1 串流視訊技術 現今因為串流的格式未有統一的標準,造成眾家爭鳴的局面。目前市 場上串流技術的主流有三種:分別是 Real Networks 公司的 RealMedia、 Microsoft 的 Windows Media 和 Apple 公司的 QuickTime。各有著自家的 編碼技術、播放器、檔案格式及傳輸的通訊協定等關鍵技術在內,較開放 軟體提供完整的解決方案。

(7)

高的系統。在其鼎盛時期,曾一度擁有超過85%的串流市場。不過因為是

定位為跨平台的商業系統,所以除了播放工具(目前最新的版本為RealPlayer

10.5 GOLD)之外,串流伺服器端(Real Server Plus / Server SDK)以及檔案製作 與壓縮的工具(Real Producer Plus / Utility SDK),都需要經過購買授權認證, 才可以使用到全功能版本。

微軟所開發的串流系統,關鍵核心在 MMS 的串流通訊協定及 ASF (Advanced Streaming Format )的壓縮格式。從播放程式(目前最新的版 本為WMP 10)、串流伺服器端(Windows Media Server / Server SDK),到

串流媒體製作端(Windows Media Encoder / Tools SDK),都是可以自由 地從官方網站下載,主要的要求是必須要使用微軟的視窗作業平台。

APPLE 的 MAC 在影像處理領域是居於龍頭的地位。在處理運算能力上 都一直有很令人滿意的表現,而在以多媒體為主的串流技術上,Apple 也 將原有的Quick Time 格式的播放器(目前最新版本為QuickTime 6.5),更加 充分應用在串流系統上。不過也因為是商用系統,所以也需要經過購買授 權認證,才可以使用到完整的功能。

在開放軟體方面,VLC Media Player 算是表現最為出色的軟體。VLC Media Player 是 VideoLAN 計畫所發展的多媒體串流播放器,標榜跨平台 性高,且支援多種視訊格式、視訊來源的串流軟體。功能囊括多媒體播放 器、串流媒體的製作壓縮、及串流視訊的傳送等多媒體串流的技術裡的三 個重要環節,一應俱全。另外在官方網頁上設有論壇,任何使用上或開發 上的疑難雜症都可以在哪裡得到解答,研究的氣氛十分熱絡。

(8)

第三節 研究動機與目的

一、 動機:

『串流視訊』技術將傳統資料的傳輸轉為多媒體傳輸,對傳統的 網路傳送機制而言,一般資料傳輸所依據的TCP 通訊協定強調的是資 料的完整性、安全性。然而在多媒體串流服務上最需要的卻是影音的 品質、即時性。加上視訊的資料量往往是非常龐大的,造成儲存及傳 遞上的困難。這些問題都透露出這樣的訊息:需要更有效率的影像壓 縮及網路傳送技術。 MPEG-4 強調不同應用環境下相互操作能力,MPEG-4 的編碼率可 以低至 5 kb/sec,提供 QCIF(144x176)大小的畫面,也可以高至 10Mb/sec,提供既適於 DVD 的畫質,視訊品質的可選擇性高。MPEG-4 可以把緩衝時間縮到最短,對於即時網路視訊系統、遠距教學、可攜 式多媒體娛樂中心提供更合適的傳輸格式。且大多數的主流串流伺服 器,如Real Networks 的 Real Helix Universal Server、Apple 的 QuickTime Streaming Server 都支援 MPEG-4 的串流格式。

除了對以上的要求外,隨著『數位家庭』時代的來臨,資訊家電

的需求大增。為了融合這許多的技術和應用,『嵌入式系統』勢必成為

主流的解決方案。在傳統家電轉向資訊家電的過渡時期,操作系統小 型化、產品穩定度及是否易於開發等都是重要課題。目前,嵌入式操 作系统的選擇很多,其中主流的有: 如 Embedded Linux、VxWorks、 pSOS、OS-9、Windows CE 等。其中 Embedded Linux 因為有開放原 始碼、強大的網路功能等特點,在強調網路功能的『數位家庭』裡, 相較於其他嵌入式作業系統更具優勢。

(9)

二、 目的:

本計畫的主要目的在於利用硬體的MPEG-4 壓縮/解壓縮技術來實現串 流視訊的嵌入式平台。 VWEB 公司提供 VW2010 晶片作為計畫中硬體的 MPEG-4 壓縮/解壓縮 的技術來源。VW2010 晶片是世界上第一顆可以完成 MPEG-4 的硬體壓縮/ 解壓縮的晶片,擁有先進的動作估測(Motion Estimation)及資料率控制 (Rate Control)專利技術,可提供 D1 的視訊規格,且可提供 MPEG1、 MPEG2、MPEG-4 和 H.263 間的壓縮格式轉換(Trans-coding)、資料率轉 換(Trans-rating)。

嵌入式平台為針對多媒體應用的快速運算及網路運用需求,選擇 Toshiba RBHMA4500 作為開發平台,此平台 CPU(Toshiba TX4938)時脈

可達 300MHz,且周邊支援包含網路傳輸功能、IDE 介面、EJTAG 介面、 PCI 介面等。 串流視訊的軟體技術主要參考 VLC 這套開放軟體。 VLC 為 VideoLAN 計畫所開發出的開放軟體,以跨平台的多媒體播放程式及串流伺服器為設 計方向。 此計畫依軟體、硬體區分為兩個子計畫進行: 1. 開發串流視訊軟體 2. 開發整合 VWEB VW2010 晶片的嵌入式平台。 子計畫 1 的主要工作在於視訊串流技術的開發。VW2010 晶片所扮演

的角色在於MPEG-4 視訊的製作及解壓縮,VLC Media Player 軟體則提供 串流軟體的架構及技術的參考來源。目標在設計出可以涵蓋伺服端(server) 及接收端(client)的所需功能,包括即時視訊的壓縮製作、發送、接收、解

(10)

子計畫2 的主要工作在於將 VW2010 晶片整合入 Toshiba RBHMA4500 嵌入式平台內。除了硬體的整合外,還包括嵌入式作業系統的導入、以及 VW2010 晶片的驅動。 再將子計畫1 所開發的串流軟體安裝於子計畫 2 的嵌入式平台,共同 運作、測試。這個技術成熟後可以廣泛的應用在安全監控、多媒體娛樂平 台、遠距學習、通訊等範疇。

(11)

第二章 嵌入式 MPEG-4 串流平台實現

本計畫的主要目的在於利用硬體的MPEG4 壓縮/解壓縮技術來實現視 訊串流(Video Streaming)的嵌入式平台。 VWEB 公司提供 VW2010 晶片作為計畫中硬體的 MPEG4 壓縮/解壓縮 的技術來源。VW2010 晶片是世界上第一顆可以完成 MPEG4 的硬體壓縮/ 解壓縮的晶片,擁有先進的動作估測(Motion Estimation)及資料率控制 (Rate Control)專利技術,可提供 D1 的視訊規格,且可提供 MPEG1、 MPEG2、MPEG4 和 H.263 間的壓縮格式轉換(Trans-coding)、資料率轉 換(Trans-rating)。

本計畫的嵌入式平台為針對多媒體應用的快速運算及網路運用需求, 選擇Toshiba RBHMA4500 作為開發平台,此平台 CPU(Toshiba TX4938)

時脈可達300MHz,且周邊支援包含網路傳輸功能、IDE 介面、EJTAG 介

面、PCI 介面等。

MontaVista Linux 為一套開發完整的嵌入式系統,不僅已包含 Linux 核心程式,更有完善的整合開發環境,包含設計、開發、測試嵌入式系統, 可以縮短整個開發時間。大部分的嵌入式系統是為了特殊目的、功能而產 生的。MontaVista Linux 支援 Toshiba 公司的 RBHMA4500 開發板,針對 RBHMA4500 開發板的所有周邊驅動程式皆已完善支援,因此不需針對 Toshiba 硬體做 Linux porting 規劃,故發展 VW2010 WIN10 影像處理卡驅 動程式時,可以省去許多測試時間。

結合 Toshiba RBHMA4500 開發板及 VW2010 WIN10 影像處理卡可以 發展多媒體中心(media center)的應用,如數位機上盒(digital set-top boxes),多媒體閘道器(media gateways)及其他的多媒體平台。

(12)

支援多種MPEG 影像,並且根據網路頻寬調整影像串流品質,可為家用的 media gateway set-top boxes 產品, 可於高畫質電視(HDTV),電漿電視 (plasma TV) and 液晶電視(LCD TV)等播放。藉由管理影像串流,可保證 每 秒 30 張影像(FPS)的串流率,可透過任何形式的網路(Internet protocol network)提供高品質的影像。

不中斷的影像串流為本計劃多媒體影像串流平台的特色,此特色將充 分符合家庭網路劇院(Entertainment Home Gateway)的需求,因此本計劃 重點將集中在影像串流管理(video stream management),並加強網路品 質管理。分成硬體架構與規劃及軟體設計與規劃兩個方向,於下列各章節 分別介紹實現狀況。

(13)

第ㄧ節 硬體架構與規劃

本 計 畫 硬 體 有 Toshiba RBHMA4500 開 發 平 台 (TARGET 端 ) , X86PC(HOST 端),與 VWEB WIN10 PCI Card,以及周邊 I/O 訊號裝置,

如DV 用於傳送訊號過來,螢幕用於播放解碼的結果。

本計劃主要的實作流程是首先由 HOST 端,進入 TARGET 端的系統來

控制。透過網路協定進行TARGET 與 HOST 端的溝通,並設定 HOST 端的

滑鼠與鍵盤供TARGET 端使用。將編譯好的 kernel 下載至 TARGET,使得

TARGET 可進行開關機及建立資料夾等基本動作,同時使得 TARGET 的資

料可在 HOST 端建立一個虛擬的記憶體空間,供 TARGET 使用。後安裝

VWEB WIN10 PCI Card 於 Toshiba RBHMA4500 開 發 平 台 並 利 用 crosscompiler 進行 VWEB 所附的 function 之測試。

本計畫配合合作廠商之技術人員合作,發展 VWEB MEPG1,2&4 A/V Codec Card 在 Linux 環境使用之相關技術,並協助發展未來配合此卡使用

在Linux 環境下之應用程式。台大團隊對 VWEB 技術成熟後,並將發展嵌

入式系統技術,研發可以利用 VWEB 晶片之能力進行 MPEG4 影音操作之

(14)

第二節 嵌入式系統開發平台

針對多媒體應用的快速運算需求,因此選擇 Toshiba 公司的 CPU RBHMA4500 (henceforth called TX4938) 為開發平台,TX4938 為一標準 64-bit 系統的微處理器,TX4938 CPU 使用 TX49/H3 core。此 TX49/H3 core 為 64-bit RISC core,由 Toshiba 公司利用 MIPS III architecture 開發而 成。

利用 TX49/H3 core,讓 TX4938 CPU 具有嵌入式系統開發功能,如 External Bus Controller , DMA Controllers , SDRAM Controller , PCI Controller,Ethernet Controller 及 NAND Flash Memory Controller。 TX4938 同 時 具 有 133MHz 的 記 憶 體 時 脈 、 serial I/O port 、 a timer/counter、 a parallel I/O port 等。

主要規格:

CPU/Bus 頻率 300MHz/100MHz

Flash 記憶體 16Mbyte

SDRAM 128 Mbyte

支援 Little Endianness 及 big Endianness 兩種格式

PCI bus 頻率為 66MHz

此發展版具有 PCI 規格,可以結合影像處理卡而加以應用發展,另外 還具有兩個10/100M 網路控制界面,也含有 NAND flash、ROM、ATA (IDE) I/F、 AC-link I/F、SPI EEPROM 等,可以當作儲存裝置。其主要的優點如 下:

網路傳輸功能

(15)

EJTAG 連接介面 ICE 模擬器

PCI 介面支援 PCI2.2 及 mini-PCI

圖2-1 Toshiba RBHMA4500開發板

圖 2-1 為 Toshiba RBHMA4500 開發板裝配情況,開發板主要使用 PJ22 S100 的 RS-232 序列埠,用以連接 HOST 端的終端機以進行溝通,溝通畫

(16)

電腦連接的網路埠,PJ1 PCI 連接到 PCI 插槽的板子上,可利用此 PCI 擴

充板與多組PCI 卡溝通,如 PCI 顯示卡等。VWEB 公司的 VW2010 影像處

理卡也是插於其上,藉此與Toshiba 板子溝通。PJ21 power 是用來提供電

源,如果是將Toshiba RBHMA4500 開發板插在 PCI 插槽上,則可以由 PCI

提供電源,不需再外接電源。要重新reboot 是用的開關是 RESET SW。

Toshoba公司的RBHMA4500開發板中已經包含一的開機程式 — YAMON,圖2-2為其開機畫面。

圖2-2 Toshiba 公司的 RBHMA4500 開發板開機畫面

圖 2-2 是 YAMON 系統中,所顯示關於此板子的一些訊息,包括 compilation time,Board type/revision,FPGA version,MAC address,Board S/N,PCI bus frequency,Processor Company ID/options ,Processor

(17)

ID/revision Endianness,CPU/BUS frequency,Flash memory size,SDRAM size,First free SDRAM address。

YAMON 系統下,利用 load 指令下載 HOST 電腦的 Linux kernel 壓縮 檔,Toshiba 公司的 RBHMA4500 開發板藉此進入 Linux 系統。

YAMON 支援序列埠(RS-232)連接到主電腦,序列埠的設定為38400 baud, 8 data bits, no parity, 1 stop bit, hardware flow control (RTS/CTS). 另外其與主電腦的傳輸線必須為TX、RX跳線的序列埠傳輸線,即標準的 “NULL-modem”傳輸線,如圖2-3所示。

(18)

第三節 嵌入式系統 OS

Linux 支援許多的 CPU 種類,如 X86, PPC, ARM/StrongARM, MIPS, SH, 68K, S/390, SPARC, Alpha, VAX, IA-64… 等,Toshiba 公司的 RBTX4938

開發平台為MIPS 架構,可為 Linux 充分支援。

嵌入式系統一般分為 HOST 與 TARGET 兩端,HOST 端主要是當成程

式開發的工作站,也可看作TARGET 端的開機控制端,用於操控 TARGET 端的所有動作。TARGET 則為實際的應用程式測試板,將 HOST 端開發完 成的程式放入TARGET 端測試,一旦程式開發完成,TARGET 端則可以不 用再依賴HOST 端。 圖2-4 跨平台開發 程式開發可以分為兩種方式去編譯開發,一在 HOST 端,另一在 TARGET 端。在 HOST 端所做的程式開發一般稱為跨平台開發(Cross-Target Development),在 HOST 端將程式編輯、編譯完成,再透過網路下載至 TARGET 端執行。在 TARGET 端則稱為 Self-Target Development,實際利

用 TARGET 端的處理器去開發程式,不過一般而言,TARGET 端的處理器

Host(X86)

Red Hat Linux 9.0

Target(MIPS)

Montavista Linux

Network

(19)

運算速度較慢,所以較少使用此方法。

本計劃利用 MontaVista Linux 安裝於 Toshiba 公司的 RBHMA4500 開

發平台上,建立一套嵌入式系統。因此以下針對MontaVista Linux 作細部

說明。

MontaVista Embedded Linux 與 Linux 的架構相似,包含以下的目錄,

/bin 基本指令目錄 /boot 開機檔案 /dev 周邊裝置檔案 /etc 系統設定區 /lib 基本的共享資料庫及系統核心模組放置區 /mnt 提供給掛載系統的掛載檔案區 /opt 附加應用程式套件 /sbin 基本系統 binaries /tmp 暫存檔案區 /usr 其他使用者資料儲存區 /var 變數資料區 /TFTPboot 提供給TFTP 連線時的檔案放置區

MontaVista DEVROCKET 是根據 EclIPse technology 公司的程式改良

而成,支援 Linux、Windows、Solaris 等作業系統,為一套標準的整合開

發環境(Integrated Development Environment,IDE),如 GNU Emacs、 Microsoft Visual Studio 等 一 樣 。 且 MontaVista 提 供 了 MontaVista DEVROCKET 讓開發者可以方便地根據 MontaVista Linux 開發 TARGET 端 的應用程式。

(20)

圖2-5 DEVROCKET 的開機畫面 圖2-5 為 DEVROCKET 的開機畫面,主要特點為: • GUI 視窗介面開發環境 • 包含 GNU 的開發工具 • 指令提醒編輯器 • 檔案類別函數架構瀏覽器 • 內建 gdb 偵錯器 • 內建 HTML 說明文件 DevRocket 提供偵錯工具如下所示,類似 gdb 的功能,可以讓程式 偵錯時,增加許多效率。

(21)

圖2-6 DEVROCKET 之執行程式 圖 2-6 為 DEVROCKET 之執行程式的外觀,其執行方式與 VISUAL C++ 差不多,同樣有debug,以及錯誤訊息提示,同是也有一些好用的 tool 迅 速編譯kernel,例如會有一個小視窗把所有用到關於程式的標頭檔,都給 列出來,此外也會有一些預設好的格式,基本的 make 檔的格式等,迅速 了解編譯過程,在寫作程式上可以收事半功倍之效。 DEVROCKET 提供了應用程式、資料庫、核心、平台影像檔四個專案管理, 可以使程式設計者達成從最重要的核心編譯至應用程式撰寫及應用程式 資料庫管理,最後完成整個嵌入式系統的影像檔製作,以便下載至開發板 上。

(22)

圖2-7 DEVROCKET 操作畫面

圖 2-7 是 DEVROCKET 產生 New Project 的圖示,可以選擇要產生 Application Project,Library Project,Kernel Project,或是 Platform Image Project,完全看所要的需求為何。測試的是用 Application Project 只僅僅

去改 VWEB 公司所提供的程式,先避開改掉整個 kernel 的龐大工程,並

且在 DEVROCKET 上 compiler 的程式完完全全針對 TARGET 端的 OS 作 complier,所以開發出來的程式不會有 I/O 的問題而導致失去利用 LINUX 開發嵌入式系統的原意。

(23)

第四節 多媒體影像編碼及解碼

利用 VW2010 晶片所發展的 VW2010 WIN10 影像處理卡,達成多媒 體的影像編碼及解碼。VW2010 為一集時的 MPEG-1, -2 and -4 聲音影像 CODEC 晶片,完全符合 MPEG 及 H.263 的基本標準。VW2010 晶片接收 未壓縮的 ITUR.BT-656 影像訊號及 I2S 聲音訊號、壓縮的影像訊號(如 MPEG-1, -2, -4 or H.263 )及壓縮的聲音訊號(如 MPEG-1、MPEG-2、 MP3、AAC、AC-3)。 圖2-8 vw2010 WIN10 影像處理卡功能

(24)

和嵌入式應用設計,例如PCI 卡片和 USB 設備。圖 2-9 是它的外觀: 圖2-9 VWEB VW2010 卡 VWEB 系統或裝置的軟體架構是建構在 VW2010 晶片中三種作業統 模式的軟體設計六個層級基礎上。分別敘述如下: 表2-1 表示應用程式流程的架構包括: 在 PCI 平台的應用 在 USN 平台的應用 在 PCI 平台的 DirectShow 應用 在 USN 平台的 DirectShow 應用

(25)

Mode Software Application User mode Driver API Driver Kernel mode ChIP API Firmware Hardware layer Microcode 表2-1 應用程式流程的架構 圖2-10 是應用概略流程圖主要說明當 VWEB 的執行檔在動作時,會

與VWEB GUI 產生的 Kernel Streaming Driver 一同作用,至 PCI driver 處 與USB ChIP Driver,分別作用在 VWEB Firmwave 及 USB Firware 處。

圖 2-11 顯示更多的細節有關於 VWEB drivers、作業系統和架構 VWEB 硬體之間的關係。圖2-12 顯示 program flow of a DirectShow

(26)

圖2-10 Host Program Flow (General Outline)

(27)

圖2-12 Application Interface

DirectShow 由 MSDN DirectX library 所描述包含了位於影像擷取介面 的LAMCrossbar、LAMStreamConfig 和位於類比 TV 的選台介面。VW2010 driver-level API 的設計非常簡單而直接,它僅僅只包括了三個指令, (1) open (2) close (3) I/O control 以下是它在不同作業系統的不同指令示意圖:

(28)

Windows Driver Linux Driver VxWorks driver CE.net Driver

CreateFile( ) Open( ) VWEBOpen( ) TBA

DeviceIoControl( ) Ioctl( ) VWEBIoctl ( ) TBA

CloseHandle( ) Close ( ) VWEBClose( ) TBA

--- --- Etc. TBA 表2-2 VW2010 driver 指令表 利用 VWEB 對上列不同目的而能達到各個需求的強大功能,可以利用 這些內建的函式庫,可從不同的source 端接收各種格式的訊號,而進而達 到解碼、編碼的強大功能,而最終的目的是將在x86 上的 VWEB 功能能在 Toshiba 的主機板上完全發揮它的功能。

(29)

第五節 整合多媒體影像的硬體開發平台

由以上的介紹可以分別了解 Toshiba 公司的 RBTX4938 開發板及 VWEB 公司的 VW2010 WIN10 影像處理卡的功能,本計劃將此兩張板子 經由 PCI 的插槽連接,達成如圖 2-13、2-14 所示的硬體,靠近讀者前方 的為RBTX4938 板子,後方則為 VW2010 影像卡。 圖2-13 硬體開發平台(前)

(30)

圖2-14 硬體開發平台(側) 黃色線為網路線,經由 Toshiba 的 RBTX4938 開發板連接至 HOST 電 腦,黑色線為影像傳輸線,經由VWEB 公司的 VW2010 WIN10 影像處理 卡,可以接受影像訊號,訊號的來源,可以是一般的DV 的 s-video 訊號, 或是av 端子的訊號,或將影像訊號傳給電視,或是播放器等。

値得注意的是 Toshiba 板子有三個網路的 port 可供運用,所以在 HOST

端設定 TFTP 的路徑時,要設定到正確的網路卡卡號。另外板子上有一小

的ksoddf 的黑色長條區域,可以調整是要 little edit 或是 big edit 的版本,

在開機時是用一小開關由下往上推,其位於控制鍵盤何滑鼠的port 下方。

在裝設 VWEB 卡時要記住選擇 3.5V 的 slot,否則會有難以預估的災難發

生!並且在HOST 端要先執行 minicom –s 將鍵盤和滑鼠的設定給設定好。

將 Montavista Linux 嵌入式系統的影像檔下載至 Toshiba 的 RBTX4938 開發板後,便可以使用Embedded Linux 開機,如圖 2-15 所示,在 YAMON

(31)

圖2-15 執行 load 完後要執行 go 的指令利用先前的指令來開機,值得注意的 是此時應先設好 DHCP,TFTP,NFS 三個 server,才能正確執行 load 和 go 的指令,設定方法下面所述。 利用網路與 HOST 連接時,必須先設定 DHCP server、TFTP server、NFS server 三種伺服器,分別如三圖所示。記住設定時要關掉防 火牆,可用lokkit 的指令,執行完後要記得重新開機。設定 Host IP,TARGET IP 之後,可選擇在 TARGET 端利用 set 指令查看。

(32)

圖2-16 (c)

進入 Montavista Embedded Linux 後,掛載 VWEB 的驅動程式再利用 cross complier 產生執行檔,並 mount cross complier 所產生之執行檔,

而後設定make 檔之參數,完成系統環境之建立。之後便可進行串流軟體

(33)
(34)

第三章

MPEG-4 串流軟體設計與規劃

第一節 軟體架構及環境介紹

利用 MPEG-4 影像技術,透過網路將品質優良的視訊由數位電視播放

出來,此即為”Home network video adapter”,而目前所知在網路上能夠 有較佳品質且符合網路傳輸即時的目的,即為“Streaming”技術。 圖3-1 影音串流架構 圖 3-1 即為網路串流(Streaming)架構,其主要是由傳送端(Streaming Server)、接收端(Client / Receiver)、網際網路(Internet)等三部分所組成。 整體運作的基本過程,主要是由視訊接收端透過網際網路向傳送端提出視 訊服務的要求,若傳送端接收到接收端的要求並且接受,此時傳送端可透 過網路媒介開始傳送視訊資料給接收端,接收端若順利的接收到視訊資料 並播放,如此即完成網際網路上視訊傳輸的服務。 有別於一般網路資料傳輸機制,爲了達到即時性的要求,串流服務並

不使用 TCP/IP 傳輸協定,而採取了傳輸效率較高的 UDP/IP。而 UDP/IP

(35)

UDP/IP 在這三層協定的介紹:

一、

網路層:

對於視訊資料的傳輸,仍是採用 IP(Internet Protocol)通訊協定, 來達成傳送端和接收端的通訊連結。在網路層中除了傳輸連結的協定 之外,有些研究中使用到 ICMP(Internet Control Message Protocol) 通訊協定,利用ICMP 機制之封包回傳動作算出 RTT(Round-Trip Time) 值,輔助服務品質(QoS)之控制。 二、

傳輸層:

TCP 通訊協定為連接導向之協定,具有連結的可靠性能避免網路 封包的丟失,並且TCP 可以使用移動視窗(Sliding Window)去控制資 料傳輸量的大小。但當利用TCP 通訊協定送出的視訊資料在網路延遲 或丟失,則之後的視訊封包都將不被送出,必需等前一視訊封包確實 傳送給接收端收到之後才能再送出下一封包,如此一來對於視訊的服 務將有可能因此中斷或是一段時間之後才緩慢的繼續運作,這樣的視 訊服務品質將會非常的差,除非能保證視訊的傳輸一直都是非常之順 暢。 UDP 通訊協定為非連接導向,所以並無封包丟失或延遲等的任何 補償動作,且因在網路上的傳輸是以盡力服務(best effort)之模式來運 作,所以當使用 UDP 協定做傳輸時,會不斷的將封包往網路上丟, 導致或多或少都會有封包遺失,致使傳輸服務品質不能有所保證。但 即使如此,因視訊的播放必須在每秒內播放一定量的圖像才能使視訊 看起來順暢且達到品質要求,所以為了完成網路視訊的傳輸就必須在 短時間內將一定量的視訊資料傳送至接收端,此時想要達到短時間內 送出大量的視訊資料且不受其他因素(除網路頻寬不足之外)影響速

(36)

定;但因 UDP 無法避免視訊封包丟失、延遲等問題,所以需外加一 些服務品質(QoS)控制與協定,如 RTP/RTCP 等通訊協定。RTP、RTCP 兩種協定最主要目的是提供網路上即時性多媒體傳輸協定,但在 RTP 協定中並沒有提供服務品質(QoS)欄位資訊,而在 RTCP 中才有提供 服務品質的欄位,所以兩者通常是互相搭配。RTP、RTCP 兩種協定最 主要目的是提供網路上即時性多媒體傳輸協定,但在RTP 協定中並沒 有提供服務品質(QoS)欄位資訊,而在 RTCP 中才有提供服務品質的 欄位,所以兩者通常是互相搭配。 A. RTP Protocol: 藉著RTP標準所定義的RTP Header欄位與RTP Payload欄位, 傳輸影像與聲音的資料。圖2-2為RTP Header中的各欄位之說明, 並且定義各欄位在實作上所代表的意義。 圖3-2 RTP封包標頭內容 Version (V:2 bits):

(37)

表示RTP的版本,IETF所定義的標準版本為2。 Padding (P:1 bit): 表示此RTP封包是否包含多餘的位元數。 Extension (X:1 bit): 表示此RTP Header是否包含Extension Header。 CSRC count (CC:4 bits): 表示此RTP Header中CSRC欄位的CSRC數量。 Marker (M:1 bit): 為預留定義的位元。此位元為判斷RTP封包中是否存在完整的 AU,或者當一個AU以多個封包傳輸時的最後一個封包的標 記。

Payload type (PT:7 bits):

表示RTP封包中的Payload的格式。MPEG-4 Elementary Streams的Payload格式值為96。

Sequence number (16 bits):

表示RTP封包的編號,讓接受者可以依此欄位的資訊偵測RTP 封包的遺失。 Timestamp (32 bits): 表示RTP封包的時間資訊。此欄位可以作為RTP Payload中第 一個AU的參考時間資訊,使接收者可以依此資訊作為AU的時 間資訊。 SSRC (32 bits): 表示一個RTP Session中,串流的資料來源的識別碼。

(38)

碼。在CC欄位中定義了此CSRC list的CSRC數量。 RTP 封包在傳送時,各主機間可以透過RTCP 協定來傳送訊 息及相關統計資訊。RTCP 是RTP 協定中的傳輸控制部分,主要 在外加服務品質監控與擁塞控制和RTP 表頭欄位中SSRC 的缺失 做補強,加一個SDES(source description)機制讓使用者對於封包 中的多媒體資訊更容易辨識。RTCP 還包括以下幾點功能:1.媒體 間同步 2.身分確認 3.會議人數估計與調整(session size

estimation and scaling),其中有關QoS 控制部份最主要的封包型 態為SR (Sender Report)、RR(Receiver Report)兩個協定,其內容 包含傳輸服務品質監控所必須知道的資訊。 B. RTP Control Protocol: 由於網際網路的狀況是不斷變動的,傳送者與接收者必須有 一個共通的訊息傳輸方法,才能夠使傳送者掌握與接收者之間的 網路狀況。RTP control protocol (RTCP)就是一個與RTP搭配的回 饋(feedback)機制,能夠讓傳送者與接收者相互知道封包收送的情 形。RTCP的封包格式分為五種: SR (Sender report):表示傳送者的傳送資訊。 RR (Receiver report):表示接收者的接收資訊。

SDES (Source description items):表示傳送者或接收者相關 的描述資訊。

BYE:表示RTCP封包的結束資訊。

(39)

三、

會議層:

此層一般應用到的為 RTSP( Real Time Streaming Protocol )通訊 協定。RTSP 是一種針對目前的網路環境,提供有效的網路多媒體資 料 傳 輸 的 通 訊 協 定 , 此 協 定 由 RealNetworks 、 Netscape Communications、Columbia University 及 Internet Engineering Task Force (IETF)裡的 MMUSIC 協助,一起研發的傳輸協定(RFC 2326)。 其目的是要找出一種能夠經由網路(Internet Protocol)有效的傳送多 媒體,比如傳送即時或非即時的聲音或影像。RTSP 是一種可以經由 即時協定 RTP、HTTP 或其它的傳輸協定來傳送多媒體的通訊協定, 並且外加多種多媒體的操作機制,比如可以提供像錄放影機的控制功 能暫停、快轉、回轉、停止等功能,亦可以用來控制一或多個聲音、 影像的多媒體傳輸。它負責的是每個多媒體傳輸控制,並且還支援多 址廣播,所以 RTSP 除了能夠降低網路頻寬的負擔外, 還能提供視訊 會議的功能,所以對於視訊傳輸的研究中有些是採用 RTSP 的通訊協 定。

(40)

第二節 QT 視窗程式介紹

幾乎所有的作業系統都包含了一個或以上的視窗程式,方便使用者操 作系統,而一個好的視窗程式也是決定整個系統好壞的關鍵。目前所使用 的 Linux 作業系統中主要是以 X Window 為主,X Window 為一個網路 導向的圖像介面系統,主要可分兩個部分:X Server 和 X Client。

X Server 主要負責處理終端機的硬體設備,像鍵盤、滑鼠、螢幕的顯 示等等;X Client 則負責在 X 視窗系統中執行的應用程式;另外並有一 視 窗管 理 程 式 負 責 協 調每 個 視 窗 。 考 量 到和 Linux 之間的相容性, 及”Open Source”及其他相關特性,本系統選用了 QT 作為 Streaming 平 台的視窗程式設計架構。

以下為有關QT 視窗程式的相關技術及文獻:

一、

QT 程式設計介紹

QT 是一套 Troll Tech 所發展出來的圖形函式庫,KDE 桌面環境 就是架構在 QT 的函式庫之上。在之前 QT 仍然有版權的問題時,曾 經受過許多 Linux 的使用者的爭議,後來 Troll Tech 公司提供 QT Free Edition 和提出 Q Public Licenses (QPL),如此一來使得 QT 符

合了Open Source 的精神,也使得 KDE 成為真正自由開放的軟體。

QT 本身可以被稱作是一種 C++ 的延伸,QT 中有數百個 class 都是用 C++ 寫出來的。這也就是說,QT 本身就具備了 C++ 的快 速、簡易、Object-Oriented Programming(OOP)等等無數的優點。

它除了提供一些常見的視窗元件外,還有提供類似 STL 的 abstract

(41)

上常見的功能,可以把它視為一種提供與MFC,OWL 這些 library 相 似功能的 library。

QT 具有非常好的可移植性(Portable),QT 不只是可以在 Linux 中運作,也同樣可以運行在 Microsoft Windows 中,這也就是說,利 用 QT 編寫出來的程式,在幾乎不用修改的情況下,就可以同時在 Linux 和 Microsoft Windows 中運行。 QT 的應用非常之廣泛,從 Linux 到 Windows 從 x86 到 Embedded 都有 QT 的影子。QT 提 供幾乎與 stand c++ library 相容的 library ,如 QTL ,File I/O, network , compress ,composed graphic...,所以 Qt application 幾 乎 只要重新 compile 就可在其他 platform 上跑。

QT 有許多版本,其中企業版(Enterprise Edition)與專業版 (Professional Edition)可以使用於商用軟體,並提供相關的升級與技

術支援,企業版比專業版多了一些額外的模組,像是Open GL 支援等;

而Unix/X11 自由版(Free Edition)則可以在遵守 Q Public License 與 GNU General Public License 的前提下,開發自由與開放原始碼的軟 體;而 QT 嵌入版(Embedded Edition)是 QT 的嵌入式系統開發版本, 在遵守GNU General Public License 的前提之下可以免費使用。 QT 自由版支援 Unix/X11,像是 Linux 幾乎所有的 distribution 都

會納入,例如 Red Hat Linux 在安裝完畢之後, QT 就會安裝在

/ust/lib/qt*之中,其中*表示版本名稱,在 Red Hat 9.0 中的 QT 版本 是QT 3.1。

QT 在使用時是由環境變數 $QTDIR 得知您的系統中 QT 的相關檔

案位置,由下列指令可以得知系統安裝QT 的資料夾位置。

[test@server user]$ echo $QTDIR

二、

QT Designer

(42)

分的元件及功能,因此在設計 GUI 介面程式時便可如拼圖一般將程式 所需元件、版面配置一一拼湊,利用 QT Designer 可以用一種所見既 所得的方式,來產生 QT 程式的 GUI 介面的程式碼,通過增加一些 功能,就可以完成一個程式了。QT Designer 可直接畫出 .ui 檔,並 產生 project file 及 Makefile 然後再依作業系統進行編譯動作,可以 說非常方便。

QT Designer 使用 signal & slot 技術,使版面元件(widget)或是整

個程式能夠接受所發生的signal 去進行相對應的 slot 的動作。在此

signal & slot 和一般 signal & slot 最大的不同之處在於 QT Designer 的 signal & slot 技術乃是採用即時處裡模式,如此可降低程式行為的 複雜度,也可避免發生指令碰撞的情形。

(43)

第三節 現行 Streaming 軟體的介紹

在1995 年, Xing 這家公司所推出的 Streamworks 是第一個採用影 音串流的影音播放程式。爾後,串流媒體如怒火燎原般快速地散播開來, 厚植在我們日常生活中。目前在網路上流行的 Video Streaming 產品相當 多。在商業軟體部分,現今網際網路上影音節目播放所採用的Streaming 串流檔案格式主要可分 RealNetworks、Microsoft、Apple 三大串流平台。 RealNetwroks 為 RealMedia 格式(副檔名為.ra、.rm、.ram 等),Microsoft 為Windows Media Audio 或 Windows Media Video 格式(副檔名

為.wma、.wmv)。Apple 為 QuickTime 格式(副檔名為 .mov)。

在開放軟體方面,亦有許多的選擇,但由於受限於編碼解碼器的限制 及串流媒體的標準未定,開放軟體方面的資源顯得非常紊亂。基於對 Mpeg4 的支援及跨平台性,這裡主要介紹 VLC 和 Mpeg4IP 這兩套軟體。

一、 商業軟體:

1. RealNetworks 串流視訊方案: 由於 RealNetworks 發展串流媒體已經很久,產品線完整且 功能齊全,能提供專業使用者一次購足的全面解決方案。在串流 媒體的整個過程中,服務端的製作、傳送、伺服、到使用者端的 下載、播放, RealNetworks 在每一個環節都有相對應的產品, 且分別提供免費下載的 Basic 版和需要付費的 Plus 版, Plus 版 本雖然功能一應俱全,但高昂的價格也不是一般非專業使用者所 能負擔的。

(44)

Windows、Mac 及 Linux、Solaris、HP/UX 的串流媒體服務平台。

2. Microsoft 串流視訊方案:

Microsoft 挾著 Windows 作業系統的威力強力搶進串流市 場,其所推出的Windows Media Player 以內建於 Windows 系統 及方便的使用介面等優勢快速搶進。

Microsoft 的 Windows Media 串流系統平台也提供了頗為 完整的產品線,從製作端的 Windows Media Author、 Windows Media ASF Indexer,到編碼用的 Windows Media Encoder,伺服 傳送內容用的 Windows Media Server,還有保護智產的

Windows Media Rights Manager,只是相較於 RealNetworks,在 各個產品的功能深度上都稍嫌不足。當然對一個完全免費的串流 平台,這已是非常難得了。

3. Apple 串流視訊方案:

以其在影像處理上的專長推廣 QuickTime 格式。Apple 的串

流平台在完整性上居於劣勢,由於Apple 本身只有 QuickTime

(Darwin) Streaming Server (為一 Open source 的伺服器架構)及 Apple QuickTime Pro,使用者必須另外購買編碼程式來轉換影音 內容為 QuickTime 串流格式。如果要製作 live 的轉播,得再選購 Sorenson Broadcaster 來將內容串流出去。不過架構相較於

RealNetworks 還是便宜許多。

Apple 為了推廣其 QuickTime 格式更進一步開放其

QuickTime Streaming Server 的原始碼,企圖以開放軟體的力量 增進其影響力。

(45)

二、 開放軟體:

1. Mpeg4Ip:

MPEG4IP 是個由 Cisco 的幾位工程師所一起整合現行的開放

軟體資源所發展的Mpeg4 的視訊串流系統,包括 Mpeg4 Video

的製作、傳送和播放,並提供圖形化介面及串流視訊的下載功能。 其中串流的部分乃採用 Apple 所釋出的 Darwin Streaming Server 核心所完成的。Mpeg4IP 主要的目的是為了讓研發者可以 開發出 standard-based 的串流伺服端和使用者端。由於目前串 流視訊的規格跟通訊協定紊亂,導致一套串流系統只能對應一套 串流播放軟體的現象,Mpeg4IP 主張 standard-based 來提高不同

系統間的溝通性並減少串流的障礙。雖然是針對Linux 所發展的

系統,但現在亦移植到 Windows, Solaris, FreeBSD 和 Mac 等作 業系統上。 2. VideoLan: VideoLAN 主要是為多媒體串流所開發的,跨平台性高,支援 的視訊來源和格式多樣化,由圖2-4 可知包括 Mpeg1、Mpeg2、 Mpeg4、DivX 的檔案,亦可以由 DVD、數位衛星頻道、數位電視 頻道、或特定影像擷取卡所擷取的影像作為來源,串流給不同作 業系統的使用者端。

軟體分為兩部分:VideoLan Client (VLC) 以及 VideoLan Server (VLS)。 VLC 是個多功能的跨平台多媒體播放器,支援 Linux、FreeBSD、Windows、Mac、BeOS、Solaris、QNX、Familiar Linux 等,現在亦將觸角延伸至嵌入式系統,提供 ARM-based、 MIPS-based 等手持設備多媒體的支援。VLC 除可以當作使用者

(46)

器用途。相較於VLC 而言,VLS 支援的視訊來源較多,除了 VLC 所能提供的來源外,多了衛星電視、數位電視作為來源。 圖3-4 VLC 串流架構 除了強大的串流功能外,VideoLAN 的研發團隊亦提供論壇為 有興趣或有疑問的人作為交流的園地。這也是此計畫中,我們以 VLC 作為技術參考來源的主要原因。

(47)

第四節 軟體架構設計

串流視訊系統的建構,需要有著提供視訊來源的server 端和能接收串 流視訊的client 端。由於 VWEB VW2010 同時具視訊壓縮、解壓縮的功能, 可以提供製作視訊來源及視訊播放的功能。為充分利用硬體資源,此軟體 設計目標為發展功能兼具的串流視訊軟體,可以同時勝任server 端及 client 端的工作。

一、 軟體架構

1. Server: I N P U T S O U T P U T S

Streaming out via NETWORK

Store as FILE

Video source from

Video source from

Functions of Streaming Server Vweb VW2010

+

Toshiba RHBMA4500

Streaming Software

(48)

Show on TV

Store the receiving data from NETWORK as FILE

Video source from FILE Video source from NETWORK

Functions of Streaming Client

Show on PC I N P U T S O U T P U T S V VWWEEBBVVWW22001100 + + T ToosshhiibbaaRRHHBBMMAA44550000 S Sttrreeaammiinngg S Sooffttwwaarree 來,從視訊擷取設備、亦或是事先壓製的視訊檔。因此,server 的視訊 來源,主要可規劃為:

存在硬碟中,已事先經 VWEB VW2010 codec card 所壓縮後的 視訊檔。

將視訊擷取設備的內容經 VWEB VW2010 codec card 所即時壓 縮後的視訊檔。

從網路下載的視訊檔。

視訊來源經過 VWEB VW2010 codec card 的壓縮後,即時將壓製 之後的視訊利用網路傳送出去,或輸出成檔案,以作儲存之用。

2. Client:

(49)

Client 端主要的目的在於接收從網路上來的串流視訊外並播放出

來。除此之外,亦提供擷取串流視訊或將硬碟中的視訊檔經 VWEB

VW2010 codec card 解壓縮後直接播放的能力。

二、 軟體設計

本串流軟體 Vweb streamer(簡稱 vstreamer)主要分為四部分:1. vstreamer.c 2. interfac.h 和 interface.c 3.StartHW.c 4.udp.c。其功 能分述如下: 1. Interface.h: 主程式與副程式間溝通的介面,定義程式執行所需 的資料類別。主要包括程式執行的模式、啟動VWEB VW2010 codec card 所需的資料型別、網路溝通所需的資料型別、緩衝區 的大小等。Interface.c: 其工作在於初始化 interface.h 裡所定義 的資料型別及這些資料的清除。主要提供 (1). 設定程式間溝通的 訊號,如執行模式、程式錯誤、終止的指示 (2). 設定硬體啟動所 需的參數 (3). 設定啟動 udp 時所需的參數等。 2. vstreamer.c:整個串流程式的主程式部分,功用在於掌控整個程 式的執行流程,及當程式結束或錯誤發生時,所應採取的應變措 施,例如: 歸還動態配置的記憶體,以免造成系統不穩、當機。 3. StartHW.c : 為確保壓縮及解壓縮的即時性,視訊的壓縮、解壓 縮與資料的輸出入,是由個別的線程(threads)所執行。所以此 部分的主要工作在於VWEB VW2010 codec card 的啟動,提供視 訊壓縮、解壓縮的功能。除此之外,包括資料輸出入與硬體處理 速度的協調,例如:何時該接收串流視訊、送出串流視訊,接收 多少資料或送出多少資料等。

(50)

UDPOpen()、UDPRead()、UDPSend()、UDPClose(),分述如下:

(1). UDPOpen(): 用以建構溝通所需的管道(UDP socket)。主要包 括UDP socket 的建立、socket 屬性的設定,例如:socket 的重 複利用性,接收、傳送時所需的緩衝區大小、接收端或傳送端 的IP、port 等。 (2). UDPRead(): 負責串流視訊的接收。由於當系統要求接收資料卻 無封包(packet)進來時,此時程式的執行會停止(block),直 到有資料進來才會再繼續運行。當然可以把socket 的屬性設定 成 non-blocking,此時程式會立即返回而不停止。但也因為如 此,程式會一直去確認是否有資料進來,而耗費許多cpu 時間。 為解決這個問題,我們可以利用select()去監控要想要讀取資料 的socket,select()能在有資料進來時,才會通知程式去讀取, 卻不用花費太多cpu 時間。 (3). UDPSend(): 負責串流視訊的傳送。值得注意的是當傳送資料的 時候,雖然傳送成功,但傳送過去的大小可能會少於我們所期 望的。所以在每次傳送完後,要確認實際傳送的大小是否與我 們要求的相符。若不符,則將剩下的資料繼續傳送過去。 (4). UDPClose(): 負責將跟系統要求的 socket 關閉。

三、 介面設計:

因計劃最終目的再於開發嵌入式影音串流產品,故在一開始的軟體 使用者介面開發的環境,故選擇了 Linux 的作業系統,以及 QT Design Tools。在 Linux 作業系統環境下開發 QT 視窗程式,可以直接拿到 Embedded System 由 Embedded QT 版本執行 Compiler,使得開發時 間得以大幅縮短,且讓程式開發人員對於開發軟體更容易上手。

(51)

由於串流應用程式分成主要兩個部份:Server & Client,故在設計使 用者介面應用程式時,便由此兩部分著手分別完成此兩部分使用者介面 程式。 在設計過程中,一開始使用QT Designer 建構如圖 3-8、3-9 的版面 配置,完成其 .ui 檔,之後便可將版面元件與程式所需信號與功能作一 連結,如圖3-7 所示,藉由版面元件的觸發信號啟動程式的某一個功能。 之後再撰寫 C++ code .cpp 檔,將 GUI 程式及多媒體串流程式整 合,以及紀錄相關IP、PORT 等資訊並提供給系統內部串流程式,進行 網路串流的相關工作。

圖3-7 Single & Slot Function 編輯介面

(52)

圖3-8 Server 端使用者介面

由於為開發版本,故尚未考慮版面美觀設計,僅止於以達到系統 功能需求為目的。

由圖 3-8 可知在 Server 端的部份,著重於網路的 Streaming 功

能,並簡化介面,使得使用者僅需使用接收端的IP 及 PORT 便可進行

Streaming 的傳送,而相關 Flow Control 等網路傳撥機制則隱藏於使 用者介面之中,透過流量控制演算法等逕自決定,如此透過精簡的介 面可使程式使用更容易上手。 2. Client 端使用者介面程式 圖3-9 Client 端使用者介面 在 Client 端的部份,由於系統提供了針對不同多媒體類型所提出 的許多組態檔以及在播放時的解碼器,因此連帶使得 Client 端使用者 介面程式較為繁瑣。 在第一個部份的 Configure File 便是可讓使用者根據所接收的多 媒體資料去選擇自己所需要的多媒體組態檔。 而在選擇檔案及檔案 處理的部份,可依檔案的來源選擇從網路上直接播放獲直接播放以及 直接從本地端播放。而為了提供使用者更多進階的解碼及播放需求,

(53)

提供了數個”Mode”可供選擇,以使使用者能依最適合自己的處理方式 去播放檔案。

(54)

第五節 串流軟體實踐

關於本計畫的串流軟體,在接收串流視訊的功能上,本軟體已具備雛 形。可將預先用VWEB VW2010 encode/decode card 壓製過後的影片檔案 經由 VLC 播放軟體傳送視訊給客戶端,客戶端即可利用本應用軟體將此視 訊接收下來儲存成檔案亦或是利用Vweb VW2010 enc/dec card 將影像即 時解壓縮在電視上播放出來。較為不足的是串流視訊的伺服端功能還未能 完全實現,無法提供當作串流視訊的提供來源而需以VLC player 來提供, 所以提供串流視訊的功能是以後可以繼續發展的方向。 在視窗程式設計方面,由於計畫中所使用的設計軟體為 QT,它的優 點即在於強大的跨平台能力,使得我們能達到在一般個人電腦上進行研究 開發,並迅速的移植到嵌入式系統之中,但由於 QT 本身的軟體結構及本 計畫之中的多媒體影音串流程式部分的結合不易,花費許多時間,若要解 決此方面的問題,則將來應須考慮到 QT 本身內部的軟體架構配合度問 題;雖然在QT 程式部分即有可支援多媒體影音串流的 Module 可供使用, 但考慮到和VWEB 本身的高度整合性問題,故未將它考慮進去;且因迫於 計畫的時間上需求,未能將使用者介面設計的更為盡善盡美。

(55)

第四章 系統整合與結論心得

第一節 整合多媒體影像的硬體開發平台

本計劃之實驗主要分為兩部份,分別測試VWEB VW2010 WIN10 Card

在PC 環境以及 Toshiba RBHMA4500 開發板上之工作情形。

一、 VWEB VW2010 WIN10 Card in PC

本測試主要在測試vstreamer 的串流接收功能,先將 DV 的視訊利

用 VWEB VW2010 WIN10 產生 MPEG-4 視訊檔。藉由 VLC Media Player 當串流伺服端發送剛壓制完成 MPEG-4 視訊檔到 Client 端,此 處的VLC Meida Player 版本為 0.8.0。由於 VLC Media Player 支援很

多作業系統,伺服端的作業系統為 Windows XP。接收端的硬體環境

為PC 搭配 VWEB VW2010 WIN10,作業系統則為 RetHat Linux 9.0,

VWEB VW2010 WIN10 的 驅 動 程 式 版 本 為

linux_rh90_sdk2_src-2004-07-26-1509422。接收端則執行本計畫所 設計的串流軟體 vstreamer 來接收由串流伺服端傳送過來的 MPEG-4 視訊檔。以下則列出執行過程:

A. 從視訊端(如:DV)利用 VWEB VW2010 WIN10 製作 MPEG-4 視訊檔 Ex: 在 VWEB 所提供的驅動程式裡,進入名為 SDK2 的資料夾下執行如下指令: > ./encoder option_files/enc_mp4ts_ntsc_02m_cbr.ini mp4ts02m.mpg B. 製作 vstreamer 執行檔 因為在編譯 vstreamer 執行檔時,需要利用 SDK2 資料夾裡 的 .sre、.cpp、.h 檔,所以需先將 vstreamer 資料夾移到 SDK2

(56)

interface.h、udp.c、StartHW.c 及 Makefile。在放置 vstreamer 原 始碼的資料夾下,執行 make 即可自動產生名為 vstreamer 的執行 檔。再將此執行檔放置在VWEB 的 SDK 資料夾下,以便 vstreamer 在執行過程中可以找到相關的組態檔(.ini)和韌體(.sre)。 Vstreamer 三種處理模式(MODE),如下: 1. MODE 1: Decode_from_file 此功能在於直接將視訊檔以 VWEB VW2010 WIN10 解壓縮。若要執行此功能則輸入如下: > vstreamer 執行模式 組態檔 解壓縮的檔名

Ex: > ./vstreamer 1 option_files/dec_mp4ts_ntsc.ini mp4ts_02m.mpg

2. MODE 2: Decode_from_stream 此功能可以接收串流視訊

且利用VWEB VW2010 WIN10 解壓縮後播放。若要執行此功

能則輸入如下:

> vstreamer 執 行 模 式 組 態 檔 接 收 端 的 埠 號 ( port number,預設為 5001)

Ex: > ./vstreamer 2 option_files/dec_mp4ts_ntsc.ini port=1234 註:可以利用 port=<desired port>來修改埠號

3. MODE 3: Save_stream_to_file 此功能可以將接收的串流視 訊儲存成視訊檔,此時則不啟動硬體解壓縮。若要執行此功 能則輸入如下:

> vstreamer 執行模式 儲存視訊的檔名

Ex: > ./vstreamer 3 save.mpg port=1234

註:由於MODE 3 不需啟動 VWEB WIN10,所以不需組態檔。

(57)

C. 利用 VLC Meida Player 當串流伺服端

1. 點選 FILE->Open Network Stream,在跳出視窗的 FILE 選單 下,選擇所要串流的檔案,如 mp4ts_02m.mpg。見圖 4-1

2. 在跳出視窗下方,勾選『Stream output』,並點選『settings』

做網路設定。由於 vsteamer 支援 udp 溝通模式,所以 udp

的輸入視窗下輸入接收端的位址及埠號。見圖4-2

3. 輸入完畢後,點選『ok』後即可開始傳送視訊。

D. 啟動 vstreamer 的接收功能來接收視訊

要啟動vstreamer 的接收且直接播放的功能,則選擇 Mode 2。

Ex: > ./vstreamer 2 option_files/dec_mp4ts_ntsc.ini port=1234

若儲存不播放,則選則Mode 3。如此便可完成整個測試。

(58)

二、 VWEB VW2010 WIN10 Card in Toshiba RBHMA4500 開發板:

本計劃所建立之嵌入式多媒體影像串流平台主要分為 HOST 端與

CLIENT 端,在 HOST 端為輔助實驗進行的 PC,而 CLIENT 端便是本計 劃之核心部份-一多媒體影像串流嵌入式系統。

在CLIENT 端部分,Toshiba RBHMA4500 開發板包含了網路的 port、 電源的接頭、連接host 端控制的 I/O 以及 PCI 插槽,而 VWEB VW2010 WIN10 影像處理卡便是透過 PCI 界面與 Toshiba RBHMA4500 開發板進 行溝通,而VWEB VW2010 WIN10 影像處理卡所接受為 3.3V 電源非 5V

電源,故在Toshiba RBHMA4500 開發板上利用接線方式克服這個問題。

而 HOST 端的輔助 PC 則是透過網路線與 CLIENT 溝通,利用 HOST 端

PC 之鍵盤、滑鼠進行 CLIENT 端主程式之控制,並在 PC 上規劃一虛擬

記憶體區塊供CLIENT 端使用,克服嵌入式系統記憶體不足的問題。

將在個人電腦上所開發完成的驅動程式或應用程式,安裝到Toshiba

RBHMA4500 開發板上,並對其架構做修改,因為原本在個人電腦上已

經開發完成的程式,在 Toshiba 開發板上是無法執行,必須針對開發板

的CPU 架構及型式對原本程式作修改。以 VWEB VW2010 WIN10 影像

處理卡驅動程式為例,圖 4-3 為執行失敗的狀況,原本個人電腦上的驅

動程式並無法順利安裝於 Toshiba RBHMA4500 開發板上,必須針對

Toshiba RBHMA4500 開發板上的運算位元將跨平台編譯的參數做調整。

(59)

利用 mips_fp_le-gcc 為針對 MIPS CPU 進行浮點數運算的編譯器, 對於驅動程式重新編譯並加入參數 -mtune=r4600 –mips3,此為針對 Toshiba RBHMA4500 開發板的 MIPS III 的架構做編譯,以及將驅動程式

作修改,其編譯成功及安裝於 Toshiba RBHMA4500 開發板成功畫面如 圖4-4 所示。 驅動程式測試成功後,進行VWEB VW2010 WIN10 影像處理卡的應 用程式編譯與執行,如圖4-5 所示,此為 VWEB VW2010 WIN10 影像處 理卡正在對影像編碼的畫面。 圖4-4 VWEB VW2010 WIN10 影像處理卡驅動程式安裝成功畫面 (a) (b)

(60)

圖4-5 為 VWEB VW2010 WIN10 影像處理卡在 Toshiba RBHMA4500

開發板上針對輸入影像編碼成 MPEG-4 影像,圖 4-5(a)為程式初始化過

程,如果程式初始化失敗程式將停止執行,圖4-5(b)為進行編碼的過程

圖,可以顯示出已經編碼的時間與檔案大小。另外針對輸入影像編碼成 MPEG-2 影像其程式執行過程如圖 4-6 所示,

圖4-6 VWEB VW2010 WIN10 影像處理卡 MPEG-2 影像編碼

針對編碼位元速率(bit rate)的調整,其影像播放結果可如圖 4-7 所 示,左圖為位元速率(bit rate) 9MB,右圖為位元速率(bit rate) 3MB,明 顯可看出利用較高的位元速率(bit rate)可以編碼成畫質較佳的影片。

(61)

Toshiba RBHMA4500 開發板上的測試結果方面,透過開發版可將開 發版所接收之影像訊號成功encode 成 MPEG-4 檔案格式;而測試 decode

部分,在開發版上接收 MPEG-4 檔案並加以 decode 時出現一個問題,

即雖然 decode 程式開始執行,但在影像輸出部分卻無影像,因此無法

得知在 Toshiba RBHMA4500 開發板上的 decode 功能是否得以成功執

行。decode 部分的問題可能需要透過 Source Code 的重新編寫來改善,

透過比較在PC 端執行 decode 與在 CLIENT 端執行 decode 之不同訊息,

可回朔至source code 中找其相對的位置,確認關於硬體的架構是否正

確,並在其中放置一些標籤,藉此可觀察程式執行時出問題的部份並藉

此進行程式之debug 動作。

此計畫最大的問題來自於 driver 的修改,除本身對程式要非常了解之

外,對於linux 整個系統的架構必須很熟悉,因為 host 端和 client 端的系 統架構不同,支援host 的 driver 當然無法支援 client,對於程式設計師而 言,Montovista linux 雖然基本上的 distribution 和 host 端的 red hat linux

相同,但其kernel 的 source code 卻不同,造成程式設計上很大的挑戰,

如無法了解 client 端的 OS 架構,要修改原本的 driver 是難上加難,這也

是我們這個計畫遇到的最大困難,因為了解一個 OS 並不是簡單的事情,

更何況要學一個不太常通用的 OS,除了資料缺乏外,能詢問的相關人員

也是廖廖可數,以程式設計師的角度而言,在client 用的 OS 最好能跟 host

(62)

第二節 研究限制與後續研究建議

VWEB VW2010 WIN10 影像處理卡雖然已發展 Linux 環境下的系統,

不過當移植整個 Linux 架構進入嵌入式 Linux 時,在進行跨平台編譯時,

產生許多錯誤,單純的跨平台編譯似乎無法順利將系統平台由 PC 上轉移

至嵌入式系統上。

將整個程式設計完成後,也就是跨平台編譯沒有任何錯誤時,但在程 式實際執行上並沒有達到預期的效果。以目前的效果而言,將影像輸入 VWEB VW2010 WIN10 影像處理卡可以順利進行編碼成 MPEG1、MPEG2、 MPEG4 影片,但是如果將現有的影片進行解碼透過 S 端子或 AV 端子輸出 至播放器上,卻只有黑色影像。儘管整個程式仍然持續執行,但是卻沒有 應有的影像傳輸出來,這造成發展上十分重大的限制。 由於在進行程式修改時,必須先分析錯誤是由 VWEB VW2010 WIN10 影像處理卡的驅動程式所造成,還是由影像編碼解碼的應用程式造成,單 純就此兩種狀況進行偵錯,已經具有相當程度上的困難,如果再對Toshiba

公司的RBHMA4500 (henceforth called RBTX4938) 開發平台進行檢討,

也就是 Toshiba 公司嵌入式系統的 PCI 介面上設計上,是否可以完全與

VWEB VW2010 WIN10 影像處理卡的 PCI 界面完全溝通,此硬體部份就必

需與 VWEB 與 Toshiba 公司的硬體設計工程師進行細部的討論,才可以

在短時間內找到解決方案。因此後續研究發展,應該整合硬體公司的協 助,才能縮短後續應用程式開發上的時間。

(63)

附錄 參考文獻

[1] Olli Lehtoranta, Petri Kukkala, Timo Hämäläinen,and Ville Lappalainen, "Implementation of a Video Transcoder for Embedded System". In Proceedings of the IEEE International Conference on Information Technology: Coding and Computing (ITC 2003), April 28-30, Las Vegas, Nevada, pp. 389-395, 2003.

[2] Jin-Gyeong Kim and C.-C. Jay Kuo, MPEG-4 video codec IP design with a configurable embedded processor”.IEEE International Symposium on Circuits and Systems (ISCAS), Bangkok, Thailand, May 25-28, 2003.

[3] Ming-Chang Liu Tsukagoshi, I. Kutner, M.A. “Real-time MPEG video encoder with embedded scene change detection and telecine inverse” Consumer Electronics, 2002.

[4] 劉書佑,實現於 ARM 系統單晶片發展平台之視訊編解碼系統,中山大 學資訊工程學系研究所,民國92 年。

[5] Tai-Lun Chang, Ying-Ming Tsai, Chih-Da Chien, Chien-Chang Lin, and Jiun-In Guo;” A high-performance MPEG4 bitstream processing core”Multimedia and Expo, 2004. ICME '04. 2004 IEEE International Conference on , Volume: 1 , 27-30 June pp.467-470, 2004.

[6] Sayed, M. and Badawy, W.” Low power embedded memory architecture for video object decoding in MPEG4 simple profile”Electrical and Computer Engineering, 2002. IEEE CCECE. Canadian Conference on , Volume: 2 , 12-15 May 2002 ,pp. 889-893, 2002.

(64)

Proceedings of the 2004 International Symposium on , Volume: 2 , 23-26 May ,pp 145-148, 2004.

[8] Bhatkar, A.and Chandramouli, R.,” MPEG4 video streaming over mobile ad-hoc networks”Information Technology: Research and Education, 2003. Proceedings. ITRE2003. International Conference on , 11-13 Aug.,pp.257-258, 2003.

[9] Kwasinski, A.and Farvardin, N.,”Optimal resource allocation for CDMA networks based on arbitrary real-time source coders adaptation with application to MPEG4 FGS”,Wireless Communications and Networking Conference, 2004. WCNC. 2004 IEEE , Volume: 4 , 21-25 March ,pp.2010-2015, 2004.

數據

圖 2-2 Toshiba 公司的 RBHMA4500 開發板開機畫面
圖 2-5 DEVROCKET 的開機畫面  圖 2-5 為 DEVROCKET 的開機畫面,主要特點為:  •  GUI 視窗介面開發環境  •  包含 GNU  的開發工具  •  指令提醒編輯器  •  檔案類別函數架構瀏覽器  •  內建 gdb 偵錯器  •  內建 HTML 說明文件          DevRocket  提供偵錯工具如下所示,類似 gdb 的功能,可以讓程式 偵錯時,增加許多效率。
圖 2-6 DEVROCKET 之執行程式          圖 2-6 為 DEVROCKET 之執行程式的外觀,其執行方式與 VISUAL C++ 差不多,同樣有 debug,以及錯誤訊息提示,同是也有一些好用的 tool 迅 速編譯 kernel,例如會有一個小視窗把所有用到關於程式的標頭檔,都給 列出來,此外也會有一些預設好的格式,基本的 make 檔的格式等,迅速 了解編譯過程,在寫作程式上可以收事半功倍之效。  DEVROCKET  提供了應用程式、資料庫、核心、平台影像檔四個專案管理, 可以使
圖 2-7 DEVROCKET 操作畫面
+7

參考文獻

相關文件

The disabled person can thus utilize this apparatus to integrate variety of commercial pointing devices and to improve their controllability in computer operation.. The

 善用從計劃得到的經驗 善用從計劃得到的經驗 善用從計劃得到的經驗 善用從計劃得到的經驗, , , ,自行設計及開發新 自行設計及開發新

Windows/ Linux/ Mac 各種平台的開發套件,使我們能夠透過各種平台來開發 Android 軟體,所有的 Android 應用程式都是使用 Java

Excel VBA 乃是以 Visual Basic 程式語言為基礎,提供在 Excel 環境中進 行應用程式開發的能力。在 Excel 環境中「Visual Basic 編輯器」提供了一個

智慧型手機是一種運算能力及功能比傳統手機更強的手機。 通常使用的作 業系統有: Symbian 、 Windows Mobile 、 iOS 、 Linux (含 Android 、 Maemo 和 WebOS) 、.. Palm

Eclipse 是一款由 Java 所編寫成的整合開發環境,最早是由 Object Technologies International 所開發,於 1996 年被 IBM 收購 後便改成 Common Public License 的授權方式,使

本研究以河川生態工法為案例探討對象,應用自行開發設計之網

本研究以河川生態工法為案例探討對象,應用自行開發設計之網