專(zhuān)利名稱(chēng):Mpeg-2單節(jié)目傳輸流多路復(fù)用方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)字電視數(shù)字壓縮技術(shù)領(lǐng)域,具體涉及一種運(yùn)動(dòng)圖像壓縮編碼MPEG-2傳輸流多路復(fù)用的方法。
背景技術(shù):
隨著數(shù)字調(diào)制技術(shù)和數(shù)字壓縮技術(shù)的發(fā)展,在數(shù)字電視的傳輸過(guò)程中,為了充分利用頻譜資源,通常需要在一個(gè)指定帶寬的模擬頻道內(nèi)傳輸多路數(shù)字電視節(jié)目,為了實(shí)現(xiàn)這一目的,在調(diào)制之前必須將多路單節(jié)目的傳輸流復(fù)用成一個(gè)多節(jié)目的傳輸流。
目前,通過(guò)硬件實(shí)現(xiàn)單節(jié)目傳輸流的多路復(fù)用的技術(shù)很多,但是用硬件實(shí)現(xiàn)傳輸流的多路復(fù)用有如下的兩個(gè)缺陷一是技術(shù)的可移植性差,當(dāng)脫離了相應(yīng)的硬件后,多路復(fù)用的功能就無(wú)法完成;二是成本高,相對(duì)于軟件來(lái)說(shuō),用硬件實(shí)現(xiàn)多路復(fù)用,其開(kāi)發(fā)成本和工作成本都比較大。
我國(guó)專(zhuān)利03124004.6“具有高速的以太網(wǎng)入口的MPEG傳輸流再?gòu)?fù)用方法及裝置”中公開(kāi)了一種傳輸流再?gòu)?fù)用的技術(shù)方案。但該發(fā)明采用了軟硬件相結(jié)合的方法,在復(fù)用的過(guò)程中要通過(guò)硬件對(duì)節(jié)目參考時(shí)鐘PCR的值要進(jìn)行修正,但是在軟件實(shí)現(xiàn)的過(guò)程中,無(wú)論是通過(guò)CPU的主頻還是通過(guò)計(jì)數(shù)器的方法來(lái)產(chǎn)生一個(gè)精確的27MHz的參考時(shí)鐘是很困難的。
發(fā)明內(nèi)容
本發(fā)明的目的是通過(guò)軟件提供一種MPEG-2單節(jié)目傳輸流多路復(fù)用方法,在于克服現(xiàn)有技術(shù)所存在的移植性差、成本高的不足之處。
本發(fā)明解決問(wèn)題的技術(shù)方案包括節(jié)目特殊信息PSI和傳輸速率收集單元、節(jié)目特殊信息PSI的重構(gòu)和重新映射單元、多路復(fù)用單元。首先由節(jié)目特殊信息PSI信息和傳輸速率收集單元將存儲(chǔ)設(shè)備中參加復(fù)用的各路傳輸流,按照節(jié)目關(guān)聯(lián)表PAT-節(jié)目映射表PMT-基本流ES這種層次結(jié)構(gòu)來(lái)提取出每路傳輸流的節(jié)目關(guān)聯(lián)表PAT、節(jié)目映射表PMT和各節(jié)目的音、視頻的公共包識(shí)別符PID信息,并通過(guò)對(duì)節(jié)目參考時(shí)鐘信息PCR的計(jì)算來(lái)獲得傳輸速率。其次,節(jié)目特殊信息PSI的重構(gòu)和重新映射是根據(jù)復(fù)用后的各個(gè)節(jié)目的公共包識(shí)別符PID號(hào)互不沖突的原則,按照基本流ES-節(jié)目映射表PMT-節(jié)目關(guān)聯(lián)表PAT的層次結(jié)構(gòu)來(lái)重構(gòu)PSI表信息,并將各路音、視頻的公共包識(shí)別符PID和節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR_PID進(jìn)行重新映射,使得解碼端能夠正確識(shí)別復(fù)用后傳輸流中的各個(gè)節(jié)目并獲得正確的時(shí)鐘信息。在完成上述兩個(gè)單元操作的基礎(chǔ)上,再由多路復(fù)用單元按照復(fù)用后多節(jié)目的傳輸速率要大于所有參加復(fù)用的單節(jié)目的傳輸速率之和的規(guī)則,計(jì)算出復(fù)用后的傳輸速率,通過(guò)插入空包以及將不同節(jié)目中的TS包進(jìn)行重新排列的方法,將各個(gè)單節(jié)目傳輸流復(fù)用到一路傳輸流輸出,并且不需要改變?cè)脊?jié)目流中的節(jié)目參考時(shí)鐘PCR的值。
由于本發(fā)明僅通過(guò)軟件來(lái)進(jìn)行單節(jié)目傳輸流的多路復(fù)用,與現(xiàn)有技術(shù)相比,只需要一臺(tái)PC機(jī)和相應(yīng)的軟件開(kāi)發(fā)環(huán)境就可以實(shí)現(xiàn)MPEG-2傳輸流TS的多路復(fù)用,其技術(shù)方案的實(shí)施更為簡(jiǎn)單,靈活,效果好。大大降低了開(kāi)發(fā)成本,復(fù)用后產(chǎn)生的傳輸流最大傳輸速率可達(dá)67MB/S,軟件的可移植性高,具有良好的推廣應(yīng)用前景。
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)框2是本發(fā)明的節(jié)目特殊信息PSI和傳輸速率收集單元的流程3是本發(fā)明的節(jié)目特殊信息PSI的重構(gòu)和重新映射單元的公共包識(shí)別符PID映射關(guān)系示例4是本發(fā)明的多路復(fù)用單元的總體實(shí)現(xiàn)框5是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)步驟[2-3]的流程6是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)步驟[4]的流程7是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)的步驟[5]的流程8是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)的步驟[6]的流程9是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)的步驟[7-8]的流程10是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)的步驟[9-12]的流程11是本發(fā)明實(shí)現(xiàn)多路復(fù)用對(duì)應(yīng)的步驟[9-12]的流程圖具體實(shí)施方式
下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳述參見(jiàn)圖1,本發(fā)明包括節(jié)目特殊信息PSI和傳輸速率收集、節(jié)目特殊信息PSI的重構(gòu)和重新映射、多路復(fù)用三大操作單元。首先將硬盤(pán)中或通過(guò)計(jì)算機(jī)的SPI/ASI接收存儲(chǔ)到存儲(chǔ)設(shè)備中的單節(jié)目TS流1、單節(jié)目TS流2,……單節(jié)目TS流n經(jīng)過(guò)節(jié)目特殊信息PSI和傳輸速率收集單元,提取出每路節(jié)目的節(jié)目信息和傳輸速率;然后根據(jù)這些信息在節(jié)目特殊信息PSI的重構(gòu)和重新映射單元生成多節(jié)目的節(jié)目信息,與參加復(fù)用的各單節(jié)目TS流數(shù)據(jù)再通過(guò)多路復(fù)用單元復(fù)用為一路多節(jié)目傳輸流TS輸出。
圖2-11示出了本發(fā)明的實(shí)施例。
如圖2所示,本發(fā)明對(duì)復(fù)用的各單節(jié)目特殊信息PSI和傳輸速率進(jìn)行收集的步驟如下[1]在傳輸流中尋找公共包識(shí)別符PID號(hào)為0的傳輸流TS包,轉(zhuǎn)入PAT處理程序,提取各個(gè)節(jié)目映射表PMT對(duì)應(yīng)的PID信息;[2]根據(jù)節(jié)目關(guān)聯(lián)表PAT表中指定的公共包識(shí)別符PMT PID號(hào)找到與該節(jié)目相對(duì)應(yīng)的節(jié)目映射表PMT,轉(zhuǎn)入PMT處理程序,提取音、視頻的公共包識(shí)別符PID,獲取節(jié)目映射表PMT表的信息,并得到該路節(jié)目中的視頻基本流、音頻基本流和包含節(jié)目參考時(shí)鐘PCR信息所對(duì)應(yīng)的公共包識(shí)別符PID,即PCR_PID;[3]轉(zhuǎn)入傳輸速率提取程序,根據(jù)指定的PCR PID找到各個(gè)包含節(jié)目參考時(shí)鐘PCR的傳輸流TS包,提取出節(jié)目參考時(shí)鐘PCR的值;[4]用相鄰的兩個(gè)PCR按照下述傳輸速率計(jì)算公式計(jì)算出參加復(fù)用的各路傳輸流TS的傳輸速率transport_rate(i)=((i′-i′′)×system_clock_frequency)PCR(i′)-PCR(i′′)]]>其中i傳輸流TS中正在被解碼的字節(jié)的序號(hào)i′ 傳輸流TS中即將被解碼的PCR_base的最后一個(gè)字節(jié)的序號(hào)i″ 傳輸流TS中最近被解碼的PCR_base的最后一位的字節(jié)的序號(hào)PCR(i′)PCR(i″)編碼在PCR_base和PCR_ext字段中的時(shí)間,以系統(tǒng)時(shí)鐘為單位。
在本發(fā)明節(jié)目特殊信息PSI的重構(gòu)和重新映射中,無(wú)論是單節(jié)目傳輸流還是多節(jié)目傳輸流,都只有一個(gè)節(jié)目關(guān)聯(lián)表PAT。按照MPEG-2標(biāo)準(zhǔn),節(jié)目關(guān)聯(lián)表PAT必需用公共包識(shí)別符PID=0的TS包來(lái)傳輸。由于不同節(jié)目的來(lái)源不同,因此每個(gè)節(jié)目的節(jié)目映射表PMT所對(duì)應(yīng)的公共包識(shí)別符PID號(hào)有可能是一樣的,如果不作處理,直接將其公共包識(shí)別符PID號(hào)映射到新的PAT表中,就會(huì)造成公共包識(shí)別符PID的沖突;進(jìn)而導(dǎo)致解碼端無(wú)法正確識(shí)別各個(gè)節(jié)目對(duì)應(yīng)的PMT信息,也就無(wú)法獲得相應(yīng)節(jié)目正確的音、視頻公共包識(shí)別符PID號(hào),從而無(wú)法正確解碼。因此,在重構(gòu)節(jié)目關(guān)聯(lián)表PAT時(shí),要進(jìn)行節(jié)目映射表PMT的公共包識(shí)別符PID的重映射,防止不同節(jié)目的節(jié)目映射表PMT的公共包識(shí)別符PID號(hào)沖突。可以將參加復(fù)用的各個(gè)傳輸流TS的節(jié)目映射表PMT的公共包識(shí)別符PID號(hào)修改成事先定義好的不沖突的值,也可以修改發(fā)生沖突的公共包識(shí)別符PID號(hào),而對(duì)沒(méi)有發(fā)生沖突的公共包識(shí)別符PID號(hào)不進(jìn)行修改。對(duì)于軟件實(shí)現(xiàn)來(lái)說(shuō),將各個(gè)節(jié)目的公共包識(shí)別符PID號(hào)修改為自定義的值更加簡(jiǎn)單,也容易實(shí)現(xiàn)。
如圖3所示,本發(fā)明進(jìn)行節(jié)目特殊信息PSI的重構(gòu)和重新映射操作步驟如下[1]對(duì)參加復(fù)用的各個(gè)節(jié)目的節(jié)目映射表PMT中的視頻PID號(hào)、音頻PID號(hào)和數(shù)據(jù)的PID號(hào)以及節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR PID按照互不沖突的原則,分別采用自定義的值進(jìn)行重新映射;并將用32位循環(huán)冗余校驗(yàn)CRC算法生成的校驗(yàn)碼,放置在節(jié)目關(guān)聯(lián)表PMT尾部4字節(jié)的循環(huán)冗余校驗(yàn)CRC域,得到重構(gòu)后的PMT表;如在圖3中,將節(jié)目1,節(jié)目2,……節(jié)目n的視頻VIDEO重新映射,節(jié)目1的VIDEO PID=b映射為PID=0X10+5*1+1,節(jié)目2的VIDEO PID=f映射為PID=0X10+5*2+1,……節(jié)目n的VIDEO PID=b映射為PID=0X10+5*n+1;將節(jié)目1,節(jié)目2,……節(jié)目n的音頻AUDIO重新映射,節(jié)目1的AUDIO PID=c映射為PID=0X10+5*1+2,節(jié)目2的AUDIO PID=c映射為PID=0X10+5*2+2,……節(jié)目n的AUDIO PID=c映射為PID=0X10+5*n+2;將節(jié)目1的PCR_PID,節(jié)目2的PCR_PID,……節(jié)目n的PCR_PID重新映射,節(jié)目1的PCR對(duì)應(yīng)的PID=d映射為PID=0X10+5*1+3,節(jié)目2的PCR對(duì)應(yīng)的PID=f映射為PID=0X10+5*2+3,……節(jié)目n的PCR對(duì)應(yīng)的PID=b映射為PID=0X10+5*n+3;將節(jié)目1的DATA,節(jié)目2的DATA,……節(jié)目n的DATA重新映射,節(jié)目1的DATA所對(duì)應(yīng)的PID=e映射為PID=0X10+5*1+4,節(jié)目2的DATA所對(duì)應(yīng)的PID=e映射為PID=0X10+5*2+4,……節(jié)目n的DATA所對(duì)應(yīng)的PID=d映射為PID=0X10+5*n+4。
對(duì)參加多路復(fù)用的各個(gè)節(jié)目,按照節(jié)目映射表PMT所對(duì)應(yīng)的公共包識(shí)別符PID值互不沖突的原則,采用自定義的值進(jìn)行重新映射;并將用32位循環(huán)冗余校驗(yàn)CRC算法生成的校驗(yàn)碼,放置在節(jié)目關(guān)聯(lián)表PAT尾部4字節(jié)的循環(huán)冗余校驗(yàn)CRC域,得到重構(gòu)后的PAT表。
節(jié)目1的節(jié)目映射表PMT PID=a映射為PID=0X10+5*1,節(jié)目2的節(jié)目映射表PMT PID=a映射為PID=0X10+5*2,……節(jié)目n的節(jié)目映射表PMT PID=e映射為PTD=0X10+5*n;在完成了前述兩個(gè)單元的功能之后,需要設(shè)定復(fù)用后的傳輸速率。利用傳輸速率和節(jié)目參考時(shí)鐘PCR之間的關(guān)系,在參加復(fù)用的傳輸流TS的節(jié)目參考時(shí)鐘PCR值不改變的情況下,根據(jù)復(fù)用后所需的碼率,利用增大兩個(gè)相鄰節(jié)目參考時(shí)鐘PCR包之間間隔的方法來(lái)實(shí)現(xiàn)復(fù)用的功能;為了保證復(fù)用后的多節(jié)目傳輸流TS的信息完整,無(wú)數(shù)據(jù)丟失的現(xiàn)象,通常要求復(fù)用后的傳輸流TS的傳輸速率要比參加復(fù)用的各路單節(jié)目的傳輸流TS的傳輸速率之和大,也就是要滿足下面的關(guān)系式transport_rate(mux)>transport_rate(1)+transport_rate(2)+…+transport_rate(n)其中transport_rate(mux)復(fù)用后的多節(jié)目傳輸流TS的傳輸速率transport_rate(i)i=1,2,...n復(fù)用前的單節(jié)目傳輸流TS的傳輸速率在進(jìn)行多路單節(jié)目復(fù)用為一路多節(jié)目的時(shí)候,根據(jù)復(fù)用后的傳輸速率和復(fù)用前的各個(gè)傳輸流的傳輸速率的關(guān)系,改變兩個(gè)連續(xù)包含節(jié)目參考時(shí)鐘PCR信息的傳輸流TS包之間的包數(shù),使得新速率和原始的節(jié)目參考時(shí)鐘PCR值能夠相互匹配。
結(jié)合圖4及圖5-圖11各圖所對(duì)應(yīng)的步驟,本發(fā)明以兩個(gè)單節(jié)目傳輸流TS的復(fù)用為例,對(duì)單節(jié)目的傳輸流進(jìn)行多路復(fù)用的實(shí)施例詳述如下[1]設(shè)置一個(gè)輸出隊(duì)列,用以存放或輸出復(fù)用后的傳輸流數(shù)據(jù),如果要將復(fù)用后的數(shù)據(jù)保存為傳輸流文件,輸出隊(duì)列就是文件;如果要將復(fù)用后的數(shù)據(jù)通過(guò)硬件實(shí)時(shí)發(fā)送出去,輸出隊(duì)列則是緩沖區(qū);[2]讀第一個(gè)傳輸流,每讀入一個(gè)傳輸流TS包,就判斷公共包識(shí)別符PID的值,并將該值修改為重新映射后的公共包識(shí)別符PID號(hào),然后放置到輸出隊(duì)列中;若為包含節(jié)目關(guān)聯(lián)表PAT或是節(jié)目映射表PMT的傳輸流TS包,除了要修改公共包識(shí)別符PID號(hào),還要修改表中的內(nèi)容,最后修改相應(yīng)的循環(huán)冗余校驗(yàn)CRC的值,之后才將這個(gè)TS包放置到輸出隊(duì)列中; 當(dāng)找到第一個(gè)傳輸流中的第一個(gè)包含節(jié)目參考時(shí)鐘信息的TS包PCR1-1(這里第一個(gè)1表示節(jié)目1,第二個(gè)1表示第一個(gè)PCR),保存此時(shí)的PCR1-1的值以及該TS包1-1;[4]讀第二個(gè)傳輸流,將不包含節(jié)目參考時(shí)鐘PCR信息的TS包進(jìn)行如步驟[2]的修改并放置到輸出隊(duì)列,直到找到第二個(gè)傳輸流中的第一個(gè)PCR2-1,保存PCR2-1及該TS包2-1;[5]將TS包1-1和TS包2-1放置到輸出隊(duì)列,讀第一個(gè)傳輸流,對(duì)TS包進(jìn)行如步驟[2]處理,并對(duì)包進(jìn)行計(jì)數(shù),直到找到該傳輸流中的第二個(gè)PCR1-2,將該TS包記為1-2,此時(shí),PCR1-1和PCR1-2之間的包的個(gè)數(shù)為NUM1,根據(jù)設(shè)定的復(fù)用后的傳輸流的傳輸速率、PCR1-1和PCR1-2計(jì)算出在TS包1-1和TS包1-2之間應(yīng)有的TS包的個(gè)數(shù),記為NUM1_MUX;[6]讀第二個(gè)傳輸流,對(duì)TS包進(jìn)行如步驟[2]的處理,直到找到該傳輸流中的第二個(gè)PCR2-2,記該TS包為2-2,PCR2-2和PCR2-1之間包的個(gè)數(shù)為NUM2,根據(jù)設(shè)定的復(fù)用后的傳輸流的傳輸速率、PCR2-1和PCR2-2計(jì)算出在TS包2-1和TS包2-2之間應(yīng)有的TS包的個(gè)數(shù),記為NUM2_MUX;[7]分別計(jì)算NUM1_MUX和NUM2_MUX與MUN1+MUN2之間的差值,將這兩個(gè)差值分別記為SURPLUS1和SURPLUS2,找出兩者中較小的一個(gè)值,記為SURP,與之對(duì)應(yīng)的節(jié)目號(hào)記為i,并向輸出隊(duì)列中輸出SURP個(gè)空包,再將與這個(gè)較小值對(duì)應(yīng)的PCRi-2放置到輸出隊(duì)列中;[8]將SURPLUS1、SURPLUS2,NUM1、NUM2和NUM1_MUX、NUM2_MUX分別重新賦值SURPLUS1=SURPLUS1-SURP,SURPLUS2=SURPLUS2-SURP,NUM1=0,NUM2=0,NUM1_MUX=0,NUM2_MUX=0;[9]在步驟[7]中,當(dāng)與i對(duì)應(yīng)的傳輸流是節(jié)目1時(shí),讀第一個(gè)傳輸流,并對(duì)NUM1進(jìn)行計(jì)數(shù),將所讀到的不包含PCR信息的TS包按步驟[2]處理,放置到輸出隊(duì)列,當(dāng)NUM1=SURP時(shí),將第二個(gè)傳輸流的第二個(gè)包含PCR信息的TS包2_2放置到輸出隊(duì)列;并對(duì)SURPLUS1和SURPLUS2清零;[10]對(duì)NUM2進(jìn)行計(jì)數(shù);繼續(xù)讀入第一個(gè)TS流,將其中不包含PCR信息的TS包按步驟[2]處理,放置到輸出隊(duì)列,直到遇到該路TS流中的第3個(gè)PCR包1-3,將該TS包1-3保存下來(lái);[11]由PCR1-3、PCR1-2和設(shè)定的復(fù)用后的傳輸碼率計(jì)算出TS包1-3和TS包1-2中應(yīng)有的包的個(gè)數(shù)NUM1_MUX;之后轉(zhuǎn)而讀第二個(gè)TS流,對(duì)其中不包含PCR信息的TS包按步驟[2]處理,當(dāng)找到第二個(gè)TS流的第三個(gè)PCR包時(shí),計(jì)數(shù)值NUM1大于等于NUM1_MUX,就將第一個(gè)TS流的TS包1-3放置到輸出隊(duì)列,并對(duì)NUM1清零,重新開(kāi)始計(jì)數(shù);如果此時(shí)計(jì)數(shù)值NUM1小于NUM1_MUX,則由PCR2-3、PCR2-2和設(shè)定的復(fù)用后的傳輸碼率計(jì)算出TS包2-3和TS包2-2中應(yīng)有的包的個(gè)數(shù)NUM2_MUX;比較NUM1_MUX-NUM1和NUM2_MUX-NUM2,找出其中的較小值賦給SURP,并向輸出隊(duì)列中輸出SURP個(gè)空包;[12]再將與這個(gè)較小值對(duì)應(yīng)的傳輸流(該節(jié)目號(hào)重新賦給i)的第3個(gè)包含PCR信息的TS包放置到輸出隊(duì)列中,然后令SUEPLUS1=NUM1_MUX-NUM1-SURP,SURPLUS2=NUM2_MUX-NUM2-SURP,NUM1=0,NUM2=0,NUM1_MUX=0,NUM2_MUX=0;[13]重復(fù)步驟[9]-[12],直到將兩個(gè)TS傳輸流全部輸出到輸出隊(duì)列中,這就完成了將兩個(gè)單節(jié)目傳輸流復(fù)用成一個(gè)多節(jié)目的傳輸流。
在步驟[9]中,當(dāng)與i對(duì)應(yīng)的傳輸流是節(jié)目2時(shí),數(shù)據(jù)的讀出復(fù)用與上述各步驟相似。為簡(jiǎn)明扼要地描述單節(jié)目的多路復(fù)用,本發(fā)明僅舉了兩路節(jié)目傳輸流復(fù)用實(shí)施例,對(duì)于兩路以上的多路單節(jié)目的復(fù)用也是按照上述方法進(jìn)行。
權(quán)利要求
1.一種MPEG-2單節(jié)目傳輸流多路復(fù)用方法,通過(guò)節(jié)目特殊信息PSI和傳輸速率收集單元、特殊信息PSI的重構(gòu)和重映射單元以及傳輸流TS的多路復(fù)用單元的操作,將多路單節(jié)目TS傳輸流復(fù)用成一個(gè)多節(jié)目的TS傳輸流輸出;首先,由節(jié)目特殊信息PSI和傳輸速率收集單元對(duì)參加復(fù)用的各單節(jié)目信息進(jìn)行收集,按照節(jié)目關(guān)聯(lián)表PAT-節(jié)目映射表PMT-基本流ES的層次結(jié)構(gòu)提取出每路傳輸流的節(jié)目關(guān)聯(lián)表PAT、節(jié)目映射表PMT和音、視頻的公共包識(shí)別符PID信息,并通過(guò)節(jié)目參考時(shí)鐘信息PCR獲得傳輸碼率;其次,由節(jié)目特殊信息PSI的重構(gòu)和重新映射單元,按照基本流ES-節(jié)目映射表PMT-節(jié)目關(guān)聯(lián)表PAT的層次結(jié)構(gòu)重構(gòu)PSI信息,將各路音、視頻的公共包識(shí)別符PID和節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR_PID以及數(shù)據(jù)的公共包識(shí)別符PID進(jìn)行重映射;再由多路復(fù)用單元算出復(fù)用后的傳輸速率,通過(guò)插入空包以及將不同節(jié)目中的TS包進(jìn)行重新排列而不改變?cè)紗喂?jié)目流中的節(jié)目參考時(shí)鐘PCR值的方法,將各個(gè)單節(jié)目傳輸流復(fù)用為一路傳輸流輸出。
2.根據(jù)權(quán)利要求1所述的單節(jié)目傳輸流多路復(fù)用方法,其特征在于對(duì)參加復(fù)用的各單節(jié)目的特殊信息PSI和傳輸速率進(jìn)行收集的步驟如下[1]在傳輸流TS中尋找公共包識(shí)別符PID號(hào)為0的TS包,獲取節(jié)目關(guān)聯(lián)表PAT的信息;[2]根據(jù)節(jié)目關(guān)聯(lián)表PAT表中指定的公共包識(shí)別符PMT_PID號(hào)找到與該節(jié)目相對(duì)應(yīng)的節(jié)目映射表PMT表,提取音、視頻的公共識(shí)別符PID,獲取節(jié)目映射表PMT表的信息,并得到該路節(jié)目中的視頻基本流、音頻基本流和節(jié)目參考時(shí)鐘信息PCR包所對(duì)應(yīng)的PID號(hào);[3]根據(jù)指定的節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR_PID找到各個(gè)包含PCR信息的TS包,提取出PCR的值;[4]用兩相鄰的PCR值計(jì)算參加復(fù)用的各路TS流的傳輸速率。
3.根據(jù)權(quán)利要求1所述的單節(jié)目傳輸流多路復(fù)用方法,其特征在于進(jìn)行節(jié)目特殊信息PSI重構(gòu)和重新映射的步驟如下[1]對(duì)參加復(fù)用的各個(gè)節(jié)目的節(jié)目映射表PMT中的視頻PID號(hào)、音頻PID號(hào)和數(shù)據(jù)的PID號(hào)和節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR_PID按照互不沖突的原則,分別采用自定義的值進(jìn)行重新映射;并將用32位循環(huán)冗余校驗(yàn)CRC算法生成的校驗(yàn)碼,放置在節(jié)目關(guān)聯(lián)表PMT尾部4字節(jié)的循環(huán)冗余校驗(yàn)CRC域,得到重構(gòu)后的PMT表;[2]對(duì)參加多路復(fù)用的各個(gè)節(jié)目,按照節(jié)目映射表PMT所對(duì)應(yīng)的公共包識(shí)別符PID值互不沖突的原則,采用自定義的值進(jìn)行重新映射;并將用32位循環(huán)冗余校驗(yàn)CRC算法生成的校驗(yàn)碼,放置在節(jié)目關(guān)聯(lián)表PAT尾部4字節(jié)的循環(huán)冗余校驗(yàn)CRC域,得到重構(gòu)后的PAT表。
4.根據(jù)權(quán)利要求1所述的單節(jié)目傳輸流多路復(fù)用方法,其特征在于將多路單節(jié)目傳輸流復(fù)用成一路多節(jié)目傳輸流的步驟如下[1]根據(jù)復(fù)用后節(jié)目的TS傳輸流的傳輸速率大于復(fù)用前各單節(jié)目TS傳輸流的傳輸速率之和的規(guī)則,設(shè)定復(fù)用后的傳輸速率;[2]設(shè)置一個(gè)輸出隊(duì)列,用于存放傳輸復(fù)用后的TS傳輸流數(shù)據(jù);[3]依次讀第一、第二個(gè)傳輸流,每讀入一個(gè)傳輸流TS包,就判斷公共包識(shí)別符PID的值,并將該值修改為重新映射后的公共包識(shí)別符PID號(hào),放置到輸出隊(duì)列中;若為包含節(jié)目關(guān)聯(lián)表PAT或是節(jié)目映射表PMT的傳輸流TS包,除了要修改公共包識(shí)別符PID號(hào),還要修改PAT或PMT表中的內(nèi)容及修改相應(yīng)的循環(huán)冗余校驗(yàn)CRC的值,之后將這個(gè)TS包放置到輸出隊(duì)列中;[4]尋找各TS傳輸流中包含PCR的TS包,將找到的各TS流中第一個(gè)包含PCR信息的TS包保存,將不包含PCR信息的TS包按步驟[3]處理后放到輸出隊(duì)列;[5]再依次讀第一、第二個(gè)TS傳輸流,并分別用NUM1、NUM2對(duì)TS包計(jì)數(shù),將不包含PCR信息的TS包放置到輸出隊(duì)列,當(dāng)找到每個(gè)節(jié)目中的第二個(gè)包含PCR信息的TS包時(shí),將該包含PCR信息的TS包保存,用設(shè)定的復(fù)用后的TS流的傳輸速率、各相鄰的兩個(gè)PCR計(jì)算出應(yīng)有的TS包數(shù),分別用NUM1_MUX、NUM2_MUX表示;[6]分別計(jì)算NUM1_MUX、NUM2_MUX與NUM1+NUM2之差值,將這兩個(gè)差值分別記為SURPLUS1、SURPLUS2,將其中較小的一個(gè)值,記為SURP,與之對(duì)應(yīng)的節(jié)目號(hào)記為i,并向輸出隊(duì)列輸出SURP個(gè)空包,再將與這個(gè)較小值對(duì)應(yīng)的PCRi-2放置到輸出隊(duì)列中;[7]將SURPLUS1、SURPLUS2,NUM1、NUM2和NUM1_MUX、NUM2_MUX分別重新賦值,SURPLUS1=SURPLUS1-SURP,SURPLUS2=SURPLUS2-SURP,NUM1=0,NUM2=0,NUM1_MUX=0,NUM2_MUX=0;[8]當(dāng)i對(duì)應(yīng)的TS流為第一個(gè)節(jié)目,讀第一個(gè)節(jié)目,并對(duì)NUM1進(jìn)行計(jì)數(shù),將所讀到的不包含PCR信息的TS包按步驟[3]處理,放置到輸出隊(duì)列,當(dāng)NUM1=SURP時(shí),將第二個(gè)節(jié)目的第二個(gè)包含PCR信息的TS包2_2放置到輸出隊(duì)列;并對(duì)SURPLUS1和SURPLUS2清零;[9]對(duì)NUM2進(jìn)行計(jì)數(shù),繼續(xù)讀入第一個(gè)TS流,將其中不包含PCR信息的TS包按步驟[3]處理,放置到輸出隊(duì)列,直到找到第一個(gè)TS流中的第3個(gè)PCR包1-3,將該TS包1-3保存下來(lái);[10]由PCR1-3、PCR1-2和設(shè)定的復(fù)用后的傳輸碼率計(jì)算出TS包1-3和TS包1-2中應(yīng)有的包的個(gè)數(shù)NUM1_MUX;之后轉(zhuǎn)讀第二個(gè)TS流,對(duì)其中不包含PCR信息的TS包按步驟[3]處理,當(dāng)找到第二個(gè)TS流的第三個(gè)PCR包之前,計(jì)數(shù)值NUM1已經(jīng)等于NUM1_MUX,就將第一個(gè)TS流的TS包1-3放置到輸出隊(duì)列,并對(duì)NUM1清零,重新開(kāi)始計(jì)數(shù);當(dāng)計(jì)數(shù)值NUM1小于NUM1_MUX時(shí)已找到第二個(gè)TS流中的第三個(gè)PCR包2-3,由PCR2-3、PCR2-2和設(shè)定的復(fù)用后的傳輸碼率計(jì)算出TS包2-3和TS包2-2中應(yīng)有的包的個(gè)數(shù)NUM2_MUX;比較NUM1_MUX-NUM1和NUM2_MUX-NUM2,找出其中的較小值賦給SURP,并向輸出隊(duì)列中輸出SURP個(gè)空包;[11]再將與這個(gè)較小值對(duì)應(yīng)的節(jié)目(該節(jié)目號(hào)重新賦給i)的第3個(gè)包含PCR信息的TS包放置到輸出隊(duì)列中,然后令SUEPLUS1=NUM1_MUX-NUM1-SURP,SURPLUS2=NUM2_MUX-NUM2-SURP,NUM1=0,NUM2=0,NUM1_MUX=0,NUM2_MUX=0;[12]重復(fù)步驟[8]-[11],直到將兩個(gè)節(jié)目的TS傳輸流全部輸出到輸出隊(duì)列中。
全文摘要
一種MPEG-2單節(jié)目傳輸流多路復(fù)用方法,用軟件將多路單節(jié)目TS傳輸流復(fù)用成一個(gè)多節(jié)目的TS傳輸流輸出,首先節(jié)目特殊信息PSI和傳輸速率收集單元對(duì)參加復(fù)用的各路信號(hào)預(yù)處理,按照節(jié)目關(guān)聯(lián)表PAT-節(jié)目映射表PMT-基本流ES的層次提取每路TS流的PAT表、PMT表和ES的公共包識(shí)別符PID信息并獲得傳輸碼率;其次節(jié)目特殊信息PSI的重構(gòu)和重新映射單元重構(gòu)PSI信息,將各路音、視頻PID和節(jié)目參考時(shí)鐘的公共包識(shí)別符PCR_PID進(jìn)行重映射,使解碼端能正確識(shí)別復(fù)用后傳輸流中的各個(gè)節(jié)目并獲得正確的時(shí)鐘信息;再由多路復(fù)用單元算出復(fù)用后的傳輸速率,通過(guò)插入空包并將不同節(jié)目的TS包重新排列而不改變?cè)脊?jié)目流PCR值的方法,將各個(gè)單節(jié)目傳輸流復(fù)用為一路傳輸流輸出。
文檔編號(hào)H04N7/26GK1684524SQ20051004180
公開(kāi)日2005年10月19日 申請(qǐng)日期2005年3月16日 優(yōu)先權(quán)日2005年3月16日
發(fā)明者李兵兵, 王莎莎, 楊秀蓮, 蔚述明, 李樂(lè)樂(lè), 黃新平 申請(qǐng)人:西安電子科技大學(xué)