文 李寶軍
介紹DVB和MPEG-2的數(shù)字電視系統(tǒng)標(biāo)準(zhǔn)中的傳輸流和節(jié)目流,針對視頻服務(wù)器的功能應(yīng)用,完成由MPEG-2節(jié)目流生成符合DVB標(biāo)準(zhǔn)的傳輸流,并進(jìn)行多路節(jié)目的復(fù)用。
在當(dāng)前三網(wǎng)融合的背景下,數(shù)字化的發(fā)展趨勢越來越明顯,廣電行業(yè)的發(fā)展面臨著巨大的機遇與挑戰(zhàn)。中國將在2015年全面實現(xiàn)電視數(shù)字化,模擬電視系統(tǒng)將逐步退出歷史舞臺。據(jù)調(diào)查,2015年中國模擬電視的數(shù)量將會達(dá)到4億戶,界時隨著模擬電視信號的停播,數(shù)字電視機頂盒設(shè)備將會被認(rèn)為是數(shù)字信號轉(zhuǎn)換設(shè)備。數(shù)字前端系統(tǒng)的組成包括衛(wèi)星接收機、視頻服務(wù)器、數(shù)據(jù)服務(wù)器等設(shè)備。DVB標(biāo)準(zhǔn)提供了一套完整的,適用于不同媒體的數(shù)字電視廣播系統(tǒng)標(biāo)準(zhǔn)。 DVB選定了MPEG-2標(biāo)準(zhǔn)作為音頻及視頻的編碼壓縮方式,進(jìn)行音頻和視頻的壓縮,形成MPEG-2的傳輸流,使用統(tǒng)一的源代碼,進(jìn)行傳輸流復(fù)用,最后通過衛(wèi)星、有線電視和電視等媒體傳輸信號。本文主要解決的問題是使用格式轉(zhuǎn)換方式生成符合DVB標(biāo)準(zhǔn)的傳輸流來進(jìn)行多路節(jié)目復(fù)用。
DVB SI和MPEG-2的PSI信息,使用三種原文機制,分別為表、段和描述子,其定義如下:
表是概念描述意義上的說法,在實際運行中是不存在這樣的使用方法,一個實用的語法結(jié)構(gòu)只是表述節(jié)目信息的一種方式。在實際使用中,這個表的信息被劃分成段的形式,然后將每個段劃分成傳送流包傳輸數(shù)據(jù)流量。
段是 MPEG-2 標(biāo)準(zhǔn)的語法規(guī)定,主要語法元素標(biāo)識分為表標(biāo)識、序列號、版本號等,描述子存儲了段中的許多信息。
SI涵蓋廣播電視的實際范圍,可以滿足無間隙的需求,并對衛(wèi)星和有線電視網(wǎng)絡(luò)進(jìn)行配置。
在PES數(shù)據(jù)分組的基礎(chǔ)上,為實現(xiàn)這一傳輸流的轉(zhuǎn)變,首先從PES數(shù)據(jù)分組上提取節(jié)目流的PES數(shù)據(jù)包,對傳輸流包裝并添加相應(yīng)信息。TS流和PS流都是對PES數(shù)據(jù)進(jìn)行打包的。圖1是PS流的示意圖,為實現(xiàn)從PS到TS流的轉(zhuǎn)換,應(yīng)從節(jié)目流提取PES分組數(shù)據(jù)進(jìn)行轉(zhuǎn)換。 PS流由連續(xù)節(jié)目流組成,去除節(jié)目流數(shù)據(jù)包得到PES分組包。讀取PES分組數(shù)據(jù),根據(jù)TS流的語法要求生成傳輸流,進(jìn)行傳輸流的擴(kuò)展字段、特殊信息的傳輸,并添加到指令流中。系統(tǒng)信息可從節(jié)目流組的分組首部和系統(tǒng)首部獲得。

圖1 節(jié)目流語法示意簡圖
數(shù)據(jù)流傳輸?shù)氖窍嗷オ毩⒌脑剂鲾?shù)據(jù),PSI節(jié)目信息中的原始數(shù)據(jù)流,發(fā)送一個不可分割的方案,確保傳輸流復(fù)用的可行性。同時生成PAT、NIT、EIT和SDT表。 PAT傳輸?shù)氖窍嗤墓怆姳对龉?,作為一個獨立的數(shù)據(jù)流,被裝載在該TS數(shù)據(jù)包中,作為有效的載荷進(jìn)行傳輸,并被分配一個唯一的PID值。所不同的是發(fā)送PAT流的PID值被定義為固定值,即PID = 0 。每個傳輸系統(tǒng)中的復(fù)用流都包含TS對象并與其相對應(yīng)。
TS對象中的輸入功能包含提供傳輸TS對象數(shù)據(jù)流的數(shù)據(jù)傳輸與處理功能。輸出函數(shù)功能則是TS對象,可使用的全局函數(shù)的所有功能,每個TS對象線程輪流獲得控制權(quán)限,實現(xiàn)輸出控制功能。通過輸出功能來有效傳輸分組數(shù)據(jù)。在全局變量中,包含所有傳輸數(shù)據(jù)流的結(jié)構(gòu)信息,并生成與傳輸流相關(guān)的存儲信息。
在復(fù)用程序的方案結(jié)構(gòu)中,輸入函數(shù)是TS流的一個函數(shù),其主要功能是負(fù)責(zé)將存儲的數(shù)據(jù)文件輸入到TS流系統(tǒng)中去。當(dāng)處理的傳輸數(shù)據(jù)流線程被停止時,傳輸數(shù)據(jù)流所描述的對象,會從系統(tǒng)中去除對應(yīng)的輸入功能,與此同時釋放出系統(tǒng)分配空間。
輸出功能和輸入功能在邏輯上是對應(yīng)的,輸出功能提供者負(fù)責(zé)傳輸流處理線程,并生成比特流輸出, 與輸入函數(shù)提供的成員函數(shù)在功能上剛好相反。
(1)定義了用于傳輸?shù)膫鬏敂?shù)據(jù)流TS對象,對輸入流進(jìn)行描述和包裝。每創(chuàng)建一個新的傳輸流到復(fù)用的進(jìn)程中去時,復(fù)用系統(tǒng)的傳輸數(shù)據(jù)流會構(gòu)建一個TS流對象,通過對對象輸入流的結(jié)構(gòu)信息進(jìn)行完整描述,實現(xiàn)提供各種操作傳輸數(shù)據(jù)流的功能。
(2)輸入信號源的傳輸流是把硬盤上的一個文件,作為參數(shù)發(fā)送到輸入功能中去,以建立完整的輸入功能。
(3)創(chuàng)造一個TS流對象,記錄到全局鏈表數(shù)據(jù)結(jié)構(gòu)中,將信息傳輸流填充到對象結(jié)構(gòu)中,擬定傳輸流程序分配新方案,分配一個新的PID原始流計劃,完成在注冊表中的全局變量的注冊。由于插入了傳輸數(shù)據(jù)流,輸出流的結(jié)構(gòu)將發(fā)生變化,并進(jìn)一步更新發(fā)送的PAT表,在輸出的新的PMT表中插入的程序,讓解碼器能夠處理新插入的程序,并刪除舊的節(jié)目段信息表EIT 。
(4)創(chuàng)建此對象的線程。將對象的指針作為線程的參數(shù)傳遞。設(shè)置線程的優(yōu)先級,這樣的傳輸流被添加到復(fù)用系統(tǒng)中去。在一般情況下,每個傳輸流線程處理有一定的處理優(yōu)先級。優(yōu)先級可以是一個緩沖區(qū)的狀態(tài)來進(jìn)行控制,當(dāng)緩沖區(qū)要滿的時候,要采用相應(yīng)的應(yīng)用程序來提高線程的優(yōu)先級,讓系統(tǒng)在運行中能夠得到較多的CPU時間片,通過應(yīng)用程序適當(dāng)降低線程的優(yōu)先級,以防止緩沖區(qū)發(fā)生下溢現(xiàn)象。
本文提出了傳輸流的產(chǎn)生和傳輸復(fù)用方案,適用于分布式的視頻服務(wù)器中,將視頻播出器分成兩部分:廣播格式的轉(zhuǎn)換、播復(fù)用的調(diào)度。廣播格式的轉(zhuǎn)換以及廣播復(fù)用調(diào)度可分別運行于不同的服務(wù)器中,可采用轉(zhuǎn)換離線的方式運行播出格式,對廣播調(diào)度運行。對視頻服務(wù)器的性能要求不高,因此,將大量廉價的服務(wù)器結(jié)合起來,通過合理的控制和調(diào)度,實現(xiàn)高性能視頻服務(wù)器轉(zhuǎn)換功能。