專利名稱:碼流中數(shù)據(jù)包的發(fā)送控制方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種碼流中數(shù)據(jù)包的發(fā)送控制方 法和裝置。
背景技術(shù):
在基于IP (Internet Protocol,因特網(wǎng)協(xié)議)的視頻監(jiān)控、視頻會議等 應(yīng)用中,視頻監(jiān)控終端或視頻會議終端等設(shè)備的編碼單元對攝像頭傳送過 來的模擬視頻信號進(jìn)行數(shù)字化處理,并按指定格式如MPEG4、 H264等壓 縮編碼封裝成數(shù)據(jù)包發(fā)送。該過程中,設(shè)備的釆樣總是按照特定的頻率例 如每秒25幀采樣,因此編碼單元會在采樣的瞬間輸出大量的IP包,以每 秒25幀為例,幀間間隔為40ms,則一個幀所產(chǎn)生的多個數(shù)據(jù)包并沒有均 勻分布在這40ms中,而是集中在釆樣的幾個ms的瞬間。實時產(chǎn)生的視頻 流的這個特點對IP網(wǎng)絡(luò)來說是一個不利的因素,因為這會導(dǎo)致瞬態(tài)的流量 過大,如果超過網(wǎng)絡(luò)節(jié)點的轉(zhuǎn)發(fā)緩沖能力,就會造成丟包并引起視頻質(zhì)量 的下降。
另外,目前一般所說的視頻流的碼率指的是平均碼率,如一個GOP (Group Of Pictures,圖組)周期內(nèi)的平均碼率。在一個GOP周期內(nèi),數(shù)據(jù) 總是集中在采樣的瞬間,所以在I幀和P幀的瞬間,其碼率要比平均碼率 高出很多。對此,理想的數(shù)據(jù)發(fā)送效果在于編碼單元將一個GOP周期中 產(chǎn)生的包均勻地在一個GOP周期內(nèi)發(fā)送完畢。
針對該問題,現(xiàn)有技術(shù)中提出了一種基于緩沖和延時發(fā)送的方法,把 在采樣瞬間產(chǎn)生的包緩存起來,并按一定的時間間隔和預(yù)設(shè)的若干緩存包 數(shù)量門限逐步發(fā)送。而實際中由于GOP周期開始處的I幀總是產(chǎn)生很多包, 所以開始時,產(chǎn)生過程總是領(lǐng)先于發(fā)送過程,之后,發(fā)送過程漸漸超過產(chǎn) 生過程,在GOP周期的結(jié)束處達(dá)到一致。因此現(xiàn)有技術(shù)的上述基于緩沖和
延時發(fā)送的方法中,只通過預(yù)設(shè)若干關(guān)于緩存包數(shù)量的門限,很難實現(xiàn)理 想的數(shù)據(jù)發(fā)送效果。
發(fā)明內(nèi)容
本發(fā)明提供 一 種碼流中數(shù)據(jù)包的發(fā)送控制方法和裝置,用于對碼流中 數(shù)據(jù)包的發(fā)送進(jìn)行控制,使得所產(chǎn)生的數(shù)據(jù)包能夠按照以 一定的發(fā)送速度 均勻地發(fā)送。
本發(fā)明提供一種碼流中數(shù)據(jù)包的發(fā)送控制方法,包括 根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度; 根據(jù)所述碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包 長度的門限;
根據(jù)所述門限,對當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。 其中,所述根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送
數(shù)據(jù)包長度的門限前還包括
設(shè)置發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限的初始值。
其中,所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限的初始值,由發(fā)送
周期以及平均碼率確定。
其中,所述根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送
速度包括;
當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù)設(shè)的I幀首包時間間隔時, 判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速。
其中,所述根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送 速度包括;
當(dāng)?shù)却龜?shù)字信號處理芯片發(fā)送除I幀首包外的其他數(shù)據(jù)包時,判斷所 述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
其中,所述根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送 數(shù)據(jù)包長度的門限包括
判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速時,增加所述發(fā)送周期內(nèi)累
計發(fā)送數(shù)據(jù)包長度的門限;
判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速時,減少所述發(fā)送周期內(nèi)累 計發(fā)送數(shù)據(jù)包長度的門限。
其中,所述根據(jù)門限,對當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行
控制包括
當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度超過所述門限時,將所述發(fā)送 周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述門限的差值更新為發(fā)送周期內(nèi)累計發(fā) 送數(shù)據(jù)包的長度,或?qū)l(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度設(shè)置為零;并定 時等待一個發(fā)送周期;
當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度未超過所述門限時,從數(shù)字信 號處理芯片取出下一個數(shù)據(jù)包進(jìn)行發(fā)送,并將所述下一個數(shù)據(jù)包的長度累 加到所述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度。
本發(fā)明還提供一種碼流中數(shù)據(jù)包的發(fā)送控制裝置,包括
發(fā)送速度判斷單元,用于根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中 數(shù)據(jù)包的發(fā)送速度;
門限調(diào)整單元,用于根據(jù)所述發(fā)送速度判斷單元判斷的發(fā)送速度,調(diào) 整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限;
發(fā)送控制單元,用于根據(jù)所述門限調(diào)整單元調(diào)整的門限,對當(dāng)前發(fā)送 周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。
其中,還包括
初始門限設(shè)置單元,用于設(shè)置發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限 的初始值并提供給所述門限調(diào)整單元;所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長 度的門限的初始值,由發(fā)送周期以及平均碼率確定。
其中,所述發(fā)送速度判斷單元包括
第一判斷子單元,用于當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù)設(shè) 的I幀首包時間間隔時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速;
第二判斷子單元,用于當(dāng)?shù)却龜?shù)字信號處理芯片發(fā)送除I幀首包外的 其他數(shù)據(jù)包時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
其中,所述門限調(diào)整單元包括
第一調(diào)整子單元,用于在所述發(fā)送速度判斷單元判斷所述碼流中數(shù)據(jù) 包的發(fā)送速度為慢速時,增加所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限;
第二調(diào)整子單元,用于在所述發(fā)送速度判斷單元判斷所述碼流中數(shù)據(jù) 包的發(fā)送速度為快速時,減少所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門P艮。
其中,所述發(fā)送控制單元包括
第 一發(fā)送控制子單元,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度超 過所述門限時,將所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述門限的差 值更新為發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度;并定時等待一個發(fā)送周期;
第二發(fā)送控制子單元,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度未 超過所述門限時,從數(shù)字信號處理芯片取出下一個數(shù)據(jù)包進(jìn)行發(fā)送,并將 所述下一個數(shù)據(jù)包的長度累加到所述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長 度。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點
根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,對一個發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長 度的門限進(jìn)行動態(tài)調(diào)整,實現(xiàn)了對碼流中數(shù)據(jù)包發(fā)送的有效控制,使得所 產(chǎn)生的數(shù)據(jù)包能夠按照以 一 定的發(fā)送速度均勻地發(fā)送。
圖1為本發(fā)明碼流中數(shù)據(jù)包的發(fā)送控制方法的流程圖; 圖2為本發(fā)明碼流中數(shù)據(jù)包的發(fā)送控制方法的另 一 流程圖; 圖3為本發(fā)明碼流中數(shù)據(jù)包的發(fā)送控制裝置的結(jié)構(gòu)示意圖; 圖4為本發(fā)明碼流中數(shù)據(jù)包的發(fā)送控制裝置的另 一 結(jié)構(gòu)示意圖。
具體實施例方式
以下結(jié)合附圖和實施例,對本發(fā)明的實施方式作進(jìn)一步說明。 本發(fā)明提供一種碼流中數(shù)據(jù)包的發(fā)送控制方法,如圖1所示,包括以 下步驟
步驟sl01、根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度。
具體的發(fā)送速度判斷方法可以為
(1 )當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù)設(shè)的I幀首包時間間 隔時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速。
(2)當(dāng)?shù)却龜?shù)字信號處理芯片DSP發(fā)送除I幀首包外的其他數(shù)據(jù)包 時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
關(guān)于發(fā)送速度的判斷方法并不限于上述兩種,也可以使用其他方法對 碼流中數(shù)據(jù)包的發(fā)送速度進(jìn)行判斷。
步驟sl02、根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送 數(shù)據(jù)包長度的門限。
具體的,發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限的初始值可以由發(fā)送 周期以及平均碼率確定。
門限的調(diào)整方法具體為
(1) 當(dāng)判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速時,增加所述發(fā)送周 期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
(2) 當(dāng)判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速時,減少所述發(fā)送周 期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
上述碼流中數(shù)據(jù)包的發(fā)送速度具體是指當(dāng)基于平均碼率不斷有數(shù)據(jù) 包生成時,在一個發(fā)送周期內(nèi)能夠向外發(fā)送多少數(shù)量的數(shù)據(jù)包。 一個發(fā)送 周期內(nèi)發(fā)送的數(shù)據(jù)包數(shù)量越多,則發(fā)送速度越快; 一個發(fā)送周期內(nèi)發(fā)送的 數(shù)據(jù)包數(shù)量越少,則發(fā)送速度越慢。
步驟sl03、根據(jù)所述門限,對當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度 進(jìn)行控制。本發(fā)明所述方法的一個基本要求在于每當(dāng)累計發(fā)送數(shù)據(jù)包的 長度等于或超過門限時,等待一個發(fā)送周期。
具體的,該控制包括
(1) 當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度等于或超過所述門限時, 將所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述門限的差值更新為發(fā)送周 期內(nèi)累計發(fā)送數(shù)據(jù)包的長度(即將本次超過門限多發(fā)送的數(shù)據(jù)包長度,累 加到下一個發(fā)送周期內(nèi)的累計發(fā)送數(shù)據(jù)包長度中),或?qū)l(fā)送周期內(nèi)累計發(fā) 送數(shù)據(jù)包的長度設(shè)置為零(即從零開始對下一發(fā)送周期內(nèi)的累計發(fā)送數(shù)據(jù)
包長度進(jìn)行統(tǒng)計);并定時等待一個發(fā)送周期。
(2) 當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度未超過所述門限時,從 DSP取出下 一個數(shù)據(jù)包進(jìn)行發(fā)送,并將所述下 一個數(shù)據(jù)包的長度累加到所 述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度。
以下對本發(fā)明中碼流中數(shù)據(jù)包的發(fā)送控制方法進(jìn)行詳細(xì)介紹,如圖2 所示,包括以下步驟
步驟s201、獲取系統(tǒng)時鐘粒度T;根據(jù)平均碼率,獲取在時間T內(nèi)所 能發(fā)送的字節(jié)數(shù)L。若以T作為一個發(fā)送周期,則本發(fā)明中的一個基本要 求為每發(fā)送L個字節(jié),定時等待時間T。
具體的,根據(jù)編碼格式、分辨率等的設(shè)置,可以獲取到平均碼率,進(jìn) 而可以獲取時間T中產(chǎn)生的數(shù)據(jù)量L。例如,在ARM CPU ( Central Processing Unit,中央處理單元)的Linux嵌入式系統(tǒng)中,T=10ms,假設(shè) 平均碼率為10bytes/ms,則在時間T內(nèi)所產(chǎn)生并需要發(fā)送的字節(jié)數(shù)L=100 bytes 。
步驟s202、初始化發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限為KL,初 始化發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度為0,初始化接收到前一個I幀首包 的時間為無效值。
具體的,理論上在時間T內(nèi)所能發(fā)送的字節(jié)數(shù)L,等同于每發(fā)送L個 字節(jié)則等待時間T。但進(jìn)一步考慮到發(fā)送字節(jié)的動作本身也需要時間(假 設(shè)發(fā)送L個字節(jié)所需的時間為t),則實際上發(fā)送L個字節(jié)所需的時間為 T+t,因此需要調(diào)整時間T內(nèi)發(fā)送的字節(jié)的數(shù)量為KL, K= (T+t) /T。初 始化發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限為KL,本實施例中設(shè)系數(shù)
K=1.2。
以上述ARM CPU的Linux嵌入式系統(tǒng)為例,在T=10ms內(nèi)所能產(chǎn)生 并需要發(fā)送的字節(jié)為100bytes,在發(fā)送數(shù)據(jù)不占用時間的假設(shè)下,可以認(rèn) 為這100個字節(jié)在每個10ms開始的一瞬間發(fā)送完成,并在每發(fā)送100個 字節(jié)后等待時間10ms;則依照該假設(shè),可將每個10ms內(nèi)所產(chǎn)生的全部數(shù) 據(jù)發(fā)送完成。但考慮到實際中發(fā)送100個字節(jié)也需要時間tms,因此若每 發(fā)送100個字節(jié)后等待時間10ms,則只能將每個10ms內(nèi)產(chǎn)生的100個字 節(jié)進(jìn)行發(fā)送,而該發(fā)送100個字節(jié)的時間t ms內(nèi)產(chǎn)生的字節(jié)(數(shù)量為10t 個字節(jié))將沒有時間進(jìn)行發(fā)送。基于該考慮,需要對10ms內(nèi)發(fā)送的字節(jié) 的數(shù)量進(jìn)行調(diào)整。假設(shè)發(fā)送100個字節(jié)所需的時間為t=lms,則調(diào)整時間 T=10ms內(nèi)發(fā)送的字節(jié)的數(shù)量為100x(10+l)/10-110個字節(jié),即每發(fā)送110 個字節(jié)后等待時間10ms。因此可以初始化發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度 的門限為110個字節(jié)。
當(dāng)然,該門限值KL的設(shè)置只是一個較粗略的設(shè)置,與直接將門限值 設(shè)置為L相比更加符合實際情況。在后續(xù)的過程中,將根據(jù)實際的數(shù)據(jù)發(fā) 送速度對該門限值進(jìn)行調(diào)整,以滿足實際需要。
初始化周期內(nèi)累計發(fā)送數(shù)據(jù)包長度SUM二O,之后每發(fā)送一個包,對周 期內(nèi)累計發(fā)送數(shù)據(jù)包長度SUM進(jìn)行累加。
在未接收到I幀首包時,初始化接收到前一個I幀首包的時間TIME 為無效值。接收到第 一 個I幀首包時,將接收到前 一 個I幀首包的時間TIME 設(shè)置為有效值并記錄接收到I幀首包的時間。之后每次接收到一個I幀首 包,對接收到I幀首包的時間TIME進(jìn)行記錄。
步驟s203、從DSP芯片取包發(fā)送,對發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度 進(jìn)行累加。
具體的,設(shè)包長X,則對周期內(nèi)累計發(fā)送數(shù)據(jù)包長度SUM進(jìn)行累加 SUM = SUM+X。
步驟s204、判斷接收到的包是否為I幀首包且接收到前一個I幀首包 的時間為有效值,是則進(jìn)行步驟s205,否則進(jìn)行步驟s207。
步驟s205、獲取當(dāng)前時間,判斷當(dāng)前時間與接收到前一個I幀首包的 時間之差是否大于GOP間隔,是則進(jìn)行步驟s206,否則進(jìn)行步驟s207。
具體的,設(shè)當(dāng)前時間為CUR—TIME并計算(CURJHME-TIME)的值, 判斷該值是否大于GOP間隔(即理論的I幀首包時間間隔)。另外,還需 要將CUR—TIME的值賦給TIME,以對接收到前一個I幀首包的時間進(jìn)行 更新。
步驟s206、增加K的值。例如設(shè)步長為O.l,貝'j K=K+0.1。該步長的 大小可以根據(jù)需要進(jìn)行調(diào)整。
具體的,當(dāng)(CUR—TIME-TIME )的值大于GOP間隔即理論的I幀首 包時間間隔時,可以認(rèn)為碼流中數(shù)據(jù)包的發(fā)送速度過慢,則增加K的值, 從而增加了發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
步驟s207、判斷是否需要等待DSP出數(shù)據(jù),是則進(jìn)行步驟s208,否 則進(jìn)行步驟s209。
步驟s208、減小K的值。例如設(shè)步長為0.1,則K=K-0.1。該步長的 大小可以根據(jù)需要進(jìn)行調(diào)整。
具體的,當(dāng)需要等待DSP出數(shù)據(jù)時,可以認(rèn)為碼流中數(shù)據(jù)包的發(fā)送速 度過快,則減小K的值,從而減小了發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門 限。需要說明的是,當(dāng)一個GOP結(jié)束等待下一個GOP的I幀首包時,這 時的等待是正常等待,不能認(rèn)為是數(shù)據(jù)包的發(fā)送速度過快。
步驟s209、判斷發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度SUM是否大于等于 發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限KL,是則進(jìn)行步驟s210,否則進(jìn) 行步驟s203。
步驟s210、初始化SUM的值并定時等待時間T,之后進(jìn)行步驟s203。 可以初始化SUM的值為SUM=0、或SUM-SUM-KL。將SUM的值初 始化為SUM-KL的考慮在于將本次超過門限KL多發(fā)送的數(shù)據(jù)包長度值 SUM-KL,累加到下一個發(fā)送周期內(nèi)的累計發(fā)送數(shù)據(jù)包長度SUM中。
需要說明的是,本發(fā)明的上述流程中,通過乘以變化的系數(shù)K對發(fā)送 周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限進(jìn)行調(diào)整,但該門限的調(diào)整方法并不限
于此,也可以通過其他方法如通過增加或減少固定值等對門限進(jìn)行調(diào)整。
對于其他調(diào)整方法,其實質(zhì)與上述圖2所示的流程相似,在此不進(jìn)行重復(fù)介紹。
通過使用本發(fā)明提供的方法,根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,對一個 發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限進(jìn)行動態(tài)調(diào)整,實現(xiàn)了對碼流中數(shù) 據(jù)包發(fā)送的有效控制,使得所產(chǎn)生的數(shù)據(jù)包能夠按照以一定的發(fā)送速度均 勻地發(fā)送。另外本發(fā)明提供的方法中,將發(fā)送相鄰的I幀首包時間間隔是
否大于一個GOP周期作為判斷是否發(fā)送過慢的依據(jù)、將是否等待DSP出 包作為判斷是否發(fā)送過快的依據(jù),因此當(dāng)發(fā)送速度達(dá)到一個合適的值時, 上述方法所涉及的門限也將穩(wěn)定,此時一個GOP周期中產(chǎn)生的包將恰好在 一個GOP周期中被全部發(fā)送出去。這是因為如果一個GOP周期中產(chǎn)生的 包在一個GOP周期中沒有全部發(fā)送出去,則必然導(dǎo)致發(fā)送相鄰的I幀首包 時間間隔大于一個GOP周期被判斷為發(fā)送過慢;而如果一個GOP周 期中產(chǎn)生的包在不到一個GOP周期即全部發(fā)送完成,則將導(dǎo)致等待DSP 出數(shù)據(jù),并被判斷為發(fā)送過快。因此,本發(fā)明的方法使得一個GOP周期中 產(chǎn)生的包能夠均勻地在一個GOP周期內(nèi)進(jìn)行發(fā)送。
本發(fā)明中還提供一種碼流中數(shù)據(jù)包的發(fā)送控制裝置,其結(jié)構(gòu)如圖3所 示,包括
發(fā)送速度判斷單元IO,用于根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流 中數(shù)據(jù)包的發(fā)送速度。
門限調(diào)整單元20,用于根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期 內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
發(fā)送控制單元30,用于根據(jù)所述門限調(diào)整單元20調(diào)整的門限,對當(dāng) 前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。
本發(fā)明中發(fā)送控制裝置的結(jié)構(gòu)還可以如圖4所示,進(jìn)一步包括
初始門限設(shè)置單元40,用于設(shè)置發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門 限的初始值并提供給門限調(diào)整單元20;所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長 度的門限的初始值,由發(fā)送周期以及平均碼率確定。
另外,上述發(fā)送速度判斷單元IO還可以具體包括
第一判斷子單元11,用于當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù) 設(shè)的I幀首包時間間隔時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速。
第二判斷子單元12,用于當(dāng)?shù)却鼶SP發(fā)送除I幀首包外的其他數(shù)據(jù)包 時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
另外,上述門限調(diào)整單元20還可以具體包括
第一調(diào)整子單元21,用于在發(fā)送速度判斷單元10判斷所述碼流中數(shù) 據(jù)包的發(fā)送速度為慢速時,增加所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
第二調(diào)整子單元22,用于在發(fā)送速度判斷單元10判斷所述碼流中數(shù) 據(jù)包的發(fā)送速度為快速時,減少所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門 限。
另外,上述發(fā)送控制單元30還可以具體包括
第 一發(fā)送控制子單元31,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度 等于或超過所述門限時,將所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述 門限的差值更新為發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度;并定時等待一個發(fā) 送周期。
第二發(fā)送控制子單元32,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度 未超過所述門限時,從DSP取出下一個數(shù)據(jù)包進(jìn)行發(fā)送,并將所述下一個 數(shù)據(jù)包的長度累加到所述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度。
通過使用本發(fā)明提供的裝置,根據(jù)碼流中數(shù)據(jù)包的發(fā)送速度,對一個 發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限進(jìn)行動態(tài)調(diào)整,實現(xiàn)了對碼流中數(shù) 據(jù)包發(fā)送的有效控制,使得所產(chǎn)生的數(shù)據(jù)包能夠按照以一定的發(fā)送速度均 勻地發(fā)送。另外,使得一個GOP周期中產(chǎn)生的包能夠均勻地在一個GOP 周期內(nèi)進(jìn)行發(fā)送。
過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可以通過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實 現(xiàn)基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,
該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是CD-ROM, U盤, 移動硬盤等)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計 算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn) 和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種碼流中數(shù)據(jù)包的發(fā)送控制方法,其特征在于,包括根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度;根據(jù)所述碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限; 根據(jù)所述門限,對當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。
2、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)碼流中數(shù)據(jù)包的 發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限前還包括設(shè)置發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限的初始值。
3、 如權(quán)利要求2所述的方法,其特征在于,所述發(fā)送周期內(nèi)累計發(fā)送 數(shù)據(jù)包長度的門限的初始值,由發(fā)送周期以及平均碼率確定。
4、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)碼流中數(shù)據(jù)包的 發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度包括;當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù)設(shè)的I幀首包時間間隔時, 判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速。
5、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)碼流中數(shù)據(jù)包的 發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度包括;當(dāng)?shù)却龜?shù)字信號處理芯片發(fā)送除I幀首包外的其他數(shù)據(jù)包時,判斷所 述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
6、 如權(quán)利要求1或4或5所述的方法,其特征在于,所述根據(jù)碼流中 數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限包括判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速時,增加所述發(fā)送周期內(nèi)累 計發(fā)送數(shù)據(jù)包長度的門限;判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速時,減少所述發(fā)送周期內(nèi)累 計發(fā)送數(shù)據(jù)包長度的門限。
7、 如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)門限,對當(dāng)前發(fā) 送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制包括當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度等于或超過所述門限時,將所 述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述門限的差值更新為發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度,或?qū)l(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度設(shè)置為零; 并定時等待一個發(fā)送周期;當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度未超過所述門限時,從數(shù)字信 號處理芯片取出下 一個數(shù)據(jù)包進(jìn)行發(fā)送,并將所述下 一個數(shù)據(jù)包的長度累 加到所述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度。
8、 一種碼流中數(shù)據(jù)包的發(fā)送控制裝置,其特征在于,包括 發(fā)送速度判斷單元,用于根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度;門限調(diào)整單元,用于根據(jù)所述發(fā)送速度判斷單元判斷的發(fā)送速度,調(diào) 整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限;發(fā)送控制單元,用于根據(jù)所述門限調(diào)整單元調(diào)整的門限,對當(dāng)前發(fā)送 周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。
9、 如權(quán)利要求8所述的裝置,其特征在于,還包括初始門限設(shè)置單元,用于設(shè)置發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限 的初始值并提供給所述門限調(diào)整單元;所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長 度的門限的初始值,由發(fā)送周期以及平均碼率確定。
10、 如權(quán)利要求8所述的裝置,其特征在于,所述發(fā)送速度判斷單元 包括第一判斷子單元,用于當(dāng)接收到的連續(xù)兩個I幀首包的間隔大于預(yù)設(shè) 的I幀首包時間間隔時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為慢速;第二判斷子單元,用于當(dāng)?shù)却龜?shù)字信號處理芯片發(fā)送除I幀首包外的其他數(shù)據(jù)包時,判斷所述碼流中數(shù)據(jù)包的發(fā)送速度為快速。
11、 如權(quán)利要求8或IO所述的裝置,其特征在于,所述門限調(diào)整單元 包括第一調(diào)整子單元,用于在所述發(fā)送速度判斷單元判斷所述碼流中數(shù)據(jù) 包的發(fā)送速度為慢速時,增加所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限;第二調(diào)整子單元,用于在所述發(fā)送速度判斷單元判斷所述碼流中數(shù)據(jù) 包的發(fā)送速度為快速時,減少所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限。
12、如權(quán)利要求8所述的裝置,其特征在于,所述發(fā)送控制單元包括 第 一發(fā)送控制子單元,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度等 于或超過所述門限時,將所述發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度與所述門 限的差值更新為發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度,或?qū)l(fā)送周期內(nèi)累計 發(fā)送數(shù)據(jù)包的長度設(shè)置為零;并定時等待一個發(fā)送周期;第二發(fā)送控制子單元,用于當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度未 超過所述門限時,從數(shù)字信號處理芯片取出下一個數(shù)據(jù)包進(jìn)行發(fā)送,并將 所述下一個數(shù)據(jù)包的長度累加到所述當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長 度。
全文摘要
本發(fā)明公開了一種碼流中數(shù)據(jù)包的發(fā)送控制方法和裝置。該方法包括根據(jù)碼流中數(shù)據(jù)包的發(fā)送情況,判斷碼流中數(shù)據(jù)包的發(fā)送速度;根據(jù)所述碼流中數(shù)據(jù)包的發(fā)送速度,調(diào)整發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包長度的門限;根據(jù)所述門限,對當(dāng)前發(fā)送周期內(nèi)累計發(fā)送數(shù)據(jù)包的長度進(jìn)行控制。通過使用本發(fā)明,對碼流中數(shù)據(jù)包的發(fā)送進(jìn)行了有效控制,使得所產(chǎn)生的數(shù)據(jù)包能夠按照以一定的發(fā)送速度均勻地發(fā)送。
文檔編號H04L1/00GK101364855SQ200810211649
公開日2009年2月11日 申請日期2008年9月22日 優(yōu)先權(quán)日2008年9月22日
發(fā)明者許錫雷 申請人:杭州華三通信技術(shù)有限公司