數字電視特別是數字高清晰度電視的誕生應該說是電視界的一場深刻變革。電視系統已進入數字化的進程,數字機頂盒是該系統的關鍵部件,特別是其軟件系統的設計和開發。但無論是模擬彩電還是數字處理電視,都不具備對全數字電視信號進行解碼的功能,所以一種能夠接收數字電視信號并能夠解碼輸出用于顯示的中間設備——機頂盒,就顯得很有必要了。 目前國內機頂盒以有線標清為主,歐洲以衛星和地面的機頂盒為主,美國以高清地面機頂盒產品為主。隨著技術的發展,機頂盒已不只單純接收數字電視節目,還要接收大量的數據,而且用戶和電視機之間還要實現互動。目前國內還沒有一種成熟的交互式應用,所謂的交互式應用基本上都還停留在本地交互的基礎上。本文研究的機頂盒可以支持諸如電子節目指南、按次付費觀看、立即按次付費觀看、準視頻點播、數據廣播、Internet接入、電子郵件、視頻點播以及IP電話、可視電話等的應用。因此要求電視接收機具有很好的信息處理能力和網絡通信能力。 1 機頂盒軟件系統 數字機頂盒由硬件平臺和軟件系統構成,音視頻解碼主要由硬件實現,而操作界面的功能、電視圖像的重現、數據廣播業務的平臺以及Internet的接入等都需要軟件系統實現。 數字機頂盒的軟件系統主要由嵌入式操作系統(EOS)、硬件抽象層(HAL)、軟件抽象層(SAL)以及應用程序(ASL)組成。本文主要研究基于ARM(HHARMS3C6410)平臺、Linux(v2.6.21)操作系統、THOMSON公司的數字高清解碼芯片的HDTV機頂盒系統的軟件設計,功能包括通過Demux模塊接收流數據、解析PSI信息、對音視頻流進行解碼及播放、接收用戶遙控器輸入,并具有簡單的用戶界面。研究的目標是開發出適用于所選的硬件平臺特點、具有基本的機頂盒產品功能的軟件系統。 開發內容有以下幾個方面: (1)機頂盒底層驅動程序。包括前端、USB、Enthernet、Flash的驅動及遙控信號接收的軟件等。 (2)機頂盒節目管理模塊。包括整機狀態信息和用戶設置信息的存取和管理,業務數據的存取、更新和管理,節目數據的獲取、分析。 (3)機頂盒應用程序。包括機頂盒用戶界面、選單的設計與顯示、圖形用戶界面/選單/用戶交互操作的應用和管理等。 軟件系統整體結構如圖1所示。 2 節目管理模塊的開發 節目操作管理模塊是用戶應用程序的重要組成部分,該軟件模塊主要實現確定節目操作管理模塊與系統其他模塊的關系(包括相互之間的通信協議)、建立節目數據庫、本模塊內部軟件結構的設計。 有關節目的各種操作是數字電視機頂盒軟件功能中非常重要的一部分,用戶所有有關頻道、節目的實質性操作功能都在這部份實現。在本文的總體設計方案中,節目的操作功能主要包括節目搜索(自動和手動)、節目選擇、節目信息的提取和保存、節目數據庫操作等。 在本機頂盒有關節目操作的各種功能中,絕大部分都與節目數據庫有關。如自動節目搜索時,需要建立節目數據庫,并為搜索到的節目建立相應的數據單元,用于存儲節目的各種信息;在刪除節目時,需要改變刪除節目在節目數據庫中的連接關系,并打上刪除標志等。因此,節目數據庫是節目操作軟件的關鍵部分之一。 2.1 Builder模塊 該模塊主要功能是在USIF的控制下建立節目數據庫,該模塊通過MSG Mgr向USIF反饋搜索狀態以及內容,根據用戶的需要建立頻點、頻道信息數據庫。Builder模塊結構圖如圖2所示。 Builder主要支持3種搜索方式: (1)盲掃。根據預置頻點搜索節目信息,建立完整節目數據庫。 (2)網絡搜索。根據輸入頻點搜索NIT表,根據網絡信息搜索該網絡的所有節目信息,建立完整的網絡節目信息數據庫。 (3)手動搜索。根據輸入頻點搜索該頻點,建立該頻點完整的節目信息數據庫。 2.2 PSI模塊 PSI模塊需要Demux模塊提供Section數據的搜索功能,其建立在Demux驅動之上,為EPG、Builder等模塊提供完整表及條件捕獲接口。PSI模塊結構圖如圖3所示。 PSI模塊提供2種得到表方式: GetTable:通過該功能接口,直接得到表數據返回,如果超時沒有得到表數據,返回超時。 Capture:通過該功能接口,先提出表申請,通過異步通信方式獲得表結構并通知應用模塊。 在捕獲方式中都有3種模式: (1)Update Mode:在得到版本更新時通知應用模塊。 (2)Complete Mode:當得到完整表結構時通知應用模塊。 (3)Section Mode:當接收到Section數據時候就立即通知應用模塊。 2.3 DBaseMgr模塊 該模塊是一個數據庫管理系統,主要功能是實現對頻道、頻點、系統信息、EPG等信息的存儲與管理,以及對節目頻點的添加、刪除、排序、查找、編輯等。該模塊主要與Builder、EPG、USIF、Player 4個模塊交互,并通過與Flash交互進行物理操作。為了保證數據元素操作的效率,避免產生大量的內存碎片,也為了元素操作方便,該設計以靜動結合的思路采用靜態雙向鏈表的數據結構。在多個進程或線程同時對同一個數據庫進行操作時,要考慮同步互斥機制了。在對數據庫進行任何操作之前先對數據庫加鎖,當數據庫操作完成之后,再解鎖,這樣就保證了數據庫操作的一致性。數據庫模塊結構如圖4所示。 數據庫管理系統功能特點主要有以下幾點: (1)功能完備。該模塊需要提供完備的功能接口,包括數據庫的創建、管理以及刪除等基本操作。另還需要滿足多視窗操作。 (2)多用戶操作。本系統采用的是嵌入式Linux系統,它是一個多用戶分時系統,所以該數據庫需要保證同時滿足多用戶操作需要,保證系統的安全。 (3)數據完整。本系統屬于嵌入式系統,該模塊必須保證掉電后數據庫數據的完整性。 從前幾節的內容可以看出,有關節目的操作與PSI表的處理有著十分密切的關系。這是因為PSI表的分析管理直接影響到節目數據庫的內容,而節目的各種操作又都是與數據庫緊密相連的。節目操作管理部分的軟件設計主要可分成3大部分:PSI表處理模塊、節目數據庫模塊和節目操作模塊。其中PSI處理模塊主要完成PSI表的各種操作,如表的獲取、分析及管理等;節目數據庫模塊主要完成關于數據庫的操作,如數據庫的初始化、建立、內容的讀寫及更新等;節目操作模塊則實現有關節目的操作,如節目的搜索、刪除、恢復、選擇等。這3部分有機結合起來就形成了節目操作的整體軟件模塊。 3 機頂盒應用程序的開發 機頂盒應用程序主要實現用戶交互選單的顯示等功能,因此選擇MiniGUI開源軟件開發機頂盒應用程序。 MiniGUI作為嵌入式Linux系統下的一個輕量級圖形用戶界面支持系統已被應用到很多實際項目中。與其他嵌入式GUI相比,其具有系統資源消耗小、可配置和可定制性高、穩定性高、可移植性好等優勢。 MiniGUI具有良好的軟件架構,通過抽象層IAL、GAL將MiniGUI上層和底層操作系統隔離開來。基于MiniGUI的應用程序一般通過支持庫、操作系統和驅動程序接口以及MiniGUI自身提供的API來實現自己的功能。 基于MiniGUI開發的UI模塊如圖5所示。UI模塊主要滿足用戶通過遙控器進行節目搜索、播放、換臺以及節目瀏覽等操作。 UI模塊的體系結構如圖6所示。 本研發項目,形成了一套包括Linux操作系統移植、驅動程序、MiniGUI庫移植和上層應用程序在內的機頂盒軟件系統。該軟件配合機頂盒硬件平臺構成了基本實用的整機系統,經測試該系統的設計方法具有很好的合理性和穩定性。本項目采用的傳輸標準是我國目前采用的DVB-C標準,因此,在系統整體功能的定位上,主要考慮了DVB-C標準的特點,在軟件功能上也側重了對DVB-C PSI的支持。該軟件實現的功能主要有:一方面機頂盒利用該軟件可以實現基本的解調、信道解碼、音/視頻解碼輸出等功能;另一方面還能向用戶提供一系列選單式的交互操作功能,實現諸如節目搜索、系統設置的改變存儲、節目信息的查看、定時操作、電子節目指南、本地存儲節目的快進快退等附加功能。這些功能的實現基本滿足了當前用戶對高清數字機頂盒的要求。我國是彩電大國,但目前機頂盒還很不普及,因此該項目不僅具有很好的研究價值,而且具有廣闊的市場前景。 |