亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TS流復用器中EPG信息處理的優(yōu)化*

        2010-03-14 09:04:56于鴻洋
        電視技術 2010年12期
        關鍵詞:復用器鏈表分段

        葛 倩,于鴻洋,張 萍

        (電子科技大學 電子工程學院,四川 成都 611731)

        1 引言

        在數(shù)字電視廣播系統(tǒng)中,在TS(Transport Stream)傳輸流最終被送到信道設備進行信道發(fā)送之前,TS流復用器將不同來源的傳輸流合并為一個新的傳輸流。電子節(jié)目指南(Electronic Program Guide,EPG)是指在符合MPEG-2(13818-1)的TS傳輸流中插入DVB標準定義的業(yè)務信息(Service Information,SI),是一種收視導航工具,是交互電視的關鍵技術。EPG協(xié)助觀看電視節(jié)目的用戶選擇節(jié)目,用戶通過EPG可以得到節(jié)目的相關信息。

        復用時,EPG等其他服務信息要通過復用器插入到TS流中。由于輸入到復用器的各TS流的EPG信息可能不完整或需要在原TS流中插播節(jié)目,所以復用之前需對各個待復用TS流的EPG信息進行添加或修改。同時,復用器會對節(jié)目號等信息重新賦值,攜帶EPG信息的各個表也要根據(jù)復用器的修改情況進行相應的修改和合并。EPG的處理在TS復用中非常重要,筆者介紹了一種TS流復用器中EPG信息相關表的處理方法。

        EPG信息由兩部分信息組成:基本EPG信息和擴展EPG信息?;綞PG信息是指完全可以用《數(shù)字廣播業(yè)務信息規(guī)范(GY/Z174-2001)》中的網(wǎng)絡信息表(NIT)、業(yè)務群關聯(lián)表(BAT)(可選)、業(yè)務描述表(SDT)和事件信息表(EIT)進行描述的EPG信息[1-3]。筆者主要介紹基本EPG的處理,包括對NIT,SDT和EIT的處理,BAT的處理方式與其他表相似。

        2 EPG處理系統(tǒng)框圖

        筆者設計基于IP多路輸入、多路復用輸出的TS軟件復用器中的EPG處理部分,復用器與設計均在Linux系統(tǒng)下實現(xiàn)。整個設計主要可分為EPG獲取、EPG數(shù)據(jù)存儲編輯、EPG發(fā)生等模塊,系統(tǒng)框圖如圖1所示。

        圖1 系統(tǒng)框圖

        EPG獲取模塊主要完成對EPG信息的接收提取與分析。之后由EPG數(shù)據(jù)存儲編輯模塊將得到的信息存入數(shù)據(jù)庫MySQL,并由用戶進行導入或編輯操作,對EPG進行相應的添加或修改,最后EPG發(fā)生模塊根據(jù)數(shù)據(jù)庫中存儲的新EPG信息和復用信息,產(chǎn)生新的EPG數(shù)據(jù),按一定的時間間隔插入到輸出TS流中。筆者將通過對各模塊的實現(xiàn)方法介紹來論述TS流復用器中EPG信息處理的實現(xiàn)。

        3 模塊實現(xiàn)方法

        3.1 EPG獲取模塊優(yōu)化及實現(xiàn)

        3.1.1 EPG獲取優(yōu)化

        為了提高EPG的接收效率,對EPG獲取的兩個處理過程進行了優(yōu)化,即各表section接收和接收信息完整性的判斷。

        1)section接收優(yōu)化

        部分機頂盒由于處理器主頻和存儲空間的限制,在接收PSI/SI表的section時采用PAT→NIT→SDT→EIT順序接收的方法,即在一個時間段內(nèi)只對一種PSI/SI表進行接收。會出現(xiàn)接收到SDT或EIT的包時,因為PAT或NIT沒有接收完成或者丟包而放棄接收分析的情況,當需要接收這些表時又要等到下一個發(fā)送周期,這樣接收完所有的表可能需要幾個發(fā)送周期,接收效率較低。由于系統(tǒng)在PC上實現(xiàn),存儲空間和處理器主頻的限制較小,故對接收方式進行了優(yōu)化,采用并行接收,即先接收PAT,之后并行接收NIT,SDT和EIT,可以節(jié)省時間。并行接收主要體現(xiàn)在section的接收處理上,接收步驟為:

        (1) 過濾 PID=0x000的包,分析PAT,獲得 NIT的PID、該流的節(jié)目數(shù)量以及所有節(jié)目的節(jié)目號,存入節(jié)目數(shù)據(jù)鏈表。由于PAT發(fā)送周期較短(為40ms),這一步驟可在很短的時間內(nèi)完成。

        (2)對其余3種表的section進行并行接收。程序根據(jù)TS包的PID過濾出需要的包,分別送入NIT,SDT和EIT各自的接收通道中,每個通道利用獨立的數(shù)據(jù)結(jié)構來記錄section接收情況信息和獨立的存儲空間,存儲接收到的section內(nèi)容,使得各通道互不干擾。

        (3)section進入各自的接收通道后,先判斷是否丟包,之后對TS包解包,將section內(nèi)容存入緩沖,根據(jù)section_length來判斷一個section是否接收完成,如果完成,按照各表的結(jié)構,分析該section,存儲相關信息,最后判斷接收信息的完整性,決定是否繼續(xù)接收。

        2)判斷信息完整性優(yōu)化

        在判斷接收信息的完整性時,不采用以往一些設計中根據(jù)last_section_number來判斷的方法,這要求section以section_number的順序依次接收,若開始接收時錯過section_number為0的包或者丟包,則導致之后section_number的包需等到下一發(fā)送周期才能接收,降低了接收效率,PSI/SI發(fā)送周期較長或者網(wǎng)絡質(zhì)量較差時影響尤為嚴重。

        筆者采用一種改進的接收判斷方法,可以解決這個問題,即利用段存在標志數(shù)組來判斷信息完整性,不要求按照section_number順序接收。具體實現(xiàn)為:程序首次收到該表section時,通過last_section_number(EIT還需要segment_last_section_number和last_table_id以及本TS流中的節(jié)目數(shù)和節(jié)目的program_number)計算出該表的section總數(shù)和所有section_number,以此建立section存在標志數(shù)組。以SDT為例,若得到last_section_number為1,則可以計算出該流SDT分段有2個section,section_number分別為0和1,即可建立標志數(shù)組,把0和1的位置置位為存在。之后每接收完一個section,把對應標志數(shù)組中的該section標志置位為已接收,并檢查所有的存在標志,若有存在標志未置位為已接收,則繼續(xù)接收該表,否則該表接收完成,停止接收。

        3)優(yōu)化結(jié)果

        優(yōu)化以存儲空間為代價來提高接收效率,適合于在存儲空間限制較小的PC上實現(xiàn)。若不經(jīng)優(yōu)化,系統(tǒng)可能需要接收端接收到數(shù)次完整的信息才能完成接收,而優(yōu)化之后的系統(tǒng)接收端只須收到一次完整的信息,就可以完成接收,減小了PSI/SI發(fā)送周期和丟包的影響。

        3.1.2 表分析處理流程圖

        系統(tǒng)對各表采用介紹的優(yōu)化方法進行并行接收,完成EPG信息的分析存儲,接收框圖如圖2所示。

        3.2 EPG數(shù)據(jù)存儲和編輯

        EPG相關表格接收完畢后,形成數(shù)據(jù)鏈表,結(jié)構如圖3所示。

        這樣的結(jié)構可以通過輸入TS流標號和節(jié)目號迅速定位節(jié)目信息,使之在鏈表中的添加刪除靈活簡便,也便于之后的表生成模塊的處理。

        選用的數(shù)據(jù)庫為MySQL。MySQL是一個開放源碼的關系數(shù)據(jù)庫管理系統(tǒng),支持Linux操作系統(tǒng),CPU利用率高,查詢速度快,還提供多種語言支持,滿足EPG信息的多語言要求。基于這些特性,MySQL可以滿足設計中對EPG處理的要求。

        所有的EPG信息存入創(chuàng)建的database中,程序根據(jù)輸入TS流的EPG建立table:SDT,EIT_PF和EIT_schedule_stream.No_prog_program.No,存入相關信息。

        用戶通過EPG編輯器對EPG信息進行編輯。其功能模塊包括網(wǎng)絡配置和事件編輯(包括節(jié)目編輯和節(jié)目單導入導出),完成后,將修改的信息導入數(shù)據(jù)庫。

        圖3 EPG信息數(shù)據(jù)鏈表

        3.3 EPG數(shù)據(jù)打包發(fā)送

        3.3.1 各表section生成

        為了便于表的生成,為各輸出流建立一個數(shù)據(jù)結(jié)構數(shù)組mult_infomation,存儲該流的復用信息,其中包含了stream_id(輸入 TS 流標號),origin_program_number(該節(jié)目的原始節(jié)目號),new_program_number(在復用流中的節(jié)目號)等信息,數(shù)組的項數(shù)為該復用流中所包含的節(jié)目數(shù),通過該數(shù)據(jù)結(jié)構可以方便地得到節(jié)目被復用到輸出流中的位置。

        NIT,SDT和EIT在TS流中的獨立性各不相同,所以section生成方式稍有不同。NIT對網(wǎng)絡信息進行描述,在同一網(wǎng)絡中,所有流的NIT是相同的,只須生成一種NIT section之后進行打包,作為同一網(wǎng)絡中所有流的NIT包,對于SDT,每個流的SDT section各不相同,需對各輸出流生成各自的SDT section,之后再打包,EIT是以節(jié)目為單位獨立的,即相同節(jié)目的EIT section除了service_id,其余部分在各TS流中都是相同的,所以先對各輸入TS流的各節(jié)目生成EIT section,之后輸出流根據(jù)mult_infomation從這些EIT section中選出需要的section,修改service_id,進行打包。

        生成section的信息從數(shù)據(jù)庫中讀取,之后根據(jù)各表的結(jié)構建立section,完成后計算CRC并插入。輸出TS流還需帶有同一網(wǎng)絡中其他TS流的SDT和EIT信息,傳輸這些信息需修改 table_id(SDT改為 0x4F,EIT在原table_id上加上0x10)和重新計算CRC。

        3.3.2 生成各表的待發(fā)送TS包鏈表

        SDT和EIT作為其他流信息發(fā)送時只須改變table_id和CRC,所以同一網(wǎng)絡TS流中的SDT和EIT除table_id和CRC部分不同之外,其余部分完全相同,同時,一個網(wǎng)絡中所有流共用一個NIT。由于設計的復用器輸出流均在同一網(wǎng)絡中,故各表可分別僅用一個TS包鏈表和相應的修改信息構成網(wǎng)絡中所有輸出流的待發(fā)送包。

        為了建立鏈表,須對生成的section打包并存儲到TS包數(shù)據(jù)結(jié)構中,該數(shù)據(jù)結(jié)構除了有TS包的完整內(nèi)容之外,還帶有output_id(輸出流編號)和需要替換的內(nèi)容(table_id和CRC)。建立好的鏈表如圖4所示(以SDT為例),其中NEXT_SDT_USE[output_id]為指向TS包數(shù)據(jù)結(jié)構的指針,每個輸出流均有1個,用于在發(fā)送TS包時指示當前應發(fā)送的包,header_n和rear_n為指向輸出流n的本流SDT包鏈表的頭和尾。

        圖4 TS包鏈表結(jié)構

        3.3.3 各輸出流EPG包發(fā)送

        對于每一個輸出流,需發(fā)送的表為:網(wǎng)絡NIT、流SDT和EIT、同一網(wǎng)絡中其他流SDT和EIT分段。DVB關于SI表的傳輸間隔要求如表1[4]所示。

        表1 DVB關于SI表的傳輸間隔

        以SDT發(fā)送為例,每隔2 s發(fā)送一次本流SDT分段,每隔10 s發(fā)送一次本流和其他流SDT分段,每發(fā)送一個包,NEXT_SDT_USE[output_id]就指向下一個包,當發(fā)現(xiàn)發(fā)送完成標志(僅發(fā)送當前流分段時標志為rear_n,發(fā)送所有分段時標志為header_n)即停止發(fā)送,等待下一發(fā)送周期,EIT和NIT的發(fā)送與此類似。當TS包作為其他流分段 (根據(jù)結(jié)構體中output_id和當前輸出流id判斷)發(fā)送時,須根據(jù)結(jié)構體中的修改信息進行修改。

        3.3.4 EPG信息更新

        EPG更新可以采用兩種方式:僅允許用戶手動更新和根據(jù)輸入TS流更新。更新方式的選擇以輸入TS流為單位。

        1)用戶手動更新。在復用過程中,用戶通過EPG編輯器更新EPG信息,導入數(shù)據(jù)庫,程序根據(jù)數(shù)據(jù)庫中的信息重新生成表,并使表的version_number加1,完成更新。

        2)根據(jù)輸入TS流更新。開始復用后,程序監(jiān)視各種表的version_number,若發(fā)現(xiàn)版本號變化,進行相關表的重新接收存儲,按照復用信息mult_infomation確定應該重建哪些表,同樣,使表的version_number加1。更新原則為[5]:

        (1)若NIT變更,重新建立整個網(wǎng)絡的傳輸流和業(yè)務信息。

        (2)若SDT變更,重新建立對應傳輸流里的業(yè)務信息。

        (3)若EIT變更,不改變整個網(wǎng)絡的傳輸流和業(yè)務信息,只改變相應的事件信息。

        4 實驗結(jié)果與分析

        TS流復用器的EPG處理系統(tǒng)工作于Linux系統(tǒng)下,完成復用器中EPG信息的添加、刪除等處理,進行測試,結(jié)果與分析如表2所示。

        表2 系統(tǒng)EPG接收效率測試結(jié)果

        測試中的丟包由隨機刪去發(fā)送流PSI/SI包來模擬,丟包程度為能夠保證接收端在1min內(nèi)收到一次完整的信息,接收超時時間設為1 min,若在網(wǎng)絡環(huán)境較差的情況下,可適當增加接收超時時間,以保證獲取完整的信息。在不丟包的情況下,理論上,對于TS1和TS2,優(yōu)化后的接收方式需要的最長時間分別為5 s和30 s。由表2的測試結(jié)果可以看到,優(yōu)化后的接收方式所用的時間小于未優(yōu)化的接收方式,并且丟包對優(yōu)化后的接收方式影響較小,對于沒有優(yōu)化的接收方式,丟包的影響在發(fā)送周期較長的分段時尤為嚴重。

        之后對EPG信息通過EPG編輯器進行修改,輸出流經(jīng)EPG分析軟件分析,各表均正常。EPG編輯器界面如圖5所示。

        圖6和圖7分別為輸入輸出流的EPG在數(shù)據(jù)庫中的情況 (系統(tǒng)對復用輸出流再次進行接收可分析得到輸出流的EPG情況),右半部分為數(shù)據(jù)庫中的table,左半部分為SDT內(nèi)容。輸入為2個TS流,第1個流沒有EPG信息,SDT中的provide_name和program_name默認為節(jié)目號。經(jīng)EPG編輯后輸出,輸出為1個流,第1個流選取節(jié)目號為ec1的流,第2個流選取所有節(jié)目,可以看到,節(jié)目號均重新賦值,并且對ec1節(jié)目的SDT進行了添加。

        [1]王大鵬.電子節(jié)目指南(EPG)在機頂盒中的實現(xiàn)[C]//國際有線電視技術研討會論文集,2003.杭州:中國廣播電視協(xié)會技術工作委員會,2003:406-410.

        [2]ISO/IEC 13818-1,Third edition 2007.10 information technologygeneric coding ofmoving pictures and associated audio information:system[S].2007.

        [3]方濤.數(shù)字電視業(yè)務信息及其編碼[M].北京:國防工業(yè)出版社,2003.

        [4]Guidelines on implementation and usage of service information[EB/OL].[2010-04-13].http://www.bjpace.com.cn/data/tec/tec-DVB/DVB-20BlueBooks-20Standards/Specifications-20and-20Standards/multiplexing/dvb-si/a005r1.pdf.

        [5]陳德林.EPG前端SI發(fā)表和機頂盒終端收表策略[J].廣播與電視技術,2005(8):99-101.

        猜你喜歡
        復用器鏈表分段
        一類連續(xù)和不連續(xù)分段線性系統(tǒng)的周期解研究
        基于二進制鏈表的粗糙集屬性約簡
        跟麥咭學編程
        分段計算時間
        基于分束器與雙向型的光分插復用器分析研究
        計量學報(2018年3期)2018-06-22 10:13:22
        基于鏈表多分支路徑樹的云存儲數(shù)據(jù)完整性驗證機制
        3米2分段大力士“大”在哪兒?
        太空探索(2016年9期)2016-07-12 10:00:04
        復用器與遙控設備兼容問題探討及解決方案
        鏈表方式集中器抄表的設計
        電測與儀表(2014年1期)2014-04-04 12:00:22
        關于年齡分段的描述
        一区二区三区高清在线观看视频| 全部免费国产潢色一级| 亚洲av人片在线观看调教| 亚洲精品98中文字幕| 久久伊人精品一区二区三区| 中文字幕无码家庭乱欲| 日韩不卡av高清中文字幕| 亚洲精彩av大片在线观看| 久久久久人妻一区二区三区| 久久久久久国产精品美女| 久久青青草原国产精品最新片| 精品国产一区二区三区av新片| 亚洲国产精品久久艾草| 中文字幕人妻丝袜乱一区三区| 无码超乳爆乳中文字幕| 国产夫妻自偷自拍第一页| 蜜臀av在线播放一区二区三区| 欧美亚洲精品一区二区| www.尤物视频.com| 在线国产激情视频观看| 亚洲欧美精品suv| 午夜一级在线| 亚洲女同恋中文一区二区| 蜜桃av精品一区二区三区| 亚洲av中文无码乱人伦在线r▽| 色系免费一区二区三区| 日本高清视频一区二区| 久久久中日ab精品综合| 欧美人与物videos另类xxxxx | 最新永久免费AV网站| 华人在线视频精品在线| 国产精品51麻豆cm传媒| 亚洲国产精品国语在线| 成人黄色片久久久大全| 日本高清视频wwww色| 亚洲国产精品一区二区久| 国模一区二区三区白浆| 成年av动漫网站18禁 | 亚洲一级无码片一区二区三区| 加勒比一区二区三区av| 波多野结衣不打码视频|