專利名稱:以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)關(guān)實(shí)現(xiàn)方法,特別涉及一種基于地面數(shù)字電視信道進(jìn)行IP(Internet Protocol,網(wǎng)絡(luò)之間互連的協(xié)議)傳輸?shù)那度胧骄W(wǎng)關(guān)的實(shí)現(xiàn)方法,又稱IP over TS(Transport Stream,傳輸流)網(wǎng)關(guān)。用于無(wú)線互聯(lián)網(wǎng)傳輸??蓪?shí)現(xiàn)同網(wǎng)段、跨網(wǎng)段的單工、雙工傳輸。支持UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)及TCP(Transmission Control Protocol,傳輸控制協(xié)議)。
背景技術(shù):
從互聯(lián)網(wǎng)的構(gòu)架來(lái)看,物理層鏈路的發(fā)展現(xiàn)狀決定了互聯(lián)網(wǎng)的發(fā)展趨勢(shì),物理層協(xié)同數(shù)據(jù)鏈路層規(guī)定了數(shù)據(jù)傳輸?shù)逆溌诽匦?、傳輸速率、封裝方式和差錯(cuò)控制等。隨著數(shù)字電視網(wǎng)絡(luò)技術(shù)的發(fā)展,基于數(shù)字電視網(wǎng)絡(luò)鏈路的互聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)难芯砍蔀楫?dāng)前互聯(lián)網(wǎng)物理層鏈路研究的熱點(diǎn)?;跀?shù)字電視網(wǎng)絡(luò)的互聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)闹饕康氖峭ㄟ^(guò)利用現(xiàn)有的數(shù)字電視網(wǎng)絡(luò)來(lái)傳輸IP數(shù)據(jù)。
因此亟待開(kāi)發(fā)出一種新的以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,以解決在無(wú)線設(shè)備兩側(cè)使用不同網(wǎng)段的IP地址進(jìn)行工作的問(wèn)題。通過(guò)匹配TS流接口,進(jìn)行無(wú)線傳輸。
發(fā)明內(nèi)容
本發(fā)明的目的在于,通過(guò)提供一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,在無(wú)線設(shè)備兩側(cè)使用不同網(wǎng)段的IP地址進(jìn)行工作。采用新的IP數(shù)據(jù)包和TS數(shù)據(jù)包的封裝和解封裝方法,匹配TS流接口,通過(guò)TS調(diào)制解調(diào)器實(shí)現(xiàn)遠(yuǎn)距離、高數(shù)據(jù)率的雙向及單向傳輸。
本發(fā)明是采用以下技術(shù)手段實(shí)現(xiàn)的 一種將以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,使用與以太網(wǎng)連接的嵌入式處理器,包括以下步驟 1.1.將網(wǎng)絡(luò)數(shù)據(jù)與數(shù)字電視視頻流數(shù)據(jù)格式進(jìn)行相互轉(zhuǎn)換,即IP包與MPEG-2TS流的相互轉(zhuǎn)換; 1.2.所述的嵌入式處理器中采用雙緩沖架構(gòu)和單緩沖架構(gòu)的結(jié)合,配置開(kāi)機(jī)運(yùn)行腳本,在兩種架構(gòu)中切換;其中雙緩沖構(gòu)架是在IP處理層通過(guò)兩個(gè)緩沖區(qū)均勻流量,在均勻流量的同時(shí)采用多個(gè)線程來(lái)對(duì)每個(gè)緩沖區(qū)進(jìn)行處理;單緩沖構(gòu)架是在驅(qū)動(dòng)程序態(tài)采用的數(shù)據(jù)緩沖方式; 1.3.在嵌入式系統(tǒng)的上層應(yīng)用程序中采用自適應(yīng)鄰接表法,自動(dòng)獲取各自網(wǎng)段中的鄰接表并發(fā)送給對(duì)端進(jìn)行交換; 1.4.通過(guò)IP包封裝線程和TS解封線程實(shí)現(xiàn)IP和TS格式的轉(zhuǎn)換; 1.5.在嵌入式系統(tǒng)中通過(guò)TS接收線程和TS發(fā)送線程執(zhí)行完全的逆功能。
前述的1.3中的自適應(yīng)鏈表法包括以下步驟 2.1系統(tǒng)開(kāi)機(jī),向全網(wǎng)段內(nèi)發(fā)送地址解析協(xié)議數(shù)據(jù)包,在一定的時(shí)間內(nèi)將收到地址解析協(xié)議回復(fù)的主機(jī)IP地址記錄入存根; 2.2系統(tǒng)兩端交換存根,并將交換后的存根進(jìn)行散表映射; 2.3如果有主機(jī)上線,主機(jī)將發(fā)送一個(gè)地址解析協(xié)議消息確保IP地址不沖突,系統(tǒng)查找對(duì)端IP地址列表,如果此IP地址可用,則將該IP地址加入地址列表存根并且準(zhǔn)備發(fā)送修改消息至對(duì)端;如果此IP地址不可用(對(duì)端存在該IP地址),則系統(tǒng)回復(fù)該地址解析協(xié)議消息表明此IP不可用(IP地址存在沖突); 2.4系統(tǒng)每隔數(shù)分鐘向網(wǎng)絡(luò)中的每臺(tái)主機(jī)廣播地址解析協(xié)議數(shù)據(jù)包用來(lái)輪詢下線的主機(jī)同時(shí)修改存根,將修改操作發(fā)至對(duì)端網(wǎng)絡(luò)。
前述的1.4中的IP包封裝線程和TS解封線程包括以下步驟 3.1IP包封裝成TS流數(shù)據(jù)包;首先,從IP發(fā)送隊(duì)列中獲取IP數(shù)據(jù)包,如果沒(méi)有獲取到IP數(shù)據(jù)包,則繼續(xù)獲??;線程的等待和掛起由操作系統(tǒng)來(lái)決定,當(dāng)獲取到一個(gè)IP數(shù)據(jù)包時(shí),開(kāi)始進(jìn)入IP封裝為T(mén)S線程;循環(huán)調(diào)用封裝線程直到完全將IP數(shù)據(jù)包重新打包為T(mén)S數(shù)據(jù)包;打包完成的TS數(shù)據(jù)包將送入TS發(fā)送隊(duì)列等待TS發(fā)送線程處理; 3.2TS流數(shù)據(jù)包解封為IP包;TS解封裝線程從TS接收隊(duì)列中循環(huán)讀取TS幀;如果TS幀為包含有IP數(shù)據(jù)包的第一個(gè)TS幀時(shí),開(kāi)始循環(huán)調(diào)用TS解封裝線程直到獲取完整的IP數(shù)據(jù)包;當(dāng)?shù)玫酵暾腎P數(shù)據(jù)包時(shí),通過(guò)發(fā)送套接字接口發(fā)送IP數(shù)據(jù)包。
前述的1.5中的TS發(fā)送線程和TS接收線程包括以下步驟 4.1.TS發(fā)送線程和IP封裝為T(mén)S線程具有相同的屬性,均為從線程的創(chuàng)建開(kāi)始工作直到主線程退出或系統(tǒng)異常;TS發(fā)送線程循環(huán)從TS發(fā)送隊(duì)列中讀取已經(jīng)封裝好的TS幀,然后調(diào)用驅(qū)動(dòng)程序?qū)S幀送入驅(qū)動(dòng)程序直到成功完成后返回; 4.2.TS接收線程和TS發(fā)送線程執(zhí)行完全的逆功能,TS接收線程循環(huán)從內(nèi)核中獲取數(shù)據(jù),如果成功獲取到TS數(shù)據(jù)并判定其標(biāo)志位符合IP數(shù)據(jù)包的發(fā)送規(guī)則,則將數(shù)據(jù)放入TS接收隊(duì)列,待TS解封裝線程讀取。
本發(fā)明一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,與現(xiàn)有技術(shù)相比,具有以下明顯的優(yōu)勢(shì)和有益效果 嵌入式處理器中的程序采用了雙緩沖架構(gòu)和單緩沖架構(gòu)的結(jié)合使用。雙緩沖構(gòu)架是在IP處理層通過(guò)兩個(gè)緩沖區(qū)來(lái)均勻流量的。在均勻流量的同時(shí)采用多個(gè)線程來(lái)對(duì)每個(gè)緩沖區(qū)進(jìn)行處理,盡可能提高系統(tǒng)效率。節(jié)省了系統(tǒng)線程調(diào)度的開(kāi)銷,同時(shí)節(jié)省了對(duì)緩沖區(qū)上鎖和解鎖等待的開(kāi)銷。
在地址解析機(jī)制中創(chuàng)新的使用了自適應(yīng)鄰接表法。該方法基于鄰接表法,但它解決了鄰接表法中缺乏靈活性的問(wèn)題。自適應(yīng)鄰接表法不再需要手動(dòng)統(tǒng)計(jì)IP地址和編輯鄰接表。它自動(dòng)獲取各自網(wǎng)段中的鄰接表并發(fā)送到對(duì)端進(jìn)行交換,特別適合對(duì)移動(dòng)設(shè)備和臨時(shí)設(shè)備提供無(wú)線網(wǎng)絡(luò)接入。同時(shí)自適應(yīng)鄰接表法也避免了發(fā)送過(guò)多的地址信息數(shù)據(jù)而占用有效數(shù)據(jù)帶寬。
圖1為本發(fā)明的系統(tǒng)框圖; 圖2(a)嵌入式處理器中主線程流程圖; 圖2(b)為IP封裝為T(mén)S線程流程圖; 圖2(c)為T(mén)S發(fā)送線程流程圖; 圖2(d)為T(mén)S接收線程流程圖; 圖2(e)為T(mén)S數(shù)據(jù)解封裝為IP數(shù)據(jù)流程圖以及IP數(shù)據(jù)發(fā)送流程圖。
圖3為單緩沖系統(tǒng)軟件流程圖; 圖4為改進(jìn)型TS包封裝過(guò)程示意圖。
具體實(shí)施例方式 以下結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的實(shí)施例做進(jìn)一步的說(shuō)明 從宏觀角度看,本發(fā)明具有獨(dú)立的收發(fā)通路,具有全雙工和單工的工作方式。對(duì)于從IP包轉(zhuǎn)化成TS流數(shù)據(jù)的方向來(lái)說(shuō),嵌入式處理器的工作是獲取IP數(shù)據(jù)包,根據(jù)本發(fā)明自訂協(xié)議將IP包轉(zhuǎn)化為T(mén)S數(shù)據(jù)包,并將其存入緩沖區(qū)內(nèi)。然后接口控制器從緩存中讀取TS流數(shù)據(jù),并以TS流標(biāo)準(zhǔn)時(shí)序發(fā)送給TS調(diào)制器。對(duì)于從TS流數(shù)據(jù)轉(zhuǎn)化成IP的方向來(lái)說(shuō),接口控制器首先以TS流標(biāo)準(zhǔn)時(shí)序抓取TS解調(diào)器送來(lái)的數(shù)據(jù),并將其存入緩存中。然后嵌入式處理器負(fù)責(zé)將TS數(shù)據(jù)還原成IP包并發(fā)送到網(wǎng)絡(luò)中。
對(duì)于協(xié)議轉(zhuǎn)換網(wǎng)關(guān)來(lái)說(shuō),系統(tǒng)對(duì)輸出和用戶輸入配置的要求相對(duì)應(yīng)一般的應(yīng)用程序較小。因此,整個(gè)軟件的構(gòu)架圍繞數(shù)據(jù)流的傳輸和系統(tǒng)性能最優(yōu)化進(jìn)行。系統(tǒng)的數(shù)據(jù)流程決定了軟件的流程。因此整個(gè)系統(tǒng)軟件分為兩部分。第一部分是處于用戶態(tài)或內(nèi)核態(tài)的網(wǎng)絡(luò)處理程序,主要負(fù)責(zé)ARP(Address Resolution Protocol,地址解析協(xié)議)協(xié)議的處理和IP數(shù)據(jù)包的獲取,同時(shí)內(nèi)部開(kāi)辟新線程來(lái)處理IP數(shù)據(jù)和TS數(shù)據(jù)的相互封裝。第二部分是通過(guò)緩沖區(qū)和中斷來(lái)完成的接口控制器驅(qū)動(dòng)部分。這一部分可以看成是一個(gè)TS流的收發(fā)裝置,專門(mén)用來(lái)處理和外部調(diào)制解調(diào)器接口的匹配問(wèn)題。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)的軟件結(jié)構(gòu)由IP數(shù)據(jù)和TS數(shù)據(jù)的流向來(lái)決定,在每一個(gè)單端的程序中,需要同時(shí)考慮發(fā)送和接收的問(wèn)題。又因?yàn)橐蕴W(wǎng)接口和TS接口的數(shù)據(jù)速率不匹配,同時(shí),IP數(shù)據(jù)由于存在擁塞等問(wèn)題,可能會(huì)導(dǎo)致短時(shí)間內(nèi)接收到的數(shù)據(jù)包過(guò)大和過(guò)多而導(dǎo)致數(shù)據(jù)丟失,因此需要用緩沖系統(tǒng)來(lái)均勻數(shù)據(jù)傳輸。
嵌入式處理器中的程序采用了雙緩沖架構(gòu)和單緩沖架構(gòu)的結(jié)合使用。雙緩沖構(gòu)架是在IP處理層通過(guò)兩個(gè)緩沖區(qū)來(lái)均勻流量的。在均勻流量的同時(shí)采用多個(gè)線程來(lái)對(duì)每個(gè)緩沖區(qū)進(jìn)行處理,盡可能提高系統(tǒng)效率。軟件流程如圖2(a)-(e)所示。單緩沖構(gòu)架只是在驅(qū)動(dòng)程序態(tài)采用數(shù)據(jù)緩沖的策略。在這種策略下,節(jié)省了系統(tǒng)線程調(diào)度的開(kāi)銷,同時(shí)節(jié)省了對(duì)緩沖區(qū)上鎖和解鎖等待的開(kāi)銷。單緩沖的程序流程圖如圖3所示。
在地址解析機(jī)制中創(chuàng)新的使用了自適應(yīng)鄰接表法。該方法基于鄰接表法,但它解決了鄰接表法中缺乏靈活性的問(wèn)題。自適應(yīng)鄰接表法不再需要手動(dòng)統(tǒng)計(jì)IP地址和編輯鄰接表。它自動(dòng)獲取各自網(wǎng)段中的鄰接表并發(fā)送到對(duì)端進(jìn)行交換,特別適合對(duì)移動(dòng)設(shè)備和臨時(shí)設(shè)備提供無(wú)線網(wǎng)絡(luò)接入。同時(shí)自適應(yīng)鄰接表法也避免了發(fā)送過(guò)多的地址信息數(shù)據(jù)而占用有效數(shù)據(jù)帶寬。自適應(yīng)鄰接表法如下 (1)系統(tǒng)開(kāi)機(jī),IP over TS設(shè)備向全網(wǎng)段內(nèi)發(fā)送ARP數(shù)據(jù)包,在一定的時(shí)間內(nèi)(10s)將收到ARP回復(fù)的主機(jī)IP地址記錄入存根。
(2)IP over TS兩端交換存根,并將交換后的存根進(jìn)行散表映射。
(3)如果有主機(jī)上線,主機(jī)將發(fā)送一個(gè)ARP消息確保IP地址不沖突。IP over TS系統(tǒng)查找對(duì)端IP地址列表,如果此IP地址可用,則將該IP地址加入地址列表存根并且準(zhǔn)備發(fā)送修改消息至對(duì)端。如果此IP地址不可用(對(duì)端存在該IP地址)。則IP overTS系統(tǒng)回復(fù)該ARP消息表明此IP不可用(IP地址存在沖突)。
(4)IP over TS系統(tǒng)每隔10分鐘向網(wǎng)絡(luò)中的每臺(tái)主機(jī)廣播ARP數(shù)據(jù)包用來(lái)輪詢下線的主機(jī)同時(shí)修改存根,將修改操作發(fā)至對(duì)端網(wǎng)絡(luò)。
通過(guò)上述四個(gè)步驟,IP over TS系統(tǒng)就可以知道任意時(shí)刻網(wǎng)絡(luò)兩端的地址信息并確認(rèn)是否欺騙,轉(zhuǎn)發(fā)數(shù)據(jù)包。
TS的標(biāo)準(zhǔn)格式由MPEG2(Motion Picture Experts Group,動(dòng)態(tài)圖像專家組)制定。其中PID(特性標(biāo)號(hào))位規(guī)定了傳輸流中的數(shù)據(jù)類型。PID是在TS幀頭中預(yù)留的13比特?cái)?shù)據(jù)。對(duì)于第一次存根交換和IP數(shù)據(jù)交換,采用指定PID用來(lái)標(biāo)識(shí)。如果要添加或刪除一臺(tái)主機(jī)信息,PID的生成規(guī)則如下 PID 0b00000 0000 0000 添加0b00001 xxxx xxxx;其中xxxx xxxx表明主機(jī)地址。
刪除0b00010 xxxx xxxx;其中xxxx xxxx表明主機(jī)地址。
在這種PID出現(xiàn)的情況下,TS中的數(shù)據(jù)只有兩種類型一種是帶有IP數(shù)據(jù)的載荷數(shù)據(jù)包,另一種是單純發(fā)送修改消息的數(shù)據(jù)包。這兩種包可以通過(guò)IP封裝算法來(lái)進(jìn)行區(qū)分。同時(shí)考慮到A類和B類地址的問(wèn)題,通過(guò)子網(wǎng)掩碼的運(yùn)算來(lái)確定多少個(gè)TS修改幀決定一臺(tái)主機(jī)地址。A類地址需要三個(gè)TS幀來(lái)表明對(duì)一個(gè)主機(jī)地址的修改,B類地址需要兩個(gè)TS幀,C類地址需要一個(gè)。
自適應(yīng)鄰接表法需要兩個(gè)原始socket(套接字)來(lái)協(xié)同工作。ARP socket用來(lái)處理ARP相關(guān)的所有消息。IP socket用來(lái)捕獲發(fā)往該MAC(Media Access Control,媒體訪問(wèn)控制)地址的所有數(shù)據(jù)包。同時(shí),和鄰接表法一樣,自適應(yīng)鄰接表法由于在無(wú)線信道傳輸?shù)倪^(guò)程中剔除了MAC層幀頭信息,這樣在無(wú)線信道中每傳送一個(gè)IP數(shù)據(jù)包就可以節(jié)省14個(gè)字節(jié)的流量,進(jìn)一步提高了系統(tǒng)信道的有效利用率。
4.針對(duì)ULE算法中存在6個(gè)字節(jié)的冗余信息,本發(fā)明提出的TS包封裝算法將冗余信息剔除,將PDU(可封裝的數(shù)據(jù)單元)打包成自定義的SNDU(子網(wǎng)數(shù)據(jù)單元)。由于IP over TS系統(tǒng)無(wú)線信道傳輸?shù)臄?shù)據(jù)只包含IP數(shù)據(jù)。因此無(wú)需額外的信息位來(lái)指明傳輸?shù)臄?shù)據(jù)類型。整個(gè)SNDU的構(gòu)成如圖下表所示。
類型0x00表明IPv4數(shù)據(jù)。
0x11表明IPv6數(shù)據(jù)。
0x10和0x01為保留。
長(zhǎng)度指示IP數(shù)據(jù)報(bào)的長(zhǎng)度??杀磉_(dá)長(zhǎng)度為2-14,遠(yuǎn)大于以太網(wǎng)最大傳輸單元。
IP數(shù)據(jù)包嵌入式處理器捕獲的IP數(shù)據(jù)包。
封裝的整個(gè)過(guò)程就是將SNDU數(shù)據(jù)打包成具有固定長(zhǎng)度184字節(jié)的凈負(fù)載。同時(shí)輔助利用TS幀中的特殊位來(lái)封裝一個(gè)完整的IP數(shù)據(jù)。
下面結(jié)合流程圖敘述一下處理器的工作。如圖2(a)所示,主線程在開(kāi)始時(shí)創(chuàng)建網(wǎng)絡(luò)層接收socket,同時(shí)創(chuàng)建網(wǎng)絡(luò)層發(fā)送socket。因?yàn)椴徽摻邮誷ocket還是發(fā)送socket都工作在獨(dú)立的線程。為了避免過(guò)多的加鎖而損失系統(tǒng)性能,因而分別創(chuàng)建接收socket和發(fā)送socket來(lái)獨(dú)立的處理接收和發(fā)送事務(wù)。當(dāng)接收socket和發(fā)送socket創(chuàng)建完成后,系統(tǒng)將創(chuàng)建封裝器。之后,主線程開(kāi)始循環(huán)調(diào)用socket接收函數(shù)來(lái)獲取網(wǎng)絡(luò)層IP數(shù)據(jù)包。當(dāng)有IP數(shù)據(jù)包被成功捕獲時(shí),將捕獲的IP數(shù)據(jù)包送入IP接收隊(duì)列等待處理。
如圖2(b)所示,IP封裝為T(mén)S線程在線程創(chuàng)建后循環(huán)執(zhí)行下列任務(wù)知道系統(tǒng)異常或線程退出。首先,封裝算法從IP發(fā)送隊(duì)列中獲取一個(gè)IP數(shù)據(jù)包,如果沒(méi)有獲取到IP數(shù)據(jù)包,則繼續(xù)獲取。線程的的等待和掛起由操作系統(tǒng)來(lái)決定。當(dāng)獲取到一個(gè)IP數(shù)據(jù)包時(shí),開(kāi)始進(jìn)入IP封裝為T(mén)S算法。循環(huán)調(diào)用封裝算法直到完全將IP數(shù)據(jù)包重新打包為T(mén)S數(shù)據(jù)包。打包完成的TS數(shù)據(jù)包將送入TS發(fā)送隊(duì)列待TS發(fā)送線程處理。
TS發(fā)送線程和IP封裝為T(mén)S線程具有相同的屬性,它們都是從線程的創(chuàng)建開(kāi)始工作知道主線程退出或系統(tǒng)異常。如圖2(c)所示,TS發(fā)送線程循環(huán)從TS發(fā)送隊(duì)列中讀取已經(jīng)封裝好的TS幀,然后調(diào)用驅(qū)動(dòng)程序?qū)S發(fā)送幀送入驅(qū)動(dòng)程序知道成功完成后返回。
TS獲取線程和TS發(fā)送線程執(zhí)行完全的逆功能,TS獲取線程循環(huán)調(diào)用讀取函數(shù)從內(nèi)核中獲取數(shù)據(jù),如果成功獲取到TS數(shù)據(jù)并判定數(shù)據(jù)有效,則將數(shù)據(jù)放入TS接收隊(duì)列,待TS解封裝為IP線程讀取。此過(guò)程如圖2(d)所示。
如圖2(e),TS解封裝線程從TS接收隊(duì)列中循環(huán)讀取TS幀。如果此TS幀為包含有IP數(shù)據(jù)包的第一個(gè)TS幀時(shí),開(kāi)始循環(huán)調(diào)用TS解封裝算法直到獲取完整的IP數(shù)據(jù)包。當(dāng)?shù)玫酵暾腎P數(shù)據(jù)包時(shí),通過(guò)發(fā)送socket接口發(fā)送IP數(shù)據(jù)包。至此,數(shù)據(jù)包在用戶層的所有調(diào)用已經(jīng)完結(jié)。
如圖4所示,其中1指示的是一個(gè)IP包,2指示的是這個(gè)IP包被拆分成的TS幀中的第一幀,3指示的是這個(gè)IP包被拆分成的TS幀中的第二幀,4指示的是這個(gè)IP包被拆分成的TS幀中的第N幀。TS流幀的封裝及解封算法具體實(shí)施方法如下 (1)從SNDU截取前184字節(jié)的數(shù)據(jù),構(gòu)成TS流的第一幀。設(shè)定TS幀頭的起始幀標(biāo)志位,設(shè)定幀PID為0x177,TS幀頭計(jì)數(shù)器設(shè)定為1。SNDU記錄長(zhǎng)度減去182。
(2)判斷SNDU長(zhǎng)度為,如果小于等于0,算法退出。如果大于0,執(zhí)行(3)。
(3)從SNDU截取前184字節(jié)的數(shù)據(jù),構(gòu)成TS流的其它幀,設(shè)定幀PID為0x177,TS幀頭計(jì)數(shù)器設(shè)定位上個(gè)幀計(jì)數(shù)器加1。SNDU長(zhǎng)度減去184。轉(zhuǎn)入(2)執(zhí)行。
解封裝的算法描述如下 (1)判斷TS幀頭信息,幀ID如果不是0x177舍棄,如果TS幀頭數(shù)據(jù)起始位被設(shè)定,開(kāi)始從此幀中讀取IP數(shù)據(jù)包長(zhǎng)度。將其它數(shù)據(jù)存入緩沖區(qū)。
(2)如果IP數(shù)據(jù)包長(zhǎng)度小于182字節(jié),程序退出。如果大于182字節(jié),接收下一個(gè)TS幀,判斷PID為0x177。判斷TS幀頭計(jì)數(shù)器,如果不滿足加1規(guī)則,丟棄該幀,并釋放IP數(shù)據(jù)緩沖區(qū)。如果TS幀頭計(jì)數(shù)器滿足加1規(guī)則,則接收此幀,IP數(shù)據(jù)長(zhǎng)度加184。判斷讀取長(zhǎng)度小于接收到的數(shù)據(jù)長(zhǎng)度,程序退出,反之,循環(huán)執(zhí)行(2)。
權(quán)利要求
1、一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,使用與以太網(wǎng)連接的嵌入式處理器,其特征在于包括以下步驟
1.1.將網(wǎng)絡(luò)數(shù)據(jù)與數(shù)字電視視頻流數(shù)據(jù)格式進(jìn)行相互轉(zhuǎn)換,即IP包與MPEG-2 TS流的相互轉(zhuǎn)換;
1.2.所述的嵌入式處理器中采用雙緩沖架構(gòu)和單緩沖架構(gòu)的結(jié)合,配置開(kāi)機(jī)運(yùn)行腳本,在兩種架構(gòu)中切換;其中雙緩沖構(gòu)架是在IP處理層通過(guò)兩個(gè)緩沖區(qū)均勻流量,在均勻流量的同時(shí)采用多個(gè)線程來(lái)對(duì)每個(gè)緩沖區(qū)進(jìn)行處理;單緩沖構(gòu)架是在驅(qū)動(dòng)程序態(tài)采用的數(shù)據(jù)緩沖方式;
1.3.在嵌入式系統(tǒng)的上層應(yīng)用程序中采用自適應(yīng)鄰接表法,自動(dòng)獲取各自網(wǎng)段中的鄰接表并發(fā)送給對(duì)端進(jìn)行交換;
1.4.通過(guò)IP包封裝線程和TS解封線程實(shí)現(xiàn)IP和TS格式的轉(zhuǎn)換;
1.5.在嵌入式系統(tǒng)中通過(guò)TS接收線程和TS發(fā)送線程執(zhí)行完全的逆功能。
2、根據(jù)權(quán)利要求1所述的一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,其特征在于所述的步驟1.3中的自適應(yīng)鏈表法包括以下步驟
2.1系統(tǒng)開(kāi)機(jī),向全網(wǎng)段內(nèi)發(fā)送地址解析協(xié)議數(shù)據(jù)包,在一定的時(shí)間內(nèi)將收到地址解析協(xié)議回復(fù)的主機(jī)IP地址記錄入存根;
2.2系統(tǒng)兩端交換存根,并將交換后的存根進(jìn)行散表映射;
2.3如果有主機(jī)上線,主機(jī)將發(fā)送一個(gè)地址解析協(xié)議消息確保IP地址不沖突,系統(tǒng)查找對(duì)端IP地址列表,如果此IP地址可用,則將該IP地址加入地址列表存根并且準(zhǔn)備發(fā)送修改消息至對(duì)端;如果此IP地址不可用,則系統(tǒng)回復(fù)該地址解析協(xié)議消息表明此IP不可用;
2.4系統(tǒng)每隔數(shù)分鐘向網(wǎng)絡(luò)中的每臺(tái)主機(jī)廣播地址解析協(xié)議數(shù)據(jù)包用來(lái)輪詢下線的主機(jī)同時(shí)修改存根,將修改操作發(fā)至對(duì)端網(wǎng)絡(luò)。
3、根據(jù)權(quán)利要求1所述的一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,其特征在于1.4中的IP包封裝線程和TS解封線程包括以下步驟
3.1 IP包封裝成TS流數(shù)據(jù)包;首先,從IP發(fā)送隊(duì)列中獲取IP數(shù)據(jù)包,如果沒(méi)有獲取到IP數(shù)據(jù)包,則繼續(xù)獲?。痪€程的等待和掛起由操作系統(tǒng)來(lái)決定,當(dāng)獲取到一個(gè)IP數(shù)據(jù)包時(shí),開(kāi)始進(jìn)入IP封裝為T(mén)S線程;循環(huán)調(diào)用封裝線程直到完全將IP數(shù)據(jù)包重新打包為T(mén)S數(shù)據(jù)包;打包完成的TS數(shù)據(jù)包將送入TS發(fā)送隊(duì)列等待TS發(fā)送線程處理;
3.2 TS流數(shù)據(jù)包解封為IP包;TS解封裝線程從TS接收隊(duì)列中循環(huán)讀取TS幀;如果此TS幀為包含有IP數(shù)據(jù)包的第一個(gè)TS幀時(shí),開(kāi)始循環(huán)調(diào)用TS解封裝線程直到獲取完整的IP數(shù)據(jù)包;當(dāng)?shù)玫酵暾腎P數(shù)據(jù)包時(shí),通過(guò)發(fā)送套接字接口發(fā)送IP數(shù)據(jù)包。
4、根據(jù)權(quán)利要求1所述的一種以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,其特征為在于所述的1.5中的TS發(fā)送線程和TS接收線程包括以下步驟
4.1.TS發(fā)送線程和IP封裝為T(mén)S線程具有相同的屬性,均為從線程的創(chuàng)建開(kāi)始工作直到主線程退出或系統(tǒng)異常;TS發(fā)送線程循環(huán)從TS發(fā)送隊(duì)列中讀取已經(jīng)封裝好的TS幀,然后調(diào)用驅(qū)動(dòng)程序?qū)S幀送入驅(qū)動(dòng)程序直到成功完成后返回;
4.2.TS接收線程和TS發(fā)送線程執(zhí)行完全的逆功能,TS接收線程循環(huán)從內(nèi)核中獲取數(shù)據(jù),如果成功獲取到TS數(shù)據(jù)并判定其標(biāo)志位符合IP數(shù)據(jù)包的發(fā)送規(guī)則,則將數(shù)據(jù)放入TS接收隊(duì)列,待TS解封裝線程讀取。
全文摘要
一種將以太網(wǎng)數(shù)據(jù)與數(shù)字視頻流轉(zhuǎn)換的網(wǎng)關(guān)實(shí)現(xiàn)方法,將網(wǎng)絡(luò)數(shù)據(jù)與數(shù)字電視視頻流數(shù)據(jù)格式進(jìn)行相互轉(zhuǎn)換,即IP包與MPEG-2 TS流的相互轉(zhuǎn)換;嵌入式處理器中采用雙緩沖架構(gòu)和單緩沖架構(gòu)的結(jié)合,配置開(kāi)機(jī)運(yùn)行腳本,在兩種架構(gòu)中切換;雙緩沖構(gòu)架在IP處理層在均勻流量的同時(shí)采用多個(gè)線程對(duì)每個(gè)緩沖區(qū)進(jìn)行處理;單緩沖構(gòu)架是在驅(qū)動(dòng)程序態(tài)采用數(shù)據(jù)緩沖的形式;在嵌入式系統(tǒng)的上層應(yīng)用程序中采用自適應(yīng)鄰接表法,自動(dòng)獲取各自網(wǎng)段中的鄰接表并發(fā)送給對(duì)端進(jìn)行交換;通過(guò)IP包封裝線程和TS解封線程實(shí)現(xiàn)IP和TS格式的互相轉(zhuǎn)換;在嵌入式系統(tǒng)中通過(guò)TS接收線程和TS發(fā)送線程執(zhí)行完全的逆功能??梢栽跓o(wú)線設(shè)備兩側(cè)使用同一網(wǎng)段或者不同網(wǎng)段的IP地址進(jìn)行工作,實(shí)現(xiàn)遠(yuǎn)距離的雙向或單向傳輸。
文檔編號(hào)H04L29/12GK101610407SQ20091008926
公開(kāi)日2009年12月23日 申請(qǐng)日期2009年7月15日 優(yōu)先權(quán)日2009年7月15日
發(fā)明者何蘇勤, 磊 樂(lè), 毛世文, 呂英明, 飛 吳 申請(qǐng)人:北京化工大學(xué)