本申請(qǐng)要求第61/972,130號(hào)美國(guó)臨時(shí)申請(qǐng)的權(quán)益,該申請(qǐng)通過(guò)參考全文并入本文中。
技術(shù)領(lǐng)域
本說(shuō)明書(shū)涉及牽涉到客戶(hù)端與服務(wù)器之間的通信的應(yīng)用,由此客戶(hù)端具有多個(gè)網(wǎng)絡(luò)接口,并且可以使用這些接口的任意組合來(lái)與服務(wù)器通信。此外,本說(shuō)明書(shū)涉及牽涉到可變比特率流媒體的廣播應(yīng)用。
背景技術(shù):
信道捆綁是一種計(jì)算機(jī)聯(lián)網(wǎng)布置,其中客戶(hù)端計(jì)算機(jī)上的兩個(gè)或更多個(gè)網(wǎng)絡(luò)接口被組合起來(lái),以便增加吞吐量和/或冗余度。例如,信道捆綁可以用于使用802.11網(wǎng)絡(luò)接口或以太網(wǎng)網(wǎng)絡(luò)接口二者來(lái)傳送數(shù)據(jù),這樣會(huì)比單獨(dú)地使用802.11網(wǎng)絡(luò)接口或單獨(dú)地使用以太網(wǎng)網(wǎng)絡(luò)接口傳送數(shù)據(jù)時(shí)更快。
技術(shù)實(shí)現(xiàn)要素:
公開(kāi)了用于信道捆綁的方法和系統(tǒng)。
在一個(gè)方面,公開(kāi)了一種被配置成經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的設(shè)備。該設(shè)備包括:多個(gè)網(wǎng)絡(luò)接口;存儲(chǔ)器,被配置成存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)流的至少一部分;以及與多個(gè)網(wǎng)絡(luò)接口和存儲(chǔ)器通信的至少一個(gè)處理器。該處理器被配置成:對(duì)于多個(gè)網(wǎng)絡(luò)接口中的每一個(gè),建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置;和評(píng)估一個(gè)網(wǎng)絡(luò)連接在發(fā)送包時(shí)相對(duì)于剩余的網(wǎng)絡(luò)連接中的一個(gè)或多個(gè)連接的性能??梢允褂枚喾N準(zhǔn)則來(lái)評(píng)估網(wǎng)絡(luò)連接。準(zhǔn)則的示例包括但不限于:本文進(jìn)一步討論的ACK檢查和RTT檢查。在這點(diǎn)上,當(dāng)評(píng)估一個(gè)網(wǎng)絡(luò)連接相對(duì)于另一個(gè)網(wǎng)絡(luò)連接的性能時(shí),可以針對(duì)不同連接使用相同準(zhǔn)則?;蛘?,當(dāng)評(píng)估一個(gè)網(wǎng)絡(luò)連接相對(duì)于另一網(wǎng)絡(luò)連接的性能時(shí),可以針對(duì)不同連接使用不同準(zhǔn)則(例如,一個(gè)連接的RTT可以用于評(píng)估另一連接的ACK檢查)。
在另一方面,公開(kāi)了一種用于經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的方法。該方法包括:為多個(gè)網(wǎng)絡(luò)接口中的每一個(gè)建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置;以及評(píng)估一個(gè)網(wǎng)絡(luò)連接在發(fā)送包時(shí)相對(duì)于剩余的網(wǎng)絡(luò)連接中的一個(gè)或多個(gè)連接的性能。
在又一方面中,公開(kāi)了一種被配置成經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的設(shè)備。該設(shè)備包括:多個(gè)網(wǎng)絡(luò)接口;存儲(chǔ)器,被配置成存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)流的至少一部分;以及與多個(gè)網(wǎng)絡(luò)接口和存儲(chǔ)器通信的至少一個(gè)處理器。該處理器被配置成:對(duì)于多個(gè)網(wǎng)絡(luò)接口中的每一個(gè),建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置;評(píng)估一個(gè)網(wǎng)絡(luò)連接在發(fā)送包時(shí)的性能;以及響應(yīng)于評(píng)估一個(gè)網(wǎng)絡(luò)連接的性能,以測(cè)試模式操作該一個(gè)網(wǎng)絡(luò)連接。
在另一方面,公開(kāi)了一種經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的方法。該方法包括:為多個(gè)網(wǎng)絡(luò)接口中的每一個(gè)建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置;評(píng)估一個(gè)網(wǎng)絡(luò)連接在發(fā)送包時(shí)的性能;以及響應(yīng)于評(píng)估一個(gè)網(wǎng)絡(luò)連接的性能,以測(cè)試模式操作該一個(gè)網(wǎng)絡(luò)連接。
在另一方面,公開(kāi)了一種被配置成經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的設(shè)備。該設(shè)備包括:多個(gè)網(wǎng)絡(luò)接口;存儲(chǔ)器,被配置成存儲(chǔ)一個(gè)或多個(gè)數(shù)據(jù)流的至少一部分;以及與多個(gè)網(wǎng)絡(luò)接口和存儲(chǔ)器通信的至少一個(gè)處理器。該處理器被配置成:接收將一個(gè)或多個(gè)數(shù)據(jù)流發(fā)送到遠(yuǎn)程裝置的指示;響應(yīng)于接收到發(fā)送一個(gè)或多個(gè)數(shù)據(jù)流的指示:為多個(gè)網(wǎng)絡(luò)接口中的每一個(gè)建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;以及使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置,由此,包被分配給一個(gè)網(wǎng)絡(luò)連接所使用的速率由所述一個(gè)網(wǎng)絡(luò)連接先前發(fā)送的包被確認(rèn)為已經(jīng)被接收時(shí)所使用的速率來(lái)確定。
在另一方面,公開(kāi)了一種用于經(jīng)由多個(gè)網(wǎng)絡(luò)接口進(jìn)行通信的方法。該方法包括:接收向遠(yuǎn)程裝置發(fā)送一個(gè)或多個(gè)數(shù)據(jù)流的指示;響應(yīng)于接收到發(fā)送一個(gè)或多個(gè)數(shù)據(jù)流的指示:為多個(gè)網(wǎng)絡(luò)接口中的每一個(gè)建立與遠(yuǎn)程裝置的相應(yīng)網(wǎng)絡(luò)連接;將一個(gè)或多個(gè)數(shù)據(jù)流分包為多個(gè)包;以及使用多個(gè)網(wǎng)絡(luò)連接將多個(gè)包發(fā)送到遠(yuǎn)程裝置,由此,包被分配給一個(gè)網(wǎng)絡(luò)連接所使用的速率由所述一個(gè)網(wǎng)絡(luò)連接先前發(fā)送的包被確認(rèn)為已經(jīng)被接收所采用的速率來(lái)確定。
在另一方面,公開(kāi)了一種被配置成確定是否指示比特率改變的設(shè)備。該設(shè)備包括:網(wǎng)絡(luò)接口,被配置成從遠(yuǎn)程裝置接收一個(gè)或多個(gè)包的流;緩沖器,被配置成存儲(chǔ)從所述一個(gè)或多個(gè)包的流導(dǎo)出的視頻幀;和與網(wǎng)絡(luò)接口和緩沖器通信的至少一個(gè)處理器。該處理器被配置成:基于一個(gè)或多個(gè)包的流,導(dǎo)出視頻幀;將視頻幀存儲(chǔ)在緩沖器中;分析該緩沖器的充滿度;響應(yīng)于該分析,確定是否指示比特率改變;以及響應(yīng)于確定指示所述比特率改變,向遠(yuǎn)程裝置發(fā)送對(duì)比特率改變的指示。
在另一方面,公開(kāi)了一種用于確定是否指示比特率改變的方法。該方法包括:基于一個(gè)或多個(gè)包的流,導(dǎo)出視頻幀;將視頻幀存儲(chǔ)在緩沖器中;分析該緩沖器的充滿度;響應(yīng)于該分析,確定是否指示比特率改變;以及響應(yīng)于確定指示所述比特率改變,向遠(yuǎn)程裝置發(fā)送對(duì)比特率改變的指示。
在研究了以下附圖和詳細(xì)描述之后,其他系統(tǒng)、方法和特征對(duì)于本領(lǐng)域技術(shù)人員將是或?qū)⒆兊蔑@而易見(jiàn)。所有這樣的附加系統(tǒng)、方法和特征都旨在包括在本說(shuō)明書(shū)內(nèi)、在本公開(kāi)的范圍內(nèi),并且由所附權(quán)利要求保護(hù)。
附圖說(shuō)明
參考以下附圖和描述可以更好地理解本技術(shù)。參考以下附圖做出了非限制性和非窮舉性的描述。附圖中的部件不一定按比例繪制,而是著重于說(shuō)明原理。在附圖中,除非另有說(shuō)明,否則相同的附圖標(biāo)記可以在不同的附圖中指代相似的部件。
圖1提供了信道捆綁系統(tǒng)的總體軟件架構(gòu)的框圖。
圖2示出了重點(diǎn)集中在可以在客戶(hù)端裝置中使用的各種不同類(lèi)型的網(wǎng)絡(luò)接口的框圖。
圖3示出了信道捆綁系統(tǒng)的架構(gòu)的更高級(jí)別的視圖。
圖4示出了圖3的架構(gòu)的框圖,其中客戶(hù)端裝置使用信道捆綁向服務(wù)器發(fā)送包。
圖5示出了圖3的架構(gòu)的框圖,其中服務(wù)器使用信道捆綁向客戶(hù)端裝置發(fā)送包。
圖6示出了圖3的架構(gòu)的框圖,其中客戶(hù)端裝置和服務(wù)器均使用信道捆綁來(lái)彼此發(fā)送和接收包。
圖7示出了如先前在圖4-6中所說(shuō)明的用于數(shù)據(jù)傳輸?shù)倪B接線程所用的一些高級(jí)設(shè)施的框圖。
圖8示出了如先前在圖4-6中所說(shuō)明的連接管理部件(CMC)的一些設(shè)施的框圖。
圖9示出了當(dāng)在傳遞會(huì)話期間傳遞數(shù)據(jù)時(shí)由連接線程執(zhí)行的確認(rèn)檢查的流程圖。
圖10示出了當(dāng)在傳遞會(huì)話期間傳遞數(shù)據(jù)時(shí)由連接線程執(zhí)行的往返時(shí)間(RTT)檢查的流程圖。
圖11示出了用于分析連接線程在測(cè)試模式下的性能的流程圖。
圖12示出了用于通過(guò)分析跨多個(gè)連接提供的時(shí)間數(shù)據(jù)來(lái)確定客戶(hù)端裝置與服務(wù)器之間的時(shí)鐘偏差的流程圖。
圖13示出了用于網(wǎng)絡(luò)接口優(yōu)先級(jí)排序的一些標(biāo)準(zhǔn)和技術(shù)的框圖。
圖14示出了客戶(hù)端裝置的框圖,該客戶(hù)端裝置執(zhí)行媒體的編碼和/或解碼,并利用多個(gè)網(wǎng)絡(luò)接口來(lái)傳輸經(jīng)編碼的媒體。
圖15示出了廣播消費(fèi)者的流程圖。廣播消費(fèi)者可以分析傳送會(huì)話和/或其自己的內(nèi)部數(shù)據(jù)的多個(gè)方面,以確定是否調(diào)整編碼媒體的比特率。
圖16示出了廣播消費(fèi)者分析其視頻緩沖器的健康狀況以便確定是否調(diào)整比特率的流程圖的一個(gè)示例。
圖17示出了生產(chǎn)者基于來(lái)自CMC的關(guān)于網(wǎng)絡(luò)連接狀態(tài)的通知潛在地做出帶外比特率遞減的流程圖。
圖18示出了用于處理不健康的媒體緩沖器以便使媒體緩沖器回到健康狀態(tài)的一些技術(shù)的框圖。
圖19示出了用于同步音頻和視頻回放以及用于視頻回放的并發(fā)的兩個(gè)流程圖。
圖20示出了客戶(hù)端裝置或服務(wù)器中的一個(gè)或兩個(gè)的通用框圖。
具體實(shí)施方式
本文所描述的原理可以以許多不同的形式體現(xiàn)。然而,可能不需要所有描繪的部件,并且一些實(shí)施方式可以包括額外的、不同的或更少的部件。在不脫離本文提出的權(quán)利要求的精神或范圍的情況下,可以改變部件的布置和類(lèi)型。另外,可以提供不同的或更少的部件。
存在第一裝置試圖將大量數(shù)據(jù)快速傳遞到第二裝置的實(shí)例。在大多數(shù)情況下,第一裝置僅使用單個(gè)網(wǎng)絡(luò)連接來(lái)將數(shù)據(jù)傳遞到第二裝置。該單個(gè)網(wǎng)絡(luò)連接可以代表對(duì)于聯(lián)網(wǎng)(networking)應(yīng)用而言是足夠的大型網(wǎng)絡(luò)管道,但事實(shí)并不一定是這樣的。例如,取決于聯(lián)網(wǎng)應(yīng)用的要求,單個(gè)移動(dòng)寬帶網(wǎng)絡(luò)連接可能不夠用。為了支持聯(lián)網(wǎng)應(yīng)用的多種需求,可以使用信道捆綁以便增加網(wǎng)絡(luò)管道的大小。
在一個(gè)實(shí)施例中,描述了提供線程安全框架的架構(gòu),該線程安全框架可以用于同時(shí)利用客戶(hù)端裝置上的多個(gè)網(wǎng)絡(luò)接口來(lái)可靠地向和/或從運(yùn)行相同框架的服務(wù)器傳遞數(shù)據(jù)以處理數(shù)據(jù)。就這一點(diǎn)而言,客戶(hù)端裝置上的多個(gè)網(wǎng)絡(luò)接口使得能夠更快地并以更可靠的方式在任一方向(或兩個(gè)方向)上傳遞數(shù)據(jù)。與僅使用單個(gè)網(wǎng)絡(luò)裝置相比,使用多個(gè)網(wǎng)絡(luò)裝置還可以實(shí)現(xiàn)在接收端上對(duì)數(shù)據(jù)的近實(shí)時(shí)處理。
該架構(gòu)包括客戶(hù)端/服務(wù)器模型,并且客戶(hù)端裝置可以包括多個(gè)網(wǎng)絡(luò)接口。在一個(gè)實(shí)施例中,該多個(gè)網(wǎng)絡(luò)接口可以全部是相同類(lèi)型的(例如,移動(dòng)寬帶、Wi-Fi、以太網(wǎng)、衛(wèi)星等中的一種),或者可以包括網(wǎng)絡(luò)接口類(lèi)型的任何組合(例如,移動(dòng)寬帶、Wi-Fi、以太網(wǎng)、衛(wèi)星等的任何組合)。在該多個(gè)網(wǎng)絡(luò)接口中可以存在每種網(wǎng)絡(luò)接口類(lèi)型的多個(gè)實(shí)例。在更具體的實(shí)施例中,這多個(gè)網(wǎng)絡(luò)接口可以包括總共五個(gè)移動(dòng)寬帶裝置,并且因此所有網(wǎng)絡(luò)接口是相同類(lèi)型的。在另一個(gè)具體實(shí)施例中,該多個(gè)網(wǎng)絡(luò)接口可以包括一個(gè)以太網(wǎng)裝置、一個(gè)Wi-Fi裝置、一個(gè)衛(wèi)星裝置和七個(gè)移動(dòng)寬帶裝置。此外,在適當(dāng)?shù)那闆r下,網(wǎng)絡(luò)接口不限于特定的網(wǎng)絡(luò)提供商。在更具體的實(shí)施例中,該多個(gè)網(wǎng)絡(luò)接口可以包括四個(gè)移動(dòng)寬帶裝置,其中第一和第二裝置與運(yùn)營(yíng)商#1相關(guān)聯(lián),第三裝置與運(yùn)營(yíng)商#2相關(guān)聯(lián),第四裝置與運(yùn)營(yíng)商#3相關(guān)聯(lián)。
客戶(hù)端系統(tǒng)通過(guò)為每個(gè)網(wǎng)絡(luò)接口建立與服務(wù)器的單個(gè)網(wǎng)絡(luò)連接來(lái)利用多個(gè)網(wǎng)絡(luò)接口。每個(gè)網(wǎng)絡(luò)連接可以被認(rèn)為是一個(gè)信道,數(shù)據(jù)可以通過(guò)該信道在任一方向上流動(dòng),并且這些信道被組合的方式被稱(chēng)為信道捆綁。
服務(wù)器可以包括單個(gè)服務(wù)器系統(tǒng)或被配置為聯(lián)合工作(諸如基于云的服務(wù)器布置)的多個(gè)服務(wù)器系統(tǒng)。在一個(gè)實(shí)施例中,服務(wù)器可以包括單個(gè)網(wǎng)絡(luò)接口(例如被配置為經(jīng)由因特網(wǎng)進(jìn)行通信的網(wǎng)絡(luò)接口)。在替代實(shí)施例中,服務(wù)器可以包括多個(gè)網(wǎng)絡(luò)接口(諸如被配置為經(jīng)由因特網(wǎng)進(jìn)行通信的一個(gè)網(wǎng)絡(luò)接口和被配置為經(jīng)由除了因特網(wǎng)之外的網(wǎng)絡(luò)進(jìn)行通信的第二網(wǎng)絡(luò)接口)。
在一個(gè)方面,捆綁用于使用至少一個(gè)信道來(lái)發(fā)送一個(gè)或多個(gè)數(shù)據(jù)流。流可以在任一方向上發(fā)送,并且可以同時(shí)發(fā)送多個(gè)流。與使用聚合網(wǎng)絡(luò)連接的各種其它聯(lián)網(wǎng)技術(shù)完全不同,在一個(gè)實(shí)施例中,捆綁為每個(gè)連接設(shè)置信道捆綁以發(fā)送數(shù)據(jù)流的不同部分,從而使吞吐量最大化。在這點(diǎn)上,接收設(shè)備被配置為按最初排列順序重建特定流。如下面更詳細(xì)討論的,使用軟件技術(shù)來(lái)實(shí)現(xiàn)信道捆綁,包括以下操作中的任何一個(gè)、任何組合或全部:在網(wǎng)絡(luò)連接之間平衡數(shù)據(jù)遞送;動(dòng)態(tài)地分析連接(例如,動(dòng)態(tài)地分析經(jīng)由連接的傳輸?shù)闹辽僖粋€(gè)方面,以便處理緩慢和/或不可靠的連接);和最終確保完整的流遞送。由于網(wǎng)絡(luò)接口通過(guò)被添加到系統(tǒng)和/或通過(guò)建立到網(wǎng)絡(luò)(例如,因特網(wǎng))的連接而動(dòng)態(tài)地變得對(duì)客戶(hù)端裝置可用,在一個(gè)實(shí)施例中,可以為每個(gè)網(wǎng)絡(luò)接口建立網(wǎng)絡(luò)連接,其中每個(gè)網(wǎng)絡(luò)連接被添加到可以幾乎立即被用于傳送數(shù)據(jù)流的網(wǎng)絡(luò)連接的池中。另外,當(dāng)網(wǎng)絡(luò)接口變得不可用時(shí),例如因?yàn)榫W(wǎng)絡(luò)接口不再能夠訪問(wèn)因特網(wǎng)或被認(rèn)為太慢或不可靠,在一個(gè)實(shí)施例中,假設(shè)在池中存在至少一個(gè)網(wǎng)絡(luò)連接,則相關(guān)聯(lián)的網(wǎng)絡(luò)連接可以被從網(wǎng)絡(luò)連接的池中動(dòng)態(tài)地移除,而不會(huì)中斷數(shù)據(jù)流。在替代實(shí)施例中,被認(rèn)為太慢或不可靠的網(wǎng)絡(luò)接口可改為使其相關(guān)聯(lián)的網(wǎng)絡(luò)連接置于測(cè)試模式中,并且在處于測(cè)試模式中時(shí)對(duì)該網(wǎng)絡(luò)接口進(jìn)行評(píng)估之后,該網(wǎng)絡(luò)接口可被重新引入到用于傳送數(shù)據(jù)流的網(wǎng)絡(luò)連接的池,如下文更詳細(xì)地描述。
在替代實(shí)施例中,少于全部的可用網(wǎng)絡(luò)連接可被放置到用于傳送數(shù)據(jù)流的網(wǎng)絡(luò)連接的池中。例如,基于各種標(biāo)準(zhǔn)(諸如成本、先前性能等),某些網(wǎng)絡(luò)連接(例如衛(wèi)星網(wǎng)絡(luò)連接)可能最初未被放置在可用于傳送數(shù)據(jù)的網(wǎng)絡(luò)連接的池中。稍后,基于可用于傳送數(shù)據(jù)的網(wǎng)絡(luò)連接的池中的其他網(wǎng)絡(luò)連接的不佳性能,可以響應(yīng)于某些條件將這些特定網(wǎng)絡(luò)連接中的一個(gè)或多個(gè)放置到網(wǎng)絡(luò)連接的池中。在另一個(gè)替換實(shí)施例中,最初在可用于傳送數(shù)據(jù)的網(wǎng)絡(luò)連接的池中的網(wǎng)絡(luò)連接可以在傳送會(huì)話期間從池中移除。例如,網(wǎng)絡(luò)連接可以被置于針對(duì)差的性能的測(cè)試模式,并且可以基于測(cè)試模式中的網(wǎng)絡(luò)連接的性能而被重新引入到池中,如下所述。作為另一示例,最初在可用于傳送數(shù)據(jù)的網(wǎng)絡(luò)連接的池中的網(wǎng)絡(luò)連接(例如衛(wèi)星連接)可以基于其他網(wǎng)絡(luò)連接的性能而被從網(wǎng)絡(luò)連接的池中移除(例如,在衛(wèi)星網(wǎng)絡(luò)連接的情況下,其他低成本網(wǎng)絡(luò)連接可能足以完成工作(諸如具有足夠的吞吐量),因此允許去除更高成本的衛(wèi)星網(wǎng)絡(luò)連接)。因此,向池中添加可用網(wǎng)絡(luò)連接和/或從池中移除可用網(wǎng)絡(luò)連接可以基于其他網(wǎng)絡(luò)連接和/或可以基于可用網(wǎng)絡(luò)連接的性能。
捆綁可以與包括定制解決方案的一個(gè)或多個(gè)應(yīng)用(被稱(chēng)為捆綁應(yīng)用)結(jié)合起來(lái)使用。如下面更詳細(xì)討論的,捆綁應(yīng)用的示例包括但不限于以下應(yīng)用:廣播(例如,電視廣播或無(wú)線電廣播);視頻會(huì)議;和文件傳輸。在一個(gè)實(shí)施例中,捆綁可以被配置為遵循特定API準(zhǔn)則的庫(kù)(library)。這樣,捆綁應(yīng)用就可以訪問(wèn)該庫(kù),從而從通過(guò)捆綁實(shí)現(xiàn)的帶寬增加中受益。
如下面更詳細(xì)討論的,捆綁可以在生產(chǎn)者/消費(fèi)者模型的背景下使用。生產(chǎn)者被提供以捆綁應(yīng)用,并且提供要捆綁的一個(gè)或多個(gè)數(shù)據(jù)流,該捆綁負(fù)責(zé)將數(shù)據(jù)發(fā)送到接收側(cè)。消費(fèi)者也被提供以捆綁應(yīng)用,并且為其自身的處理而操縱由捆綁重新組裝過(guò)的流。在此背景下,生產(chǎn)者可以生成數(shù)據(jù)流(諸如構(gòu)成文件、視頻流或音頻流等的數(shù)據(jù)流)。此外,消費(fèi)者可以利用重新組裝過(guò)的數(shù)據(jù)流(例如,將數(shù)據(jù)流寫(xiě)入文件、播放視頻、播放音頻等)。在生產(chǎn)者/消費(fèi)者模型中,捆綁應(yīng)用可以包括定制消費(fèi)者和定制生產(chǎn)者,該定制消費(fèi)者和定制生產(chǎn)者被放置在連接的適當(dāng)側(cè)以用于生成和操縱特定數(shù)據(jù)流。
圖1提供了信道捆綁系統(tǒng)的總體軟件架構(gòu)的框圖100??蛻?hù)端裝置102包括與捆綁相關(guān)聯(lián)的軟件,稱(chēng)為捆綁支持,其可以是庫(kù)的形式。此外,客戶(hù)端裝置102可以包括一個(gè)或多個(gè)捆綁應(yīng)用,其在被執(zhí)行時(shí)各自可以利用生產(chǎn)者和/或消費(fèi)者。在客戶(hù)端裝置上運(yùn)行的捆綁支持首先為每個(gè)客戶(hù)端網(wǎng)絡(luò)接口與服務(wù)器(104)建立網(wǎng)絡(luò)連接。然后,當(dāng)在客戶(hù)端上執(zhí)行捆綁應(yīng)用時(shí),其可以將其生產(chǎn)者或其消費(fèi)者或這兩者與捆綁支持關(guān)聯(lián)起來(lái)。在服務(wù)器上可以進(jìn)行等效處理。也就是說(shuō),如果在客戶(hù)端上運(yùn)行的捆綁應(yīng)用使得生產(chǎn)者與捆綁支持相關(guān)聯(lián),則在服務(wù)器上運(yùn)行的捆綁應(yīng)用使得相應(yīng)的消費(fèi)者與捆綁支持相關(guān)聯(lián)。此外,如果在客戶(hù)端上運(yùn)行的捆綁應(yīng)用使消費(fèi)者與捆綁支持相關(guān)聯(lián),則在服務(wù)器上運(yùn)行的捆綁應(yīng)用使相應(yīng)的生產(chǎn)者與捆綁支持相關(guān)聯(lián)。對(duì)于在客戶(hù)端和服務(wù)器二者上運(yùn)行的相同捆綁應(yīng)用,這兩種情況可以同時(shí)發(fā)生。也就是說(shuō),捆綁應(yīng)用可以在客戶(hù)端上同時(shí)使用消費(fèi)者和生產(chǎn)者兩者,并且相同的捆綁應(yīng)用可以在服務(wù)器上使用相應(yīng)的生產(chǎn)者和相應(yīng)的消費(fèi)者。
無(wú)論是在客戶(hù)端上還是在服務(wù)器上運(yùn)行,生產(chǎn)者都向捆綁支持提供數(shù)據(jù)流。該數(shù)據(jù)流將根據(jù)捆綁應(yīng)用而不相同-一些捆綁應(yīng)用可以遞送構(gòu)成單個(gè)文件的一個(gè)數(shù)據(jù)流,而其他捆綁應(yīng)用可以遞送實(shí)時(shí)生成的多個(gè)編碼音頻和/或視頻流。不管將被遞送到捆綁支持的數(shù)據(jù)的類(lèi)型如何,生產(chǎn)者都負(fù)責(zé)在將數(shù)據(jù)遞送到捆綁支持之前將其分解成多個(gè)包,稱(chēng)為將數(shù)據(jù)分包。一旦數(shù)據(jù)被遞送到捆綁支持,捆綁支持利用多個(gè)網(wǎng)絡(luò)連接將這些包遞送到接收側(cè)。這些網(wǎng)絡(luò)連接中的一些或全部可以被捆綁支持同時(shí)使用。生產(chǎn)者不需要一次性地將數(shù)據(jù)遞送到捆綁支持。例如,在數(shù)據(jù)是實(shí)時(shí)生成的情況下,生產(chǎn)者在數(shù)據(jù)變得可用時(shí)對(duì)數(shù)據(jù)進(jìn)行捆綁支持,此時(shí),捆綁支持將數(shù)據(jù)分包,并使數(shù)據(jù)可用于網(wǎng)絡(luò)連接以便通過(guò)捆綁發(fā)送到接收側(cè)。
生產(chǎn)者以使得可以在接收側(cè)重構(gòu)原始序列的方式對(duì)數(shù)據(jù)進(jìn)行分包。如前所述,可以使用多個(gè)網(wǎng)絡(luò)連接來(lái)發(fā)送已分包的數(shù)據(jù),并且因?yàn)榘陌l(fā)送被分?jǐn)傇诓煌木W(wǎng)絡(luò)連接上,所以各個(gè)包可以以與它們最初被生產(chǎn)者分包成的順序相比被打亂的順序到達(dá)。支持分包數(shù)據(jù)的正確重構(gòu)的一種方式是在每個(gè)包中為索引留出一些空間,索引值最初從零開(kāi)始并且對(duì)于每個(gè)后續(xù)包遞增。另外,為了支持多個(gè)數(shù)據(jù)流,可以在每個(gè)包中為用于將一種類(lèi)型的數(shù)據(jù)與另一種數(shù)據(jù)區(qū)分開(kāi)的指示符留出空間。例如,針對(duì)廣播捆綁應(yīng)用,使用這樣的指示符來(lái)將用于編碼視頻的包與用于編碼音頻的包區(qū)分開(kāi)。在接收側(cè),包索引和數(shù)據(jù)類(lèi)型指示符的組合提供的信息足以重構(gòu)出與生產(chǎn)者生成的數(shù)據(jù)一樣的原始分包數(shù)據(jù)。作為說(shuō)明性示例,如果發(fā)送相同數(shù)據(jù)類(lèi)型的兩個(gè)包,一個(gè)包具有包索引#1以及一個(gè)包具有包索引#2,并且每個(gè)包在不同的網(wǎng)絡(luò)連接上發(fā)送,則接收側(cè)可能在接收到具有索引#1的包之前接收到具有索引#2的包。然而,由于每個(gè)包中存在索引,捆綁支持將以正確的順序?qū)_地遞送給消費(fèi)者。
在接收側(cè),無(wú)論在客戶(hù)端還是服務(wù)器上,捆綁支持經(jīng)由多個(gè)網(wǎng)絡(luò)連接來(lái)接收分包數(shù)據(jù)。然后,由發(fā)送側(cè)的生產(chǎn)者提供的分包數(shù)據(jù)必須被捆綁支持重新組裝,并且當(dāng)流的多個(gè)部分以分包形式可用時(shí),消費(fèi)者將這些部分解包。消費(fèi)者然后為了自己的目的利用數(shù)據(jù)。例如,用于文件傳送的消費(fèi)者可以將流寫(xiě)入文件。在另一示例中,與廣播相關(guān)聯(lián)的消費(fèi)者可以將被編碼的媒體(例如,被編碼的視頻和/或音頻)解碼,然后將其播放。從捆綁支持的角度來(lái)看,數(shù)據(jù)的內(nèi)容是不相干的–由消費(fèi)者負(fù)責(zé)解釋數(shù)據(jù)和使用數(shù)據(jù)。
值得注意的是,網(wǎng)絡(luò)接口可以包括提供聯(lián)網(wǎng)能力(例如,以太網(wǎng)、Wi-Fi、移動(dòng)寬帶、衛(wèi)星等)的實(shí)際物理裝置。在更一般的形式中,網(wǎng)絡(luò)接口是實(shí)際物理設(shè)備的抽象概念,并且提供了可以從物理裝置發(fā)送和接收數(shù)據(jù)的標(biāo)準(zhǔn)方式。省略了本領(lǐng)域技術(shù)人員已知的物理裝置的內(nèi)部工作。在這方面,例如,移動(dòng)寬帶網(wǎng)絡(luò)接口僅僅是描述與物理移動(dòng)寬帶裝置相關(guān)聯(lián)的網(wǎng)絡(luò)接口抽象概念的簡(jiǎn)短形式。
圖2示出了重點(diǎn)集中在可以在客戶(hù)端裝置中使用的各種不同類(lèi)型的網(wǎng)絡(luò)接口的框圖200。圖2中描述的第一類(lèi)型的網(wǎng)絡(luò)接口是復(fù)合裝置網(wǎng)絡(luò)接口202。這種類(lèi)型的網(wǎng)絡(luò)接口通常可以與諸如智能電話這樣的另一個(gè)完備的計(jì)算裝置(復(fù)合設(shè)備242)一起使用。這樣的設(shè)備可以在處理器206上執(zhí)行操作系統(tǒng)并具有一個(gè)或多個(gè)其自己的網(wǎng)絡(luò)接口。在圖2中,與該網(wǎng)絡(luò)接口相關(guān)聯(lián)的復(fù)合設(shè)備被示為具有嵌入式移動(dòng)寬帶裝置208,但這只是它可能具有的各種可能的網(wǎng)絡(luò)接口之一。此外,為了在客戶(hù)端裝置上的復(fù)合裝置網(wǎng)絡(luò)接口與實(shí)際復(fù)合裝置之間進(jìn)行通信,還提供了通信接口204。這樣的通信接口通常是USB、藍(lán)牙或其他選項(xiàng)的形式。最后,嵌入式移動(dòng)寬帶裝置與蜂窩網(wǎng)絡(luò)216無(wú)線通信。雖然圖2僅示出一個(gè)復(fù)合裝置242,但是可以想到一個(gè)或多個(gè)復(fù)合裝置,例如一個(gè)或多個(gè)智能電話。
圖2還示出了移動(dòng)寬帶網(wǎng)絡(luò)接口210,其可以經(jīng)由通信接口212與物理移動(dòng)寬帶裝置230通信,通信接口212通??梢圆捎肬SB、PCI等的形式。移動(dòng)寬帶裝置通常具有其自己的處理器214,該處理器214通常用于運(yùn)行一些固件。移動(dòng)寬帶裝置與蜂窩網(wǎng)絡(luò)216無(wú)線通信。
圖2還示出了Wi-Fi網(wǎng)絡(luò)接口218,其可以經(jīng)由通信接口220與物理Wi-Fi裝置246通信,通信接口220通常采取USB、PCI等的形式。Wi-Fi裝置通??梢园ㄆ渥约旱奶幚砥?22,處理器222通常用于運(yùn)行一些固件。Wi-Fi裝置與無(wú)線網(wǎng)絡(luò)224無(wú)線通信。
圖2還示出了衛(wèi)星網(wǎng)絡(luò)接口226,其可以經(jīng)由通常采用USB、PCI等形式的通信接口228與物理衛(wèi)星裝置248通信。衛(wèi)星裝置通常可以具有其自己的處理器230,處理器230通常用于運(yùn)行某個(gè)固件。衛(wèi)星裝置可以包括多個(gè)不同的硬件部件,例如衛(wèi)星天線。衛(wèi)星裝置與一個(gè)或多個(gè)衛(wèi)星232無(wú)線通信。
圖2還示出了以太網(wǎng)網(wǎng)絡(luò)接口234,其可以經(jīng)由通信接口236與物理以太網(wǎng)裝置250通信,通信接口236通常采用USB、PCI等的形式。以太網(wǎng)裝置通常將具有其自己的處理器238,處理器238通常用于運(yùn)行某個(gè)固件。以太網(wǎng)裝置經(jīng)由電纜與路由器240通信。
圖3示出了信道捆綁系統(tǒng)的架構(gòu)的更高級(jí)別的視圖300。如先前在圖1中所示,客戶(hù)端裝置102包括處理器304、存儲(chǔ)器306和多個(gè)網(wǎng)絡(luò)接口312。處理器304被配置為執(zhí)行存儲(chǔ)在存儲(chǔ)器306中的軟件。存儲(chǔ)器306包括被配置為使用捆綁來(lái)發(fā)送和/或接收數(shù)據(jù)流的軟件。盡管存儲(chǔ)器306被示為單個(gè)存儲(chǔ)器裝置,但是一個(gè)或多個(gè)存儲(chǔ)器裝置可以用作存儲(chǔ)器306。在一個(gè)實(shí)施例中,可以使用捆綁邏輯308和捆綁應(yīng)用邏輯310來(lái)配置軟件,捆綁邏輯308可以包括庫(kù)。如上所述,捆綁應(yīng)用可以訪問(wèn)捆綁庫(kù)以便定制數(shù)據(jù)流的發(fā)送/接收。例如,捆綁應(yīng)用邏輯310可以針對(duì)廣播應(yīng)用、文件傳送應(yīng)用、視頻會(huì)議應(yīng)用等。
客戶(hù)端裝置102還包括網(wǎng)絡(luò)接口312。如圖3所示,網(wǎng)絡(luò)接口312被劃分為不同類(lèi)型的網(wǎng)絡(luò)接口,包括移動(dòng)寬帶314、Wi-Fi 316、以太網(wǎng)318和衛(wèi)星220。圖3中所示的網(wǎng)絡(luò)接口312的類(lèi)型僅僅是為了說(shuō)明的目的。除了圖3中所示的網(wǎng)絡(luò)接口類(lèi)型以外或替代這些網(wǎng)絡(luò)接口類(lèi)型,可以使用其他網(wǎng)絡(luò)接口類(lèi)型。另外,可以存在零個(gè)或多個(gè)在特定客戶(hù)端裝置102中使用的特定類(lèi)型的網(wǎng)絡(luò)接口。例如,可以有一個(gè)以太網(wǎng)網(wǎng)絡(luò)接口318、一個(gè)Wi-Fi網(wǎng)絡(luò)接口316、七個(gè)移動(dòng)寬帶網(wǎng)絡(luò)接口314和零個(gè)衛(wèi)星網(wǎng)絡(luò)接口320。
網(wǎng)絡(luò)接口312可以經(jīng)由諸如因特網(wǎng)的一個(gè)或多個(gè)網(wǎng)絡(luò)322進(jìn)行通信,如圖3所示。捆綁邏輯308將為每個(gè)網(wǎng)絡(luò)接口312建立與服務(wù)器330的網(wǎng)絡(luò)連接。
與客戶(hù)端裝置102類(lèi)似,如圖1中先前所示,服務(wù)器104包括服務(wù)器處理器332、存儲(chǔ)器334和服務(wù)器網(wǎng)絡(luò)接口340。存儲(chǔ)器334包括捆綁邏輯336和捆綁應(yīng)用邏輯338。在一個(gè)實(shí)施例中,服務(wù)器的捆綁邏輯和捆綁應(yīng)用邏輯可以與駐留在客戶(hù)端上的捆綁邏輯和捆綁應(yīng)用邏輯相同。在可替代實(shí)施例中,服務(wù)器的捆綁邏輯和捆綁應(yīng)用程序邏輯可以不同于駐留在客戶(hù)機(jī)上的捆綁邏輯和捆綁應(yīng)用程序邏輯。特別是,雖然服務(wù)器的捆綁邏輯和捆綁應(yīng)用邏輯組件可能與客戶(hù)端裝置的捆綁邏輯和捆綁應(yīng)用邏輯組件很多共同之處,但是它們之間可能存在一些差異。通過(guò)使用客戶(hù)端裝置102上的捆綁邏輯308與服務(wù)器104上的捆綁邏輯336結(jié)合起來(lái)建立的網(wǎng)絡(luò)連接,客戶(hù)端的捆綁應(yīng)用邏輯310或服務(wù)器的捆綁應(yīng)用邏輯338或兩者可以用于提供將經(jīng)由該網(wǎng)絡(luò)連接傳遞到接收側(cè)的一個(gè)或多個(gè)數(shù)據(jù)流。
如上所述,在生產(chǎn)者/消費(fèi)者模型的背景中,在客戶(hù)端裝置或服務(wù)器或兩者上,捆綁應(yīng)用可以提供生產(chǎn)者、消費(fèi)者或生產(chǎn)者和消費(fèi)者。在這點(diǎn)上,一個(gè)或多個(gè)數(shù)據(jù)流可以從客戶(hù)端裝置發(fā)送到服務(wù)器,從服務(wù)器發(fā)送到客戶(hù)端裝置,或者在客戶(hù)端裝置與服務(wù)器之間雙向發(fā)送。圖4-圖6分別示出了從客戶(hù)端裝置到服務(wù)器、從服務(wù)器到客戶(hù)端裝置以及在客戶(hù)端裝置與服務(wù)器之間雙向的包的不同流。
圖4至圖6進(jìn)一步分析了捆綁邏輯和捆綁應(yīng)用邏輯。圖4示出了圖3的架構(gòu)的框圖400,其中客戶(hù)端裝置使用信道捆綁向服務(wù)器發(fā)送包。圖5示出了圖3的架構(gòu)的框圖500,其中服務(wù)器使用信道捆綁向客戶(hù)端裝置發(fā)送包。最后,圖6示出了圖3的架構(gòu)的框圖600,其中客戶(hù)端裝置和服務(wù)器都使用信道捆綁來(lái)彼此發(fā)送和接收包。在這些圖的每一個(gè)中,引入了連接管理器組件(CMC)412的形式的新概念。此組件是在圖3中介紹的客戶(hù)端裝置的捆綁邏輯308的一部分,并且它負(fù)責(zé)為客戶(hù)端裝置的網(wǎng)絡(luò)接口中的一個(gè)、一些或全部建立與服務(wù)器104的網(wǎng)絡(luò)連接。這些網(wǎng)絡(luò)接口在圖4-圖6中被標(biāo)注為網(wǎng)絡(luò)接口#1 426、網(wǎng)絡(luò)接口#2 428和網(wǎng)絡(luò)接口#N 440,意味著客戶(hù)端裝置可以具有1到N個(gè)網(wǎng)絡(luò)接口。在為特定網(wǎng)絡(luò)接口建立與服務(wù)器的網(wǎng)絡(luò)連接之前,CMC可以檢查以查看該網(wǎng)絡(luò)接口是否存在任何網(wǎng)絡(luò)連接,但是通常嘗試經(jīng)由網(wǎng)絡(luò)接口連接到服務(wù)器就足夠了。如果不存在網(wǎng)絡(luò)連接,則連接到服務(wù)器的嘗試將失敗。
在一個(gè)實(shí)施例中,每個(gè)網(wǎng)絡(luò)連接在邏輯上獨(dú)立于由CMC建立的任何其他網(wǎng)絡(luò)連接,并且為了管理特定的網(wǎng)絡(luò)連接,CMC可以為其建立專(zhuān)用軟件線程,稱(chēng)為連接線程。在圖4-圖6中,將客戶(hù)端裝置102上的每個(gè)網(wǎng)絡(luò)接口的不同連接線程指定為連接線程#1 420、連接線程#2 422和連接線程#N424。另外,一旦服務(wù)器接收到來(lái)自特定客戶(hù)端裝置側(cè)網(wǎng)絡(luò)接口的連接時(shí),服務(wù)器上的CMC 460也可以建立其自己的用于管理該特定連接的專(zhuān)用連接線程。在圖4-圖6中,服務(wù)器側(cè)連接線程被標(biāo)記為連接線程#1 454,連接線程#2 456和連接線程#N 458。因此,可能存在客戶(hù)端裝置上的連接線程到服務(wù)器上的連接線程的一對(duì)一映射。
設(shè)置網(wǎng)絡(luò)連接的一種方式是通過(guò)使用網(wǎng)絡(luò)套接字。網(wǎng)絡(luò)套接字是跨網(wǎng)絡(luò)的進(jìn)程間通信流的端點(diǎn),并且在客戶(hù)端裝置和服務(wù)器的背景中,一個(gè)套接字將與客戶(hù)端裝置上的網(wǎng)絡(luò)接口相關(guān)聯(lián),并且伴隨的套接字將與服務(wù)器上的服務(wù)器網(wǎng)絡(luò)接口340相關(guān)聯(lián)。當(dāng)最初形成連接時(shí),可以創(chuàng)建套接字,同時(shí)使一個(gè)連接線程與所創(chuàng)建的套接字關(guān)聯(lián)起來(lái)。例如,當(dāng)客戶(hù)端裝置最初形成連接時(shí),可以為客戶(hù)端裝置創(chuàng)建套接字以及相關(guān)聯(lián)的連接線程。響應(yīng)于新連接的到來(lái),服務(wù)器可以在其一側(cè)分配新套接字,并且還建立與其套接字相關(guān)聯(lián)的連接線程。
可以經(jīng)由若干協(xié)議中的一個(gè)來(lái)路由通信。例如,存在用于在因特網(wǎng)上傳輸數(shù)據(jù)的兩個(gè)主要通信協(xié)議,傳輸控制協(xié)議(TCP)和用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP)。TCP是許多聯(lián)網(wǎng)應(yīng)用程序的一個(gè)選項(xiàng),因?yàn)樗峁┝艘恍┲匾奶卣鳎邕B接、可靠性和錯(cuò)誤檢查。這些特征伴隨著開(kāi)銷(xiāo)的發(fā)生,潛在地引起性能成本,然而,結(jié)果是,TCP可能不是對(duì)于實(shí)時(shí)或接近實(shí)時(shí)的聯(lián)網(wǎng)應(yīng)用(例如流媒體應(yīng)用)的優(yōu)選選項(xiàng)。相反,UDP是相當(dāng)小的,并且通常是流媒體應(yīng)用的優(yōu)選選擇。然而,UDP不保證數(shù)據(jù)遞送。例如,如果客戶(hù)端裝置使用UDP向服務(wù)器發(fā)送包,則包可能被服務(wù)器接收也可能不被接收。此外,客戶(hù)端裝置沒(méi)有辦法確定服務(wù)器是否使用UDP接收到包。也就是說(shuō),UDP本身不提供用于確定這一點(diǎn)的手段。一些網(wǎng)絡(luò)應(yīng)用可以處理一定量的數(shù)據(jù)丟失,在捆綁應(yīng)用的情況下,這取決于捆綁應(yīng)用。然而,由于存在要求所有發(fā)送的數(shù)據(jù)都要被遞送到接收側(cè)的捆綁應(yīng)用,如果使用UDP,則在UDP之上可能需要一定水平的可靠性以使捆綁正常工作。不是在UDP之上創(chuàng)建這樣的層,而是使用UDT作為一個(gè)選擇(基于UDP的數(shù)據(jù)傳送協(xié)議),其位于UDP之上。UDT在UDP之上添加了許多特征,例如可靠和有保證的數(shù)據(jù)遞送,它還提供了一些附加特征,例如對(duì)活動(dòng)網(wǎng)絡(luò)連接的性能監(jiān)視。
在這點(diǎn)上,每個(gè)連接可以與客戶(hù)端裝置上的網(wǎng)絡(luò)接口相關(guān)聯(lián)。此外,客戶(hù)端裝置上的多個(gè)連接可以與連接組相關(guān)聯(lián)。連接組可以被認(rèn)為是一個(gè)或多個(gè)網(wǎng)絡(luò)連接的捆綁,其中該組中的每個(gè)網(wǎng)絡(luò)連接用于在相同的目標(biāo)上操作。這與獨(dú)立的網(wǎng)絡(luò)連接相反,獨(dú)立的網(wǎng)絡(luò)連接可以用于完全獨(dú)立的目標(biāo)。用于特定捆綁會(huì)話的連接組可以被通知給客戶(hù)端裝置和服務(wù)器,使得連接組可以作為一個(gè)整體使用,以便經(jīng)由用于特定捆綁會(huì)話的不同連接來(lái)傳送數(shù)據(jù)。例如,連接組可以包括第一連接(與客戶(hù)端裝置上的第一網(wǎng)絡(luò)接口相關(guān)聯(lián))、第二連接(與客戶(hù)端裝置上的第二網(wǎng)絡(luò)接口相關(guān)聯(lián))和第三連接(與客戶(hù)端裝置上的第三網(wǎng)絡(luò)接口相關(guān)聯(lián))。在客戶(hù)端裝置側(cè),可以經(jīng)由用于特定捆綁會(huì)話的連接組內(nèi)的不同連接中的任意連接來(lái)發(fā)送數(shù)據(jù)。在服務(wù)器側(cè),服務(wù)器可以識(shí)別出數(shù)據(jù)是通過(guò)連接之一(無(wú)論是第一、第二或第三連接)發(fā)送的,確定該連接是特定捆綁會(huì)話的連接組的一部分,就此將經(jīng)由該連接接收的數(shù)據(jù)與特定捆綁會(huì)話關(guān)聯(lián)起來(lái)。
在建立連接組之后,可以發(fā)起經(jīng)由該連接組的數(shù)據(jù)傳送。在一個(gè)實(shí)施例中,建立連接組的裝置與發(fā)起數(shù)據(jù)傳送的裝置可以是同一個(gè)裝置。例如,客戶(hù)端裝置可以建立連接組,然后可以經(jīng)由該連接組發(fā)起數(shù)據(jù)傳送。在又一個(gè)實(shí)施例中,建立連接組的裝置可以不同于發(fā)起數(shù)據(jù)傳送的裝置。
在一個(gè)實(shí)施例中,如果是單個(gè)方向,數(shù)據(jù)流的方向完全獨(dú)立于數(shù)據(jù)傳送被發(fā)起的方式。例如,對(duì)于僅將數(shù)據(jù)從客戶(hù)端裝置發(fā)送到服務(wù)器的廣播捆綁應(yīng)用,數(shù)據(jù)傳送可以由客戶(hù)端裝置發(fā)起。但是,它可以改為由服務(wù)器發(fā)起。圖4中示出了這種類(lèi)型的數(shù)據(jù)傳送流。作為另一示例,對(duì)于從服務(wù)器向客戶(hù)端裝置發(fā)送文件的文件傳送捆綁應(yīng)用,數(shù)據(jù)傳送可以由服務(wù)器或客戶(hù)端發(fā)起。這種數(shù)據(jù)傳送流在圖5中示出。作為另一示例,對(duì)于從客戶(hù)端和服務(wù)器二者發(fā)送和接收媒體的視頻會(huì)議應(yīng)用,數(shù)據(jù)傳送可以由客戶(hù)端裝置或服務(wù)器發(fā)起。這種數(shù)據(jù)傳送流在圖6中示出。
為了進(jìn)一步詳細(xì)說(shuō)明數(shù)據(jù)傳送的發(fā)起,例如,可以使用客戶(hù)端裝置上的用戶(hù)界面來(lái)輸入命令以發(fā)起數(shù)據(jù)傳送。當(dāng)捆綁應(yīng)用準(zhǔn)備好開(kāi)始傳送時(shí),該傳送可以由客戶(hù)端裝置的用戶(hù)界面上的動(dòng)作發(fā)起,捆綁應(yīng)用可以描述要傳送的數(shù)據(jù)類(lèi)型,并且通過(guò)使用該描述,客戶(hù)端裝置上的CMC 412可以與服務(wù)器上的CMC 460交互,請(qǐng)求該數(shù)據(jù)類(lèi)型的處理程序。更具體地,不同的數(shù)據(jù)類(lèi)型可以包括廣播數(shù)據(jù)類(lèi)型、獲取文件數(shù)據(jù)類(lèi)型等。這些不同的數(shù)據(jù)類(lèi)型具有相關(guān)聯(lián)的處理程序,例如用于文件傳送的處理程序,用于廣播的處理程序等。
發(fā)起數(shù)據(jù)傳送的捆綁應(yīng)用的組件稱(chēng)為發(fā)起方,而處理發(fā)起請(qǐng)求的捆綁應(yīng)用的組件稱(chēng)為接收方。在一個(gè)實(shí)施例(諸如其中所有發(fā)起請(qǐng)求由客戶(hù)端裝置處理的實(shí)施例)中,發(fā)起方總是在客戶(hù)端裝置上運(yùn)行,并且接收方總是在服務(wù)器上運(yùn)行。
如果存在合適的接收方,則進(jìn)行進(jìn)一步協(xié)商,以便基于捆綁應(yīng)用的要求在連接的兩端建立適當(dāng)?shù)纳a(chǎn)者/消費(fèi)者組合(或多個(gè)組合)。在這方面,如果對(duì)于特定捆綁應(yīng)用數(shù)據(jù)僅在單個(gè)方向上流動(dòng),則在連接的一側(cè)上具有單個(gè)消費(fèi)者并且在連接的另一側(cè)上具有單個(gè)生產(chǎn)者就足夠了?;蛘撸绻麛?shù)據(jù)流是雙向的,則兩個(gè)生產(chǎn)者/消費(fèi)者組合可能是足夠的。例如,如圖4和圖5中所描述的,捆綁應(yīng)用僅需要在一個(gè)方向上傳送數(shù)據(jù)。在這種情況下,捆綁應(yīng)用在發(fā)送側(cè)提供生產(chǎn)者,并且捆綁應(yīng)用還在接收側(cè)提供消費(fèi)者。圖4和圖5的主要區(qū)別在于,在圖4中,發(fā)送側(cè)是客戶(hù)端裝置,接收側(cè)是服務(wù)器,而在圖5中,發(fā)送側(cè)是服務(wù)器,而接收側(cè)是客戶(hù)端。在另一個(gè)示例中,如圖6所示,捆綁應(yīng)用需要同時(shí)在兩個(gè)方向上傳送數(shù)據(jù)(例如,從時(shí)序的角度來(lái)看,在一個(gè)方向上傳送的數(shù)據(jù)與在相反方向上的數(shù)據(jù)傳送至少部分是同時(shí)發(fā)生的)。在這種情況下,捆綁應(yīng)用在客戶(hù)端裝置上提供生產(chǎn)者和消費(fèi)者,并且還在服務(wù)器上提供生產(chǎn)者和消費(fèi)者。
更具體地,在雙向數(shù)據(jù)傳送中,如圖6所示,可以存在附加步驟,該附加步驟在客戶(hù)端裝置和服務(wù)器上為每個(gè)網(wǎng)絡(luò)連接創(chuàng)建第二輔助連接線程。在數(shù)據(jù)傳送僅在單個(gè)方向上流動(dòng)的情況下,連接線程對(duì)于連接的維護(hù)和數(shù)據(jù)的傳送而言可能是足夠的,如圖4和圖5所示。然而,在雙向數(shù)據(jù)傳送的情況下,使用單個(gè)軟件線程來(lái)發(fā)送和接收數(shù)據(jù)可能是不方便的且不是最理想的。而是,在連接的兩側(cè)上,CMC可以為每個(gè)網(wǎng)絡(luò)連接創(chuàng)建附加線程,以便更容易地處理發(fā)送和接收數(shù)據(jù)。這些輔助連接線程在圖6中被示為用于客戶(hù)端裝置的輔助連接線程#1 602、輔助連接線程#2 604和輔助連接線程#2606,以及用于服務(wù)器的輔助連接線程#1 608、輔助連接線程#2 610和輔助連接線程#N 612。重要的是要注意,每個(gè)網(wǎng)絡(luò)連接使用一個(gè)或兩個(gè)軟件線程對(duì)捆綁應(yīng)用是完全透明的。捆綁應(yīng)用僅需要提供發(fā)起方、接收方和一個(gè)或多個(gè)生產(chǎn)者和消費(fèi)者,并且只要捆綁應(yīng)用滿足其要求,信道捆綁工作的內(nèi)部細(xì)節(jié)與其無(wú)關(guān)。一旦已經(jīng)建立了適當(dāng)?shù)纳a(chǎn)者/消費(fèi)者組合,就可以開(kāi)始數(shù)據(jù)傳送。生產(chǎn)者負(fù)責(zé)生成用于傳輸?shù)臄?shù)據(jù)406。當(dāng)數(shù)據(jù)變得對(duì)生產(chǎn)者可用時(shí),生產(chǎn)者可以將數(shù)據(jù)提供給捆綁。如下面和以上更詳細(xì)討論的,生產(chǎn)者可以將數(shù)據(jù)分解成有序的包(即,它可以對(duì)數(shù)據(jù)408進(jìn)行分包),并使這些包可用于CMC,然后CMC可以將這些包置于發(fā)送隊(duì)列416中。在一個(gè)實(shí)施例中,發(fā)送隊(duì)列是至少兩個(gè)可能的隊(duì)列414中的一個(gè),而另一個(gè)隊(duì)列是重發(fā)隊(duì)列418,這將在下面討論。在替換實(shí)施例中,可以使用單個(gè)發(fā)送隊(duì)列,其中重發(fā)的包可以被放置在發(fā)送隊(duì)列的頂部。CMC可以確保將這些數(shù)據(jù)包線程安全平衡地遞送到各個(gè)連接線程,這些線程認(rèn)領(lǐng)(claim)不同的包以便將它們發(fā)送給消費(fèi)者。最初,與活動(dòng)連接相關(guān)聯(lián)的每個(gè)連接線程可以承擔(dān)先前放置在發(fā)送隊(duì)列中的預(yù)定數(shù)目的包的所有權(quán),并開(kāi)始傳送各自擁有的包。在一個(gè)實(shí)施例中,包的預(yù)定數(shù)目對(duì)于每個(gè)連接線程可以是相同的(例如,20個(gè)包),如下面更詳細(xì)地討論的。當(dāng)連接線程認(rèn)領(lǐng)來(lái)自發(fā)送隊(duì)列的一個(gè)包的所有權(quán)時(shí),這個(gè)包可以被從發(fā)送隊(duì)列中刪除,以確保沒(méi)有其他連接線程嘗試獲取它的所有權(quán)。
各種連接線程可以嘗試同時(shí)訪問(wèn)駐留在發(fā)送隊(duì)列中的數(shù)據(jù)。與使用單個(gè)網(wǎng)絡(luò)接口來(lái)發(fā)送其數(shù)據(jù)的標(biāo)準(zhǔn)網(wǎng)絡(luò)應(yīng)用不同,綁定的一個(gè)目標(biāo)可以是用多個(gè)連接來(lái)發(fā)送數(shù)據(jù)流的多個(gè)片段,使跨多個(gè)連接發(fā)送的數(shù)據(jù)幾乎沒(méi)有重疊,從而使吞吐量最大化。使用多線程來(lái)處理和遞送數(shù)據(jù)包需要線程之間的協(xié)作和對(duì)同步的需要。如前所述,可以認(rèn)為發(fā)送隊(duì)列是準(zhǔn)備好要發(fā)送到接收側(cè)的包的陣列。如果兩個(gè)連接線程想要大致同時(shí)檢索下一個(gè)可用的包,并且兩個(gè)連接線程都得到同一個(gè)包N,則捆綁增大吞吐量的優(yōu)點(diǎn)會(huì)在某種程度上被丟失。相反,例如,要求是連接線程#1得到包N,而連接線程#2得到包N+1。
有多種線程同步技術(shù)可以用于實(shí)現(xiàn)這一點(diǎn),其中許多技術(shù)涉及對(duì)鎖的使用。一些類(lèi)型的鎖定機(jī)制在一個(gè)線程具有鎖的同時(shí)防止其他線程前進(jìn)。也就是說(shuō),當(dāng)連接線程#1具有鎖并正在從發(fā)送隊(duì)列中檢索下一個(gè)可用包時(shí),如果連接線程#2想要同時(shí)得到包,則它必須等到連接線程#1完成。根據(jù)連接線程#2必須等待的時(shí)間,在相關(guān)聯(lián)的連接線程上可能發(fā)生從用戶(hù)代碼到OS內(nèi)核的轉(zhuǎn)換,這引起其自身的時(shí)間成本。這種鎖定機(jī)制可以為捆綁工作,但是以降低性能為代價(jià)。
或者,捆綁邏輯可以使用快速原語(yǔ)基元來(lái)確保每個(gè)連接線程對(duì)發(fā)送隊(duì)列的訪問(wèn)是線程安全的且是高性能的。原語(yǔ)操作以處理器指令級(jí)產(chǎn)生非常低級(jí)的鎖,并且在兩個(gè)線程同時(shí)試圖訪問(wèn)同一存儲(chǔ)器的罕見(jiàn)情況下,硬件將確保僅一個(gè)線程可以這樣做,而第二個(gè)線程將必須等待一個(gè)微小的時(shí)間量,然后才能執(zhí)行該指令。
如下面更詳細(xì)討論的,CMC還可以監(jiān)視數(shù)據(jù)遞送以便評(píng)價(jià)網(wǎng)絡(luò)連接(例如,檢測(cè)壞的/差的網(wǎng)絡(luò)連接)并相應(yīng)地調(diào)整包遞送(例如,在替代連接上重新發(fā)送數(shù)據(jù)包)。
在接收側(cè),相關(guān)聯(lián)的連接線程可以使數(shù)據(jù)可用于CMC。通過(guò)將包按順序放置462在由消費(fèi)者提供的一個(gè)或多個(gè)接收包緩沖器450中,CMC又可以使該數(shù)據(jù)可用于捆綁應(yīng)用的消費(fèi)者。接收包緩沖器可以是預(yù)定大小的循環(huán)緩沖器,或者它可以是動(dòng)態(tài)調(diào)整大小的。消費(fèi)者然后負(fù)責(zé)將存儲(chǔ)在接收包緩沖器中的數(shù)據(jù)解包448,然后使用解包的數(shù)據(jù)446。一旦它使用了特定的包資源,它就可以負(fù)責(zé)將該包資源返回CMC進(jìn)一步使用。
與當(dāng)生產(chǎn)者將數(shù)據(jù)分包時(shí)各個(gè)包最初被排序的情況相比,各個(gè)包可以不按順序遞送。在這方面,消費(fèi)者可以對(duì)這一點(diǎn)負(fù)責(zé)。例如,對(duì)于文件傳送捆綁應(yīng)用,消費(fèi)者可以在嘗試寫(xiě)入文件之前等待連續(xù)排序的包被遞送,因?yàn)槲募拿總€(gè)部分可以被認(rèn)為是同等重要的。其他捆綁應(yīng)用可能具有較不嚴(yán)格的要求。例如,廣播捆綁應(yīng)用可以不必等待丟失的包,例如,而是選擇跳過(guò)一些丟失的包,卻不會(huì)顯著影響媒體的回放。
當(dāng)數(shù)據(jù)傳輸正在進(jìn)行時(shí),負(fù)責(zé)發(fā)送數(shù)據(jù)的連接線程可能首先檢測(cè)到其相關(guān)聯(lián)的網(wǎng)絡(luò)連接的丟失,并且如果已經(jīng)建立了附加的連接,則連接的丟失可以由其它網(wǎng)絡(luò)連接中的一個(gè)網(wǎng)絡(luò)連接報(bào)告給接收側(cè),使接收側(cè)能夠更及時(shí)地對(duì)故障情況做出反應(yīng)。如果所有連接都丟失,傳送可能會(huì)被中止。
如下面所討論的,如果一個(gè)連接相對(duì)于其他連接變得太慢,或者已經(jīng)確定該連接一般性能較差,則該連接可以從連接組中除去,并且稍后被帶回到測(cè)試模式中恢復(fù),如以下討論的,直到情況可能被改正為止。在一個(gè)實(shí)施例中,當(dāng)連接處于測(cè)試模式時(shí),它不發(fā)送由生產(chǎn)者生成的任何數(shù)據(jù)。在替代實(shí)施例中,如果連接相對(duì)于其他連接變得太慢,或者已經(jīng)被確定為通常性能較差,則可以為當(dāng)前空閑的網(wǎng)絡(luò)接口建立另一連接。例如,響應(yīng)于確定使用移動(dòng)寬帶網(wǎng)絡(luò)接口的連接沒(méi)有正確地執(zhí)行,可以建立使用當(dāng)前空閑的衛(wèi)星網(wǎng)絡(luò)接口的新連接并將其添加到連接組。在更具體的實(shí)施例中,在糾正了性能差的連接的情況之前,使用衛(wèi)星網(wǎng)絡(luò)接口的連接可以一直被使用。
前面提到,在一個(gè)實(shí)施例中,有兩個(gè)隊(duì)列414,發(fā)送隊(duì)列416和重發(fā)隊(duì)列418。在一個(gè)實(shí)施例中,隊(duì)列414可以包括循環(huán)緩沖器。如先前所討論的,由生產(chǎn)者提供的經(jīng)分包的數(shù)據(jù)最初被放置在發(fā)送隊(duì)列中,其隨后由不同的連接線程來(lái)認(rèn)領(lǐng)。如下面更詳細(xì)地討論的,如果特定的網(wǎng)絡(luò)連接變得不可靠或緩慢,則將它已經(jīng)認(rèn)領(lǐng)的包發(fā)送到接收側(cè)仍然是重要的。在這種情況下,連接線程可將其包添加到重發(fā)隊(duì)列中,從而允許一個(gè)或多個(gè)其他連接線程發(fā)送這些包,而認(rèn)領(lǐng)它們的原始連接線程也繼續(xù)嘗試成功地發(fā)送包。重發(fā)隊(duì)列中的包比發(fā)送隊(duì)列中的包具有更高的優(yōu)先級(jí)。也就是說(shuō),如果在兩個(gè)隊(duì)列中都有要發(fā)送的包,則連接線程將在認(rèn)領(lǐng)發(fā)送隊(duì)列中的任何包之前,認(rèn)領(lǐng)在重發(fā)隊(duì)列中的包。重發(fā)隊(duì)列和使用其他網(wǎng)絡(luò)連接重發(fā)先前已經(jīng)被認(rèn)領(lǐng)的包提高了可靠性。之前,已經(jīng)提到信道捆綁改善了吞吐量,并且改善的吞吐量可能是關(guān)鍵的好處,但是多個(gè)網(wǎng)絡(luò)連接的存在還允許改善可靠性,這在僅使用單個(gè)網(wǎng)絡(luò)連接的聯(lián)網(wǎng)技術(shù)中是不可能的。雖然在其他連接上重新發(fā)送包在技術(shù)上導(dǎo)致吞吐量的降低,但是最終結(jié)果可能是存儲(chǔ)在這些包中的數(shù)據(jù)被更快地遞送到接收側(cè),因此也可以認(rèn)為它也可以提高吞吐量。
當(dāng)數(shù)據(jù)傳送正在進(jìn)行時(shí),軟件的狀態(tài)可以被描述為處于傳送會(huì)話中。在一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)傳送完成時(shí),傳送會(huì)話被認(rèn)為已完成,但是另一傳送會(huì)話可以在將來(lái)的某一點(diǎn)再次開(kāi)始,以便處理新的數(shù)據(jù)傳送請(qǐng)求。
圖7示出了由如先前在圖4-圖6中所示的連接線程用于數(shù)據(jù)傳輸?shù)囊恍└呒?jí)設(shè)施的框圖700。如圖7所示,連接線程420可以包括傳輸分析學(xué)702。傳輸分析學(xué)702可以對(duì)由連接線程420發(fā)送的數(shù)據(jù)的傳輸?shù)闹辽僖粋€(gè)方面進(jìn)行分析。傳輸分析學(xué)的示例包括但不限于ACK檢查704和RTT檢查706,下面進(jìn)一步詳細(xì)討論。此外,連接線程420包括傳輸模式708,諸如正常模式710和測(cè)試模式712,下面將進(jìn)一步詳細(xì)討論。
圖8示出了如先前在圖4-圖6中所示的連接管理組件(CMC)的一些設(shè)施的框圖800。如圖8所示,客戶(hù)端裝置的CMC 412或服務(wù)器的CMC 460可以具有某些共同的特征,但是它們之間還存在足夠的差別,以保證它們是兩種不同類(lèi)型的CMC,一種意圖用于客戶(hù)端裝置,一種用于意圖用于服務(wù)器。CMC包括各種連接階段802,諸如正常連接階段804、測(cè)試連接階段806和預(yù)先測(cè)試連接階段808,這些階段中的每一個(gè)將在下面更詳細(xì)地討論。最后,CMC可以包括額外的分析學(xué)816,諸如下面進(jìn)一步詳細(xì)討論的時(shí)鐘偏差818。
在僅涉及單個(gè)網(wǎng)絡(luò)連接的標(biāo)準(zhǔn)聯(lián)網(wǎng)應(yīng)用中,如果到因特網(wǎng)的連接較慢,則網(wǎng)絡(luò)應(yīng)用不得不接受慢速連接。此外,如果由于某些原因連接失敗,則網(wǎng)絡(luò)應(yīng)用作為一個(gè)整體實(shí)際上也被停止。
相反,捆綁可以分析傳輸?shù)闹辽僖粋€(gè)方面(諸如連接的一個(gè)或多個(gè)方面),并且基于該分析,可以修改系統(tǒng)的至少一部分的操作。修改可以包括修改連接(例如,將連接置于測(cè)試模式,使連接離線,將連接置于正常模式以傳輸數(shù)據(jù)等)??商鎿Q的,或者另外,修改可以包括改變網(wǎng)絡(luò)接口的操作。例如,客戶(hù)端裝置可以命令網(wǎng)絡(luò)接口斷開(kāi)連接。更具體地,對(duì)于移動(dòng)寬帶接口,客戶(hù)端裝置可以命令移動(dòng)寬帶接口結(jié)束與蜂窩塔的通信。作為另一示例,客戶(hù)端裝置可以命令移動(dòng)寬帶接口改變其模式(例如,從3G變成4G)。作為又一示例,客戶(hù)端裝置可以命令當(dāng)前空閑的另一網(wǎng)絡(luò)接口建立與服務(wù)器的連接(例如,使用作為備份的衛(wèi)星網(wǎng)絡(luò)接口)。
在一個(gè)實(shí)施例中,分析包括對(duì)多個(gè)網(wǎng)絡(luò)連接的一個(gè)或多個(gè)方面的動(dòng)態(tài)分析。在替代實(shí)施例中,動(dòng)態(tài)分析包括相對(duì)于(或依賴(lài)于)第二網(wǎng)絡(luò)連接(其使用第二網(wǎng)絡(luò)接口)動(dòng)態(tài)地分析第一網(wǎng)絡(luò)連接(其使用第一網(wǎng)絡(luò)接口)。在更具體的替代實(shí)施例中,動(dòng)態(tài)分析包括相對(duì)于(或依賴(lài)于)第二網(wǎng)絡(luò)連接的相同方面動(dòng)態(tài)地分析第一網(wǎng)絡(luò)連接。動(dòng)態(tài)分析可以包括對(duì)由生產(chǎn)者生成并由消費(fèi)者消費(fèi)的數(shù)據(jù)的至少一部分的傳輸?shù)膭?dòng)態(tài)分析。在更具體的實(shí)施例中,動(dòng)態(tài)分析包括分析連接的至少一部分的延遲。特定連接的延遲分析可以獨(dú)立于、依賴(lài)于或部分依賴(lài)于和部分獨(dú)立于不同連接的延遲分析。
在又一更具體的實(shí)施例中,動(dòng)態(tài)分析包括對(duì)在一個(gè)連接上發(fā)送的包的往返時(shí)間(RTT)檢查,可以將該往返時(shí)間與關(guān)聯(lián)于一個(gè)、一些或所有其他連接上發(fā)送的包的RTT進(jìn)行比較。RTT通常被定義為將包發(fā)送到接收端以及獲得該包的遞送的收據(jù)所花費(fèi)的時(shí)間量。因此,向接收端發(fā)送包所花費(fèi)的時(shí)間量可以被估計(jì)為RTT/2,即使在一個(gè)方向上比在另一個(gè)方向上發(fā)送數(shù)據(jù)可能花費(fèi)更長(zhǎng)的時(shí)間。RTT是如何對(duì)在客戶(hù)端裝置與服務(wù)器之間傳輸?shù)陌膫鬏敃r(shí)間進(jìn)行檢查的一個(gè)示例,并且能想到其他度量。
在另一個(gè)實(shí)施例中,動(dòng)態(tài)分析包括與連接組中的任何其它連接部分地或完全獨(dú)立地對(duì)一個(gè)連接進(jìn)行動(dòng)態(tài)分析。在更具體的實(shí)施例中,動(dòng)態(tài)分析包括對(duì)經(jīng)由一個(gè)連接傳輸?shù)陌拇_認(rèn)(ACK)檢查,該分析可以獨(dú)立于其它連接中的一個(gè)、一些或全部來(lái)分析。
在又一個(gè)實(shí)施例中,動(dòng)態(tài)分析包括既部分地或完全地獨(dú)立于捆綁中的任何其它連接又依賴(lài)于捆綁中的一個(gè)、一些或所有其他連接地動(dòng)態(tài)分析一個(gè)連接。在更具體的實(shí)施例中,動(dòng)態(tài)分析包括RTT檢查(其可以利用與連接組中的其他網(wǎng)絡(luò)連接相關(guān)聯(lián)的RTT值)和ACK檢查(在一個(gè)方面,其可以包括部分或完全獨(dú)立于一個(gè)、一些或所有其他連接地對(duì)包的確認(rèn)進(jìn)行分析)。在另一個(gè)具體實(shí)施例中,動(dòng)態(tài)分析包括獨(dú)立于(和取決于)經(jīng)由另一個(gè)連接的傳輸來(lái)分析相同方面。例如,在一個(gè)方面,ACK檢查的分析可以獨(dú)立于針對(duì)其他連接的ACK檢查,在另一方面,可以取決于對(duì)其他連接的ACK檢查。在這點(diǎn)上,相同方面,ACK檢查可以是獨(dú)立和依賴(lài)分析的基礎(chǔ)。
動(dòng)態(tài)分析可以處理緩慢和/或不可靠的連接。例如,在移動(dòng)寬帶的情況下,特定的網(wǎng)絡(luò)接口可能經(jīng)歷暫時(shí)較差的信號(hào)強(qiáng)度。在一些區(qū)域中,運(yùn)營(yíng)商可以?xún)H支持處于非常低的速率的數(shù)據(jù)傳輸。為了解決這種情況,捆綁可以使用各種技術(shù),例如動(dòng)態(tài)分析,以減少不良執(zhí)行的網(wǎng)絡(luò)連接的影響。
如上所述,網(wǎng)絡(luò)連接的分析的一個(gè)方面是ACK檢查。當(dāng)連接線程在傳送會(huì)話期間處于發(fā)送包的過(guò)程中時(shí),在執(zhí)行定義(implementation-defined)數(shù)量個(gè)包對(duì)于接收側(cè)未完成之后,連接線程可以檢查以確定這些包中的任何一個(gè)是否已經(jīng)被連接的另一端接收。確認(rèn)可以作為傳輸過(guò)程的一部分發(fā)送。例如,如果UDT用作通信層,則UDT提供的特征之一是確認(rèn),使得在連接的接收側(cè)處理了一定數(shù)量的包之后,接收側(cè)發(fā)送特殊確認(rèn)包給發(fā)送器,該特殊確認(rèn)指示已經(jīng)由接收器成功接收的有序包的數(shù)量。
如果到連接線程已經(jīng)達(dá)到等待確認(rèn)的未解決包的執(zhí)行定義限制的時(shí)候一個(gè)或多個(gè)包已經(jīng)被確認(rèn),則應(yīng)用進(jìn)一步的分析學(xué)(例如RTT檢查)可能是恰當(dāng)?shù)?,但是如果它通過(guò)這些分析學(xué),連接線程可以從發(fā)送隊(duì)列取得更多包的所有權(quán),直到它再次達(dá)到執(zhí)行定義數(shù)量個(gè)等待確認(rèn)的未解決包。
如果到連接線程進(jìn)行檢查以查看是否有任何未解決包已被接收器確認(rèn)的時(shí)候還沒(méi)有一個(gè)未解決包被接收,則連接線程可以等待一定量的時(shí)間,并且在該時(shí)間期間,它不可以發(fā)送任何新的數(shù)據(jù)包。也就是說(shuō),它不會(huì)從發(fā)送隊(duì)列取得任何額外的包的所有權(quán)。該時(shí)間量可以是可變的時(shí)間量,如下所述。
如果在該時(shí)間段結(jié)束時(shí),所發(fā)送的包中的一個(gè)或多個(gè)已經(jīng)被接收端確認(rèn),則應(yīng)用進(jìn)一步的分析學(xué)(例如,RTT檢查)可能是恰當(dāng)?shù)?,但是如果它通過(guò)這些分析學(xué),連接線程可以從發(fā)送隊(duì)列取得更多包的所有權(quán),直到它再次達(dá)到執(zhí)行定義數(shù)量個(gè)等待確認(rèn)的未解決包。
相反,如果在該時(shí)間段結(jié)束時(shí),沒(méi)有所發(fā)送的包被接收端確認(rèn),則認(rèn)為該連接已經(jīng)進(jìn)入緩慢和/或不可靠的階段。雖然UDT保證數(shù)據(jù)遞送,假設(shè)連接仍然可用,但是如果連接變得緩慢和/或不可靠,則未解決的包被遞送到接收端可能需要一段時(shí)間。缺少確認(rèn)還可能指示連接不再可用,這指示包可能永遠(yuǎn)不會(huì)被遞送,這取決于連接何時(shí)失去其可行性。例如,接收端可能已經(jīng)成功地接收到包,但是在相關(guān)聯(lián)的確認(rèn)被發(fā)送端接收到之前,連接可能變壞,并且作為結(jié)果,確認(rèn)包可能永遠(yuǎn)不會(huì)被接收到。不管情況如何,重要的是以及時(shí)的方式將包遞送到接收端。
如果網(wǎng)絡(luò)連接被認(rèn)為已經(jīng)進(jìn)入緩慢和/或不可靠階段,則連接線程可以釋放其對(duì)未確認(rèn)的包的“所有權(quán)”。在釋放所有權(quán)之后,CMC可以將未被確認(rèn)的包添加到重發(fā)隊(duì)列。其他連接線程在準(zhǔn)備好發(fā)送數(shù)據(jù)時(shí)將意識(shí)到在重發(fā)隊(duì)列中有數(shù)據(jù)包可用,并且將相對(duì)于發(fā)送隊(duì)列中的包優(yōu)先發(fā)送來(lái)自重發(fā)隊(duì)列的包。與當(dāng)前處于發(fā)送隊(duì)列的前端的包相比,重發(fā)隊(duì)列中的包通常具有較低的數(shù)字序列號(hào),因此,重要的是盡快發(fā)送它們。類(lèi)似于用于認(rèn)領(lǐng)發(fā)送隊(duì)列中的包的所有權(quán)的線程同步技術(shù),其他連接線程可以取得重發(fā)隊(duì)列中的包的所有權(quán)以便于傳輸。同時(shí),已經(jīng)進(jìn)入緩慢和/或不可靠階段的原始連接線程可以繼續(xù)嘗試發(fā)送包。因此,接收端的CMC就可能被通知具有相同序列號(hào)的多個(gè)包通過(guò)多個(gè)連接到達(dá)。這樣,CMC可能需要丟棄冗余的包。
在它的確認(rèn)檢查出現(xiàn)失敗之后,連接線程在它先前發(fā)送的所有包已經(jīng)被確認(rèn)之前一直不可以嘗試從發(fā)送或重發(fā)隊(duì)列取得任何新包的所有權(quán)。在連接線程在技術(shù)上釋放其對(duì)包的所有權(quán)并且使包被添加到重發(fā)隊(duì)列的同時(shí),原始包仍然已經(jīng)被發(fā)送,并且可能不能依賴(lài)正利用的通信層來(lái)取消對(duì)這些包的傳輸。這樣,連接線程將繼續(xù)使用確認(rèn)檢查,直至它確定所有包已經(jīng)被確認(rèn)。如果最終原始包被確認(rèn),則連接線程可以繼續(xù)從發(fā)送隊(duì)列(或重發(fā)隊(duì)列)取得包的所有權(quán)。如果相反,連接線程依然未能完成進(jìn)一步的確認(rèn)檢查,則將認(rèn)為該連接線程不再可行,并且可以終止相關(guān)聯(lián)的連接。使用相關(guān)聯(lián)的網(wǎng)絡(luò)接口的連接可以在稍后的時(shí)間點(diǎn)再次被提出。建立新的網(wǎng)絡(luò)連接可能足以糾正導(dǎo)致缺乏確認(rèn)的任何問(wèn)題。一旦建立了新連接,就可以將其添加到連接組,然后加入傳送會(huì)話。
如前所述,如果到連接線程進(jìn)行檢查以查看是否有任何未解決的包已經(jīng)被接收器確認(rèn)的時(shí)候未解決的包一個(gè)也沒(méi)有被接收,則連接線程可以等待一定量的時(shí)間,并且在該時(shí)間段期間,不發(fā)送任何新的包。在一個(gè)實(shí)施例中,該時(shí)間段可以被動(dòng)態(tài)地計(jì)算;例如在每次需要等待時(shí)動(dòng)態(tài)地計(jì)算該時(shí)間段。動(dòng)態(tài)計(jì)算可以使用一個(gè)算法,該算法考慮并且基于傳送會(huì)話中的所有其他連接(例如,主動(dòng)傳送由生產(chǎn)者生成的數(shù)據(jù)的連接)的平均RTT。另外,如果在該時(shí)間段期滿之前接收到確認(rèn),則等待將被中斷,并且連接線程可以如前所述地那樣繼續(xù)工作。
例如,包“XXX”可以被生產(chǎn)者遞送到CMC并且放置在發(fā)送隊(duì)列上。然后連接線程#2可以認(rèn)領(lǐng)包“XXX”的所有權(quán)并將其發(fā)送到接收側(cè)。在沒(méi)有及時(shí)地接收到對(duì)包“XXX”的確認(rèn)的情況下,連接線程#2可以釋放包“XXX”的所有權(quán),然后將包“XXX”置于重發(fā)隊(duì)列中。然后另一連接線程(例如連接線程#4)可從重發(fā)隊(duì)列認(rèn)領(lǐng)包“XXX”的所有權(quán)且將其發(fā)送到接收側(cè)。最初由連接線程#2發(fā)送的包“XXX”可能已經(jīng)丟失,或者其可能被傳輸?shù)眠^(guò)度緩慢。在后一種情況下,包“XXX”將被發(fā)送兩次。在這點(diǎn)上,接收側(cè)的CMC可以丟棄冗余的包“XXX”。將這一方面進(jìn)一步擴(kuò)展,從重發(fā)隊(duì)列認(rèn)領(lǐng)包“XXX”的所有權(quán)的連接線程#4,也可能沒(méi)有完成其確認(rèn)檢查。在這種情況下,它將包重新添加到重發(fā)隊(duì)列中,然后另一個(gè)連接線程可以認(rèn)領(lǐng)該包的所有權(quán)。然而,連接線程#2和#4均可以不從發(fā)送或重發(fā)隊(duì)列認(rèn)領(lǐng)任何包的所有權(quán),直至連接線程#2和#4的包“XXX”的副本已經(jīng)被接收側(cè)確認(rèn)為止。
ACK檢查技術(shù)允許每個(gè)連接線程自我調(diào)節(jié)自身。也就是說(shuō),它確保特定連接線程僅獲取其相關(guān)聯(lián)的網(wǎng)絡(luò)連接在給定時(shí)間段內(nèi)可以成功發(fā)送的數(shù)量的包的所有權(quán)。因?yàn)檫B接線程將在任何給定時(shí)間只認(rèn)領(lǐng)最多不超過(guò)執(zhí)行定義(implementaion-defined)的數(shù)量的包的所有權(quán),如果一個(gè)網(wǎng)絡(luò)連接比另一網(wǎng)絡(luò)連接慢,則與慢網(wǎng)絡(luò)連接相關(guān)聯(lián)的連接線程不會(huì)像與較快網(wǎng)絡(luò)連接相關(guān)聯(lián)的連接線程一樣頻繁地取得新的包的所有權(quán)。較快的網(wǎng)絡(luò)連接只是將比較慢的網(wǎng)絡(luò)連接更快地從接收側(cè)接收到確認(rèn),從而允許較快的網(wǎng)絡(luò)連接更頻繁地獲取新包的所有權(quán)并發(fā)送它們。這樣,每個(gè)網(wǎng)絡(luò)連接的吞吐量可以被隱式地最大化,而不必提前進(jìn)行訓(xùn)練會(huì)話以查看特定網(wǎng)絡(luò)連接能夠具有什么種類(lèi)的吞吐量。這又使得傳送會(huì)話能夠在由捆綁應(yīng)用啟動(dòng)時(shí)立即開(kāi)始,因?yàn)樵趥魉陀缮a(chǎn)者生成的數(shù)據(jù)之前不需要訓(xùn)練會(huì)話。
在一個(gè)實(shí)施方式中,每個(gè)連接線程最初可以被分配到相同的預(yù)定數(shù)量的包,例如20個(gè)包。在這點(diǎn)上,每個(gè)連接線程可以被限制為一次取得20個(gè)包的所有權(quán),包括在開(kāi)始傳送會(huì)話時(shí)立即取得。因此,在傳送會(huì)話啟動(dòng)時(shí),不需要訓(xùn)練會(huì)話。相反,每個(gè)連接線程可以取得不超過(guò)20個(gè)包的所有權(quán)。此后,特定連接線程可以取得所有權(quán)的額外的包的數(shù)量取決于當(dāng)前擁有的20個(gè)包中的任何包是否已經(jīng)被確認(rèn)。例如,如果20個(gè)包中沒(méi)有一個(gè)已被確認(rèn),則特定連接線程不可以獲取任何額外的包的所有權(quán)。如果特定連接線程擁有的20個(gè)包中的一個(gè)或多個(gè)被確認(rèn),則特定連接線程可以獲取高達(dá)20個(gè)包限值的額外包的所有權(quán)。監(jiān)視與特定連接線程相關(guān)聯(lián)的未確認(rèn)包的數(shù)量的該過(guò)程可以在整個(gè)傳送會(huì)話中繼續(xù)。
圖9示出了當(dāng)連接線程在傳送會(huì)話期間傳送數(shù)據(jù)時(shí)的確認(rèn)檢查的流程圖900。在902,連接線程從發(fā)送隊(duì)列和/或重發(fā)隊(duì)列獲得新包的所有權(quán)。在904,其發(fā)送新包。在906,確定是否已經(jīng)針對(duì)所發(fā)送的包中的一個(gè)或多個(gè)接收到ACK。如果不是,則在908,它等待以查看在動(dòng)態(tài)確定的時(shí)間限值內(nèi)(如前所述,可以基于傳送會(huì)話中的其他連接的RTT值來(lái)計(jì)算)是否接收到ACK。如果在時(shí)間限制內(nèi)未接收到,則在910,將任何剩余的未確認(rèn)包添加到重發(fā)隊(duì)列。在912,ACK失敗計(jì)數(shù)器遞增1,其中ACK失敗計(jì)數(shù)器用于連續(xù)跟蹤連接線程沒(méi)有完成ACK檢查的次數(shù)。在914,確定ACK失敗計(jì)數(shù)器是否已經(jīng)超過(guò)閾值。如果是,則在916,確定連接不可行,并且在918,使連接離線。稍后,用于相同網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接可以重新建立起來(lái),并且一旦其加入連接組和傳送會(huì)話,則在920處,連接可以根據(jù)特定條件進(jìn)入測(cè)試模式。如果相反,在914,ACK失敗計(jì)數(shù)器沒(méi)有超過(guò)閾值,則移動(dòng)到922,在該點(diǎn)設(shè)置模式以指示連接線程不應(yīng)該(從發(fā)送或重發(fā)隊(duì)列)認(rèn)領(lǐng)任何新包的所有權(quán)。從那里,其循環(huán)回到已經(jīng)討論的在906處的ACK接收的檢查。如果,在906處已經(jīng)接收到確認(rèn),或者在908處在時(shí)間限值內(nèi)接收到確認(rèn),則移動(dòng)到924,在該點(diǎn),ACK失敗計(jì)數(shù)器被重置為零。在926,確定連接線程是否處于無(wú)新包模式。如果不是,則流程圖循環(huán)回到902。如果是,則在928,確定是否已經(jīng)為所有釋放的包(例如,在910處添加到重發(fā)隊(duì)列的包)接收到確認(rèn)。如果否,則流程圖循環(huán)回到906。如果是,則流程圖返回到902。
除了(或者代替)ACK檢查,可以執(zhí)行RTT檢查。
當(dāng)在傳送會(huì)話中時(shí),即使正在發(fā)送數(shù)據(jù)的連接從接收端接收到常規(guī)確認(rèn),將包遞送到在這個(gè)特定連接上的接收端可能要花費(fèi)相當(dāng)長(zhǎng)的時(shí)間,特別是與在傳送會(huì)話中在其他連接上遞送包所需的時(shí)間量有關(guān)。例如,如果在傳送會(huì)話中有四個(gè)連接,并且連接#1-#3各自具有100mSec或更小的平均RTT值,這意味著平均來(lái)說(shuō)需要50毫秒或更少時(shí)間來(lái)將包遞送到連接#1-#3上的接收端。但是,連接#4需要稍長(zhǎng)的時(shí)間來(lái)遞送數(shù)據(jù),并且具有的平均RTT值為500mSec。這意味著連接#4要花費(fèi)大約250毫秒來(lái)將包發(fā)送到接收端。如前所述,一旦連接線程從發(fā)送隊(duì)列(或重發(fā)隊(duì)列)取得包的所有權(quán),則沒(méi)有其他連接線程會(huì)嘗試發(fā)送該包。盡管連接#4將有所進(jìn)展,雖然是以比連接#1-#3慢的速度有所進(jìn)展,連接#4遞送數(shù)據(jù)所花費(fèi)的時(shí)間量可能對(duì)一些捆綁應(yīng)用,特別是涉及媒體的近實(shí)時(shí)流傳輸?shù)睦墤?yīng)用具有顯著且有害的影響。
為了過(guò)濾掉慢的連接,可以在確認(rèn)檢查成功之后審查連接的RTT。在接收到確認(rèn)檢查之后審查RTT,因?yàn)橥ǔ#绻_認(rèn)檢查失敗,則沒(méi)有理由進(jìn)行RTT檢查,因?yàn)轱@然似乎沒(méi)有任何已發(fā)送的包被接收。在一個(gè)實(shí)施例中,可以基于可變閾值比較RTT值??勺冮撝悼梢曰趥魉蜁?huì)話中的一個(gè)、一些或所有其他連接的RTT值,諸如比基于傳送會(huì)話中所有其它連接的平均RTT的計(jì)算值大很多的值。在這點(diǎn)上,在一個(gè)實(shí)施例中,對(duì)一個(gè)連接的評(píng)估可以至少部分地基于對(duì)一個(gè)、一些或所有剩余連接的評(píng)估。在替代實(shí)施例中,可以基于預(yù)定閾值而獨(dú)立于不同連接的RTT值地評(píng)估RTT值。在另一個(gè)替代實(shí)施例中,可以基于可變閾值和非可變閾值來(lái)評(píng)估RTT值。例如,如果RTT值高于執(zhí)行定義的閾值(例如,250mSec),并且RTT值充分大于基于傳送會(huì)話中的一些或所有其他連接的平均RTT計(jì)算出的值,則可以為該特定連接遞增慢RTT計(jì)數(shù)器。
如果慢RTT情況繼續(xù)發(fā)生,則在慢RTT計(jì)數(shù)器達(dá)到執(zhí)行定義的閾值之后,連接線程已經(jīng)發(fā)送的所有未確認(rèn)的包可以被添加到重發(fā)隊(duì)列。例如,執(zhí)行定義的閾值可以包括“5”,意味著在任何未確認(rèn)的包被添加到重發(fā)隊(duì)列之前,慢RTT計(jì)數(shù)器需要被重復(fù)遞增五次。這避免了連接線程由于暫時(shí)緩慢的連接而過(guò)早地將未確認(rèn)的包添加到重發(fā)隊(duì)列的可能性。如果達(dá)到該閾值,類(lèi)似于ACK檢查中的缺少確認(rèn)的情況,則連接線程將不會(huì)從發(fā)送隊(duì)列(或重發(fā)隊(duì)列)取得任何新包的所有權(quán),直至其先前發(fā)送的所有包已經(jīng)被確認(rèn)。如果慢RTT情況繼續(xù)重復(fù)發(fā)生,則在計(jì)數(shù)達(dá)到不同的執(zhí)行定義的閾值(不同的執(zhí)行定義的閾值必須大于早先的執(zhí)行定義的閾值)之后,連接可以被標(biāo)記為慢,并且關(guān)聯(lián)的連接可以被終止。在等待預(yù)定量的時(shí)間之后,該連接可以被重新利用。當(dāng)被重新利用時(shí),該連接可以被添加到連接組,然后加入傳送會(huì)話,但是可以將該連接置于與正常模式不同的狀態(tài),例如置于測(cè)試模式,如下面將討論的。
圖10示出了用于在傳送會(huì)話期間傳送數(shù)據(jù)時(shí)由連接線程執(zhí)行的往返時(shí)間(RTT)檢查的流程圖1000。流程圖1000的多個(gè)部分類(lèi)似于流程圖900。在902,連接線程從發(fā)送隊(duì)列和/或重發(fā)隊(duì)列獲得新包的所有權(quán)。在904,其發(fā)送新包。在906,確定是否已經(jīng)針對(duì)所發(fā)送的包中的一個(gè)或多個(gè)接收到ACK。如果不是,則其執(zhí)行如圖9中所描述的ACK檢查。如果在906處接收到ACK(或者在如圖9中的908所描述的時(shí)間段內(nèi)接收到ACK),則移動(dòng)到1002,在該點(diǎn)處,訪問(wèn)用于網(wǎng)絡(luò)連接的RTT值。在1004,確定RTT是否大于規(guī)定的RTT限值。如果是,則在1006,確定RTT是否充分大于針對(duì)傳送會(huì)話中的其他連接的平均RTT。如果是,則在1010,將用于該連接線程的RTT失敗計(jì)數(shù)器遞增1。然后,在1010,確定RTT失敗計(jì)數(shù)器是否大于閾值#1。如果是,在910,如對(duì)于ACK檢查所做的一樣,任何剩余的未確認(rèn)包被添加到重發(fā)隊(duì)列-然而,與ACK檢查相反,如果到達(dá)這一點(diǎn),至少一個(gè)未解決包先前已經(jīng)被確認(rèn)因?yàn)樗呀?jīng)通過(guò)了ACK檢查。在1014,確定RTT失敗計(jì)數(shù)器是否大于閾值#2(閾值#2大于閾值#1)。如果是,則在916,該連接被確定為不可行,并且在918,使該連接離線。稍后,可以重新建立用于相同網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接,并且一旦該網(wǎng)絡(luò)連接加入連接組和傳送會(huì)話,則在920處,連接可以根據(jù)特定條件進(jìn)入測(cè)試模式。如果相反,在1014,RTT失敗計(jì)數(shù)器沒(méi)有超過(guò)閾值#2,在912,與ACK檢查一樣,在這一點(diǎn)上,設(shè)置一個(gè)模式以指示該連接線程不應(yīng)該(從發(fā)送或重發(fā)隊(duì)列)認(rèn)領(lǐng)任何新包的所有權(quán)。在912之后,其循環(huán)回到906。
如果相反,在1012,閾值#1未被超過(guò),則移動(dòng)到926,如先前在圖9中所描述的,并且以與針對(duì)圖9所描述的相同的方式從那里繼續(xù)下去。
如果相反,1004或1006評(píng)估為否,則在1008,RTT失敗計(jì)數(shù)器被重置為0。然后,如已經(jīng)描述的,移動(dòng)到926。
在傳送會(huì)話中使用的網(wǎng)絡(luò)連接可以處于幾種模式中的一種,例如正常模式和測(cè)試模式。正常模式描述了當(dāng)網(wǎng)絡(luò)連接被用于在傳送會(huì)話期間傳送由生產(chǎn)者生成的分包數(shù)據(jù)時(shí)的網(wǎng)絡(luò)連接的狀態(tài)。
測(cè)試模式是一種特殊狀態(tài),網(wǎng)絡(luò)連接在處于傳送會(huì)話時(shí)可以基于對(duì)該連接的先前分析(例如如果該連接已被確定為執(zhí)行不良)將其置于測(cè)試模式??梢曰谏鲜霾煌?lèi)型的分析的結(jié)果,例如基于RTT檢查和/或ACK檢查,進(jìn)入測(cè)試模式。更具體地,可以以?xún)煞N不同的方式之一進(jìn)入測(cè)試模式:(1)由于RTT檢查,相關(guān)聯(lián)的網(wǎng)絡(luò)接口的最后一個(gè)連接被終止;和(2)用于相關(guān)聯(lián)的網(wǎng)絡(luò)接口的最后兩個(gè)連接由于ACK檢查而被終止??梢允褂闷渌麥?zhǔn)則來(lái)確定是否應(yīng)當(dāng)使用測(cè)試模式。
當(dāng)網(wǎng)絡(luò)連接在傳送會(huì)話期間處于測(cè)試模式時(shí),其關(guān)聯(lián)的連接線程將不會(huì)從發(fā)送或重發(fā)隊(duì)列取得任何包的所有權(quán)。相反,連接可以向接收側(cè)重復(fù)發(fā)送不包含任何實(shí)際數(shù)據(jù)的特殊測(cè)試模式包。除了這種改變之外,ACK檢查和RTT檢查可以以與上述相同的方式操作。
如果測(cè)試模式下的連接繼續(xù)沒(méi)有完成ACK檢查或RTT檢查,該連接將再次終止,并在稍后被重新利用。終止與重新利用連接的動(dòng)作之間的時(shí)間量可以是預(yù)定的,或者可以根據(jù)相關(guān)網(wǎng)絡(luò)接口的先前連接是否處于測(cè)試模式而變化。例如,隨著用于特定網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接被重復(fù)地置于測(cè)試模式(并且隨后由于ACK檢查和/或RTT檢查而不能脫離測(cè)試模式)的次數(shù)增加,先前的連接被終止的時(shí)間點(diǎn)與建立新連接的時(shí)間點(diǎn)之間的時(shí)間量可以增加到執(zhí)行定義的時(shí)間限值。
在測(cè)試模式下,如果網(wǎng)絡(luò)連接在發(fā)送了執(zhí)行定義數(shù)量的測(cè)試模式包之后成功地通過(guò)ACK檢查和RTT檢查,則連接將退出測(cè)試模式,進(jìn)入正常模式,并立即開(kāi)始從發(fā)送和/或重發(fā)隊(duì)列取得包的所有權(quán)。
在這方面,測(cè)試模式的意圖可以是雙重的。首先,測(cè)試模式可以防止執(zhí)行不良的連接發(fā)送由生產(chǎn)者生成的任何數(shù)據(jù),因?yàn)檫@可能對(duì)捆綁應(yīng)用具有有害的影響。如上所述,執(zhí)行不良的網(wǎng)絡(luò)連接所意味的是該連接的性能相對(duì)于傳送會(huì)話中另一連接(或其他連接)的性能而言,和/或可以是相對(duì)于預(yù)定標(biāo)準(zhǔn)的性能而言。關(guān)于將一個(gè)連接與其他連接進(jìn)行比較,如果大多數(shù)連接較慢(因此具有高RTT值),則慢連接可能不被認(rèn)為是執(zhí)行不良,因?yàn)樗c其他網(wǎng)絡(luò)連接相比執(zhí)行狀況類(lèi)似。但是,不論傳送會(huì)話中的其他連接進(jìn)行得如何,失敗的確認(rèn)檢查可能總是會(huì)導(dǎo)致相同的結(jié)果。
第二,如果任何導(dǎo)致連接執(zhí)行不良的條件在將來(lái)得到糾正,則測(cè)試模式可以檢測(cè)到這一點(diǎn)并允許該連接以正常模式重新加入傳送會(huì)話作為連接組的生產(chǎn)性成員。
圖11示出了用于分析連接線程在測(cè)試模式下的性能的流程圖1100。圖11建立在圖9和圖10中分別描述的ACK檢查和RTT檢查的基礎(chǔ)上,并且因此,為了簡(jiǎn)潔省略了某些細(xì)節(jié)。在傳送會(huì)話期間,網(wǎng)絡(luò)連接被置于測(cè)試模式,并且在1102,發(fā)送測(cè)試模式包。在發(fā)送包時(shí),ACK檢查和RTT檢查如前所述進(jìn)行。當(dāng)發(fā)送測(cè)試模式包時(shí),如果在任何點(diǎn),由于在1106的ACK或RTT檢查而失敗,則在1108連接將被終止。然后,在1110,將計(jì)數(shù)器遞增1,該計(jì)數(shù)器保持跟蹤在處于測(cè)試模式時(shí)在傳送會(huì)話期間關(guān)聯(lián)的網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接被終止的次數(shù)。然后,在1112,基于針對(duì)1110描述的計(jì)數(shù)器的值來(lái)確定為重新建立用于該網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接要等待多長(zhǎng)時(shí)間。在1114等待該時(shí)間量,然后在1116,用于此網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接被重新建立,并且循環(huán)回到1102。如果相反,在1106,能夠成功地發(fā)送執(zhí)行定義數(shù)量的測(cè)試模式包(成功地意味著所有包被接收側(cè)確認(rèn))而沒(méi)有ACK或RTT檢查失敗,網(wǎng)絡(luò)連接被置于正常模式。此外,在進(jìn)入正常模式之前,將以上針對(duì)1110描述的計(jì)數(shù)器重置為零。
如上所述,CMC可以向捆綁應(yīng)用邏輯提供一個(gè)或多個(gè)服務(wù)。在一個(gè)實(shí)施例中,這些服務(wù)可以與捆綁結(jié)合起來(lái)使用以改善結(jié)果,并向捆綁應(yīng)用提供有用的反饋信息。在替代實(shí)施例中,這些服務(wù)可以與任何捆綁應(yīng)用分開(kāi)使用并且獨(dú)立于任何捆綁應(yīng)用。這種服務(wù)的示例先前在圖8中描述。
一種服務(wù)包括確定客戶(hù)端裝置和服務(wù)器之間的時(shí)鐘偏差。在一個(gè)實(shí)施例中,時(shí)鐘偏差確定可以用于捆綁應(yīng)用,因?yàn)樵谀承┣闆r下,理解客戶(hù)端與服務(wù)器之間的時(shí)鐘偏差可能對(duì)捆綁應(yīng)用有幫助。時(shí)鐘偏差是在每個(gè)相應(yīng)系統(tǒng)上設(shè)置的本地時(shí)鐘時(shí)間之間的時(shí)間差。例如,如果客戶(hù)端上的時(shí)間是12:00:00PM,并且服務(wù)器上的時(shí)間是12:00:01PM,則時(shí)鐘偏差約為1秒。
時(shí)鐘偏差可以以多種方式計(jì)算。一種方法是使用Cristian算法的變型。Cristian算法是可以用于僅使用由每個(gè)系統(tǒng)提供的時(shí)間數(shù)據(jù)以及與兩個(gè)系統(tǒng)之間的網(wǎng)絡(luò)連接有關(guān)的信息來(lái)確定兩個(gè)不同系統(tǒng)之間的時(shí)鐘偏差的方法。通過(guò)在兩個(gè)系統(tǒng)之間建立的網(wǎng)絡(luò)連接,第一系統(tǒng)在包中將其當(dāng)前時(shí)間T 1發(fā)送給第二系統(tǒng),第二系統(tǒng)在接收包的那一時(shí)間點(diǎn)也獲得其當(dāng)前時(shí)間T 2。第二系統(tǒng)還及時(shí)地在該時(shí)間點(diǎn)確定網(wǎng)絡(luò)連接的RTT。由于如前所述,可以估計(jì)大約需要RTT/2在任一方向上發(fā)送包,所以時(shí)鐘偏差可以計(jì)算為:時(shí)鐘偏差=T2-T1-RTT/2。另外,通常最好多次經(jīng)歷該過(guò)程,并基于多個(gè)T1/T2/RTT組合(或者選擇具有最低RTT值的組合)來(lái)計(jì)算平均值。
在一個(gè)實(shí)施例中,代替簡(jiǎn)單地對(duì)于單個(gè)網(wǎng)絡(luò)連接使用Cristian算法,在信道捆綁的環(huán)境中,該算法可以跨越多個(gè)不同的連接使用(例如對(duì)于在傳送會(huì)話中的不同連接中的至少兩個(gè)連接、多于兩個(gè)連接、或所有連接)。在這點(diǎn)上,每個(gè)客戶(hù)端系統(tǒng)向服務(wù)器發(fā)送多個(gè)時(shí)間包,并且在服務(wù)器跨不同連接累積了執(zhí)行定義數(shù)量的時(shí)間包之后,服務(wù)器可以對(duì)全部連接應(yīng)用Cristian算法。
例如,客戶(hù)端裝置可以經(jīng)由兩個(gè)連接:連接1和連接2與服務(wù)器通信??蛻?hù)端裝置可以經(jīng)由每個(gè)連接偶爾發(fā)送具有當(dāng)前時(shí)間T1的包,T1是在發(fā)送包時(shí)的時(shí)間;當(dāng)服務(wù)器接收到該包時(shí),服務(wù)器可以記錄(note)其當(dāng)前時(shí)間T2和用于相關(guān)聯(lián)的網(wǎng)絡(luò)連接的當(dāng)前RTT值,該RTT值可以不斷變化。在服務(wù)器在不同的連接上累積了一定數(shù)量的這些包之后,服務(wù)器可以使用Cristian算法來(lái)計(jì)算平均值。通過(guò)對(duì)多個(gè)連接(與單個(gè)網(wǎng)絡(luò)連接相反)進(jìn)行這種確定,期望的是將提高該技術(shù)的精度。
一旦服務(wù)器已經(jīng)計(jì)算了時(shí)鐘偏差,則服務(wù)器可以可選地通知客戶(hù)端裝置所計(jì)算的時(shí)鐘偏差值。如上所述,捆綁應(yīng)用可能希望知道時(shí)鐘偏差?;蛘?,時(shí)鐘偏差可以與任何捆綁應(yīng)用獨(dú)立且無(wú)關(guān)地來(lái)確定。
圖12示出了用于通過(guò)分析跨多個(gè)連接提供的時(shí)間數(shù)據(jù)來(lái)確定客戶(hù)端裝置與服務(wù)器之間的時(shí)鐘偏差的流程圖1200。該流程圖是從服務(wù)器的角度來(lái)看的。在1202,由客戶(hù)端裝置通過(guò)至少兩個(gè)不同連接發(fā)送的時(shí)間包被接收。在每個(gè)包被接收的時(shí)間點(diǎn),如前所述,從包中提取T1,并記錄T2和RTT。在1204,確定接收的包的數(shù)量是否大于閾值。如果不是,則循環(huán)回到1202,并且服務(wù)器繼續(xù)通過(guò)網(wǎng)絡(luò)連接從客戶(hù)端接收時(shí)間包。如果大于閾值,則在1206,基于從不同連接接收的包以及相關(guān)聯(lián)的T2和RTT值來(lái)確定客戶(hù)端裝置與服務(wù)器之間的時(shí)鐘偏差。在1208,可選地向客戶(hù)端裝置通知所確定的時(shí)鐘偏差。
如前面在圖8中所描述的,CMC還提供能夠利用一個(gè)或多個(gè)連接階段的捆綁應(yīng)用(或者用于獨(dú)立的使用),該連接階段為:正常連接階段;測(cè)試連接階段;和預(yù)先測(cè)試連接階段。正常連接階段對(duì)應(yīng)于網(wǎng)絡(luò)連接在傳送會(huì)話期間以正常模式或測(cè)試模式操作時(shí)所處的階段。相比之下,測(cè)試連接階段和預(yù)先測(cè)試連接階段可以被捆綁應(yīng)用用于在生成器生成實(shí)際數(shù)據(jù)之前的訓(xùn)練階段。當(dāng)處于這兩個(gè)階段中的任一階段時(shí),網(wǎng)絡(luò)連接可以根據(jù)捆綁應(yīng)用的要求在任一方向上發(fā)送假數(shù)據(jù)一段時(shí)間。在該時(shí)間段期間,跟蹤網(wǎng)絡(luò)連接的各個(gè)方面。當(dāng)時(shí)間段完成時(shí),可以分析數(shù)據(jù),并且捆綁應(yīng)用可以出于自己的目的利用該分析。作為一般規(guī)則,如果所有網(wǎng)絡(luò)連接在測(cè)試連接階段或預(yù)先測(cè)試連接階段中操作以便提前了解傳送會(huì)話作為整體將執(zhí)行得如何,則可能是最有利的。可以在分析之后提供的數(shù)據(jù)類(lèi)型的示例可以包括但不限于以下各項(xiàng)中的任何一個(gè)、任何組合或全部:最小的、最大的、平均的和中間的RTT;最小的、最大的、平均的和中間的吞吐量;和測(cè)試模式使用的頻率。通過(guò)提供額外的分析學(xué),例如精確確定每個(gè)包從發(fā)送器傳送到接收器所花費(fèi)的時(shí)間,而將預(yù)先測(cè)試連接階段建立在測(cè)試連接階段的基礎(chǔ)上。重要的是要注意,捆綁應(yīng)用不需要使用測(cè)試連接階段或預(yù)先測(cè)試連接階段,以便成功運(yùn)行。在這點(diǎn)上,捆綁應(yīng)用可以可選地使用測(cè)試連接階段或預(yù)先測(cè)試連接階段。
如前所述,由于信道捆綁的工作方式,訓(xùn)練階段不是必需的。然而,捆綁應(yīng)用在某些情況下仍然可以選擇使用測(cè)試連接階段或預(yù)先測(cè)試連接階段,這取決于這些情況的要求。例如,廣播捆綁應(yīng)用可以通過(guò)能夠在實(shí)際廣播之前確定什么可以用作其生成的編碼媒體的合理的最大比特率而受益于訓(xùn)練會(huì)話。沒(méi)有訓(xùn)練會(huì)話,廣播捆綁應(yīng)用可能需要是保守的,并且總是以相對(duì)低的比特率開(kāi)始,而較低的比特率意味著至少最初的質(zhì)量可能比與較高比特率相關(guān)聯(lián)的質(zhì)量差。
到目前為止,已經(jīng)將信道捆綁描述為等同地處理所有網(wǎng)絡(luò)連接的方法。通過(guò)使用ACK檢查和/或RTT檢查,與不同網(wǎng)絡(luò)連接相關(guān)聯(lián)的連接線程對(duì)包到不同網(wǎng)絡(luò)連接的分發(fā)進(jìn)行公平的管理。比其他連接速度更快、更可靠的網(wǎng)絡(luò)連接將默認(rèn)取得更多包的所有權(quán),而速度較慢和可靠性較低的連接默認(rèn)會(huì)取得較少數(shù)據(jù)包的所有權(quán)。然而,在一個(gè)實(shí)施例中,使某些網(wǎng)絡(luò)連接優(yōu)先于其他網(wǎng)絡(luò)連接是有利的。在這樣的實(shí)施例中,信道捆綁不一定等同地對(duì)待所有網(wǎng)絡(luò)連接。
如圖13的框圖1300中所描述的,存在各種準(zhǔn)則1304可以被CMC用來(lái)使與某些網(wǎng)絡(luò)接口相關(guān)聯(lián)的網(wǎng)絡(luò)連接比與其他網(wǎng)絡(luò)接口相關(guān)聯(lián)的網(wǎng)絡(luò)連接優(yōu)先。這些準(zhǔn)則可以包括但不限于以下:成本1306;數(shù)據(jù)限值1308;位置1310;和一天當(dāng)中的時(shí)刻1312。此外,基于優(yōu)先級(jí)排序準(zhǔn)則,CMC可以使用各種技術(shù)1314來(lái)在實(shí)踐中實(shí)現(xiàn)這種優(yōu)先級(jí)排序。這樣的技術(shù)可以包括但不限于以下:禁用接口1316和加權(quán)1318。對(duì)于準(zhǔn)則和技術(shù)將在下面更詳細(xì)地討論。
成本優(yōu)先級(jí)排序準(zhǔn)則通常涉及使用客戶(hù)端裝置上的特定網(wǎng)絡(luò)接口發(fā)送和/或接收數(shù)據(jù)可能花費(fèi)多少。例如,使用網(wǎng)絡(luò)接口#1傳輸MB值的數(shù)據(jù)(MB worth of data)可能比使用網(wǎng)絡(luò)接口#2傳輸MB值的數(shù)據(jù)更加昂貴。存在多種方式來(lái)確定與不同網(wǎng)絡(luò)接口相關(guān)聯(lián)的貨幣成本。在一個(gè)實(shí)施例中,客戶(hù)端裝置可以維護(hù)用于不同網(wǎng)絡(luò)接口的預(yù)配置值。在另一個(gè)實(shí)施例中,服務(wù)器可以在客戶(hù)端裝置為該網(wǎng)絡(luò)接口建立與服務(wù)器的網(wǎng)絡(luò)連接的時(shí)間點(diǎn)處提供與網(wǎng)絡(luò)接口相關(guān)聯(lián)的值。
數(shù)據(jù)限值標(biāo)準(zhǔn)與可能與特定網(wǎng)絡(luò)接口相關(guān)聯(lián)的潛在數(shù)據(jù)限值有關(guān)。例如,客戶(hù)端裝置中的移動(dòng)寬帶網(wǎng)絡(luò)接口#1可以與運(yùn)營(yíng)商#1相關(guān)聯(lián)。通常,移動(dòng)寬帶運(yùn)營(yíng)商不提供具有無(wú)限數(shù)據(jù)的數(shù)據(jù)計(jì)劃-大多數(shù)數(shù)據(jù)計(jì)劃具有精確的限值,例如每月100GB,并且在規(guī)定的時(shí)間段內(nèi)超過(guò)該限值的任何數(shù)據(jù)使用可以根據(jù)額外的GB來(lái)收費(fèi),或者完全不允許,或者下降到較慢的速度(例如4G到3G甚至2G)。如果與特定網(wǎng)絡(luò)接口相關(guān)聯(lián)的數(shù)據(jù)額度(allowance)接近于被滿足或已經(jīng)被超過(guò),則可以謹(jǐn)慎的是,使其他網(wǎng)絡(luò)接口比這個(gè)網(wǎng)絡(luò)接口優(yōu)先,以節(jié)省資金。在這方面,數(shù)據(jù)限值準(zhǔn)則類(lèi)似于成本準(zhǔn)則。重要的是要注意,數(shù)據(jù)計(jì)劃可能不是特定于單個(gè)客戶(hù)端裝置上的單個(gè)網(wǎng)絡(luò)接口的。單個(gè)數(shù)據(jù)計(jì)劃以及因此單個(gè)數(shù)據(jù)額度可以與同一客戶(hù)端裝置上的多個(gè)網(wǎng)絡(luò)接口相關(guān)聯(lián)甚至可以與跨越多個(gè)客戶(hù)端裝置的多個(gè)網(wǎng)絡(luò)接口相關(guān)聯(lián)。例如,客戶(hù)端裝置#1可以具有均與運(yùn)營(yíng)商#1相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口#1和移動(dòng)寬帶網(wǎng)絡(luò)接口#2。另外,客戶(hù)端裝置#2可以具有也均與運(yùn)營(yíng)商#1相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口#3和移動(dòng)寬帶網(wǎng)絡(luò)接口#4。進(jìn)一步地,相同的數(shù)據(jù)計(jì)劃,并且因此相同的數(shù)據(jù)額度,覆蓋所有四個(gè)裝置?;谶@種情況,在一個(gè)實(shí)施例中,客戶(hù)端裝置可以在適當(dāng)時(shí)通過(guò)查詢(xún)與每個(gè)網(wǎng)絡(luò)接口相關(guān)聯(lián)的運(yùn)營(yíng)商來(lái)在每個(gè)網(wǎng)絡(luò)接口的基礎(chǔ)上確定數(shù)據(jù)限值信息。在另一個(gè)實(shí)施例中,服務(wù)器可以在客戶(hù)端裝置為一個(gè)網(wǎng)絡(luò)接口與服務(wù)器建立網(wǎng)絡(luò)連接的時(shí)間點(diǎn)處提供與此網(wǎng)絡(luò)接口相關(guān)聯(lián)的值。
位置準(zhǔn)則與開(kāi)始傳送會(huì)話之前的客戶(hù)端裝置的物理位置有關(guān)。通過(guò)某種手段,客戶(hù)端裝置(可能與服務(wù)器聯(lián)合起來(lái))在傳送會(huì)話期間跟蹤其當(dāng)前位置以及與傳送會(huì)話相關(guān)聯(lián)的性能數(shù)據(jù)。隨著時(shí)間的過(guò)去,可以編譯對(duì)應(yīng)于位置的性能數(shù)據(jù)的數(shù)據(jù)庫(kù)。如果在該位置下一次進(jìn)行傳輸時(shí),對(duì)于特定位置有足夠的信息可用,那么某些網(wǎng)絡(luò)接口可以?xún)?yōu)先于其他網(wǎng)絡(luò)接口,因?yàn)榭梢詮尼槍?duì)該位置累積的性能數(shù)據(jù)中注意到,在該位置某些網(wǎng)絡(luò)接口比其他網(wǎng)絡(luò)接口工作表現(xiàn)更差。例如,客戶(hù)端裝置可以具有與運(yùn)營(yíng)商#1相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口#1和與運(yùn)營(yíng)商#2相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口#2。在特定位置,與運(yùn)營(yíng)商#1相關(guān)聯(lián)的移動(dòng)寬帶裝置可能獲得良好的信號(hào),而與運(yùn)營(yíng)商#2相關(guān)聯(lián)的移動(dòng)寬帶裝置獲得非常差的信號(hào)??梢詮睦鄯e的位置數(shù)據(jù)確定這樣的信息。
時(shí)刻準(zhǔn)則與位置準(zhǔn)則相似。通過(guò)一些手段,客戶(hù)端裝置(例如與服務(wù)器聯(lián)合起來(lái))基于時(shí)刻、星期幾、日期等來(lái)跟蹤用于傳送會(huì)話的性能數(shù)據(jù)。這種方案也可以把位置考慮在內(nèi)。如果已經(jīng)積累了足夠的性能數(shù)據(jù),則可以確定某些方式。例如,可以記錄,在平日下午5點(diǎn)到6點(diǎn)之間,不管位置如何,與運(yùn)營(yíng)商#1相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口都會(huì)工作得很差。進(jìn)一步地,可以記錄,與運(yùn)營(yíng)商#2相關(guān)聯(lián)的移動(dòng)寬帶網(wǎng)絡(luò)接口在相同的時(shí)間段期間工作良好,而不管位置如何。這樣的數(shù)據(jù)可以用于優(yōu)先級(jí)排序目的。
CMC可以使用過(guò)多的優(yōu)先級(jí)準(zhǔn)則,以便決定如何使某些網(wǎng)絡(luò)接口優(yōu)先于其他網(wǎng)絡(luò)接口。例如,基于數(shù)據(jù),可以決定完全禁用某些網(wǎng)絡(luò)接口。在一個(gè)實(shí)施例中,客戶(hù)端裝置上的CMC可能不會(huì)與用于這種網(wǎng)絡(luò)接口的服務(wù)器建立網(wǎng)絡(luò)連接。作為一個(gè)示例,對(duì)于衛(wèi)星網(wǎng)絡(luò)接口,CMC可以基于成本確定將不建立與衛(wèi)星網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接。在另一個(gè)實(shí)施例中,客戶(hù)端裝置上的CMC可以與用于這種網(wǎng)絡(luò)接口的服務(wù)器建立網(wǎng)絡(luò)連接,但是可以選擇不在傳送會(huì)話期間使用該網(wǎng)絡(luò)連接來(lái)傳送任何數(shù)據(jù)。
在替代實(shí)施例中,CMC可利用加權(quán)。通過(guò)將通過(guò)不同優(yōu)先級(jí)排序準(zhǔn)則確定的所有數(shù)據(jù)納入其中,CMC可以為每個(gè)網(wǎng)絡(luò)接口分配權(quán)重。在一個(gè)更具體的實(shí)施例中,權(quán)重可以采取百分比的形式,其中以該百分比與特定網(wǎng)絡(luò)接口的網(wǎng)絡(luò)連接的連接線程將從發(fā)送或重發(fā)隊(duì)列取得包的所有權(quán)的速率有關(guān)。在100%,連接線程可能完全不受影響,并且可以以與之前在關(guān)于它認(rèn)領(lǐng)新包的所有權(quán)的速率的文檔中描述的方式一樣的方式進(jìn)行操作。然而,在50%時(shí),其從發(fā)送或重發(fā)隊(duì)列認(rèn)領(lǐng)包的速率將是正常速率的一半。在更具體的實(shí)施例中,可以從傳送會(huì)話的開(kāi)始就應(yīng)用這樣的權(quán)重。在另一個(gè)更具體的實(shí)施例中,可以在傳送會(huì)話期間隨時(shí)間應(yīng)用這樣的權(quán)重。
CMC還可以將捆綁應(yīng)用的要求納入等式。某些捆綁應(yīng)用可能比其他捆綁應(yīng)用受優(yōu)先級(jí)排序造成的消極影響更大。例如,在數(shù)據(jù)限值準(zhǔn)則的情況下,對(duì)于運(yùn)營(yíng)商#1的數(shù)據(jù)額度可以比對(duì)于運(yùn)營(yíng)商#2的數(shù)據(jù)額度更快地被到達(dá),因?yàn)橥ǔ?,運(yùn)營(yíng)商#1的數(shù)據(jù)傳送工作地更好。如果與運(yùn)營(yíng)商#1相關(guān)聯(lián)的網(wǎng)絡(luò)接口被賦予的權(quán)重小于與運(yùn)營(yíng)商#2相關(guān)聯(lián)的網(wǎng)絡(luò)接口的權(quán)重或者被完全禁用,則所得到的傳送會(huì)話的總吞吐量和可靠性根據(jù)捆綁應(yīng)用的要求可能是不夠的。在文件傳送捆綁應(yīng)用的情況下,除非文件傳送的速度是糟透的,否則優(yōu)先級(jí)排序可能不會(huì)成為關(guān)注點(diǎn)。然而,在廣播捆綁應(yīng)用的情況下,媒體傳輸?shù)馁|(zhì)量可能是最重要的。在這種情況下,從傳送會(huì)話開(kāi)始時(shí)使用優(yōu)先級(jí)排序技術(shù)可能對(duì)媒體傳輸?shù)馁|(zhì)量具有有害影響。在這樣的環(huán)境中,優(yōu)選的可能是開(kāi)始傳送會(huì)話而不使用任何優(yōu)先級(jí)排序技術(shù),并且一旦已經(jīng)建立傳送會(huì)話,逐漸應(yīng)用這樣的技術(shù)以便計(jì)量(gauge)它們對(duì)傳送會(huì)話的影響可能比較合適。如上所述,客戶(hù)端裝置可以使用多個(gè)網(wǎng)絡(luò)接口。在傳送會(huì)話的背景下可以實(shí)時(shí)(或近實(shí)時(shí)地)監(jiān)視網(wǎng)絡(luò)接口的性能。在替代實(shí)施例中,可以跨不同的傳送會(huì)話監(jiān)視網(wǎng)絡(luò)接口的性能。例如,服務(wù)器可以跨多個(gè)捆綁會(huì)話監(jiān)視與特定客戶(hù)端裝置相關(guān)聯(lián)的特定移動(dòng)寬帶網(wǎng)絡(luò)接口,以確定特定移動(dòng)寬帶網(wǎng)絡(luò)接口是否正常工作。在特定實(shí)施例中,服務(wù)器可以維護(hù)在過(guò)去已經(jīng)用于從每個(gè)特定客戶(hù)端裝置連接到服務(wù)器的不同移動(dòng)寬帶裝置的記錄。如果當(dāng)客戶(hù)端裝置連接到服務(wù)器時(shí),過(guò)去已經(jīng)被使用的特定移動(dòng)寬帶設(shè)備不再連接或表現(xiàn)地不穩(wěn)定(與在先前捆綁會(huì)話中記錄的過(guò)去行為相比),服務(wù)器可以分析數(shù)據(jù)并且,基于某些閾值發(fā)送通知。該通知可以包括服務(wù)器內(nèi)的內(nèi)部通知,或者可以包括對(duì)外部裝置的通知。
如上所述,各種捆綁應(yīng)用可以被捆綁所使用。一種這樣的捆綁應(yīng)用是廣播捆綁應(yīng)用。廣播捆綁應(yīng)用被配置成為通過(guò)一個(gè)或多個(gè)因特網(wǎng)連接(例如通過(guò)使用綁定)從遠(yuǎn)程位置接近實(shí)時(shí)地廣播高質(zhì)量音頻和視頻提供高性能解決方案。在一個(gè)實(shí)施例中,捆綁邏輯可以是模塊化捆綁庫(kù)的形式,其使得能夠創(chuàng)建捆綁應(yīng)用,例如廣播應(yīng)用。
諸如廣播捆綁應(yīng)用的捆綁應(yīng)用可以利用已經(jīng)存在的捆綁庫(kù),并且因此不必關(guān)心捆綁的細(xì)節(jié)。在這方面,捆綁應(yīng)用可以反而關(guān)注于創(chuàng)建捆綁應(yīng)用特有的技術(shù)。
廣播捆綁應(yīng)用具有許多不同的架構(gòu)指導(dǎo)方針:提供高質(zhì)量的音頻和視頻;依賴(lài)于通過(guò)捆綁可用的帶寬支持客戶(hù)端與服務(wù)器之間的接近實(shí)時(shí)的延遲;支持一個(gè)或多個(gè)視頻模式(例如,諸如720p59.94和1080i59.94的視頻模式)。
給定了上述架構(gòu)指導(dǎo)方針時(shí),可以使用以下架構(gòu)細(xì)節(jié):使用高級(jí)視頻和音頻編碼/解碼能力,以便將原始視頻和音頻壓縮到合理的大小,以便通過(guò)捆綁進(jìn)行傳輸(以便滿足接近實(shí)時(shí)的延遲指導(dǎo)方針);支持視頻編碼的可變比特率(以滿足高質(zhì)量音頻和視頻要求和接近實(shí)時(shí)延遲指導(dǎo)方針);音頻和視頻保持同步(以滿足高質(zhì)量的音頻和視頻指導(dǎo)方針);減少或最小化聯(lián)網(wǎng)問(wèn)題的影響,以便減少媒體停頓或臨時(shí)凍結(jié)的機(jī)會(huì)(以便滿足高質(zhì)量音頻和視頻要求和接近實(shí)時(shí)延遲指導(dǎo)方針)。
另外,存在針對(duì)廣播解決方案的多個(gè)不同的硬件指導(dǎo)方針,其中一些遵循架構(gòu)指導(dǎo)方針:能夠經(jīng)由客戶(hù)端上的串行數(shù)字接口(SDI)輸入端來(lái)接收音頻和視頻數(shù)據(jù);能夠經(jīng)由服務(wù)器上的SDI輸出端來(lái)輸出音頻和視頻數(shù)據(jù);支持在客戶(hù)端上對(duì)原始視頻幀的硬件編碼和在服務(wù)器上對(duì)編碼視頻幀的硬件解碼;易于運(yùn)輸和帶到現(xiàn)場(chǎng)。SDI是數(shù)字視頻接口系列,是數(shù)字視頻接口的一個(gè)示例。高清串行數(shù)字接口(HD-SDI)是數(shù)字視頻接口的另一個(gè)例子。可以設(shè)想到其他視頻接口,例如HDMI。
廣播系統(tǒng)可以涉及用戶(hù)交互、硬件和軟件。廣播的事件的一般序列的示例如下:
(1)用戶(hù)經(jīng)由SDI電纜將音頻/視頻輸入源連接到客戶(hù)端裝置。在一個(gè)實(shí)施例中,輸入源是攝像機(jī)?;蛘撸梢栽O(shè)想到其他輸入源。
(2)用戶(hù)啟動(dòng)客戶(hù)端裝置軟件,其使用捆綁連接到服務(wù)器。
(3)用戶(hù)與客戶(hù)端裝置軟件交互以發(fā)起廣播。
(4)當(dāng)廣播是活動(dòng)的時(shí):在客戶(hù)端裝置上,軟件可以周期性地或連續(xù)地從SDI輸入端檢索音頻樣本和視頻幀并對(duì)媒體數(shù)據(jù)進(jìn)行編碼。使編碼數(shù)據(jù)對(duì)于捆綁可用,捆綁將數(shù)據(jù)發(fā)送到服務(wù)器;在服務(wù)器上,軟件可以連續(xù)地或周期性地檢查通過(guò)捆綁接收的被編碼的音頻和視頻數(shù)據(jù),并且當(dāng)其變得可用時(shí),數(shù)據(jù)被解碼。該解碼數(shù)據(jù)又通過(guò)SDI發(fā)送以供電視臺(tái)使用,可能用于通過(guò)網(wǎng)絡(luò)電視的直播。
(5)用戶(hù)與客戶(hù)端軟件交互以停止廣播。
(6)用戶(hù)從客戶(hù)端系統(tǒng)斷開(kāi)輸入源。
該序列可以省略廣播會(huì)話中的某些細(xì)節(jié);然而,上述序列仍然反映了廣播會(huì)話的總體狀況。
圖14示出了客戶(hù)端裝置的框圖1400,其執(zhí)行對(duì)媒體的編碼和/或解碼,并利用多個(gè)網(wǎng)絡(luò)接口來(lái)傳輸經(jīng)編碼的媒體。如前所述,客戶(hù)端裝置具有一個(gè)或多個(gè)網(wǎng)絡(luò)接口。此外,其具有執(zhí)行捆綁邏輯和捆綁應(yīng)用邏輯的處理器304。在這種情況下,它在執(zhí)行與廣播捆綁應(yīng)用相關(guān)聯(lián)的特定捆綁應(yīng)用邏輯。如前所述,客戶(hù)端裝置必須具有經(jīng)由SDI連接從外部輸入(諸如相機(jī))接收原始視頻和音頻的裝置。這由硬件媒體接口1412代表,在該示例中,硬件媒體接口1412(例如通過(guò)使用SDI電纜)連接到相機(jī)1414。相機(jī)將原始視頻和音頻遞送到硬件媒體接口,硬件媒體接口又將其遞送到處理器以供進(jìn)一步使用。處理器還可以出于硬件編碼(例如,用于視頻編碼)的目的而使用硬件部件1408。出于硬件解碼(例如,用于視頻解碼)的目的,處理器還可以使用硬件部件1410。硬件解碼可以通常僅僅在以下情況中使用:在服務(wù)器上運(yùn)行的捆綁應(yīng)用具有生成編碼媒體以供客戶(hù)端裝置消耗(或者更具體地,用于作為捆綁應(yīng)用的一部分在客戶(hù)端上運(yùn)行的消費(fèi)者消耗)的生產(chǎn)者。這種場(chǎng)景可能出現(xiàn)在諸如IFB或返回視頻饋送之類(lèi)的使用情況,這將在后面討論。在一個(gè)實(shí)施例中,客戶(hù)端裝置102僅包括硬件編碼1408。在替代實(shí)施例中,客戶(hù)端裝置102僅包括硬件解碼1410。在另一替代實(shí)施例中,客戶(hù)端裝置102包括硬件編碼1408和硬件解碼1410。硬件編碼和硬件解碼可以由計(jì)算機(jī)中的物理硬件子系統(tǒng)提供。例如,它們可以由作為處理器304的一部分的硬件子系統(tǒng)提供。處理器304可以包括處理器,諸如具有包括快速同步視頻的圖形組件的處理器,其可以用于H.264硬件編碼和/或解碼。在這方面,快速同步視頻包括編碼和解碼功能,而不需要依靠外部硬件卡來(lái)經(jīng)由H.264進(jìn)行編碼或解碼。因此,快速同步視頻潛在地加速了編碼和解碼,同時(shí)使處理器606能夠完成其他任務(wù)。存在用于編碼和解碼H.264視頻的多種其它硬件選項(xiàng)。
在如前所述的硬件媒體接口用于SDI輸入的情況下,用于SDI輸入的一個(gè)硬件選項(xiàng)是內(nèi)部附加卡(例如PCI 卡)。此硬件選項(xiàng)可用于臺(tái)式機(jī)、服務(wù)器系統(tǒng)或使用定制機(jī)箱和可能的其他定制部件的定制系統(tǒng)。另一個(gè)硬件選項(xiàng)包括可以例如通過(guò)USB、Thunderbolt或ExpressCard連接到計(jì)算機(jī)的外部裝置。
圖14進(jìn)一步示出數(shù)據(jù)輸入(例如,經(jīng)編碼的視頻和/或音頻)和數(shù)據(jù)輸出(例如,經(jīng)編碼的視頻和/或音頻)。在一個(gè)實(shí)施例中,客戶(hù)端裝置102經(jīng)由捆綁僅輸出數(shù)據(jù)。這描述了典型的廣播捆綁應(yīng)用布置,因?yàn)閺V播捆綁應(yīng)用將典型地在客戶(hù)端裝置上提供生產(chǎn)者,為的是從經(jīng)由硬件媒體接口輸入的原始音頻和視頻數(shù)據(jù)生成分包的編碼媒體。在替代實(shí)施例中,客戶(hù)端裝置102經(jīng)由捆綁僅輸入數(shù)據(jù)。這樣的布置將不對(duì)應(yīng)于典型的廣播應(yīng)用,因?yàn)闆](méi)有數(shù)據(jù)正由客戶(hù)端裝置廣播到服務(wù)器。在又一個(gè)實(shí)施例中,客戶(hù)端裝置102經(jīng)由捆綁既輸入又輸出數(shù)據(jù)。這種布置描述了對(duì)典型的廣播捆綁應(yīng)用布置的增強(qiáng),其中除了客戶(hù)端向服務(wù)器廣播數(shù)據(jù)之外,服務(wù)器為某些目的(例如,如上所述和下面討論的IFB或返回視頻饋送)向客戶(hù)端提供一些數(shù)據(jù)。
客戶(hù)端裝置102還可以包括用于用戶(hù)與客戶(hù)端裝置102交互的用戶(hù)界面。用戶(hù)界面可以包括觸摸屏、鼠標(biāo)和/或鍵盤(pán)輸入。因此,一種選擇是提供觸摸屏并滿足如上文針對(duì)圖14所討論的硬件草案的混合式膝上型/平板電腦。膝上型電腦可包括一個(gè)或多個(gè)USB端口。USB調(diào)制解調(diào)器可以包括移動(dòng)寬帶功能,并且可以經(jīng)由USB端口連接。另一個(gè)選擇是創(chuàng)建具有自己的機(jī)箱和可能的其他定制硬件的定制計(jì)算解決方案。
如上所述,存在廣播捆綁應(yīng)用可以執(zhí)行以便從客戶(hù)端裝置上的原始音頻/視頻數(shù)據(jù)變成到服務(wù)器上的原始音頻/視頻數(shù)據(jù)的幾個(gè)步驟??蛻?hù)端裝置可以對(duì)原始的、未壓縮的媒體數(shù)據(jù)進(jìn)行編碼。然后,編碼數(shù)據(jù)通過(guò)捆綁被發(fā)送到服務(wù)器。在服務(wù)器上,編碼數(shù)據(jù)被解碼,產(chǎn)生原始的未壓縮媒體數(shù)據(jù)??梢源嬖趯⒃紨?shù)據(jù)轉(zhuǎn)換為其他像素格式的額外的特定于實(shí)現(xiàn)的步驟。
所有這些步驟導(dǎo)致被稱(chēng)為廣播開(kāi)銷(xiāo)的時(shí)間成本。因此,在當(dāng)客戶(hù)端裝置從輸入源接收原始音頻/視頻數(shù)據(jù)的時(shí)候與當(dāng)服務(wù)器輸出等效的原始音頻/視頻數(shù)據(jù)的時(shí)候之間,將存在一些實(shí)時(shí)延遲(或者稱(chēng)為初始延遲或簡(jiǎn)單延遲)。例如,如果客戶(hù)端裝置在12:00:00PM開(kāi)始廣播,則服務(wù)器可能在12:00:03PM之前不會(huì)播放第一幀,指示3秒的初始延遲。上述各個(gè)步驟負(fù)責(zé)初始延遲??梢耘κ共煌襟E盡可能地快,同時(shí)盡可能保持最高質(zhì)量的音頻和視頻。
如上所述,編碼技術(shù)可以用作廣播處理的一部分。因此,編碼技術(shù)使得能夠傳輸高質(zhì)量視頻。如果考慮諸如720p的視頻格式,具有1280×720分辨率的逐行格式(progressive format),則在單個(gè)視頻幀中典型地有1843200個(gè)字節(jié)。使用59.94幀每秒(fps)的廣播標(biāo)準(zhǔn)幀速率,這意味著僅僅對(duì)于原始視頻數(shù)據(jù),將需要具有至少883Mbps(兆比特每秒)的吞吐量的網(wǎng)絡(luò)管道。這樣大量的帶寬在移動(dòng)領(lǐng)域是不現(xiàn)實(shí)的,甚至10個(gè)移動(dòng)寬帶連接的總吞吐量也不能提供足夠的聚合網(wǎng)絡(luò)管道。
這樣,壓縮原始數(shù)據(jù)可以減少要傳輸?shù)臄?shù)據(jù)量。對(duì)于音頻和視頻,這可以使用高級(jí)編碼器來(lái)執(zhí)行。編碼方案的一個(gè)示例是H.264/AVC編解碼器,其可以用于對(duì)視頻數(shù)據(jù)進(jìn)行編碼。另一示例壓縮方案是AAC編解碼器,其可以用于對(duì)音頻數(shù)據(jù)進(jìn)行編碼。兩種編解碼器可以分別產(chǎn)生處于相對(duì)低的比特率的高質(zhì)量的視頻和音頻結(jié)果。這意味著與使用其他編解碼器相比,可以需要傳輸更少的數(shù)據(jù),就能獲得相同的質(zhì)量水平。
H.264和AAC編解碼器的實(shí)現(xiàn)方式有許多種。在一個(gè)實(shí)施例中,兩種編解碼器可以以硬件的形式實(shí)現(xiàn)。在替代實(shí)施例中,兩種編解碼器可以軟件的形式實(shí)現(xiàn)。在另一個(gè)替代實(shí)施例中,H.264編解碼器可以硬件形式實(shí)現(xiàn),AAC編解碼器可以軟件形式實(shí)現(xiàn)。編碼器(和解碼器)的速度與廣播捆綁應(yīng)用相關(guān),因?yàn)槿缟纤?,?duì)視頻和音頻進(jìn)行編碼所需的時(shí)間越長(zhǎng),在客戶(hù)端裝置與服務(wù)器之間的延遲就越高。
例如,由于音頻編碼的計(jì)算密集程度小于視頻編碼,所以可以使用軟件AAC編碼器。此外,為了向服務(wù)器遞送低延遲視頻,可能需要使用硬件H.264編碼器。對(duì)于基于硬件的H.264編碼器存在各種選項(xiàng)。一個(gè)選項(xiàng)是使用單獨(dú)的附加卡或外部裝置。這些選項(xiàng)對(duì)于在服務(wù)器端解碼是很好的,但是從客戶(hù)端的角度來(lái)看,這些選項(xiàng)可能有問(wèn)題,為了便于傳輸希望客戶(hù)端為移動(dòng)的形態(tài)因素。另一個(gè)選項(xiàng)是使用處理器或母板的內(nèi)置功能-該方法消除了僅為編碼和/或解碼提供單獨(dú)硬件的需要。例如,快速同步視頻可以用于在客戶(hù)端裝置上對(duì)H.264視頻進(jìn)行編碼,并且是內(nèi)置在許多Intel處理器上的圖形部件中的技術(shù)。在這點(diǎn)上,不再需要單獨(dú)的硬件產(chǎn)品來(lái)處理客戶(hù)端裝置上的H.264編碼,而是快速同步視頻可以與英特爾處理器結(jié)合起來(lái)使用,以在沒(méi)有任何附加硬件的情況下實(shí)現(xiàn)H.264編碼。因此,單個(gè)設(shè)備就可以用于處理和編碼/解碼功能。
如上所述,消費(fèi)者(在上面討論的生產(chǎn)者/消費(fèi)者模型中)可以具有一個(gè)或多個(gè)緩沖器,CMC根據(jù)存儲(chǔ)在包中的數(shù)據(jù)類(lèi)型將接收的包置于該一個(gè)或多個(gè)緩沖器中。進(jìn)一步地,在廣播捆綁應(yīng)用的環(huán)境中,消費(fèi)者可以具有多個(gè)緩沖器,諸如視頻緩沖器和音頻緩沖器。
在一個(gè)實(shí)施例中,緩沖器(例如視頻緩沖器和/或音頻緩沖器)的大小可以是預(yù)定的。在替代實(shí)施例中,緩沖器的大小可以是動(dòng)態(tài)的。例如,如上所述,在廣播捆綁應(yīng)用的消費(fèi)者中,軟件可以連續(xù)地或周期性地檢查通過(guò)捆綁接收到(并且被CMC放置在音頻或視頻緩沖器中)的已編碼的音頻和視頻數(shù)據(jù),并且在該數(shù)據(jù)變得可用時(shí),數(shù)據(jù)被解碼。該已解碼的數(shù)據(jù)又在SDI上播出。對(duì)已編碼的視頻數(shù)據(jù)進(jìn)行深入探討,在將該數(shù)據(jù)提供給H.264硬件解碼器之后,解碼器產(chǎn)生已解碼的視頻幀。這些視頻幀是原始的未壓縮視頻幀,消耗著與客戶(hù)端側(cè)上的原始未壓縮視頻幀相同數(shù)量的字節(jié)。這樣的幀在理論上適合于直接在SDI上回放,但是很可能的是,由于SDI回放硬件的要求,它們可能需要被轉(zhuǎn)換為另一種像素格式。例如,快速同步視頻解碼成NV12像素格式,而一些SDI解決方案要求視頻采用UYVY像素格式??赡苄枰伾D(zhuǎn)換步驟以在兩種像素格式之間轉(zhuǎn)換。
一旦消費(fèi)者具有處于可以通過(guò)SDI回放硬件發(fā)出的像素格式的單個(gè)視頻幀,理論上,可以立即發(fā)送該幀用于回放。然而,這通常是不可取的。一旦回放開(kāi)始,目的是視頻和音頻均應(yīng)該在此時(shí)間點(diǎn)之后連續(xù)播放。回到59.94fps的廣播標(biāo)準(zhǔn)視頻幀速率,在播放第一視頻幀之后,如果另一個(gè)視頻幀大致在0.01668秒之后沒(méi)有準(zhǔn)備好播放,則這將不會(huì)產(chǎn)生流暢的視頻。
而是,一個(gè)或多個(gè)緩沖器可以用于累積與視頻相關(guān)聯(lián)的幀。在一個(gè)實(shí)施例中,可以使用單獨(dú)的緩沖器來(lái)累積準(zhǔn)備好在SDI上回放的視頻幀(和用于音頻樣本的另一個(gè))。這些緩沖器與CMC將分包數(shù)據(jù)放入的音頻和視頻緩沖器是分離開(kāi)。一旦足夠大小的緩沖器已經(jīng)被填充以準(zhǔn)備好要回放的視頻幀(或音頻樣本),則可以開(kāi)始回放。該緩沖器可以是循環(huán)緩沖器。更具體地,在回放開(kāi)始后當(dāng)新幀變得可用于回放時(shí),使用FIFO方案將這些新幀插入到緩沖器中。
此外,在緩沖器中累積預(yù)定量的數(shù)據(jù)所需的時(shí)間稱(chēng)為初始緩沖時(shí)段。這個(gè)時(shí)間影響初始延遲。也就是說(shuō),如果緩沖器的大小使得回放僅在已經(jīng)累積了X秒的媒體之后才開(kāi)始,則初始延遲可以計(jì)算為X加上廣播開(kāi)銷(xiāo)。與廣播開(kāi)銷(xiāo)相關(guān)聯(lián)的時(shí)間量是可變的。最可變的量是將數(shù)據(jù)從客戶(hù)端裝置發(fā)送到服務(wù)器所需的時(shí)間,因?yàn)樵诙鄠€(gè)網(wǎng)絡(luò)連接中網(wǎng)絡(luò)條件可能不斷波動(dòng)。編碼/解碼開(kāi)銷(xiāo)也可能在較小程度上變化,這取決于視頻的復(fù)雜性。
在一個(gè)實(shí)施例中,緩沖器的大小可以取決于數(shù)據(jù)流的傳輸?shù)闹辽僖粋€(gè)方面。在更具體的實(shí)施例中,緩沖器的大小可以基于廣播開(kāi)銷(xiāo)(例如,基于廣播開(kāi)銷(xiāo)的估計(jì))。例如,緩沖器的大小可以基于廣播開(kāi)銷(xiāo)和/或基于廣播開(kāi)銷(xiāo)的變化。更具體地,如果網(wǎng)絡(luò)條件通常是非常多變的,則可能選擇更大的緩沖器大小以具有足夠的“緩沖器”是合理的。
存在不同的方法可用于評(píng)估網(wǎng)絡(luò)條件,作為確定廣播開(kāi)銷(xiāo)的手段,因?yàn)槿缜八觯瑥V播開(kāi)銷(xiāo)的最多變的方面是捆綁。一種方法是使用先前討論的預(yù)先測(cè)試連接階段,以便建立各個(gè)網(wǎng)絡(luò)連接執(zhí)行的良好程度。在收集該數(shù)據(jù)之后,客戶(hù)端裝置上的廣播應(yīng)用可以具有足夠的信息來(lái)確定理想的緩沖器大小應(yīng)該是多少。預(yù)先測(cè)試連接階段的一個(gè)方面是確定在預(yù)先測(cè)試連接階段中發(fā)送的每個(gè)單獨(dú)包需要多長(zhǎng)時(shí)間才能被服務(wù)器實(shí)時(shí)接收??梢曰谧畈罱Y(jié)果來(lái)選擇緩沖器大小。例如,如果向服務(wù)器發(fā)送包X比任何其他包花費(fèi)更長(zhǎng)的時(shí)間,則客戶(hù)端裝置可以利用該持續(xù)時(shí)間,將其添加到用于編碼和解碼的開(kāi)銷(xiāo)量的估計(jì)中,并且計(jì)算考慮了這一點(diǎn)的理想緩沖器大小。
或者,在廣播會(huì)話期間,在網(wǎng)絡(luò)條件可能顯著改變的情況下,例如當(dāng)客戶(hù)端裝置是移動(dòng)的(例如,客戶(hù)端裝置在移動(dòng)車(chē)輛內(nèi)部)時(shí),嘗試動(dòng)態(tài)地確定理想緩沖器大小可能產(chǎn)生不一致的結(jié)果。例如,如果客戶(hù)端在廣播期間處于移動(dòng)的車(chē)輛中,則隨著不同的移動(dòng)寬帶網(wǎng)絡(luò)進(jìn)入和移出范圍,網(wǎng)絡(luò)條件可能不斷變化。當(dāng)網(wǎng)絡(luò)條件非常好時(shí),可以完整地完成緩沖器大小的自動(dòng)確定,并且這可能導(dǎo)致對(duì)于整個(gè)廣播來(lái)說(shuō)太小的緩沖器大小。在這種環(huán)境中,優(yōu)選的可能是預(yù)先選擇出相對(duì)高的固定量的緩沖器大小,以便具有足夠大的“緩沖器”來(lái)適應(yīng)非常多變的網(wǎng)絡(luò)質(zhì)量。
例如,如果緩沖器大小是兩秒,這意味著在消費(fèi)者已經(jīng)累積了兩秒的原始媒體(初始緩沖時(shí)段)之后,將開(kāi)始回放。如果準(zhǔn)備好回放的原始媒體繼續(xù)以與在初始緩沖時(shí)段期間被變得可用的速率相同的速率變得可用,則在廣播期間應(yīng)當(dāng)沒(méi)有問(wèn)題,并且緩沖器應(yīng)當(dāng)在廣播的存在期期間繼續(xù)包含大約夠放兩秒的媒體。然而,如果速率減小,則在緩沖器中可用于回放的幀的數(shù)量將開(kāi)始減少。雖然緩沖器的大小被調(diào)整成使得其可以累積夠放兩秒的媒體,但是它可以?xún)H被填充以1.5秒的媒體。此后,由于網(wǎng)絡(luò)條件惡化,緩沖器中的數(shù)據(jù)量可以減少到1秒、0.5秒,并且最終減少到0,因?yàn)閹蝗坑帽M而沒(méi)有足夠快地重新填充。如果緩沖區(qū)中的幀數(shù)下降到0,那么將出現(xiàn)如前所述的問(wèn)題。在此示例中,如果緩沖器大小改為4秒,那么可能被填充得足以適應(yīng)非常多變的網(wǎng)絡(luò)條件。緩沖器在開(kāi)始時(shí)可能具有4秒的媒體,在網(wǎng)絡(luò)急劇變差時(shí)具有的媒體可能下降到2秒,然后當(dāng)網(wǎng)絡(luò)穩(wěn)定時(shí),具有的媒體爬升回到4秒。
從用戶(hù)的角度來(lái)說(shuō),為緩沖器選擇理想尺寸可能是具有挑戰(zhàn)性的。用戶(hù)不太可能具有足夠的信息和專(zhuān)業(yè)技術(shù)能在開(kāi)始廣播之前估計(jì)廣播開(kāi)銷(xiāo)。一種方法是使用足夠大的緩沖器大小,以便適應(yīng)大多數(shù)潛在的廣播開(kāi)銷(xiāo)情況。也許緩沖區(qū)大小為5秒就足夠了。在這種情況下,如果例如廣播開(kāi)銷(xiāo)為1.5秒,則這轉(zhuǎn)換成初始延遲為6.5秒(廣播開(kāi)銷(xiāo)的1.5秒和填充緩沖器的5秒)。然而,從實(shí)時(shí)移除的廣播越多,對(duì)于演播室來(lái)說(shuō)使用廣播技術(shù)來(lái)提示和管理遠(yuǎn)程記者就變得越困難。如果記者理應(yīng)在特定時(shí)間出現(xiàn)在廣播中(稱(chēng)為剛好開(kāi)始(hit)),則為此,記者必須在剛好開(kāi)始之前6.5秒由在臺(tái)上的某人來(lái)提供提示信息,以便看起來(lái)好像記者正在“現(xiàn)場(chǎng)”報(bào)告。這需要電視臺(tái)處的資源,該資源否則可以用于別的東西。在理論上,不管初始延遲如何,有人必須總是給記者提供提示信息。然而,如果初始延遲為2.5秒或更短,則記者可以通過(guò)電話(或其他解決方案,例如下面討論的可中斷式反饋(IFB))傾聽(tīng)實(shí)況廣播,并且當(dāng)記者聽(tīng)到他/她的提示時(shí),即廣播中緊鄰剛好開(kāi)始之前的時(shí)間點(diǎn),記者開(kāi)始行動(dòng)。在技術(shù)上,在另外2.5秒或更少的時(shí)段中,臺(tái)上不能夠出現(xiàn)剛好開(kāi)始的情況。因此,這導(dǎo)致廣播中的短間隙;然而,對(duì)于TV廣播的目的而言,該間隙可被認(rèn)為是可接受的。更高的間隙可能被觀察者注意到,并將受益于在臺(tái)上的某個(gè)人精確的計(jì)時(shí)。
在替代實(shí)施例中,緩沖器的大小可以由用戶(hù)配置-這種方法早先在移動(dòng)車(chē)輛的上下文中被暗示過(guò)。在特定實(shí)施例中,用戶(hù)可以直接配置緩沖器的大小。例如,可以在客戶(hù)端裝置的用戶(hù)界面中向用戶(hù)呈現(xiàn)允許輸入特定緩沖器大小的文本框。例如,如果指定了2.5秒的緩沖器大小,這意味著當(dāng)廣播會(huì)話開(kāi)始時(shí),消費(fèi)者(在這種情況下,在服務(wù)器上運(yùn)行)將創(chuàng)建大小能存儲(chǔ)至少2.5秒的視頻幀的視頻緩沖器幀和大小能存儲(chǔ)至少2.5秒的音頻數(shù)據(jù)的音頻緩沖器。在替代的特定實(shí)施例中,用戶(hù)可間接配置緩沖器的大小。如上所述,緩沖器的大小連同廣播開(kāi)銷(xiāo)一起決定了媒體的重放中的初始延遲。不是在用戶(hù)界面中指定緩沖器大小,而是用戶(hù)可以指定延遲。作為響應(yīng),可能有必要發(fā)起訓(xùn)練會(huì)話(使用如前所述的預(yù)先測(cè)試連接階段)以便估計(jì)廣播開(kāi)銷(xiāo)。一旦確定了廣播開(kāi)銷(xiāo),這就提供了足夠的信息來(lái)確定適當(dāng)?shù)木彌_器大小以匹配所請(qǐng)求的延遲。例如,如果用戶(hù)選擇4秒的延遲,并且廣播開(kāi)銷(xiāo)被確定為1.5秒,則緩沖器應(yīng)當(dāng)被調(diào)整大小成存儲(chǔ)2.5秒的媒體。
涉及使用訓(xùn)練會(huì)話(例如,使用先前描述的預(yù)先測(cè)試連接階段)的調(diào)整原始媒體緩沖器的大小的任何方法意味著當(dāng)用戶(hù)發(fā)起廣播時(shí)不能立即開(kāi)始廣播。執(zhí)行訓(xùn)練會(huì)話、分析結(jié)果以及基于這些結(jié)果做出決定需要一定量的時(shí)間。相反,如果選擇了固定的緩沖器大小,則一旦用戶(hù)發(fā)起廣播,則廣播在技術(shù)上就已經(jīng)開(kāi)始。消費(fèi)者將不發(fā)起媒體回放,直至緩沖器已經(jīng)累積了如由固定緩沖器大小指定的足夠多的媒體,但是一旦發(fā)生這種情況,累積的媒體等于緩沖器大小加上廣播開(kāi)銷(xiāo),如前所述,回放開(kāi)始。因此,在某些情況下優(yōu)選使用固定的緩沖器大小。
聯(lián)網(wǎng)條件可以是非常多變的。當(dāng)廣播開(kāi)始時(shí),跨傳送會(huì)話中的不同網(wǎng)絡(luò)連接的網(wǎng)絡(luò)條件可以是優(yōu)秀的,從而容易地允許例如4Mbps編碼視頻流被發(fā)送到服務(wù)器。然而,五分鐘后,情況可能由于多種原因而改變,并且現(xiàn)在,捆綁的網(wǎng)絡(luò)連接的組合吞吐量只能滿足1.5Mbps的編碼視頻流(除了傳送編碼音頻和任何附加開(kāi)銷(xiāo)所需的數(shù)據(jù))。例如,在移動(dòng)寬帶的情況下,運(yùn)營(yíng)商與五分鐘之前的情況相比可能在網(wǎng)絡(luò)上經(jīng)歷更多的使用(來(lái)自其他蜂窩客戶(hù))。蜂窩信號(hào)可能以某種方式波動(dòng)?;蛘?,可能存在因特網(wǎng)路由問(wèn)題。無(wú)論如何,聯(lián)網(wǎng)條件可能變化。
由于聯(lián)網(wǎng)條件的易變性,可以動(dòng)態(tài)地調(diào)整用于對(duì)媒體進(jìn)行編碼的比特率。例如,在一個(gè)實(shí)施例中,可以動(dòng)態(tài)調(diào)整視頻被編碼(例如通過(guò)使用H.264編碼器)的比特率。通常,以比視頻低的比特率對(duì)音頻進(jìn)行編碼。因此,動(dòng)態(tài)比特率調(diào)整可以?xún)H關(guān)注調(diào)整視頻編碼比特率。在替代實(shí)施例中,可以調(diào)整對(duì)音頻進(jìn)行編碼的比特率。在另一替代實(shí)施例中,可以調(diào)整對(duì)視頻和音頻兩者進(jìn)行編碼的比特率。
改變比特率會(huì)改變每個(gè)時(shí)間段的編碼輸出數(shù)據(jù)的量。一般情況下,當(dāng)編碼視頻流的比特率下降時(shí),編碼視頻流的質(zhì)量也下降。另外,當(dāng)編碼視頻流的比特率上升時(shí),編碼視頻流的質(zhì)量也上升,但是如果比特率增加超過(guò)某一點(diǎn),則可感知質(zhì)量將僅稍微上升或根本不上升。
一個(gè)實(shí)施例包括確定是否改變比特率(和/或改變了多少)。在更具體的實(shí)施例中,該確定可以由消費(fèi)者單獨(dú)執(zhí)行。例如,當(dāng)從客戶(hù)端裝置向服務(wù)器廣播視頻時(shí),消費(fèi)者可以基于消費(fèi)者對(duì)視頻的處理的至少一個(gè)方面(例如,將當(dāng)前存儲(chǔ)在緩沖器中的視頻幀的數(shù)量與緩沖器中能夠存儲(chǔ)的視頻幀的數(shù)量相比較)來(lái)請(qǐng)求對(duì)比特率的調(diào)整。消費(fèi)者只能做出比特率調(diào)整請(qǐng)求,因?yàn)樗窃诳蛻?hù)端上運(yùn)行的負(fù)責(zé)將視頻編碼的生產(chǎn)者。在替代的更具體的實(shí)施例中,該確定可以由生產(chǎn)者單獨(dú)執(zhí)行。例如,當(dāng)從客戶(hù)端裝置向服務(wù)器廣播視頻時(shí),生產(chǎn)者設(shè)備可以響應(yīng)于由CMC通知傳送會(huì)話中的網(wǎng)絡(luò)連接之一有問(wèn)題而決定修改比特率,如以下更詳細(xì)討論的那樣。在另一個(gè)可替代的更具體的實(shí)施例中,該確定可以由生產(chǎn)者和消費(fèi)者執(zhí)行(例如,在一個(gè)實(shí)例中,生產(chǎn)者可以確定是否改變比特率,以及在另一個(gè)實(shí)例中,消費(fèi)者可以確定是否改變比特率)。在這方面,這種確定(無(wú)論是由生產(chǎn)者、消費(fèi)者還是由生產(chǎn)者和消費(fèi)者二者做出的確定)可以指示何時(shí)比特率應(yīng)該增加或減少以及增加或減少多少。
如上所述,改變比特率的一種方式是通過(guò)消費(fèi)者控制的比特率調(diào)整請(qǐng)求進(jìn)行。在從客戶(hù)端裝置向服務(wù)器廣播的環(huán)境中,消費(fèi)者可以控制比特率調(diào)整。如前所述,消費(fèi)者維護(hù)準(zhǔn)備好通過(guò)SDL播出的視頻幀的循環(huán)緩沖器。在確定是否改變比特率以及改變多少時(shí),消費(fèi)者可以分析緩沖器的至少一個(gè)方面(諸如緩沖器的“健康狀況“)。由于在客戶(hù)端裝置上運(yùn)行的生產(chǎn)者正在廣播的環(huán)境中執(zhí)行編碼,所以在服務(wù)器上運(yùn)行的消費(fèi)者可以向生產(chǎn)者通知比特率改變請(qǐng)求,以便實(shí)現(xiàn)比特率改變。
消費(fèi)者可以分析緩沖器以生成緩沖器被填充了多少的指示。例如,緩沖器的大小可以被調(diào)整成使得它可以包含X個(gè)視頻幀,并且緩沖器當(dāng)前可以在其中存儲(chǔ)了Y個(gè)視頻幀??梢詤⒖糥來(lái)審查Y,以便生成緩沖器被填充了多少的指示。該審查可以為緩沖器產(chǎn)生不同類(lèi)別的健康度(healthiness)。健康度的例子包括但不限于:
非常健康:(7/8)*X<Y
中等健康:
如果X≤120:(1/2)*X<Y≤(7/8)*X
如果X>120:(11/120)*X<Y≤(7/8)*X
如果值Y不符合上面定義的非常健康或中等健康的類(lèi)別,則視頻緩沖器可被認(rèn)為是不健康的。上述公式僅用于說(shuō)明??梢栽O(shè)想到用于評(píng)估緩沖器的狀態(tài)的其他規(guī)則。
視頻緩沖器還可經(jīng)歷各種水平的不健康度,下文將更詳細(xì)地論述。緩沖器的健康度或不健康度的各種水平僅僅是為了說(shuō)明的目的。可以設(shè)想到其它指示。
消費(fèi)者可以根據(jù)緩沖器的健康度水平和/或根據(jù)當(dāng)前比特率來(lái)請(qǐng)求比特率增量。例如,消費(fèi)者可以只有在緩沖器的狀態(tài)在足夠量的時(shí)間內(nèi)保持在健康類(lèi)別中的時(shí)候才請(qǐng)求比特率增量。消費(fèi)者等待的足夠多的時(shí)間量可以取決于當(dāng)前比特率。例如,當(dāng)前比特率越高,消費(fèi)者可以在比特率增量之間等待的時(shí)間量越長(zhǎng)。在這方面,達(dá)到更高的比特率是更難的,因?yàn)楫?dāng)比特率增加時(shí),緩沖器必須在健康狀態(tài)中保持更長(zhǎng)的時(shí)間段。這是設(shè)計(jì)造成的,因?yàn)榕c較高比特率相關(guān)聯(lián)的風(fēng)險(xiǎn)更多。在一個(gè)實(shí)施例中,消費(fèi)者可以不請(qǐng)求超過(guò)某一執(zhí)行定義的最大比特率的比特率增量。
在一個(gè)實(shí)施例中,最大比特率是靜態(tài)的。在替代實(shí)施例中,最大比特率是變化的。例如,最大比特率可以根據(jù)傳送會(huì)話中的活動(dòng)連接(例如,發(fā)送實(shí)際數(shù)據(jù)而不是測(cè)試模式包的連接)的數(shù)量而改變。更具體地,如果僅存在單個(gè)活動(dòng)連接傳送數(shù)據(jù),則可以將最大比特率設(shè)置為相當(dāng)?shù)偷闹?,以確保單個(gè)連接能夠發(fā)送視頻和音頻數(shù)據(jù)。對(duì)于兩個(gè)連接,最大比特率可以提高一個(gè)比特,然后對(duì)于三個(gè)連接再提高一個(gè)比特,并且可以最終在四個(gè)或更多個(gè)連接處達(dá)到最大量。如果當(dāng)前比特率當(dāng)前被設(shè)置為最大比特率,則不可以請(qǐng)求另外的比特率增量。
如果在比特率增量之間的可變時(shí)間段結(jié)束時(shí),緩沖器處于非常健康的狀態(tài)(并且在該時(shí)間段的持續(xù)時(shí)間期間也保持在任一健康類(lèi)別中),則消費(fèi)者可以請(qǐng)求生產(chǎn)者增大比特率。
在一個(gè)實(shí)施例中,比特率增量可以是預(yù)定的和靜態(tài)的。在替代實(shí)施例中,所請(qǐng)求的比特率增量可以是可變的。更具體地,比特率增量可以取決于當(dāng)前比特率。例如,如果當(dāng)前比特率相對(duì)較低,則所請(qǐng)求的比特率增量可以成比例地大于如果當(dāng)前比特率相對(duì)較高的情況。在一個(gè)實(shí)施例中,所使用的最低比特率是1Mbps,并且這是通常廣播開(kāi)始所采用的比特率。在另一實(shí)施例中,起始比特率可以大于1Mbps。如上所述,訓(xùn)練會(huì)話(例如,通過(guò)使用預(yù)先測(cè)試連接階段)可以用于自動(dòng)計(jì)算緩沖器大小。該訓(xùn)練會(huì)話也可以用于將起始比特率設(shè)置成大于1Mbps的速率,導(dǎo)致從廣播開(kāi)始的質(zhì)量比利用1Mbps比特率可能實(shí)現(xiàn)的質(zhì)量更高。
然而,如果在可變時(shí)間段結(jié)束時(shí)緩沖器處于中等健康類(lèi)別,則不可以請(qǐng)求比特率增量。相反,它將復(fù)位定時(shí)器并在預(yù)定時(shí)間段期間重新開(kāi)始檢查緩沖器的健康狀況。在一個(gè)實(shí)施例中,預(yù)定時(shí)間段保持相同。在替代實(shí)施例中,預(yù)定時(shí)間段可以增加到比先前在時(shí)間段中使用的值更高的值。
如果緩沖器的狀態(tài)已經(jīng)下降到不健康類(lèi)別中,則在一個(gè)實(shí)施例中,消費(fèi)者可以立即請(qǐng)求比特率減量,除非比特率已經(jīng)處于其最低允許的值(在一個(gè)實(shí)施方式中1Mbps是最低比特速率)?;蛘?,響應(yīng)于緩沖器在預(yù)定時(shí)間量?jī)?nèi)一直處于不健康類(lèi)別中,請(qǐng)求比特率減量。
在一個(gè)實(shí)施例中,比特率的減量可以是預(yù)定的和固定的。在替代實(shí)施例中,比特率的減量可以是可變的。比特率的減量的變化量可以取決于一個(gè)或多個(gè)因素,諸如緩沖器的大小和/或活動(dòng)連接的數(shù)量。例如,如果緩沖器大小相對(duì)較小(例如,小于夠放2.5秒的媒體),則比特率可以降低到最低的允許值。對(duì)于相對(duì)較小的緩沖器大小,在一半緩沖器已經(jīng)耗盡之后,緩沖器中剩余很少的時(shí)間,并且將比特率降低到其最低可能值以使緩沖器具有最佳恢復(fù)機(jī)會(huì)是更安全的。如果緩沖器大小不是相對(duì)較小的,則比特率可以遞減到在最大比特率到最小比特率的范圍內(nèi)的固定值。例如,如果當(dāng)前比特率大于或等于3Mbps,則比特率可以降低到2.5Mbps。如果大于或等于2.75Mbps(并且小于3Mbps),則比特率可以降低到2.25Mbps。逐步遞減方法可以進(jìn)一步向下延伸。
另外,如果活動(dòng)連接的數(shù)量降至特定數(shù)量的連接(例如四個(gè)連接)以下,則這可能導(dǎo)致新的最大比特率(如前所述),這可能需要取決于當(dāng)前比特率的即刻比特率下降。在這點(diǎn)上,可以基于一個(gè)或多個(gè)準(zhǔn)則(例如緩沖器的健康度和/或活動(dòng)連接的數(shù)量)來(lái)確定比特率。
如果消費(fèi)者請(qǐng)求生產(chǎn)者改變比特率,則在此時(shí)間點(diǎn)之后,消費(fèi)者將不會(huì)請(qǐng)求任何進(jìn)一步的比特率調(diào)整,直至生產(chǎn)者已經(jīng)改變比特率并且將此比特率改變通知服務(wù)器。
如上所述,對(duì)是否要改變比特率的確定可以由生產(chǎn)者確定。例如,在從客戶(hù)端裝置向服務(wù)器廣播的示例中,生成器可以基于連接的至少一個(gè)方面的改變和/或基于多個(gè)連接的至少一個(gè)方面的改變來(lái)調(diào)整比特率。更具體地,生產(chǎn)者可以響應(yīng)于連接的某些預(yù)定事件,例如:連接已經(jīng)終止和/或連接已經(jīng)進(jìn)入測(cè)試模式,來(lái)調(diào)整比特率。在替代實(shí)施例中,生產(chǎn)者可以分析跨多個(gè)網(wǎng)絡(luò)連接的數(shù)據(jù)傳送會(huì)話(例如作為整體的數(shù)據(jù)傳送),以便確定是否調(diào)整比特率(例如降低比特率)。
在更具體的實(shí)施例中,響應(yīng)于生產(chǎn)者確定捆綁的網(wǎng)絡(luò)連接的總吞吐量在減少,生產(chǎn)者可以發(fā)起比特率改變。吞吐量的分析可以由生產(chǎn)者多次執(zhí)行,第一次分析用于確定第一聚合吞吐量,第二次分析用于確定第二聚合吞吐量。然后,生產(chǎn)者可以將第一吞吐量與第二吞吐量進(jìn)行比較,以便確定吞吐量是否在減少。并且,響應(yīng)于確定吞吐量正在減少(例如減少超過(guò)預(yù)定量),生產(chǎn)者可以發(fā)起比特率減量。如上所述,比特率的減小可以是靜態(tài)的或者可以是動(dòng)態(tài)的。作為一個(gè)示例,可以預(yù)先確定比特率的減小,而與吞吐量的減少量無(wú)關(guān)。在另一實(shí)施例中,可以基于吞吐量的減少量來(lái)動(dòng)態(tài)地確定比特率的減小。在這方面,不是等待消費(fèi)者指示生產(chǎn)者降低比特率,而是消費(fèi)者可以主動(dòng)地這樣做。
CMC可以向廣播捆綁應(yīng)用通知連接狀態(tài)的改變(例如,終止或進(jìn)入測(cè)試模式)以及在傳送會(huì)話中剩余的活動(dòng)連接的數(shù)量。這可以在客戶(hù)端裝置或服務(wù)器上或兩者上發(fā)生。
在一個(gè)實(shí)施例中,由生產(chǎn)者確定的比特率的變化量可以是預(yù)定的和固定的。在替代實(shí)施例中,比特率的變化量(例如,減量)可以是可變的。在一個(gè)方面,改變量可以取決于活動(dòng)連接的數(shù)量和/或問(wèn)題連接的最近非零吞吐量的值(在觸發(fā)比特率改變的丟棄連接的示例中,比特率的改變量可以等于連接的最近非零吞吐量)。例如,如果,作為丟棄連接的結(jié)果,在傳送會(huì)話中剩下少于四個(gè)的活動(dòng)連接,則比特率可以立即下降,使得減少的量等于用于被丟棄的連接的最近的吞吐量值,盡管比特率不可以下降到最小比特率以下。
不管比特率變化的起源(例如,生產(chǎn)者或消費(fèi)者)是什么,由于生產(chǎn)者正在對(duì)視頻進(jìn)行編碼,所以它負(fù)責(zé)應(yīng)用比特率改變。為此,生產(chǎn)者排空(drain)使用當(dāng)前比特率編碼的已編碼視頻幀的編碼器。當(dāng)排空操作正在進(jìn)行時(shí),不可以向編碼器添加新的原始視頻幀。一旦排空操作完成,在編碼器中設(shè)置新的比特率,并且原始幀繼續(xù)被傳遞到編碼器用于編碼。由于在排空操作期間新的幀不可以被傳遞到編碼器,這稍微降低了在排空操作發(fā)生時(shí)的編碼器效率,并且新的幀將簡(jiǎn)單地累積在生產(chǎn)者的緩沖器中直到排空操作完成。因此,明智的做法是最小化在相對(duì)短的時(shí)間段期間發(fā)起的比特率改變的數(shù)量。如果編碼器花費(fèi)在排空上的時(shí)間比對(duì)幀進(jìn)行編碼的時(shí)間多,則這將對(duì)廣播會(huì)話帶來(lái)負(fù)面影響。
圖15-圖17示出了確定是否和/或如何改變比特率的不同方式。圖15示出了廣播消費(fèi)者的流程圖1500。廣播消費(fèi)者可以分析傳送會(huì)話和/或其自己的內(nèi)部數(shù)據(jù)的多個(gè)方面,以確定是否調(diào)整編碼媒體的比特率。在1502,消費(fèi)者分析傳送會(huì)話和/或廣播處理的至少一個(gè)方面。在1504,基于該分析,確定是否修改比特率。如果否,則流程圖1500返回到1502。如果是,則在1506,確定比特率改變。在1508,向生產(chǎn)者通知所確定的比特率改變。在1510,在適當(dāng)?shù)那闆r下,生產(chǎn)者調(diào)整比特率。在廣播應(yīng)用的環(huán)境中,該步驟可以發(fā)生在客戶(hù)端裝置上,而先前的步驟可以發(fā)生在服務(wù)器上。最后,流程圖返回到1502,并且該過(guò)程在整個(gè)廣播會(huì)話期間持續(xù)進(jìn)行。
圖16示出了用于廣播消費(fèi)者分析其視頻緩沖器的健康狀況以便確定是否調(diào)整比特率的流程圖1600的一個(gè)示例。該流程圖中的所有步驟是從消費(fèi)者的角度執(zhí)行。在1602,相對(duì)于可存儲(chǔ)在視頻緩沖器中的視頻幀的總數(shù)(X)分析視頻緩沖器中可用的視頻幀的當(dāng)前數(shù)目(Y)。基于該分析,在1604,確定視頻緩沖器的狀態(tài)是否健康。如果是,則在1606,健康度時(shí)間量的指示符增加1。進(jìn)一步地,在1608,基于當(dāng)前比特率,確定在增加比特率之前所需的健康度持續(xù)時(shí)間。在1610,確定來(lái)自1606的指示符是否大于增加比特率之前所需的健康度的時(shí)間量。如果否,則流程圖循環(huán)回到1602。如果是,則在1612,確定緩沖器的狀態(tài)是否非常健康(有別于如前所述的中度健康)。如果不是,則流程圖返回到1602。如果是,則在1614,基于當(dāng)前比特率確定增加比特率的量。在1618,通知生產(chǎn)者比特率改變。然后,在1620,消費(fèi)者等待生產(chǎn)者應(yīng)用或忽略比特率改變請(qǐng)求。流程圖然后返回到1602。在消費(fèi)者也已經(jīng)在大約相同的時(shí)間發(fā)起相互沖突的比特率改變的情況下,消費(fèi)者可以忽略比特率改變請(qǐng)求。如前所述,消費(fèi)者也可以發(fā)起比特率改變。消費(fèi)者發(fā)起的比特率改變通常可以?xún)?yōu)先于來(lái)自生產(chǎn)者的比特率改變請(qǐng)求。
如果相反,在1604,確定緩沖器的狀態(tài)不健全,則在1616,基于當(dāng)前比特率確定減小比特率的量。然后,進(jìn)行到1618,并從那里進(jìn)行下去,如已經(jīng)描述的。
圖17示出了生成器基于來(lái)自CMC關(guān)于網(wǎng)絡(luò)連接的狀態(tài)的通知潛在地使帶外比特率遞減的流程圖1700。該流程圖中的所有步驟從生產(chǎn)者的角度執(zhí)行。在1702,生產(chǎn)者接收到來(lái)自CMC的通告(notice):至少一個(gè)網(wǎng)絡(luò)連接存在問(wèn)題。在1704,生產(chǎn)者確定剩余的可行網(wǎng)絡(luò)連接的聚合健康狀況是否需要比特率降低。如果不是,流程結(jié)束。如果是,則在1706,基于分析立即減小比特率。在1708,向消費(fèi)者通知帶外比特率改變,即消費(fèi)者未請(qǐng)求的比特率改變。此時(shí),流程結(jié)束。
如上所述,消費(fèi)者中的視頻緩沖器的狀態(tài)可觸發(fā)比特率的改變。例如,緩沖器的健康狀態(tài)可以導(dǎo)致比特率的增加,而緩沖器的不健康狀態(tài)可能導(dǎo)致比特率的降低。另外,可以利用依賴(lài)于緩沖器的狀態(tài)的其他各種技術(shù),特別是在緩沖器處于不健康狀態(tài)時(shí)。圖18示出了用于對(duì)付不健康的媒體緩沖器以便使媒體緩沖器回到健康狀態(tài)的一些技術(shù)的框圖1800。這樣的技術(shù)被描述為由廣播消費(fèi)者1802執(zhí)行,但是一些技術(shù)可能需要來(lái)自消費(fèi)者的參與(例如,改變比特率)。用于對(duì)付不健康的視頻緩沖器的技術(shù)1804的示例包括但不限于以下:遞減比特率1806;繼續(xù)前進(jìn)(move-on)技術(shù)1808;重新調(diào)整視頻大小1810;降低幀速率1812;以及增加延遲1814。另外,即使之前沒(méi)有詳細(xì)描述,音頻緩沖器也可能進(jìn)入不健康狀態(tài)。在音頻緩沖器處于不健康狀態(tài)的情況下,還存在可用于改善其健康狀況的一些技術(shù)1816。這樣的技術(shù)的示例包括但不限于以下:遞減比特率1818;繼續(xù)前進(jìn)技術(shù)(用于音頻)1820;和丟棄音頻1822。這些技術(shù)中的每一個(gè)將在下面更詳細(xì)地討論。
已經(jīng)詳細(xì)描述了作為用于對(duì)付不健康的視頻緩沖器的方法的遞減比特率技術(shù)。這可能是對(duì)付不健康的視頻緩沖器的主要技術(shù)。類(lèi)似的技術(shù)可以用于音頻并且將類(lèi)似地工作。然而,由于音頻比特率在開(kāi)始時(shí)可能非常低(例如,128kbps),所以可能從中獲益很少。
重新調(diào)整視頻大小的技術(shù)可以在比特率減量不夠,甚至下降到最小視頻比特率(例如1Mbps)的情況下使用。如果傳送會(huì)話中的不同網(wǎng)絡(luò)連接的聚合健康狀況甚至不足以處理最小比特視頻比特率,則消費(fèi)者可以請(qǐng)求生產(chǎn)者重新調(diào)整視頻幀的大小,以在對(duì)視頻幀進(jìn)行編碼之前使用較小的幀尺寸。以這種方式重新調(diào)整視頻幀的大小降低了圖像質(zhì)量,因?yàn)橄袼財(cái)?shù)據(jù)由于重新調(diào)整大小的操作而丟失。然而,這種重新調(diào)整大小過(guò)的視頻可以以比通常使用的最小比特率甚至更低的比特率來(lái)編碼。不同網(wǎng)絡(luò)連接的聚合健康狀況可能足以適應(yīng)這種減小的比特率。在消費(fèi)者方面,在對(duì)重新調(diào)整大小的視頻進(jìn)行解碼之后,所得到的幀被重新調(diào)整大小回到原始分辨率,因?yàn)轭A(yù)期廣播將在SDI上輸出與實(shí)際輸入媒體所使用的視頻格式相同的視頻格式。由于原始重新調(diào)整大小操作而丟失的原始像素?cái)?shù)據(jù)將不會(huì)由此操作恢復(fù),盡管可能使用插補(bǔ)(interpolation)來(lái)估計(jì)因?yàn)橹匦抡{(diào)整大小操作的一部分而丟失的像素?cái)?shù)據(jù)。此外,如果網(wǎng)絡(luò)連接的聚合健康狀況改善,則消費(fèi)者可以注意到這一點(diǎn)并請(qǐng)求生產(chǎn)者恢復(fù)原始幀大小。重要的是注意到,對(duì)幀大小的改變通常將導(dǎo)致在應(yīng)用改變之前需要排空H.264編碼器。
重新調(diào)整視頻大小的技術(shù)對(duì)于逐行視頻是相對(duì)簡(jiǎn)單的,但是直接重新調(diào)整視頻幀的大小對(duì)于隔行視頻將不能正常工作。通常,在重新調(diào)整大小之前,隔行視頻必須首先被去隔行?;蛘?,可獨(dú)立地考慮隔行幀的頂場(chǎng)或底場(chǎng),且可將單獨(dú)場(chǎng)視為重新調(diào)整大小操作的目標(biāo)而不必去隔行。在消費(fèi)者方面,除了不得不重新調(diào)整視頻的大小以使其恢復(fù)到原始幀大小之外,還可能需要去隔行。
重要的是要注意,像重新調(diào)整視頻大小的技術(shù)增加了廣播開(kāi)銷(xiāo),因?yàn)樗砹松a(chǎn)者和消費(fèi)者都需要執(zhí)行的額外的步驟,并且這需要時(shí)間。如果需要去隔行,這進(jìn)一步增加了廣播開(kāi)銷(xiāo)。
較低幀速率技術(shù)還可在比特率減量不足,甚至下降到最小視頻比特率(例如,1Mbps)的情況下使用。如果傳送會(huì)話中的不同網(wǎng)絡(luò)連接的聚合健康狀況甚至不足以處理最小比特視頻比特率,則較低幀速率技術(shù)可能是一個(gè)好的選擇,并且可以使用這種技術(shù)而不增加廣播開(kāi)銷(xiāo),與重新調(diào)整視頻大小的技術(shù)的情況不同。
對(duì)于逐行視頻,修改視頻被編碼的幀速率是很容易的。例如,將幀速率減半意味著每隔一個(gè)的幀應(yīng)該被丟棄。不需要為此執(zhí)行特殊的分析。每當(dāng)將幀速率除以整數(shù)(2、3、4等)時(shí),幀速率轉(zhuǎn)換是很容易應(yīng)用的(例如,如果除以3,則保留一個(gè)幀并丟棄接下來(lái)的兩個(gè)幀,并且重復(fù)該循環(huán))。然而,如果H.264編碼器被配置為使用這個(gè)新的幀速率,而不是與輸入媒體相關(guān)聯(lián)的原始幀速率,并且利用與原始幀速率所使用的相同的比特速率方案,則H.264編碼器將簡(jiǎn)單地將更多細(xì)節(jié)裝入到每個(gè)幀中,以滿足所請(qǐng)求的比特率。例如,如果H.264編碼器已經(jīng)被配置為用于1Mbps的720p59.94,并且它改成以1Mbps的720p29.97被配置,則它仍然會(huì)生成1Mbps視頻流,但會(huì)變成將更多的細(xì)節(jié)裝入每個(gè)編碼幀中。相反,所需要的是將H.264編碼器配置為使用.5Mbps的720p29.97或?qū).264編碼器配置成使用1Mbps的720p59.94,但以正常速率的一半為它饋送幀。在后一種情況下,將僅將細(xì)節(jié)裝入到每個(gè)編碼幀中,就好像幀速率是59.94fps一樣,即使編碼器僅僅每隔一幀地被饋送以。以這種方式使用,編碼器有效地生成它正常將生成的一半的數(shù)據(jù)。因此,例如,在1Mbps的起始比特率,視頻流的實(shí)際數(shù)據(jù)量更接近0.5Mbps。
當(dāng)有效幀速率降低時(shí),幀不會(huì)那么快速地被從消費(fèi)者視頻緩沖器中移除。這使得緩沖器更可能在網(wǎng)絡(luò)連接不良的情況下恢復(fù)。在視頻質(zhì)量方面,29.97fps通常對(duì)于新聞節(jié)目是足夠的;然而,該質(zhì)量可能不適合于某些類(lèi)型的電視廣播。在一個(gè)實(shí)施例中,硬件解碼器可以提供允許在解碼時(shí)智能重構(gòu)丟失幀的特征,這將使得可以回到59.94fps幀速率。
此外,在隔行視頻的情況下,幀速率的降低與如上所述的幀速率修改不同。相反,在將幀速率減半的情況下,用于隔行視頻的“半幀速率”技術(shù)可包括僅將頂場(chǎng)編碼為逐行視頻,類(lèi)似于先前討論的用于重新調(diào)整隔行視頻的大小的方法之一。例如,對(duì)于1080i59.94,每1/29.97秒遞送一個(gè)隔行視頻幀(使得每秒有29.97個(gè)隔行視頻幀)。1080i幀中的頂場(chǎng)在與底場(chǎng)不同的時(shí)間段被捕獲,此時(shí)場(chǎng)速率為每秒59.94個(gè)場(chǎng)。因此,1080i59.94中的“59.94”對(duì)應(yīng)于場(chǎng)速率,而不與逐行視頻的情況一樣對(duì)應(yīng)于幀速率。因此,如果僅考慮兩個(gè)場(chǎng)中的一個(gè)并且僅考慮這個(gè)場(chǎng),則所得到的幀可以被視為逐行幀,并且被編碼為逐行的(諸如使用H.264編碼器編碼,該編碼器對(duì)逐行視頻進(jìn)行編碼比對(duì)隔行視頻進(jìn)行編碼更擅長(zhǎng))。在消費(fèi)者方面,消費(fèi)者將視頻解碼為逐行視頻,并通過(guò)將頂場(chǎng)的內(nèi)容復(fù)制到隔行幀的底場(chǎng)來(lái)重新組裝隔行幀。這樣,原始視頻模式被保持,而僅僅一半的數(shù)據(jù)被編碼。在這種情況下,一半的視頻數(shù)據(jù)丟失,導(dǎo)致質(zhì)量的降低;然而,該降低可能對(duì)觀看者不明顯。
直到此時(shí),已經(jīng)在對(duì)付不健康緩沖器的上下文中討論了重新調(diào)整視頻大小和較低幀速率技術(shù)。然而,這些技術(shù)中的任一個(gè)或兩者可以從廣播會(huì)話起點(diǎn)被應(yīng)用并且被配置為由使用者這樣做。例如,使用者可以選擇打開(kāi)“半幀速率”模式,這可以是在客戶(hù)端裝置處于移動(dòng)車(chē)輛中的情況或者在預(yù)期聯(lián)網(wǎng)條件非常多變的任意情況中的好的選擇。用戶(hù)還可以配置廣播會(huì)話以將所有視頻的大小重新調(diào)整為大約1/2的幀大小或1/4的幀大小,這分別導(dǎo)致像素計(jì)數(shù)為原始像素計(jì)數(shù)的1/4或1/16。在這種配置中,這些技術(shù)不是動(dòng)態(tài)應(yīng)用的,而是始終應(yīng)用的。
用于改善不健康視頻緩沖器的另一技術(shù)包括“繼續(xù)前進(jìn)”技術(shù)。有時(shí),準(zhǔn)備好在SDI上播放的視頻幀的循環(huán)緩沖器可能落入不健康狀態(tài),如先前所討論的。這可以導(dǎo)致被發(fā)送給生產(chǎn)者的立即比特率減量請(qǐng)求;然而,重要的是要注意這只是請(qǐng)求。生產(chǎn)者需要一些時(shí)間進(jìn)行比特率改變,然后通知消費(fèi)者改變已經(jīng)發(fā)生。緩沖器中的幀數(shù)可能繼續(xù)下降。重要的是,如前所述,緩沖器中的幀的數(shù)目不會(huì)下降到0,即使該幀的數(shù)目有可能下降到零。響應(yīng)于緩沖器的某些預(yù)定條件,“繼續(xù)前進(jìn)”技術(shù)可用于減少發(fā)生這種情況的可能性。
以下是“繼續(xù)前進(jìn)”技術(shù)的示例。通過(guò)使用捆綁,數(shù)據(jù)包可能不按順序到達(dá)。例如,視頻包1和3-10可能已經(jīng)到達(dá)緩沖器,但緩沖器丟失了包2。消費(fèi)者讀取包1中的數(shù)據(jù),但是隨后停止前進(jìn),因?yàn)榘?尚未被接收。如果應(yīng)用“繼續(xù)前進(jìn)”技術(shù),則廣播應(yīng)用可能跳過(guò)包2并繼續(xù)處理包3,從而允許該應(yīng)用前進(jìn)。包2可包含重要數(shù)據(jù),但是正在使用的H.264解碼器可能在一定程度上能復(fù)原的并且可以處理一些數(shù)據(jù)丟失。但是,使用此技術(shù)可能會(huì)產(chǎn)生一些在SDI上播放時(shí)的亂碼視頻。因此,該技術(shù)僅僅用在準(zhǔn)備好要播放的幀的數(shù)目降低到某個(gè)閾值以下的情況中,如下所述(使用如前所述的量X和Y):
“繼續(xù)前進(jìn)”技術(shù)準(zhǔn)則:
如果X<110:Y≤(X*2)/5
如果X≥110:Y≤44
上述公式僅用于說(shuō)明??梢栽O(shè)想到用于觸發(fā)“繼續(xù)前進(jìn)”技術(shù)的其他規(guī)則。
在一個(gè)實(shí)施例中,“繼續(xù)前進(jìn)”””技術(shù)可以?xún)H在單個(gè)包與在其之后立即接收的另一個(gè)包存在間隙時(shí)應(yīng)用。如果兩個(gè)或更多個(gè)連續(xù)包丟失,則該技術(shù)將不被應(yīng)用。在替代實(shí)施例中,如果存在多于一個(gè)包的間隙,例如兩個(gè)包的間隙,則應(yīng)用“繼續(xù)前進(jìn)”技術(shù)。
此外,在一個(gè)實(shí)施例中,廣播應(yīng)用可跳過(guò)丟失的包,如上所述。在替代實(shí)施例中,廣播應(yīng)用可以插入重復(fù)包,諸如緊接在丟失包之前的包或緊接在丟失包之后的包。在上面丟失包2的示例中,包1或包3的內(nèi)容可以被復(fù)制并插入到緩沖器中用于包2的位置。
上面討論的“繼續(xù)前進(jìn)”技術(shù)針對(duì)視頻。類(lèi)似的“繼續(xù)前進(jìn)”技術(shù)也可以應(yīng)用于音頻。在一個(gè)實(shí)施例中,如果可用音頻樣本的數(shù)量低于執(zhí)行定義的閾值,并且僅存在丟失的一個(gè)音頻包的間隙,則將應(yīng)用用于音頻的“繼續(xù)前進(jìn)”技術(shù),并且該包將被跳過(guò)。因?yàn)槿繕颖究梢员环庋b在音頻包中,當(dāng)這樣做時(shí),一些音頻將簡(jiǎn)單地被丟失,但是除非這種技術(shù)被非常頻繁地應(yīng)用,否則觀看者不太可能察覺(jué)到。在替代實(shí)施例中,如果可用音頻樣本的數(shù)量低于執(zhí)行定義的閾值,并且存在丟失的多于一個(gè)音頻包(例如兩個(gè)音頻包)的間隙,則用于音頻的“繼續(xù)前進(jìn)”技術(shù)將被應(yīng)用,并且這些包將被跳過(guò)。
用于克服不健康視頻緩沖器的另一技術(shù)包括添加延遲技術(shù)。在一個(gè)實(shí)施例中,確定是否應(yīng)用添加延遲技術(shù)的觸發(fā)器可以基于對(duì)緩沖器的分析。在一個(gè)實(shí)施例中,對(duì)緩沖器的分析可以在單個(gè)時(shí)間點(diǎn)進(jìn)行。例如,如果緩沖器的當(dāng)前狀態(tài)非常不健康,則可以應(yīng)用添加延遲技術(shù)。在替代實(shí)施例中,對(duì)緩沖器的分析可以在不同的時(shí)間點(diǎn)進(jìn)行。例如,對(duì)緩沖器的分析可以推斷緩沖器的健康狀況正在惡化。更具體地,如果可用于播放的幀的數(shù)量繼續(xù)下降,則可能需要在SDL上的視頻回放中添加一些延遲。即,代替立即播放循環(huán)緩沖器中的下一幀,廣播應(yīng)用可以將該幀推遲使得在所播放的最后一幀與該幀之間存在2、3或4個(gè)幀的間隙。在此間隙期間,屏幕不刷新,并且之前的幀保留在屏幕上。這具有的效果是與客戶(hù)端相比將服務(wù)器從實(shí)時(shí)推遲得更多,使得延時(shí)增加。取決于需要添加多少延遲,這對(duì)于觀看者而言可能是明顯的或不明顯的。此外,音頻被推遲相同的量,以確保視頻和音頻保持同步。添加延遲技術(shù)可以按如下這樣應(yīng)用:
添加延遲技術(shù)準(zhǔn)則:
如果X<110:Y≤(X/5)
如果X≥110:Y≤20
上述公式僅用于說(shuō)明。可以設(shè)想到用于觸發(fā)添加延遲技術(shù)的其他規(guī)則。
進(jìn)一步地,在一個(gè)實(shí)施例中,響應(yīng)于確定使用添加延遲技術(shù),廣播應(yīng)用可以將其推遲,使得在所播放的最后一幀與該幀之間存在預(yù)定數(shù)量的幀的間隙。預(yù)定數(shù)量例如可以是2或4幀。在替代實(shí)施例中,響應(yīng)于確定使用添加延遲技術(shù),廣播應(yīng)用可以首先確定幀的數(shù)量,以在所播放的最后一幀與該幀之間生成間隙。確定的幀的數(shù)量可以基于緩沖器的健康狀態(tài)(諸如在單個(gè)時(shí)間點(diǎn)的緩沖器的狀態(tài)或者跨越多個(gè)時(shí)間點(diǎn)的緩沖器的狀態(tài))。緩沖器越不健康,可能產(chǎn)生越大的間隙。
另外,在一個(gè)實(shí)施例中,一旦確定了幀的數(shù)量(無(wú)論是預(yù)定的還是可變的),廣播應(yīng)用可以將視頻一次性推遲此數(shù)量的幀。例如,如果所確定的幀的數(shù)量是4,則視頻可以被一次性推遲所有4個(gè)幀。在替代實(shí)施例中,一旦確定了幀的數(shù)量,廣播應(yīng)用可以逐漸推遲視頻。逐漸推遲幀對(duì)于觀看者來(lái)說(shuō)可能不太明顯。
即使在請(qǐng)求比特率被降低、應(yīng)用“繼續(xù)前進(jìn)”技術(shù)并且添加延遲或使用其它技術(shù)之后,消費(fèi)者仍然不可能防止緩沖器被完全耗盡。在緩沖器中沒(méi)有剩余幀的情況下,現(xiàn)在是播放下一幀的時(shí)間,在這種情況下消費(fèi)者能做的事情微乎其微。為了發(fā)生這種情況,網(wǎng)絡(luò)連接的質(zhì)量可能非常差和/或網(wǎng)絡(luò)連接的組合吞吐量將不足以發(fā)送視頻和音頻流。
當(dāng)這種情況發(fā)生時(shí),消費(fèi)者可以簡(jiǎn)單地保持在顯示器中播放的最后一幀(即,回放將被凍結(jié))。一旦下一幀變得可用,可以將該幀推遲足夠的量,以便累積緩沖器能容放的幀。立即播放這個(gè)幀沒(méi)有什么意義,因?yàn)樵谠搸蟮膸瑧?yīng)該被播放的時(shí)候,另一個(gè)幀不太可能準(zhǔn)備好,這將需要添加更多的延遲。也必須重新計(jì)算延時(shí),取決于自從最后一幀播放以來(lái)已經(jīng)經(jīng)過(guò)的時(shí)間,延時(shí)可能是顯著的。
在廣播捆綁應(yīng)用中,音頻和視頻數(shù)據(jù)均被發(fā)送。在一個(gè)實(shí)施例中,音頻和視頻數(shù)據(jù)沒(méi)有被交叉存取在相同的包中。存在單獨(dú)的音頻流數(shù)據(jù)包和視頻流數(shù)據(jù)包。當(dāng)服務(wù)器上的CMC接收到音頻包時(shí),它被添加在消費(fèi)者的僅音頻循環(huán)緩沖器中的適當(dāng)位置。相同的方法用于視頻包。另外,在消費(fèi)者中可以存在用于處理音頻和視頻的單獨(dú)的軟件線程,這些軟件線程分別用于將數(shù)據(jù)解碼為原始音頻樣本和原始視頻幀,該原始音頻樣本和原始視頻幀分別被添加到準(zhǔn)備通過(guò)SDI播放的各自的循環(huán)緩沖器(用于視頻的循環(huán)緩沖器如上所述;用于音頻的循環(huán)緩沖器以類(lèi)似的方式工作)。另外,與音頻樣本相關(guān)聯(lián)的時(shí)間跨度可以不同于與視頻幀相關(guān)聯(lián)的時(shí)間跨度。每個(gè)視頻幀應(yīng)該播放相同的時(shí)間量,因?yàn)閹俾适呛愣ǖ?。相反,音頻樣本由許多不同的音頻“幀”組成,并且音頻樣本中的“幀”的數(shù)量可以變化。此外,與視頻不同,音頻可能不一定在客戶(hù)端上連續(xù)采樣。因此,在音頻樣本之間可能存在非常短的間隙,在該間隙期間不會(huì)播放音頻。然而,不管所有這些,第一音頻樣本都要被保證與第一視頻幀同時(shí)開(kāi)始。
根據(jù)上述信息,在消費(fèi)者中在累積了準(zhǔn)備好通過(guò)SDI播放的音頻樣本和視頻幀的足夠的緩沖之后,消費(fèi)者將向SDI回放硬件發(fā)出命令以同時(shí)開(kāi)始視頻和音頻回放??梢砸韵嗤乃俾驶胤藕罄m(xù)視頻幀,并且可以基于每個(gè)樣本的開(kāi)始時(shí)間來(lái)調(diào)度后續(xù)音頻樣本。理論上,這應(yīng)該足以確保音頻和視頻保持同步。
如前所述,在使用添加延遲技術(shù)的情況下,音頻也被推遲與幀推遲相關(guān)聯(lián)的等效時(shí)間量,以便確保音頻/視頻同步。
消費(fèi)者假定在準(zhǔn)備好要回放的視頻幀之間沒(méi)有間隙。也就是說(shuō),如果要播放的下兩個(gè)視頻幀是幀1和幀2,當(dāng)最初在客戶(hù)端裝置上被捕獲時(shí),它們也將是連續(xù)的幀。然而,可能不總是這樣。在59.94fps的廣播標(biāo)準(zhǔn)幀速率下,這意味著應(yīng)該每0.01668秒從視頻輸入源接收到新的幀。也就是說(shuō),在每個(gè)視頻幀之間存在0.01668秒的間隙。但是,可能存在某些情況使得在客戶(hù)端裝置上的幀抓取過(guò)程暫時(shí)減慢,導(dǎo)致在幀1和下一個(gè)幀之間有5個(gè)幀(或0.0834秒)的間隙,該下一個(gè)幀在技術(shù)上為幀7,但是可能看起來(lái)像是下一幀。如果消費(fèi)者沒(méi)有被告知這一點(diǎn),它將把幀7當(dāng)作幀2播放,并且如果這種事情在廣播期間發(fā)生了足夠多的次數(shù),視頻將變得與音頻不同步(視頻將在音頻之前播放),因?yàn)橐纛l樣本總是使用樣本的開(kāi)始時(shí)間來(lái)播放的,而視頻幀是被連續(xù)播放的。生產(chǎn)者通過(guò)將當(dāng)前幀的時(shí)間戳與其接收的最后幀的時(shí)間戳進(jìn)行比較來(lái)檢測(cè)這種情況,并且如果時(shí)間戳大于在給定幀速率的情況下應(yīng)該使用的時(shí)間間隙,則生產(chǎn)者可通知消費(fèi)者在適當(dāng)位置處存在視頻幀間隙。當(dāng)消費(fèi)者注意到這一點(diǎn)時(shí),在它到達(dá)幀7的時(shí)間點(diǎn)(或者更確切地說(shuō),在該示例中它認(rèn)為是幀2),消費(fèi)者將調(diào)度幀以不是立即播放,而是利用五個(gè)幀間隙。因此,幀1將出現(xiàn)總共六個(gè)幀的長(zhǎng)度。在這方面,視頻將暫時(shí)凍結(jié);然而,如果丟失幀的數(shù)量相對(duì)較低,則可能不明顯。
圖19示出了用于同步音頻和視頻回放以及用于視頻回放的兩個(gè)并發(fā)的流程圖1900。兩個(gè)流程圖通常將同時(shí)操作,可能在不同的軟件線程上進(jìn)行。每個(gè)流程圖中的所有步驟是從消費(fèi)者的角度執(zhí)行的。在第一流程圖中,在1902,消費(fèi)者連續(xù)地在音頻緩沖器中累積音頻樣本,并且在視頻緩沖器中累積視頻幀。在1904,它檢查音頻/視頻回放是否已經(jīng)開(kāi)始。如果是,則流程圖返回到1902。如果不是(如最初開(kāi)始廣播會(huì)話時(shí)的情況),在1906,它檢查是否有足夠的緩沖器樣本開(kāi)始回放。如果否,則流程圖返回到1902。如果是(這意味著已經(jīng)累積了所請(qǐng)求的緩沖器大小能容放的媒體,如前所述),則在1908,它向回放硬件發(fā)送命令以同時(shí)開(kāi)始視頻和音頻回放。最后,它返回到1902。
在這一點(diǎn)上,在第一流程圖為了將準(zhǔn)備好回放的原始媒體連續(xù)累積在音頻和視頻緩沖器中而繼續(xù)操作的同時(shí),第二流程圖可以開(kāi)始。在第二流程圖中,在1910,檢查視頻幀是否可用于回放。如果不是,流程結(jié)束。如果是,則在1912,檢查是否需要使用添加延遲技術(shù)。如果是,則在1914,將視頻幀調(diào)度推遲足夠的量。也將音頻樣本調(diào)度推遲相同的量。然后進(jìn)行到1916。在1912處沒(méi)有使用延遲技術(shù)的情況下,也進(jìn)行到1916。在1916,確定是否接收到幀間隙命令。如果是,則在1918,將視頻幀調(diào)度推遲足夠的量。然后進(jìn)行到1920。在1916處沒(méi)有接收到幀間隙命令的情況下,也進(jìn)行到1920。最后,在1920,對(duì)視頻幀進(jìn)行調(diào)度以供回放并終止。該流程被期望重復(fù)多次,但是通常對(duì)每個(gè)幀的調(diào)度被認(rèn)為是單獨(dú)的過(guò)程,因此這就是為什么不連續(xù)地循環(huán)圖19中的第二流程圖。
如上所述,諸如廣播的捆綁應(yīng)用提供以下部件以便與捆綁交互:發(fā)起者(例如,用在客戶(hù)端系統(tǒng)上以發(fā)起與服務(wù)器的廣播會(huì)話);接收者(例如,用在服務(wù)器系統(tǒng)上,與客戶(hù)端系統(tǒng)上的發(fā)起者結(jié)合使用以建立廣播會(huì)話)。此外,還可以提供一個(gè)或多個(gè)生產(chǎn)者和消費(fèi)者。
以下可包括生產(chǎn)者/消費(fèi)者組合:
數(shù)據(jù)流方向:客戶(hù)端裝置到服務(wù)器:客戶(hù)端裝置上的生產(chǎn)者,用于生成音頻和視頻包,并使音頻和視頻包可用于捆綁層以發(fā)送到服務(wù)器。此外,生產(chǎn)者可以用于有限數(shù)量的特殊包(類(lèi)似于用于通知消費(fèi)者視頻比特率改變的包);服務(wù)器上的消費(fèi)者,用于消費(fèi)由客戶(hù)端裝置上的生產(chǎn)者發(fā)送的音頻和視頻
數(shù)據(jù)流方向:服務(wù)器到客戶(hù)端裝置:服務(wù)器上的生產(chǎn)者,用于偶爾的返回向客戶(hù)端的通信,例如請(qǐng)求比特率改變所需的通信;以及客戶(hù)端裝置上的消費(fèi)者,用于消費(fèi)反向信道通信。
存在兩種不同類(lèi)型的數(shù)據(jù)包用于廣播:音頻包和視頻包。音頻包可以包括一個(gè)或多個(gè)編碼音頻樣本。每個(gè)音頻樣本包括其時(shí)間戳(例如,開(kāi)始時(shí)間)、持續(xù)時(shí)間、大小和編碼的音頻數(shù)據(jù)。因?yàn)橐纛l比特率可以固定為128kbps,多于一個(gè)的音頻樣本可以容納進(jìn)單個(gè)音頻包內(nèi),盡管在音頻包中幾乎總是有一些未使用的空間。默認(rèn)情況下,每個(gè)數(shù)據(jù)包只能保存1370字節(jié)的數(shù)據(jù)。如果有五個(gè)音頻樣本準(zhǔn)備好被“分包”,并且每個(gè)音頻樣本占用300字節(jié),則前四個(gè)樣本可以完全容納進(jìn)單個(gè)包內(nèi)。由于最后一個(gè)樣本不能容納進(jìn)剩余空間中,所以它的一部分或全部可以被放置在下一個(gè)音頻包中。
與音頻包不同,視頻包僅包括經(jīng)編碼的視頻數(shù)據(jù)。例如,視頻包可以?xún)H僅包括來(lái)自H.264流的數(shù)據(jù)。盡管單個(gè)編碼幀可能完全容納進(jìn)單個(gè)數(shù)據(jù)包中,但是這是不太可能的,特別是當(dāng)比特率增加時(shí)。因?yàn)閮H發(fā)送H.264流,所以在視頻包中留下任何間隙都是低效的。如果通過(guò)從當(dāng)前編碼視頻幀提取字節(jié)沒(méi)有完全填滿視頻包,則在用來(lái)自下一個(gè)編碼視頻幀的足夠多的數(shù)據(jù)將該視頻包填滿之前,該視頻包不會(huì)被傳遞到捆綁。
例如,編碼視頻幀的數(shù)據(jù)是5500字節(jié),并且用于下一個(gè)編碼視頻幀的數(shù)據(jù)是6500字節(jié)。第一批5480個(gè)字節(jié)將被分布在四個(gè)數(shù)據(jù)包中并傳遞到CMC,剩余的20個(gè)字節(jié)將存儲(chǔ)在第六個(gè)數(shù)據(jù)包中。當(dāng)它移動(dòng)到下一個(gè)編碼視頻幀時(shí),它將從該幀提取第一批1350個(gè)字節(jié),將這些字節(jié)復(fù)制到第六個(gè)數(shù)據(jù)包的剩余1350字節(jié)中,并將該包傳遞到捆綁層。
廣播應(yīng)用可以跟蹤與其已經(jīng)發(fā)送的音頻包和視頻包相關(guān)聯(lián)的總時(shí)間,并且在兩者之間交替,以便使捆綁的數(shù)據(jù)流在時(shí)間上保持平衡。無(wú)論如何,由于最小視頻比特率可以是1Mbps,并且用于音頻的固定比特率可以是128kbps(.128Mbps),因此發(fā)送的視頻數(shù)據(jù)包將比音頻數(shù)據(jù)包多得多。
如上所述,數(shù)據(jù)可以從客戶(hù)端裝置發(fā)送到服務(wù)器,從服務(wù)器發(fā)送到客戶(hù)端裝置,以及在客戶(hù)端裝置和服務(wù)器之間傳輸,如圖4-圖6所示。在廣播環(huán)境中,大多數(shù)數(shù)據(jù)通常是從客戶(hù)端裝置發(fā)送到服務(wù)器的。在廣播環(huán)境中可以存在其他實(shí)例,其中服務(wù)器上的生產(chǎn)者可以生成供客戶(hù)端裝置上的消費(fèi)者消費(fèi)的數(shù)據(jù)。例如,先前在具有2.5秒或更短的延時(shí)的環(huán)境中討論了IFB。在廣播環(huán)境中,記者通??梢酝ㄟ^(guò)蜂窩電話收聽(tīng)實(shí)況廣播。然而,這意味著蜂窩電話正在使用中,并且如果在該時(shí)間期間進(jìn)來(lái)了重要的電話呼叫,則記者可能不能接聽(tīng)該呼叫。優(yōu)選地,廣播軟件隱式地提供對(duì)IFB的支持。代替記者必須呼入,記者可以激活廣播應(yīng)用的IFB特征,并且作為響應(yīng),廣播應(yīng)用將實(shí)況廣播的音頻從服務(wù)器流式傳輸?shù)娇蛻?hù)端裝置,允許用戶(hù)在使用客戶(hù)端裝置時(shí)收聽(tīng)(例如經(jīng)由使用藍(lán)牙連接到客戶(hù)端系統(tǒng)的可拆卸入耳式接收器)??梢允褂蒙a(chǎn)者/消費(fèi)者組合來(lái)完成數(shù)據(jù)傳輸,其中生產(chǎn)者位于服務(wù)器上并且消費(fèi)者位于客戶(hù)端裝置上。這將是除了用于標(biāo)準(zhǔn)廣播數(shù)據(jù)傳輸?shù)目蛻?hù)端上的生產(chǎn)者和服務(wù)器上的消費(fèi)者之外的。
另外,IFB可以用于與在電臺(tái)處的某人進(jìn)行的雙向音頻通信(諸如在現(xiàn)場(chǎng)的記者與電視臺(tái)處的生產(chǎn)者說(shuō)話)。在該實(shí)施方式中,音頻數(shù)據(jù)可以經(jīng)由生產(chǎn)者/消費(fèi)者組合發(fā)送。該音頻數(shù)據(jù)將與關(guān)聯(lián)于實(shí)際廣播的音頻數(shù)據(jù)相分離。
在替代實(shí)施例中,代替具有單向音頻通信或雙向音頻通信或除了具有單向音頻通信或雙向音頻通信之外,可以實(shí)現(xiàn)從服務(wù)器到客戶(hù)端裝置的返回視頻饋送。這類(lèi)似于IFB,除了不是簡(jiǎn)單地發(fā)送實(shí)況廣播的音頻,它可以發(fā)送視頻(以及潛在地也可以發(fā)送音頻)。這可以被認(rèn)為與反向廣播信道類(lèi)似;然而,由于視頻僅被記者觀看,所以視頻質(zhì)量?jī)H需要能夠了解實(shí)況廣播中發(fā)生了什么就足夠了。
進(jìn)一步地,如上所述,各種捆綁應(yīng)用與捆綁一起被使用。一個(gè)這樣的應(yīng)用是文件傳送。在一個(gè)實(shí)施例中,文件可以從客戶(hù)端裝置傳送到服務(wù)器。在替代實(shí)施例中,文件可以從服務(wù)器傳送到客戶(hù)端。在另一個(gè)替換實(shí)施例中,文件可以同時(shí)從客戶(hù)端裝置傳送到服務(wù)器,并從服務(wù)器傳送到客戶(hù)端。
文件傳送的一個(gè)示例可以在廣播環(huán)境中。該領(lǐng)域的記者可以生成視頻,例如對(duì)一個(gè)人的采訪。記者可能希望將視頻傳送到電視臺(tái),該視頻將在實(shí)況廣播期間播放。因此,在準(zhǔn)備實(shí)況廣播時(shí),記者可以使用客戶(hù)端裝置將視頻(以一個(gè)或多個(gè)文件的形式)傳送到服務(wù)器。文件的傳送可以使用捆綁邏輯來(lái)實(shí)現(xiàn),通過(guò)多個(gè)網(wǎng)絡(luò)接口(例如,多個(gè)捆綁的蜂窩卡)發(fā)送文件,從而導(dǎo)致更快的文件傳送。此外,電視臺(tái)處的用戶(hù)可以登錄到服務(wù)器(或者可以直接訪問(wèn)服務(wù)器),以便確定傳送的狀況。
另一應(yīng)用包括音頻應(yīng)用。在一個(gè)實(shí)施例中,音頻應(yīng)用可以將音頻數(shù)據(jù)(例如音頻數(shù)據(jù)的流或音頻文件)從客戶(hù)端傳送到服務(wù)器。在替代實(shí)施例中,音頻應(yīng)用可以將音頻數(shù)據(jù)從服務(wù)器傳送到客戶(hù)端裝置。更具體地,客戶(hù)端裝置可以發(fā)送用于在無(wú)線電臺(tái)廣播的音頻。在另一個(gè)替代實(shí)施例中,音頻數(shù)據(jù)可以從客戶(hù)端裝置傳送到服務(wù)器,并且從服務(wù)器傳送到客戶(hù)端裝置。
客戶(hù)端裝置可以接收音頻(或者如果客戶(hù)端裝置包括麥克風(fēng)或其他換能器,則可以生成音頻)??蛻?hù)端裝置可以將音頻數(shù)據(jù)流傳送到服務(wù)器(服務(wù)器可以使用音頻數(shù)據(jù),和/或可以將音頻數(shù)據(jù)中繼到無(wú)線電臺(tái)以供使用)。客戶(hù)端裝置可以使用一個(gè)或多個(gè)網(wǎng)絡(luò)接口來(lái)執(zhí)行該傳送。
在一個(gè)示例中,電臺(tái)記者可以使用包括多個(gè)網(wǎng)絡(luò)接口(例如多個(gè)移動(dòng)寬帶接口)的客戶(hù)端裝置與無(wú)線電臺(tái)進(jìn)行通信,并使用多個(gè)移動(dòng)寬帶接口來(lái)建立多個(gè)連接。除了去除視頻處理能力(即,去除視頻捆綁能力并維持音頻捆綁能力)之外,該示例中的客戶(hù)端裝置可以類(lèi)似于視頻廣播示例中的客戶(hù)端裝置。在另一示例中,無(wú)線電臺(tái)可以使用服務(wù)器與電臺(tái)記者通信,該服務(wù)器通過(guò)使用多個(gè)網(wǎng)絡(luò)接口的多個(gè)連接將音頻數(shù)據(jù)發(fā)送到客戶(hù)端裝置。在又一個(gè)示例中,捆綁可以使得能夠在無(wú)線電臺(tái)記者與無(wú)線電臺(tái)之間進(jìn)行雙向音頻通信,為了客戶(hù)端裝置將音頻傳送到服務(wù)器并且為了服務(wù)器將音頻傳送到客戶(hù)端裝置,該捆綁使用客戶(hù)端裝置上的多個(gè)網(wǎng)絡(luò)接口。
又一個(gè)應(yīng)用包括視頻會(huì)議。視頻可以從客戶(hù)端裝置發(fā)送到服務(wù)器(供服務(wù)器使用或供與服務(wù)器通信的裝置使用)。類(lèi)似地,視頻可以從服務(wù)器發(fā)送到客戶(hù)端裝置。在這種情況下,存在兩個(gè)生產(chǎn)者/消費(fèi)者組合,其中視頻從客戶(hù)端/服務(wù)器和服務(wù)器/客戶(hù)端發(fā)送。在這點(diǎn)上,上面概述的用于從客戶(hù)端向服務(wù)器發(fā)送廣播視頻的過(guò)程可以應(yīng)用于從客戶(hù)端發(fā)送到服務(wù)器的視頻的生產(chǎn)者/消費(fèi)者組合。類(lèi)似地,上面概述的用于從客戶(hù)端向服務(wù)器發(fā)送廣播視頻的過(guò)程可以應(yīng)用于從服務(wù)器發(fā)送到客戶(hù)端的視頻的生產(chǎn)者/消費(fèi)者組合。例如,被歸于上面討論的生產(chǎn)者和消費(fèi)者(在從客戶(hù)端發(fā)送到服務(wù)器的廣播視頻的情況下)的各種比特率調(diào)整可以應(yīng)用于客戶(hù)端和服務(wù)器兩者。更具體地,在客戶(hù)端/服務(wù)器組合(其中客戶(hù)端正在向服務(wù)器發(fā)送視頻)中,歸于生產(chǎn)者的功能可以被歸咎于客戶(hù)端,并且歸于消費(fèi)者的功能可以被歸咎于服務(wù)器。在客戶(hù)端/服務(wù)器組合中(其中客戶(hù)端正在向服務(wù)器發(fā)送視頻),歸于生產(chǎn)者的功能可以被歸咎于服務(wù)器,并且歸于消費(fèi)者的功能可以被歸咎于客戶(hù)端。
進(jìn)一步地,客戶(hù)端裝置可以包括可以向用戶(hù)(在遠(yuǎn)離廣播工作室的遠(yuǎn)程位置)提供相關(guān)信息的用戶(hù)接口??梢詮目蛻?hù)端裝置輸出(諸如顯示在客戶(hù)端裝置的監(jiān)視器上)的一條信息是延時(shí)的至少一個(gè)方面(例如,上面討論的初始延時(shí))??梢詮目蛻?hù)端裝置輸出的另一條信息可以包括一個(gè)、一些或所有連接的連接狀況。例如,連接狀況可以包括特定網(wǎng)絡(luò)連接是正在發(fā)送數(shù)據(jù)、處于測(cè)試模式還是斷連的??梢詮目蛻?hù)端裝置輸出的另一條信息可以包括視頻傳送、文件傳送等的狀況。例如,傳送的狀況可以包括已經(jīng)從客戶(hù)端裝置傳送到服務(wù)器的百分比。
此外,服務(wù)器(或與服務(wù)器通信的廣播工作室處的計(jì)算機(jī))可以包括用戶(hù)接口,以向廣播工作室的技術(shù)人員提供關(guān)于數(shù)據(jù)傳送的相關(guān)信息。類(lèi)似于客戶(hù)端裝置,服務(wù)器可以輸出延時(shí)(例如,上面討論的初始延時(shí))、連接中的一個(gè)、一些或全部的連接狀況和/或傳送的狀況的至少一個(gè)方面。
客戶(hù)端裝置可以進(jìn)一步包括視頻編輯功能,使記者能夠編輯原始視頻。之后,經(jīng)編輯的視頻文件可以通過(guò)使用捆綁被發(fā)送到服務(wù)器。在一個(gè)實(shí)施例中,客戶(hù)端裝置可以被配置為在不同模式之間切換,諸如視頻編輯器模式(其中原始視頻被編輯并保存到文件)和捆綁模式(其中可以使用捆綁將文件傳送到服務(wù)器)。或者,在視頻編輯器模式下,視頻編輯器可訪問(wèn)捆綁庫(kù)以便將編輯的視頻傳送到服務(wù)器。
圖20示出了可編程為特定計(jì)算機(jī)系統(tǒng)2000的通用計(jì)算機(jī)系統(tǒng)2000,其可以代表本文所討論的任何服務(wù)器或客戶(hù)端裝置。計(jì)算機(jī)系統(tǒng)2000可以包括一組指令2002的有序列表,該組指令可以被執(zhí)行以使計(jì)算機(jī)系統(tǒng)2000執(zhí)行本文公開(kāi)的方法或基于計(jì)算機(jī)的功能中的任何一個(gè)或多個(gè)。計(jì)算機(jī)系統(tǒng)2000可以作為獨(dú)立裝置操作,或者可以例如通過(guò)使用網(wǎng)絡(luò)2009連接到其他計(jì)算機(jī)系統(tǒng)或外圍裝置。
在聯(lián)網(wǎng)部署中,計(jì)算機(jī)系統(tǒng)2000可以在服務(wù)器-客戶(hù)端用戶(hù)網(wǎng)絡(luò)環(huán)境中作為服務(wù)器或作為客戶(hù)端-用戶(hù)計(jì)算機(jī)來(lái)操作,或者在對(duì)等(peer-to-peer)(或分布式)網(wǎng)絡(luò)環(huán)境中作為對(duì)等計(jì)算機(jī)系統(tǒng)來(lái)操作。計(jì)算機(jī)系統(tǒng)2000還可以被實(shí)現(xiàn)為或并入各種裝置,諸如能夠執(zhí)行指令組2002的個(gè)人計(jì)算機(jī)或移動(dòng)計(jì)算裝置,指令組2002指定要由該機(jī)器采取的動(dòng)作,包括但不限于通過(guò)任何形式的瀏覽器訪問(wèn)互聯(lián)網(wǎng)或網(wǎng)絡(luò)。進(jìn)一步地,所描述的每個(gè)系統(tǒng)可以包括子系統(tǒng)的任何集合,該子系統(tǒng)單獨(dú)地或聯(lián)合地執(zhí)行一組或多組指令以執(zhí)行一個(gè)或多個(gè)計(jì)算機(jī)功能。如上所述,指令可以表示為邏輯的形式。
計(jì)算機(jī)系統(tǒng)2000可以包括在用于傳送信息的總線2010上的存儲(chǔ)器2003。可操作成使計(jì)算機(jī)系統(tǒng)執(zhí)行本文所述的任何動(dòng)作或操作的代碼可存儲(chǔ)在存儲(chǔ)器2003中。存儲(chǔ)器2003可以是隨機(jī)存取存儲(chǔ)器、只讀存儲(chǔ)器、可編程存儲(chǔ)器、硬盤(pán)驅(qū)動(dòng)器或任何其它類(lèi)型的易失性或非易失性存儲(chǔ)器或存儲(chǔ)裝置。
計(jì)算機(jī)系統(tǒng)2000可以包括諸如如上所述的中央處理單元(CPU)和/或圖形處理單元(GPU)的處理器2001。處理器2001可以包括一個(gè)或多個(gè)通用處理器、數(shù)字信號(hào)處理器、專(zhuān)用集成電路、現(xiàn)場(chǎng)可編程門(mén)陣列、數(shù)字電路、光學(xué)電路、模擬電路,它們的組合或用于分析和處理數(shù)據(jù)的其他現(xiàn)在已知的或以后開(kāi)發(fā)的裝置。處理器2001可以執(zhí)行指令集2002或其他軟件程序,諸如用于實(shí)現(xiàn)邏輯功能的人工編程或計(jì)算機(jī)生成的代碼。為了視聽(tīng)目的或其他數(shù)字處理目的(例如用于計(jì)算機(jī)處理的兼容性),所描述的邏輯功能或任何系統(tǒng)元件可以將模擬數(shù)據(jù)源(諸如模擬電信號(hào)、音頻信號(hào)或視頻信號(hào)或其組合)處理和/或轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)源。
計(jì)算機(jī)系統(tǒng)2000還可以包括磁盤(pán)或光驅(qū)動(dòng)單元2004。磁盤(pán)驅(qū)動(dòng)單元2004可以包括其中可以放入一組或多組指令2002(例如軟件)的計(jì)算機(jī)可讀介質(zhì)2005。此外,指令2002可以執(zhí)行如本文所述的操作中的一個(gè)或多個(gè)。指令2002可以在由計(jì)算機(jī)系統(tǒng)2000執(zhí)行期間完全或至少部分地駐留在存儲(chǔ)器2003和/或處理器2008內(nèi)。因此,數(shù)據(jù)庫(kù)可以存儲(chǔ)在存儲(chǔ)器2003和/或磁盤(pán)單元2004中。
存儲(chǔ)器2003和處理器2008還可以包括如上所述的計(jì)算機(jī)可讀介質(zhì)?!坝?jì)算機(jī)可讀介質(zhì)”、“計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)”、“機(jī)器可讀介質(zhì)”、“傳播信號(hào)介質(zhì)”和/或“信號(hào)承載介質(zhì)”可以包括:包括、存儲(chǔ)、通信、傳播或傳輸由指令可執(zhí)行系統(tǒng)、設(shè)備或裝置使用或與其結(jié)合使用的軟件。機(jī)器可讀介質(zhì)可以選擇性地是,但不限于:電子、磁、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備、裝置或傳播介質(zhì)。
另外,計(jì)算機(jī)系統(tǒng)2000可以包括被配置為便于用戶(hù)與系統(tǒng)2000的任何部件交互的輸入裝置2007,諸如鍵盤(pán)或鼠標(biāo)。計(jì)算機(jī)系統(tǒng)2000可以進(jìn)一步包括顯示器,諸如液晶顯示器(LCD)、陰極射線管(CRT)或適于傳達(dá)信息的任何其它顯示器。顯示器可以用作便于用戶(hù)看到處理器2001的功能的接口,或者具體地作為與存儲(chǔ)在存儲(chǔ)器2003或驅(qū)動(dòng)單元2004中的軟件之間的接口。如上所述,客戶(hù)控制的裝置可以包括顯示器和輸入裝置,例如輸入裝置2007。
計(jì)算機(jī)系統(tǒng)2000可以包括使得能夠經(jīng)由通信網(wǎng)絡(luò)2009進(jìn)行通信的通信接口2008。網(wǎng)絡(luò)2009可以包括有線網(wǎng)絡(luò)、無(wú)線網(wǎng)絡(luò)或其組合。如上所述,通信接口2008網(wǎng)絡(luò)可以經(jīng)由諸如802.11、802.17、802.20、WiMAX、802.15.4、蜂窩電話標(biāo)準(zhǔn)或其他通信標(biāo)準(zhǔn)這樣的任何數(shù)量的通信標(biāo)準(zhǔn)來(lái)實(shí)現(xiàn)通信。僅僅因?yàn)榱谐鲞@些標(biāo)準(zhǔn)中的一個(gè)并不意味著任何一個(gè)是優(yōu)選的,因?yàn)槿魏螖?shù)量的這些標(biāo)準(zhǔn)可能從未實(shí)際上在商業(yè)產(chǎn)品中被采用。
系統(tǒng)的不同方面的框圖可以使用圖20中公開(kāi)的計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)。此外,流程圖可以使用由一個(gè)或多個(gè)處理器執(zhí)行的計(jì)算機(jī)可讀指令,以便實(shí)現(xiàn)所公開(kāi)的功能。最后,顯示器可以在I/O裝置上輸出。
本公開(kāi)設(shè)想了一種計(jì)算機(jī)可讀介質(zhì),其包括指令或者響應(yīng)于傳播信號(hào)來(lái)接收并執(zhí)行指令,使得連接到網(wǎng)絡(luò)的裝置可以通過(guò)網(wǎng)絡(luò)傳送語(yǔ)音、視頻、音頻、圖像或任何其他數(shù)據(jù)。此外,可以經(jīng)由通信接口在網(wǎng)絡(luò)上發(fā)送或接收指令。通信接口可以是處理器的一部分或者可以是單獨(dú)的部件。通信接口可以以軟件的形式創(chuàng)建或者可以是硬件形式的物理連接。通信接口可以被配置為與網(wǎng)絡(luò)、外部介質(zhì)、顯示器或系統(tǒng)中的任何其它部件或其組合相連接。與網(wǎng)絡(luò)的連接可以是物理連接,諸如有線以太網(wǎng)連接,或者可以如下討論的那樣以無(wú)線方式建立。在服務(wù)提供商服務(wù)器的情況下,服務(wù)提供商服務(wù)器可以通過(guò)通信接口與用戶(hù)通信。
計(jì)算機(jī)可讀介質(zhì)可以是單個(gè)介質(zhì),或者計(jì)算機(jī)可讀介質(zhì)可以是單個(gè)介質(zhì)或多個(gè)介質(zhì),例如集中式或分布式數(shù)據(jù)庫(kù),和/或相關(guān)聯(lián)的緩存和服務(wù)器,其存儲(chǔ)一個(gè)或多個(gè)指令組。術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”還可以包括能夠存儲(chǔ)、編碼或攜帶指令組的任何介質(zhì),該指令組用于被處理器執(zhí)行或可以使計(jì)算機(jī)系統(tǒng)執(zhí)行本文公開(kāi)的方法或操作中的任何一種或多種。
計(jì)算機(jī)可讀介質(zhì)可以包括固態(tài)存儲(chǔ)器,例如存儲(chǔ)卡或容納一個(gè)或多個(gè)非易失性只讀存儲(chǔ)器的其他封裝。計(jì)算機(jī)可讀介質(zhì)還可以是隨機(jī)存取存儲(chǔ)器或其它易失性可重寫(xiě)存儲(chǔ)器。另外,計(jì)算機(jī)可讀介質(zhì)可以包括磁光介質(zhì)或光學(xué)介質(zhì),諸如磁盤(pán)或磁帶或其他存儲(chǔ)設(shè)備,用于捕獲載波信號(hào),例如通過(guò)傳輸介質(zhì)傳輸?shù)男盘?hào)。電子郵件的數(shù)字文件附件或其他自包含信息檔案或檔案集合可以被認(rèn)為是可以是有形存儲(chǔ)介質(zhì)的分布介質(zhì)。計(jì)算機(jī)可讀介質(zhì)優(yōu)選地是有形的和非暫態(tài)的存儲(chǔ)介質(zhì)。因此,本公開(kāi)可以被認(rèn)為包括計(jì)算機(jī)可讀介質(zhì)或分布介質(zhì)以及其中可以存儲(chǔ)數(shù)據(jù)或指令的其他等同物和后繼介質(zhì)中的任何一個(gè)或多個(gè)。
可替換地或者作為補(bǔ)充,可構(gòu)建專(zhuān)用硬件實(shí)施方案(例如專(zhuān)用集成電路、可編程邏輯陣列和其它硬件裝置)以實(shí)施本文中所描述的方法中的一個(gè)或一個(gè)以上。可以包括各個(gè)實(shí)施例的設(shè)備和系統(tǒng)的應(yīng)用可以廣泛地包括各種電子和計(jì)算機(jī)系統(tǒng)。本文描述的一個(gè)或多個(gè)實(shí)施例可以使用兩個(gè)或更多個(gè)特定互連的硬件模塊或裝置來(lái)實(shí)現(xiàn)功能,相關(guān)的控制和數(shù)據(jù)信號(hào)可以在這些模塊之間傳送和通過(guò)這些模塊傳送,或者作為專(zhuān)用集成電路的一部分。因此,本系統(tǒng)可以包括軟件、固件和硬件實(shí)施方式。
本文所描述的方法可以由計(jì)算機(jī)系統(tǒng)可執(zhí)行的軟件程序來(lái)實(shí)現(xiàn)。進(jìn)一步地,實(shí)施方式可以包括分布式處理、部件/對(duì)象分布式處理和并行處理??商鎿Q地或作為補(bǔ)充,虛擬計(jì)算機(jī)系統(tǒng)處理可以被構(gòu)造為實(shí)現(xiàn)如本文所述的方法或功能中的一個(gè)或多個(gè)。
盡管描述了可以在特定實(shí)施例中參考特定標(biāo)準(zhǔn)和協(xié)議來(lái)實(shí)現(xiàn)的部件和功能,但是部件和功能不限于這樣的標(biāo)準(zhǔn)和協(xié)議。例如,用于因特網(wǎng)和其他分組交換網(wǎng)絡(luò)傳輸(例如,TCP/IP,UDP/IP,HTML和HTTP)的標(biāo)準(zhǔn)代表現(xiàn)有技術(shù)的示例。這樣的標(biāo)準(zhǔn)周期性地被具有基本上相同功能的更快或更有效的等同物所取代。因此,具有與本文公開(kāi)的功能相同或相似的功能的替換標(biāo)準(zhǔn)和協(xié)議被認(rèn)為是其等同物。
本文描述的圖示旨在提供對(duì)各種實(shí)施例的結(jié)構(gòu)的一般理解。這些圖示并不旨在用作對(duì)利用本文所述的結(jié)構(gòu)或方法的設(shè)備、處理器和系統(tǒng)的所有元件和特征的完整描述。在回顧本公開(kāi)內(nèi)容時(shí),許多其他實(shí)施例對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的??梢岳闷渌麑?shí)施例和從本公開(kāi)推導(dǎo)出其他實(shí)施例,使得可以進(jìn)行結(jié)構(gòu)和邏輯替換和改變而不脫離本公開(kāi)的范圍。另外,這些圖示僅是代表性的,并且可能不是按比例繪制的。圖解內(nèi)的某些比例可能被夸大,而其他比例可以被最小化。因此,本公開(kāi)和附圖被認(rèn)為是說(shuō)明性的而不是限制性的。
上述公開(kāi)的主題被認(rèn)為是說(shuō)明性的,而不是限制性的,并且所附權(quán)利要求旨在覆蓋落入本描述的真實(shí)精神和范圍內(nèi)的所有這樣的修改、增強(qiáng)和其他實(shí)施例。因此,在法律允許的最大程度內(nèi),范圍通過(guò)對(duì)所附權(quán)利要求及其等同物的最寬的可允許的解釋來(lái)確定,并且不應(yīng)受到前述詳細(xì)描述的約束或限制。