楊祖芳 熊承義 陳方強
摘 要:隨著信息技術和計算機技術的飛速發展,在移動設備上欣賞豐富的電視節目和接收及時的交通、股市等實時數據信息越來越成為眾多消費者期待的功能。提出一種應用于CMMB移動多媒體廣播系統的手持數字移動電視終端的設計,以三星的ARM11處理器S3C6400作為硬件平臺,采用Linux作為軟件平臺,詳細介紹了硬件結構和軟件系統的設計,實現數字移動電視的音視頻解碼,最終實現數字移動電視的播放。
關鍵詞:移動多媒體廣播;S3C6400;數字移動電視;媒體終端
中圖分類號:TN919.8文獻標識碼:B
文章編號:1004-373X(2009)03-179-04
Design of Mobile Multimedia Broadcasting Terminal Based on S3C6400
YANG Zufang,XIONG Chengyi,CHEN Fangqiang
(College of Electronic Information Engineering,South-Central University for Nationalities,Wuhan,430074,China)
Abstract:With the rapid development of information technology and computer technology,appreciating a wealth of television programs and receiving real-time data such as prompt transportation,the stock market on the mobile equipment becomes the function which more and more consumers expected.A design of portable digital mobile TV terminal applied to China Mobile Multimedia Broadcasting system(CMMB) is presented.The design of hardware structure and software system are introduced in detail.The digital mobile TV terminal using Sumsung′s ARM11 processor S3C6400 as hardware platform,using Linux as software platform.The digital mobile TV audio and video decoding and digital mobile TV broadcasting are realized ultimately.
Keywords:mobile multimedia broadcast;S3C6400;digital mobile TV;medium terminal
0 引 言
移動多媒體廣播目前已經成為炙手可熱的發展熱點。移動多媒體廣播業務是指通過衛星和地面無線廣播方式,在具有7英寸以下小屏幕的移動便攜式終端上,實現隨時隨地接收廣播電視節目收視與信息服務[1-3]。
我國于2006年提出了具有自主知識產權的中國移動多媒體廣播(China Mobile Multimedia Broadcasting,CMMB) 系統[4,5],能夠支持諸如手機、PDA、MP3、MP4、數碼相機、筆記本式計算機等小尺寸、小屏幕、移動便攜的多種終端,實現隨時隨地提供廣播影視節目和信息服務,滿足當代社會“信息無處不在”的需求。
為了實現較高質量的電視節目接收和播放,終端的性能起著重要的作用,其中終端的音視頻解碼能力又是主要因素。同時兼顧到終端的成本,選擇合適的軟硬件平臺十分關鍵。因此本設計兼顧數字移動電視的性能要求和成本兩個方面。
1 CMMB系統架構與終端結構簡介
2006年10月24日,國家廣播電影電視總局正式頒布了中國移動多媒體廣播CMMB系統的廣播信道行業標準《GY/T 220.1-2006 移動多媒體廣播 第1 部分:廣播信道幀結構、信道編碼和調制》,確定了采用我國自主研發的移動多媒體廣播傳輸技術標準(Satellite-Terrestrial Interactive Multi-service Infrastructure,STiMi)。目前國際上還沒有形成統一的移動多媒體廣播技術標準,尚處于大規模應用的前期,因此該標準的及時出臺,對我國移動多媒體廣播和相關民族工業的發展具有重要的促進作用。
CMMB 技術體系是利用大功率S波段衛星信號覆蓋全國,利用地面增補轉發器同頻同時同內容轉發衛星信號補點覆蓋衛星信號盲區,利用無線移動通信網絡構建回傳通道,從而組成單向廣播和雙向交互相結合的移動多媒體廣播網絡[6]。CMMB 體系架構如圖1所示。
數字移動電視終端的硬件部分主要分為兩部分:電視的接收模塊和播放顯示模塊。前者負責控制CMMB信號,后者負責播放音視頻數據。數字移動電視的接收模塊采用泰合志恒公司生產的模塊。接收模塊的主要功能包含:電視芯片的初始化,設置頻點,掃描頻點;獲取頻道信息,設置頻道;接收及停止音視頻數據;測試電視信號強度大小。播放顯示模塊以三星的ARM11處理器S3C6400為核心的嵌入式系統[7]。
終端的軟件部分以Linux操作系統為平臺[8,9],而電視播放器軟件結合泰合志恒電視接收模塊的SDK,能夠實現數字電視的控制和播放。
2 數字電視系統軟件設計
數字電視的系統結構由主界面、電視接收模塊SDK和音視頻播放模塊3部分組成,如圖2所示。
3個模塊的主要功能如下:
主界面:提供數字移動電視的用戶界面,與用戶交互,提供播放電視,選臺,設置音量,設置靜音等功能。
電視接收模塊SDK:數字電視控制引擎,封裝SPI的驅動程序,向上提供接口,用來接收數字電視信號,提供音視頻數據,控制信息等。
音視頻播放模塊:用于播放音視頻數據。
2.1 主界面
主界面完成的具體工作包含:搜索可用的電視頻點;選擇收看的電視頻道;檢測當前的信號強度;讀取接收到的音視頻數據;對接收到的音視頻數據進行解碼;播放解碼后的音視頻數據;對當前播放的節目進行錄像;調節音量大小;靜音功能。
主界面利用調用泰合電視接收模塊SDK,通過SPI驅動程序讀寫數據,并將接收到的CMMB復用子幀解析成H.264格式的視頻數據,AAC格式的音頻數據和其他數據。然后調用播放器模塊,將H.264格式的視頻數據和AAC格式的音頻數據解碼并播放。
2.2 電視接收模塊SDK
電視接收模塊SDK提供對CMMB電視信號的控制,包括:電視芯片的初始化,設置頻點,掃描頻點;得到頻道信息,設置頻道;接收及停止音視頻數據;測試電視信號強度大小。
該模塊主要由數據處理模塊及信號控制模塊2個子模塊組成。
數據處理子模塊在打開引擎時,會生成一個線程,這個線程用來讀取CMMB信號,并進行分析、處理,其流程如圖3所示。
這個子模塊是一個死循環,在循環中,先通過一個標志進行判斷,如果需要處理數據,首先讀取一幀數據,如果沒有數據,則阻塞在這兒。然后對這幀數據進行分析,分別放入音頻,視頻,其他數據的緩沖區,最后,調用回調函數對各種數據進行處理,將音視頻數據發送給音視頻播放模塊來播放。
另一個子模塊,信號控制模塊主要是提供控制接口讓上層調用,以完成對CMMB信號的處理。該子模塊主要包含以下功能接口函數:引擎的初始化:創建讀數據線程,啟動初始化;引擎的打開:對電視芯片初始化;設置頻點:設置當前頻點;得到ESG信息:從信號中提取ESG信息并分析;關閉引擎:清除用到的資源,硬件重置位;得到頻道信息列表:發送請求,分析頻道信號;設置頻道:設置當前頻道;得到參數:能得到信號強度,當前頻道等參數。
2.3 音視頻播放模塊
音視頻播放由3個線程來完成。這3個線程分別為視頻處理線程、音頻處理線程、數據接收線程。
視頻處理線程:
(1) 先判斷緩沖區隊列有沒有視頻數據,如果沒有,休眠10 ms;
(2) 有數據的話,因為視頻數據是根據時間戳順序作為隊列放在緩沖區的,取出第一幀,判斷是否已經過時,如果是很老的數據,已經錯過了播放時間,則判斷幀類型,如果是關鍵幀,則解碼并顯示,否則,丟掉這一幀,然后轉到第(1)步;
(3) 否則,判斷這一幀是否到了播放時間,如果是,則將這幀數據解碼并顯示,然后轉到第(1)步;
(4) 如果沒有到播放時間,則休眠10 ms。然后轉到第(1)步。
音頻處理線程:
(1) 先判斷緩沖區隊列有沒有音頻數據,如果沒有,休眠10 ms;
(2) 有數據的話,因為音頻數據是根據時間戳順序作為隊列放在緩沖區的,取出第一幀,判斷是否已經過時,如果是很老的數據,已經錯過了播放時間,則丟棄,然后轉到第(1)步;
(3) 否則,判斷是否到了播放時間,如果是,則將這幀數據解碼并播放,然后轉到第(1)步;
(4) 如果沒有到播放時間,則休眠10 ms。然后轉到第(1)步。
數據接收線程:數據接收線程不屬于播放器模塊,它是電視接收模塊的一部分。
(1) 如果有數據到來,判斷有沒有視頻數據,如果有,將它們全部插入到視頻緩沖區;
(2) 判斷有沒有音頻數據,如果有,將它們都插入到音頻緩沖區;
(3) 阻塞,等待數據到來;
(4) 當有數據到來時,轉到第(1)步。
音視播放器模塊共有4個子模塊:緩沖區管理、音視頻同步、音視頻解碼、視頻顯示。
2.3.1 緩沖區管理
一共設計2個隊列,音頻緩沖隊列,視頻緩沖隊列。每幀數據放入緩沖區,成員分別為幀長,幀類型(視頻有,音頻無),時間戳,數據指針。幀長表示幀數據長度,幀類型里,1表示關鍵幀,0表示非關鍵幀,時間戳表示幀數據播放的時間,數據指針指向幀數據緩沖區。當有新的數據到來時,構造一個幀成員,填入各項參數,然后根據時間戳,將他插入到緩沖隊列,播放時間近的放在前面。流程如下:
(1) 首先構造一個幀緩沖成員;
(2) 按照幀數據內容填充幀緩沖;
(3) 根據時間戳,按照近的在前面的原則,放入緩沖區隊列。
2.3.2 音視頻同步
音視頻數據始終與系統時間進行同步,起初初始化時,先在緩沖區存放1 s的數據。因為系統時間與發送的數據時間戳不一定相同,所以不用絕對時間,而是以緩沖區的第一幀時間戳為開始時間,后面的數據都以與這幀數據的時間差這個相對時間為準。
視頻和系統時間同步的流程如下:
(1) 判斷緩沖隊列是否為空,如果是空,休眠10 ms;
(2) 如果非空,從緩沖隊列取出一幀,判斷這幀數據是否已經過時,如果超過播放時間100 ms以上,則判斷幀類型,如果是非關鍵幀,丟掉這幀數據,否則處理這幀數據,然后跳到第(1)步;
(3) 如果這幀數據剛剛超過播放時間并且超過時間不超過100 ms,則處理這幀數據,然后跳到第(1)步。
音頻和系統時間同步的處理流程如下:
(1) 判斷音頻緩沖區是否為空,如果是空,休眠10 ms;
(2) 如果非空,取出一幀數據,判斷是否已經超過播放時間100 ms,如果是,丟棄這幀數據,跳到第(1)步;
(3) 否則,處理這幀數據,跳到第(1)步。
2.3.3 音視頻解碼
數字移動電視信號目前音頻采用的是AAC編碼[10],利用開源解碼庫libfaad2來解碼,libfaad2的使用流程如下:
(1) 首先對解碼器進行配置,設置一些解碼參數,例如采樣率,聲道數等;
(2) 然后初始化解碼器;
(3) 如果有需要解碼的音頻幀,依次調用NeAACDecDecode進行解碼;
(4) 當音頻幀都解碼完畢,需要關閉解碼器。
三星的S3C6400芯片提供了多種格式視頻的硬件編解碼器,簡稱為MFC(Multi-format Video Codec),支持的功能有:MPEG-4 Simple Profile 編解碼;H.264/AVC Baseline Profile 編解碼;H.263 P3 編解碼;VC-1(WMV9)Main Profile 編解碼;支持多任務,如同時完成1路編碼和3路解碼;支持多格式,如同時進行MPEG-4編碼和H.264解碼。理論上MFC性能可以達到全雙工的720*480 30幀/s(或720*576 25幀/s)的編解碼。
MFC驅動負責直接控制MFC硬件完成實際的編解碼操作,提供類似字符設備的接口;MFC API封裝了底層驅動的控制接口,給上層提供函數調用的接口方式,解碼器調用流程如圖4所示。
2.3.4 視頻顯示
對于解碼后的數據,首先要將YUV格式轉換為RGB格式,轉換可以使用硬件來進行。三星的S3C6400芯片提供的PostProcessor(以下簡稱Post或PP)支持的功能有:視頻/圖像的縮放;視頻格式轉換;顏色空間轉換(RGB<->YUV);視頻輸入支持420,422格式,輸出支持YCbCr420,YCbCr422格式;圖像格式支持16位RGB(565格式)、24位RGB;最大分辨率支持2 048×2 048;支持單幀模式(Per Frame Run Mode)和自動模式(Free Run Mode)。
3 結 語
本數字電視系統能夠實現穩定可靠的對CMMB信號的控制并具有完善的正常或異常退出機制。接收CMMB標準(H.264 320*240/AAC)的音視頻數據時,播放速率達到25幀/s。畫面流暢,停頓少,沒有明顯的馬賽克。界面友好,操作簡便,功能穩定,同時具有
較高的實時性。
參考文獻
[1]解偉.移動多媒體廣播(CMMB)技術與發展[J].電視技術,2008,32(4):4-7.
[2]毛劍慧,黑勇,喬樹山,等.CMMB 系統接收機同步及信道估計設計[J].微電子學與計算機,2008,25(5):124-127.
[3]Taura K,Tsujishita M,Takea M.A Digital Audio Broadcasting Receiver [J].IEEE Trans.on Consumer Electronics,1996,42(3):322- 327.
[4]國家廣播電影電視總局.GY/T 220.1- 2006,移動多媒體廣播 第一部分:廣播信道幀結構、信道編碼和調制[S].2006.
[5]國家廣播電影電視總局.GY/T 220.2- 2006,移動多媒體廣播 第二部分:復用[S].2006.
[6]楊慶華.中國移動多媒體廣播標準體系介紹[J].現代電視技術,2008,20(2):14-18.
[7]金敏,周翔,金梁.嵌入式系統:組成、原理與設計編程[M].北京:人民郵電出版社,2006.
[8][美]博韋,西斯特.深入理解Linux內核[M].2版.陳莉君,馮銳,牛欣源,譯.北京:中國電力出版社,2004.
[9]馬季蘭,彭新光.Linux操作系統[M].北京:電子工業出版社,2002.
[10]Takagi K,Miyaji S,Sakazawa S.Conversion of MP3 to AAC in the Compressed Domain[J].IEEE Multimedia Signal Processing,2006,8(10):132-135.