<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > DVB系統(tǒng)中多路TS流的軟件復(fù)用關(guān)鍵技術(shù)及實(shí)現(xiàn)

          DVB系統(tǒng)中多路TS流的軟件復(fù)用關(guān)鍵技術(shù)及實(shí)現(xiàn)

          作者: 時(shí)間:2012-05-29 來源:網(wǎng)絡(luò) 收藏

          PMT 表替換后,每一路流中原有的視音頻幀的 PID 應(yīng)與其對(duì)應(yīng)替換的 PMT 表中的視音頻 PID 保持一致,即需要進(jìn)行 PID 重映射。 在傳輸流處理過程中,先分析每一個(gè)讀入的 幀,根據(jù) PID的不同,選擇替換的內(nèi)容,如果是 PAT 和 PMT 表,則整個(gè) 幀替換,如果 是視音頻幀,則只替換 PID,替換之后,應(yīng)該對(duì)連續(xù)計(jì)數(shù)器加一。

          需要注意的是,單路傳輸流的構(gòu)成并不一樣,有的傳輸流是一路音頻一路視頻,有的是一路 視頻兩路音頻;有的 PCR 的 PID與視頻的 PID相同,有的則不同。所以,應(yīng)該為每一種情 況都準(zhǔn)備一張 PMT 表,在新素材到來時(shí),根據(jù)分析出來的 PSI 信息的情況,決定選用那一 張 PMT 表。這樣作雖然要?jiǎng)?chuàng)建很多靜態(tài)表,增加了內(nèi)存的占用,但是卻能使程序簡單 化,易于,同時(shí)不用隨時(shí)計(jì)算 32 位的 CRC,提高了程序的穩(wěn)定性。在素材文件切換時(shí), 如果 PMT 表需要發(fā)生變化,需要修改 PMT 表的版本號(hào)。

          每一路流都有 PAT,假使的路數(shù)為 n,如果每一路的 PAT 都去替換,就會(huì)使得 PAT 表 發(fā)送頻率提升為原來的 n 倍。MPEG-2 規(guī)定,PSI 信息傳送的頻率每秒不低于 25 次,協(xié)議 中只規(guī)定了下限,沒有規(guī)定上限,雖然每一路都替換,并不違背協(xié)議,但是很多器和解 碼器在 PSI 信息過多的時(shí)候就會(huì)工作不正常,這是因?yàn)?PSI 信息的 32位 CRC 校驗(yàn)很耗時(shí), 所以通常只替換其中一路的 PAT, 其余的都用空包代替。 PSI 信息合成具體流程如圖 4 所示。

          4.jpg

          4.流的節(jié)目時(shí)鐘參考值修正

          在 MPEG-2 編碼器中有一個(gè)時(shí)鐘,該時(shí)鐘用來生成一個(gè)共同的時(shí)序以便音頻/視頻 能夠正確地解碼與播放,同時(shí)可以用來指示在采樣瞬間系統(tǒng)時(shí)鐘的瞬時(shí)值[6]。正是由于編 碼器中有共同的系統(tǒng)時(shí)鐘,解碼器中的時(shí)鐘可以根據(jù)節(jié)目時(shí)鐘參考(PCR)重新恢復(fù),并通 過時(shí)間標(biāo)記的正確使用為解碼器中操作的正確同步提供基準(zhǔn)。

          時(shí)鐘處理和碼率有很大的相關(guān)性,某個(gè)時(shí)間段的碼率就是這段時(shí)間的數(shù)據(jù)量與時(shí)鐘差值的比。為了防止在碼率出現(xiàn)波動(dòng)的時(shí) PCR 時(shí)鐘差值越界,導(dǎo)致解碼器不能正常工作,后 輸出碼率應(yīng)該比所有單路節(jié)目的總碼率稍大。在實(shí)際中,如果真的出現(xiàn)這種情況,為了避免 所有節(jié)目不能正常播放,本文采取的方法是停掉其中某一路,這樣降低輸出總碼率中的有效 碼率,保證其他節(jié)目正常播放。在這里需要說明的是,MPEG-2 中 TS流有兩種,一種 是恒碼率流,一種是變碼率流,本文研究的復(fù)用是針對(duì)恒碼率流的復(fù)用。

          根據(jù) MPEG-2 標(biāo)準(zhǔn),TS流中的 PCR字段長度為 48b, PCR 也是另外一種時(shí)間標(biāo)記,是編碼 器 27MHz 時(shí)基的 42b 采樣值,解碼器利用它來恢復(fù)系統(tǒng)時(shí)鐘并進(jìn)行恰當(dāng)?shù)慕獯a操作,它有 兩個(gè)部分組成:一部分以本地參考時(shí)鐘的 1/300 (90kHz) 為單位,稱為 program_clock_reference_base ,為 33b 字段;另外一部分稱為

          program_clock_reference_extension,是以本地參考時(shí)鐘(27MHz)為單位的 9b字段。

          g1.jpg

          其中 sysclkfre 為系統(tǒng)時(shí)鐘 27MHZ。PCR 的單位是 1 /27M 秒,分為兩部分表示。實(shí)際編程中,當(dāng)?shù)玫揭粋€(gè)新的 PCR 值,用式(1)和式 (2) 得到 PCR_base ( 33bit) 和 PCR_ext ( 9bit)兩 部分,填入 TS 幀中。在輸出碼率恒定的情況下,每一個(gè) TS 幀傳輸所用的時(shí)間△PCR 值可以通過下式計(jì)算:

          g2.jpg

          其中 nCoderate 為輸出的總碼率?!鱌CR 就是每一個(gè) TS幀的時(shí)間刻度。

          系統(tǒng)開始運(yùn)行時(shí),確定一個(gè) PCR 的初始值,并為每一路申請一個(gè)計(jì)數(shù)器 nCounter變量,計(jì)數(shù)在兩個(gè) PCR 幀之間的 TS幀數(shù),根據(jù)以下公式計(jì)算新的 PCR值:

          g3.jpg

          式中,PCR_old 代表上一個(gè) PCR 的值,PCR_new 代表當(dāng)前新 PCR 的值。在得到新的 PCR 值之后, 用公式(1)(2)(3) 計(jì)算出 PCR_base和 PCR_ext 寫入幀中, 同時(shí) PCR_old = PCR new, nCounter=0。 nCouter 是對(duì)整個(gè)傳輸流而言的,不管 TS 幀是不是當(dāng)前計(jì)算的這路 TS 的內(nèi) 容,或者空幀,nCounter都要累加。

          在 MPEG2 協(xié)議中,PCR 由 PCR_base(33bit)和 PCR_ext(9bit)表示,總共 42bit,當(dāng) PCR的值 超過 42bit 所能表達(dá)的范圍時(shí),需要循環(huán)重新開始。由于 PCR 和 PTS以及 DTS的關(guān)系,在 重新開始循環(huán) PCR 的時(shí)候,一定要將 PTS 和 DTS 也重新回 0,同時(shí)要將 PCR 幀中調(diào)整域 中的 discontinuity_indicator字段置 1。

          由于市場上的解碼器千差萬別, 有的解碼器中并沒有為PCR留足42bit, 在這種解碼器中PCR 通常會(huì)在解碼器端被提前回 0,而 PTS 和 DTS 并沒有隨之一起復(fù)位,這就會(huì)造成解碼器的 上溢,導(dǎo)致播放不正常。所以在實(shí)際中,本文判斷 PCR 是否達(dá)到回 0 的閥值略低于 42bit 所能表達(dá)的最大值,這樣會(huì)提高對(duì)解碼設(shè)備的適應(yīng)性,同時(shí)不會(huì)造成協(xié)議上的沖突。PCR 時(shí)鐘處理的具體流程如圖 5 所示.

          5.jpg

          5.TS流復(fù)用系統(tǒng)的程序設(shè)計(jì)與測試結(jié)果分析

          通過對(duì) MPEG-2 傳輸流應(yīng)用結(jié)構(gòu)的仔細(xì)分析,可以看出 MPEG-2 傳輸流所傳送的只是彼此 獨(dú)立的原始流數(shù)據(jù)和把特定的原始流組合成一個(gè)節(jié)目的 PSI 信息, 并沒有傳送一個(gè)不可分割 的真正意義上的節(jié)目,因此在一定程度上保證了 TS流復(fù)用程序的可行性。

          所設(shè)計(jì)程序并不需要對(duì)組成節(jié)目的原始流進(jìn)行內(nèi)容的處理, 不管構(gòu)成某節(jié)目的原始流是音頻 還是視頻還是私有數(shù)據(jù),程序所要做的只是改動(dòng)攜帶原始流的傳輸流分組的標(biāo)記信息,并把 它發(fā)送到輸出的傳輸流, 接著在復(fù)用后的傳輸流中也要發(fā)送該原始流所構(gòu)成的節(jié)目的節(jié)目映 射表。與此同時(shí),需要注意的一點(diǎn)是,由于輸入的各個(gè)傳輸流相互獨(dú)立,它們?yōu)楦髯缘墓?jié)目 分配的 PID、節(jié)目號(hào)之類的標(biāo)志信息很可能會(huì)發(fā)生重復(fù)的情況,所以對(duì)于原始流分組,并不 能簡單的轉(zhuǎn)發(fā),因此,程序?qū)楦鱾€(gè)傳輸流中的原始流分配新的 PID,以及為不同的節(jié)目分配新的節(jié)目號(hào),從而形成一個(gè)新的傳輸流。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();