新四季網

一種rtp數據包接收處理方法及裝置的製作方法

2023-06-16 06:38:46

專利名稱:一種rtp數據包接收處理方法及裝置的製作方法
技術領域:
本發明涉及通信領域中流媒體等數據傳輸技術,具體地,涉及一種實時傳輸協議 (Real-time Transport Protocol,簡稱RTP)數據包接收處理方法及裝置。
背景技術:
RTP是用於流媒體業務的標準傳輸協議,由網際網路工程任務組(The Internet Engineering Task Force,簡稱IETF)制定,其標準文檔是RFC 3550,該文檔中規定了 RTP 包的格式。在所有流媒體相關業務中,幾乎所有的媒體內容在IP網絡上進行傳輸之前都需 要封裝為RTP數據包的形式。由於RTP協議本身和流媒體業務的特點,在處理RTP數據包 接收時一般會遇到以下問題 A.由於RTP協議的底層一般由UDP協議承載,因此造成傳輸具有不可靠性,UDP傳 輸的丟包、亂序、重複等問題在RTP傳輸時會出現。 B.在流媒體通訊中,音視頻同步,去抖動等需求,往往有實時性要求。 C. RTP數據包接收的實現一般使用回調機制,回調函數操作時間過長會引起底層
緩衝區溢出。 D.移動終端本身的處理能力和功耗等限制,接收操作的步驟越少越好。 由於RTP數據包有嚴格的先後順序,在接收以後必須在緩衝中進行重新排序才能
交給下一級進行處理,現有技術中RTP接收處理方式主要有兩種 —、兩級緩衝加插入排序採用兩級緩衝的機制,第一級按照到達順序把接收的數 據放入第一級緩衝,在二級緩衝處理中從第一級緩衝取出數據並使用插入排序算法將數據 包按照RTP的序列號形成一維鍊表。 二、兩級緩衝加插空排序採用兩級緩衝的機制,第一級的處理機制與上述方式一 相同,第二級使用預設緩衝,根據RTP的序列號將數據包插入預設好的緩衝,緩衝區滿時丟 棄後續到達的數據包。 在實現本發明過程中,發明人發現現有技術RTP接收處理方式至少存在如下問題
1.第一種方式填充二級緩衝的時候使用的插入排序算法效率比較低,算法複雜度 為0(n2),屬於效率較低的排序算法。 2.第二種方式中亂序包或錯誤包可能佔據正常包的位置,造成正常包到達後無法 插入而丟棄;二級緩衝的長度固定,當緩衝滿時對後續數據包直接丟棄,無法根據網絡流量 進行自適應處理;緩衝分配過大則浪費,過小則可能不夠用;且第二種方式對網絡接收到 的數據進行了兩次拷貝,增加了內存複製的開支。 3.上述兩種方式均存在共同缺點二級緩衝複雜度較高、二級緩衝整體由此造成 處理效率低。

發明內容
本發明的目的是針對現有技術中RTP接收處理方式處理效率低的缺陷,提出一種
4RTP數據包接收處理方法及裝置,以實現提高RTP數據包的接收處理效率。為實現上述目的,根據本發明的一個方面,提供了一種RTP數據包接收處理方法。 根據本發明實施例的RTP數據包接收處理方法,包括從網絡接收RTP數據包;對
接收的RTP數據包進行一級緩衝預排序處理;將預排序處理後的RTP數據包進行二級緩衝處理。 優選地,可以採用隊列組作為一級緩衝和/或二級緩衝,對接收的RTP數據包進行 一級緩衝預排序處理和二級緩衝處理,其中,隊列組可以包括鍊表組和/或數組組。
優選地,隊列組可以為兩個,對接收的所述RTP數據包進行一級緩衝預排序處理 的操作可以包括對接收的RTP數據包進行一級緩衝預排序,將RTP數據包保存至當前正接 收數據包的隊列組的隊列中;當隊列組的所有隊列已用完,或者隊列組保存的RTP數據包 總數目大於預設的閥值時,該隊列組停止接收數據包,啟動另一個隊列組,將當前接收到的 數據包放入該另一個隊列組中;其中,停止接收數據包的隊列組執行二級緩衝處理的操作。
優選地,將預排序處理後的RTP數據包進行二級緩衝處理的操作可以包括將啟 動二級緩衝的隊列組中的所有隊列進行合併以及排序;將所述合併以及排序後的隊列分為 穩定段和非穩定段,將穩定段直接放入二級緩衝。 為實現上述目的,根據本發明的另一個方面,還提供了一種RTP數據包接收處理裝置。
根據本發明實施例的RTP數據包接收處理裝置,包括接收單元,用於從網絡側接 收RTP數據包;一級緩衝處理單元,用於對接收的RTP數據包進行一級緩衝預排序處理;二 次緩衝處理單元,用於對一級緩衝預排序處理後的結果進行二級緩衝處理。
優選地, 一級緩衝處理單元可以包括 存儲模塊,用於存儲至少兩個隊列組及預設的閾值,其中,每個隊列組存儲一級緩 衝預排序處理及二級緩衝處理後的RTP數據包,該閾值為每個所述隊列組能存儲的最大 RTP數據包的總數目,隊列組包括鍊表組和/或數組組; 分析模塊,用於將當前接收的RTP數據包的序列號與上次最後接收的RTP包的序 列號進行比較,將RTP數據包總數目與預設的閥值進行比較; 處理模塊,用於接收分析模塊的比較結果,對當前接收的RTP數據包進行一級緩 衝預排序並存入存儲模塊的隊列組中;當隊列組的所有隊列已用完,或者RTP數據包總數 目大於預設的閥值時,觸發二次緩衝處理單元,並將當前接收到的數據包放入存儲模塊的 另一個隊列組中。 優選地,二次緩衝處理單元可以包括 合併排序模塊,用於接收一級緩衝處理單元的觸發消息,將存儲模塊中啟動二級 緩衝的隊列組進行合併排序; 處理模塊,用於將合併排序後的隊列分為穩定段和非穩定段,將非穩定段中RTP
數據包序列號的第一個非連續點之前的RTP數據包與穩定段合併,放入二級緩衝;將非穩
定段的剩餘RTP數據包放入所述存儲模塊中當前正在接收數據的隊列組中。 本發明的RTP數據包接收處理裝置可以為網絡機頂盒,手機等用於流媒體點播/
直播類的客戶端。 本發明各實施例的RTP數據包接收處理方法及裝置,可以有效利用網絡數據包到達的時間間隙進行數據包的預排序,從而平衡一級緩衝和二級緩衝的處理複雜度,簡化整 體排序過程,有效提高整體處理效率。 本發明還有一些實施例採用鍊表組或者數組等隊列組作為一級緩衝和二級緩衝, 不會由於亂序包提前到達造成正常包無法排序;二級緩將合併衝排序隊列分為穩定段和非 穩定段,有效解決亂序包滯後到達問題,減少由於數據包亂序造成的誤判斷。


附圖用來提供對本發明的進一步理解,並且構成說明書的一部分,與本發明的實 施例一起用於解釋本發明,並不構成對本發明的限制。在附圖中
圖1為根據本發明RTP數據包接收處理方法實施例流程圖; 圖2 (a)為根據本發明RTP數據包接收處理方法中以鍊表組為一級緩衝的實施例 解析示意圖; 圖2 (b)為根據本發明RTP數據包接收處理方法中以數組為一級緩衝的實施例解 析示意圖; 圖3為根據本發明RTP數據包接收處理方法中一級緩衝預排序實施例流程圖;
圖4為根據本發明RTP數據包接收處理方法中二級緩衝處理過程實施例流程圖;
圖5為根據本發明RTP數據包接收處理裝置實施例示意圖;
圖6為根據本發明RTP數據包接收處理裝置另一實施例示意圖。
具體實施例方式
以下結合附圖對本發明的實施例進行說明,應當理解,此處所描述的優選實施例 僅用於說明和解釋本發明,並不用於限定本發明。
方法實施例 圖1為根據本發明RTP數據包接收處理方法實施例流程圖,如圖1所示,本實施例 包括 步驟S102 :從網絡接收RTP數據包; 步驟S104 :對接收的RTP數據包進行一級緩衝預排序處理;
步驟S106 :將預排序處理後的RTP數據包進行二級緩衝處理。 本實施例可以有效地利用網絡數據包到達的時間間隙進行數據包的預排序,平衡 了一級緩衝和二級緩衝的處理複雜度,簡化了整體排序過程,提高了整體處理效率。本發明 中一級緩衝和二級緩衝可以採用接收隊列組的形式,其中,隊列組可以為鍊表組、數組等, 隊列組的每個隊列對應為鍊表或者數組。 本發明中一級緩衝預排序處理主要利用網絡接收的間隔對接收到的RTP數據包 進行初步排序,得到一系列有序RTP隊列。從而在使用這些有序RTP隊列進行二級緩衝排序 的時候能夠提高排序速度。 一級緩衝的預排序機制可以有多種實現方式,例如預排序後進 行二級緩衝處理的有序RTP隊列可以是鍊表形式,也可以是數組形式,下面通過圖2(a)-圖 2 (b)對本發明 一級緩衝的預排序過程進行解釋說明。 圖2 (a)為根據本發明RTP數據包接收處理方法中以鍊表組為一級緩衝的實施例 解析示意圖,如圖2 (a)所示, 一級緩衝中設置2個接收鍊表組,每一組有n個鍊表,用於保
6存收到的RTP數據包,兩個接收鍊表組交替使用。其中一個鍊表組用於實時接收RTP數據 包,同時另一個鍊表組用於進行二次緩衝排序處理,具體在圖4中會進行詳細說明。下面對 照圖2(a)對本發明的一級緩衝的處理機制進行解釋說明圖2(a)的情況下,假設每個接收 鍊表組能夠容納的最大RTP數據包的數量為max—proc—pkt,每個接收隊列組(鍊表組)由 n個接收鍊表組成。假設RTP數據包到達的順序依次為1, 4, 2, 3, 7, 8, 9, 10, 5, 6, 16, 20, 11, 12,13,15,14,17,19,18,20.。 1.每一鍊表組的第一個鍊表保留給二級緩衝排序後剩餘的RTP包組成的鍊表使 用的,不用於接收過程,其餘鍊表用於實時接收數據包。如圖2(a)中接收鍊表1不接收RTP 數據包,具體可參見圖4實施例中對於二級緩衝的相關說明。 2.在隊列組開始接收RTP包之前所有鍊表都是空的,沒有任何RTP數據包。每一 鍊表組從第二個鍊表開始使用,接收到的RTP數據包從第二個鍊表開始放入。在收到一個 RTP數據包以後,首先需要判斷其序列號是否正確(序列號不能為負數)。如果序列號正確, 則把它與本組上一次放入的RTP包的序列號(作比較。如果相等,則表示這是一個重複包, 應該丟棄;如果新到達的數據包比上一次的數據包的序列號大,則添加到當前鍊表的末尾, 否則將其放入當前鍊表組的下一個未使用的空鍊表,這樣保證每個鍊表中的數據包是遞增 的,不同鍊表的第一序列號與前一個鍊表的最後一個序號則不是遞增的,為二級緩衝處理 做好準備。如圖2(a)所示,按照RTP包到達的順序將上述數據包存儲到接收鍊表2到鍊表 7中,其中,每個鍊表中的數據包序列號保持遞增。 3.當某一鍊表組的所有的接收鍊表都用完,或者接收到的RTP數據包數目大於鏈 表組預設的閥值,如接收到的RTP數據包數目大於鍊表組能夠容納的最大RTP數據包的數 量maX_pr0C_pkt時,停止對該鍊表組的使用,對其啟動二級緩衝排序處理流程,具體如圖4 所示。在停止該鍊表組的同時啟用另一鍊表組,把接收到的RTP數據包放入另一組鍊表組 (接收鍊表組2,未示出,與接收鍊表組1結構相同)。 4.兩個鍊表組反覆交替使用,當啟動二級緩衝進行排序的鍊表組處理完畢後,加 入一級緩衝進行一級緩衝的接收預處理。 本實施例以鍊表組為一級緩衝進行舉例,為一級緩衝的優選實現方式,本領域普
通技術人員應當了解,還可以數組等其它隊列組的方式實現一級緩衝預處理。 圖2 (b)為根據本發明RTP數據包接收處理方法中以數組為一級緩衝的實施例解
析示意圖。同樣假設一個接收數組組能夠容納的最大RTP數據包的數量為maX_pr0C_pkt,
每個接收隊列組(本圖中為數組組)由n個接收數組組成。假設RTP包到達的順序為1,
4, 2, 3, 7, 8, 9, 10, 5, 6, 16, 20, 11, 12, 13, 15, 14, 17, 19, 18,20.。 如圖2(b)所示,其一級緩衝的處理過程與圖2(a)鍊表組的處理過程相類似,不再 重複舉例說明。對於圖2(b)所示數組實現方式,由於數組大小固定,因此每個數組的大小 按照冗餘都固定為本組數組能夠容納的最大RTP數據包的數量,在本例中即為max—proc— pkt。 圖2(a)鍊表組中每個鍊表的大小不固定,如果接收的數據包是連續的,則鍊表最 大可以接收連續的max—proc—pkt個數據包。如果採用圖2(b)中的數組作為一級緩衝,由 於每個數組的大小是固定的,則可能有些數組中的固定長度由於數據包序列號不連續沒有 被充分利用而空閒,因此,鍊表組為一級緩衝的優選實現方式,但本發明各實施例中的一級緩衝不僅限於鍊表組,還可以通過其他隊列組的方式實現。 上述實施例的一級緩衝處理中,利用數據包到達的間隙進行數據包的預處理排 序,可以使用鍊表組保存到達的數據包,並使用雙鍊表組切換使用,由於使用鍊表進行數據 包的存儲,可以減少內存複製操作,不會產生由於亂序包提前到達造成的正常包無法入隊 現象。 圖3為根據本發明RTP數據包接收處理方法中一級緩衝預排序實施例流程圖, 為說明方便,將當前收到的RTP包序列號記為"curr_Seq",上次最後收到的RTP包的序列 號記為"last—seq";將當前接收鍊表的索引記為"curr—list",鍊表組的總鍊表數量記為 "list—皿m",第一個接收鍊表記為list[O],最後一個接收鍊表記為list[list_num-l];將 本接收鍊表組接收到的總RTP包的數量記為list—pkt—皿m,將鍊表組預設的最大閾值記為 maX_pr0C_pkt。如圖3所示,本實施例的一級緩衝預排序處理過程包括
步驟S301 :從兩個鍊表組中選擇一個接收鍊表組進行接收,從該鍊表組的第二個 鍊表進行接收,將第二個鍊表(如圖2(a)中的鍊表2)作為當前接收鍊表;
步驟S302 :從網絡獲取當前RTP數據包; 步驟S304 :判斷本鍊表組接收到的總RTP包的數量是否小於預設的閾值,如圖3 中接收鍊表組的RTP數據包數量加l,判斷list_pkt_num++ < = max_proc_pkt是否正確; 是則執行步驟S310,否則執行步驟S306 ; 步驟S306 :鍊表組接收到的總RTP包的數量大於或等於能接收的閾值,因此切換 到另一個接收鍊表組; 步驟S308 :在切換的接收鍊表組中做如下設置curr_list = 1、 last_Seq = -1、
1181_。1^_皿111++,執行步驟S310 ; 步驟S310 :判斷當前收到的RTP包序列號"curr_Seq"是否正確,是則執行步驟 S312,否則當前數據包錯誤,丟棄該當前數據包,繼續執行步驟S302 ; 步驟S312 :判斷當前收到的RTP包序列號"curr—seq"是否與上次最後收到的RTP 包的序列號"last—seq"相同,即如圖3所示,判斷curr—seq ! = last—seq ;是則執行步驟 S314,否則為重複接收的數據包,丟棄後繼續執行步驟S302 ; 步驟S314 :判斷當前收到的RTP包序列號是否大於次最後收到的RTP包的序列 號,即如圖3所示,判斷curr_seq > kast_seq ;是則執行步驟S320,否則執行步驟S316 ;
步驟S316 :當前收到的RTP包序列號小於上次最後收到的RTP包的序列號,說 明為當前包為滯後到達的亂序包,進一步判斷當前接收鍊表是否為本鍊表組的最後一個 鍊表,即當前鍊表的索引"currjist"是否小於鍊表組的總鍊表數量減1,是則執行步驟 S318,否則執行步驟S317 ; 步驟S317 :當前接收鍊表為最後一個接收鍊表,且當前數據包與前一數據包的序 列號不遞增,則可以有兩種處理方式 A、從前往後,找到最後一個當前節點最少的鍊表,即鍊表中的數據包數量最少,將 該鍊表的所有數據包作為錯誤包丟棄,將當前包放入該鍊表,並繼續執行步驟S302 ;
B、將當前包丟棄,繼續執行步驟S306,切換到另一個鍊表組; 步驟S318 :當前接收鍊表不是最後一個接收鍊表,且當前數據包與前一數據包的 序列號不遞增,則把本鍊表組的下一個尚未使用的鍊表作為當前接收鍊表,將當前RTP數據包放入該鍊表中,如圖3所示,curr_list++,然後把當前數據包放入list [curr_list]的 末尾,繼續執行步驟S302 ; 步驟S320 :當前數據包與前一數據包序列號是遞增的,將當前包放入當前鍊表的 末尾,並對序列號、數據包總數量進行更新,如last_seq = curr_seq, list_pkt_num++ ;
步驟S322 :判斷是否退出,是則結束,否則執行步驟S302,在實際應用時如果用戶 終端繼續接收,則繼續執行步驟S302,如果用戶終端停止接收或播放RTP等流媒體數據,則 結束。 本實施例中,針對目前在流媒體相關業務中,UDP傳輸的丟包,亂序,重複等問題同 流媒體通訊中實時性要求的矛盾,提出一種可以對接收到的RTP包進行快速排序,迅速檢 查出丟包,亂序,重複等情況,從而簡化下一級處理過程,本實施例對接收的RTP數據包進 行預排序的過程,利用網絡數據包到達間隙進行預排序,使用雙鍊表組切換使用保存到達 的數據包,由於使用鍊表進行數據包的存儲,可以減少內存複製操作,不會產生由於亂序包 提前到達造成的正常包無法入隊現象。 下面對本發明中一級緩衝預處理後進行的二級緩衝排序處理流程進行簡要說明, 以下以鍊表作為二級緩衝為例進行說明 對啟動二級緩衝,停止接收數據包的鍊表組從第一個鍊表開始對該組的所有鍊表 進行合併以及排序,形成一個鍊表。考慮到RTP數據包在亂序後可能會滯後到達,因此對合 並以及排序後的鍊表從中間一分為二,前半段為穩定段,後半段為非穩定段。將穩定段直 接放入二級緩衝,進行後續處理。非穩定段則進行掃描,如果發現某個數據包的序列號和 前面的相鄰包的序列號不連續,則將該數據包記為非連續點,從該非連續節點處把再把非 穩定鍊表分為二部分,前一部分(不包括非連續點)與穩定段合併,放入二級緩衝,後一部 分(包括非連續點)則放入一級緩衝中另一當前正在接收數據包的鍊表組的第一個鍊表 中。圖2實施例中的相關說明,正在接收的鍊表組的第一個鍊表保存二級緩衝排序後剩餘 的RTP包組成的鍊表,以進行下一次排序。 本領域技術人員應當了解,採用數組作為二級緩衝的處理過程與採用鍊表類似, 在此不對相同或類似技術方案進行重複說明。 圖4為根據本發明RTP數據包接收處理方法中二級緩衝處理過程實施例流程圖, 如圖4所示,本實施例的二級緩衝處理流程包括 步驟S402 :對啟動二級緩衝,停止接收數據包的鍊表組從第一個鍊表開始對該組 的所有鍊表進行合併排序,得到排序後的一個鍊表,記為orderjist,設其長度為n ;
步驟S404 :讀取該合併排序後的鍊表的中間節點order_liSt[n/2],記錄該數據 包的序列號為last_seq ; 步驟S406 :判斷當前數據包是否到達鍊表尾,是則執行步驟S414,否則步驟 S408 ; 步驟S408 :讀取下一節點,得到當前讀取RTP數據包的序列號curr_Seq ;
步驟S410 :判斷當前數據包的序列號是否為上次讀取數據包的序列號加一,判斷 curr_Seq = last_Seq+l,即判斷前後讀取的兩個數據包是否連續,是則執行步驟S411,否 則步驟S412 ; 步驟S411 :前後讀取的兩個數據包連續,對序列號進行更新,last_Seq = curr_
9seq,繼續執行步驟S406 ; 步驟S412 :前後讀取的兩個數據包不連續,從當前節點將該鍊表分為兩部分,當 前節點為不連續點; 步驟S414 :掃描結束,將不連續點前的鍊表與order_liSt[n/2]之前的穩定段合 並,放入二級緩衝,將不連續點後的鍊表放入一級緩衝中當前正在接收的鍊表組的第一個 節點,以進行下一次排序。 下面對照圖4進行舉例說明假設每個接收鍊表組或數組組能夠容納的最大RTP 數據包的數量為50,需要將序列號為1-60的60個RTP數據包在網絡上先後到達客戶端,其 中序列號為40的數據包在第51個到達,其它的RTP數據包仍然按順序到達。
按照穩定段和非穩定段的處理方式,序列號為1-25的25個RTP數據包直接作為 穩定段放入二級緩衝區中。後續的序列號為26-39和41-51的RTP包屬於非穩定段。從序 列號26的數據包進行掃描,掃描直到序號為39的RTP包都是連續的,它們將和前面的穩定 段,即序列號為1-25的RTP數據包合併, 一起放入穩定段,而列序號為41-51的RTP數據包 則被放入另一組接收鍊表或數組的第一個鍊表。 本實施例中的二級緩衝不僅進行合併以及排序,還進行了分段處理,將合併排序 後的鍊表分為穩定段和非穩定段,可有效解決亂序包後到達的問題,本實施例在一級緩衝 的預處理後進行的二次處理,可以平衡一級緩衝和二級緩衝的處理複雜度,簡化數據包整 體的排序處理過程,可有效提高整體處理效率。 上述二級緩衝處理的實施例中,可以使用合併排序算法來提高二次緩衝的排序效 率,可以把排序複雜度降低為O(nlgn) , n指待排序的數據的個數。與現有技術中的複雜度 為0(n2)相比,可以大大提高排序效率。 上述各方法實施例,在一級緩衝中有效利用了網絡數據包到達的時間間隙進行了
數據包的預排序,使其能夠對網絡接收到的RTP數據包進行丟包檢測,重複包丟棄和亂序
包重排等操作,平衡了一級緩衝和二級緩衝的處理複雜度,簡化了整體排序過程,提高了整 體處理效率;並且,上述各實施例可以對亂序包和錯誤包提供較好的處理機制,對網絡流量
變化較大的情況也有很好的適應能力。在經過二級緩衝的處理後,後續可以直接從二級緩 衝獲取排序好的RTP數據包鍊表,用於後續的組幀處理和RTCP包生成過程。本發明上述 各實施例中,還可以在一級緩衝及二級緩衝過程中統計亂序包個數、重複包個數、錯誤包個 數,丟失包個數等統計信息,並用於後續的組幀處理和RTCP包生成過程。
綜上所述,上述一個或多個實施例具有如下有益效果 1.平衡一級緩衝和二級緩衝的處理複雜度有效地利用了網絡數據包到達的時 間間隙進行了數據包的預排序,簡化二級緩衝的計算量。 2.提高接收處理效率及運算複雜度二級緩衝使用合併排序算法可以提高排序 效率,將排序複雜度降低為O(nlgn)。 3. 二級緩將合併衝排序鍊表分為穩定段和非穩定段,有效解決亂序包滯後到達問 題,減少由於數據包亂序造成的誤判斷。 4.使用鍊表存儲,減少內存複製操作,不會由於亂序包提前到達造成正常包無法 入隊。 5.由於二級緩衝採用了鍊表的形式,可以動態修改緩衝的大小,因此對網絡流量
10變化較大的情況也有很好的適應能力,不會由於網絡突發流量過大而造成丟包。
裝置實施例 圖5為根據本發明RTP數據包接收處理裝置實施例示意圖,如圖5所示,本實施例 包括接收單元2,用於從網絡側接收RTP數據包;一級緩衝處理單元4,用於對接收的RTP 數據包進行一級緩衝預排序處理;二次緩衝處理單元6,用於對一級緩衝預排序處理後的 結果進行二級緩衝處理。 對於一級緩衝預排序處理可參見圖2-圖3方法實施例的相關說明,二級緩衝處理 可參見圖4方法實施例的相關說明,本裝置實施例具體可以是機頂盒、手機等用戶設備,對 網絡側的RTP數據包進行接收處理。 圖6為根據本發明RTP數據包接收處理裝置另一實施例示意圖,如圖6所示,本實 施例對圖5實施例進一步細化,如圖6所示,一級緩衝處理單元可以包括
存儲模塊42,用於存儲至少兩個隊列組及預設的閾值,其中,每個隊列組存儲一級 緩衝預排序處理及二級緩衝處理後的RTP數據包,預設的閾值為每個隊列組能存儲的最大 RTP數據包的總數目,隊列組包括鍊表組和/或數組組,具體可參見圖2 (a)或圖2 (b);
分析模塊44,用於將當前接收的RTP數據包的序列號與上次最後接收的RTP包的 序列號進行比較,將存儲模塊42中存儲的RTP數據包總數目與預設的閥值進行比較;
處理模塊43,用於接收分析模塊44的比較結果,對當前接收的RTP數據包進行一 級緩衝預排序並存入存儲模塊42當前正在接收RTP數據包的隊列組中,預排序過程可參見 圖3實施例的處理過程;當隊列組的所有隊列組已用完,或者RTP數據包總數目大於預設的 閥值時,觸發二次緩衝處理單元,並將當前接收到的數據包放入存儲模塊42的另一個隊列 組中。 如圖6所示,二次緩衝處理單元可以包括合併排序模塊62,用於接收一級緩衝處 理單元處理模塊43的觸發消息,如,存儲模塊42中其中一個鍊表組啟動二級緩衝觸發合併 排序模塊62,將存儲模塊42中啟動二級緩衝的隊列組進行合併排序,具體參見圖4實施例 的相關說明;處理模塊64,用於將合併排序後的隊列分為穩定段和非穩定段,將非穩定段 中RTP數據包序列號的第一個非連續點之前的RTP數據包與穩定段合併,放入二級緩衝區; 將非穩定段的剩餘RTP數據包放入存儲模塊42中當前正在接收數據的隊列組中。
上述方法發明的圖1-圖4實施例可以在具備圖5-圖6結構圖所示結構的裝置中 實現。本發明的RTP數據包接收處理裝置可以為網絡機頂盒,手機等用於流媒體點播/直 播類的客戶端。 綜上所述,上述一個或多個方法或裝置實施例與現有技術相比。
具有如下優點 1.平衡一級緩衝和二級緩衝的處理複雜度。 2.提高接收處理效率及運算複雜度二級緩衝使用合併排序算法可以提高排序 效率,將排序複雜度降低為O(nlgn)。 3. 二級緩將合併衝排序鍊表分為穩定段和非穩定段,有效解決亂序包滯後到達問 題,減少由於數據包亂序造成的誤判斷。 4.使用鍊表存儲,減少內存複製操作,不會由於亂序包提前到達造成正常包無法 入隊。
5.對網絡流量變化較大的情況也有很好的適應能力,不會由於網絡突發流量過大 而造成丟包。 本發明上述各方法和裝置實施例針對網絡質量較差,終端處理能力較低的情況, 具有實際應用的市場前景,且具有很強的魯棒性和較低的處理複雜度。 本領域普通技術人員可以理解實現上述方法實施例的全部或部分步驟可以通過 程序指令相關的硬體來完成,前述的程序可以存儲於一計算機可讀取存儲介質中,該程序 在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括R0M、 RAM、磁碟或者 光碟等各種可以存儲程序代碼的介質。 最後應說明的是以上所述僅為本發明的優選實施例而已,並不用於限制本發明, 儘管參照前述實施例對本發明進行了詳細的說明,對於本領域的技術人員來說,其依然可 以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換。 凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的 保護範圍之內。
權利要求
一種RTP數據包接收處理方法,其特徵在於,包括從網絡接收RTP數據包;對接收的所述RTP數據包進行一級緩衝預排序處理;將預排序處理後的RTP數據包進行二級緩衝處理。
2. 根據權利要求1所述的方法,其特徵在於,採用隊列組作為一級緩衝和/或二級緩 衝,對接收的所述RTP數據包進行一級緩衝預排序處理和二級緩衝處理,其中,所述隊列組 包括鍊表組和/或數組組。
3. 根據權利要求2所述的方法,其特徵在於,所述隊列組至少為兩個,所述對接收的所 述RTP數據包進行一級緩衝預排序處理的操作包括對接收的所述RTP數據包進行一級緩衝預排序,將所述RTP數據包保存至當前正接收 數據包的隊列組的隊列中,所述隊列包括鍊表、或者數組;當所述隊列組的所有隊列已用完,或者所述隊列組保存的RTP數據包總數目大於預設 的閥值時,所述隊列組停止接收數據包,啟動另一個隊列組,將當前接收到的數據包放入所 述另一個隊列組中;其中,所述停止接收數據包的隊列組執行所述二級緩衝處理的操作。
4. 根據權利要求2或3所述的方法,其特徵在於,所述對接收的所述RTP數據包進行一 級緩衝預排序處理包括若當前接收的RTP包序列號等於上次最後接收的RTP包的序列號,則丟棄; 若當前接收的RTP包序列號大於上次最後接收的RTP包的序列號,則添加到當前隊列組的當前隊列的末尾;若當前接收的RTP包序列號小於上次最後接收的RTP包的序列號,則將當前接收的RTP數據包放入當前隊列的下一個隊列。
5. 根據權利要求2或3所述的方法,其特徵在於,所述將預排序處理後的RTP數據包進 行二級緩衝處理的操作包括將啟動二級緩衝的隊列組中的所有隊列進行合併以及排序;將所述合併以及排序後的隊列分為穩定段和非穩定段,將所述穩定段直接放入二級緩衝。
6. 根據權利要求5所述的方法,其特徵在於,所述將預排序處理後的RTP數據包進行二 級緩衝處理的操作還包括按順序讀取所述非穩定段中RTP數據包的序列號,獲得所述非穩定段中RTP數據包序 列號的第一個非連續點;將所述非穩定段中所述第一個非連續點之前的RTP數據包與所述穩定段合併,放入所 述二級緩衝;將所述非穩定段的剩餘RTP數據包放入當前正在接收數據的一級緩衝中。
7. 根據權利要求6所述的方法,其特徵在於,將所述非穩定段的剩餘RTP數據包放入所 述當前正在接收數據的一級緩衝中具體包括將所述剩餘RTP數據包放入一級緩衝中當前正在接收數據包的隊列組的第一個隊列;其中,所述一級緩衝的每個隊列組的第一個隊列用於二級緩衝排序後的剩餘RTP數據 包組成的隊列使用。
8. —種RTP數據包接收處理裝置,其特徵在於,包括接收單元,用於從網絡側接收RTP數據包;一級緩衝處理單元,用於對接收的所述RTP數據包進行一級緩衝預排序處理;二次緩衝處理單元,用於對一級緩衝預排序處理後的結果進行二級緩衝處理。
9. 根據權利要求8所述的裝置,其特徵在於,所述一級緩衝處理單元包括存儲模塊,用於存儲至少兩個隊列組及預設的閾值,其中,每個所述隊列組存儲一級緩衝預排序處理及二級緩衝處理後的RTP數據包,所述閾值為每個所述隊列組能存儲的最大RTP數據包的總數目,所述隊列組包括鍊表組和/或數組組;分析模塊,用於將當前接收的RTP數據包的序列號與上次最後接收的RTP包的序列號進行比較,所述存儲模塊中存儲的RTP數據包總數目與所述閥值進行比較;處理模塊,用於接收所述分析模塊的比較結果,對當前接收的RTP數據包進行一級緩 衝預排序並存入所述存儲模塊的隊列組中;當所述隊列組的所有隊列已用完,或者RTP數 據包總數目大於預設的閥值時,觸發所述二次緩衝處理單元,並將當前接收到的數據包放 入所述存儲模塊的另一個隊列組中。
10. 根據權利要求9所述的裝置,其特徵在於,所述二次緩衝處理單元包括合併排序模塊,用於接收所述一級緩衝處理單元的觸發消息,將所述存儲模塊中啟動二級緩衝的隊列組進行合併排序;處理模塊,用於將合併排序後的隊列分為穩定段和非穩定段,將所述非穩定段中RTP 數據包序列號的第一個非連續點之前的RTP數據包與所述穩定段合併,放入二級緩衝;將所述非穩定段的剩餘RTP數據包放入所述存儲模塊中當前正在接收數據的隊列組中。
11. 根據權利要求8-10中任一項所述的裝置,其特徵在於,所述RTP數據包接收處理裝 置設置於用於流媒體點播/直播類的客戶端設備中,所述客戶端設備包括網絡機頂盒、手 機終端。
全文摘要
本發明公開了一種RTP數據包接收處理方法及裝置,其中,該方法包括從網絡接收RTP數據包;對接收的RTP數據包進行一級緩衝預排序處理;將預排序處理後的RTP數據包進行二級緩衝處理。其中,採用隊列組作為一級緩衝,對接收的RTP數據包進行一級緩衝預排序處理,其中,隊列組包括鍊表組、數組組。本發明可解決現有技術中RTP接收處理方式處理效率低的缺陷,實現提高RTP數據包的接收處理效率。
文檔編號H04L29/06GK101771599SQ200810241110
公開日2010年7月7日 申請日期2008年12月26日 優先權日2008年12月26日
發明者於蓉蓉, 楊黎波, 袁潮, 郭毅峰, 黃曉偉 申請人:中國移動通信集團公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀