專利名稱:利用嵌入式編碼像素測量遠程視頻回放性能的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及利用嵌入式編碼像素測量遠程視頻回放性能。
背景技術(shù):
計算行業(yè)近年來已有許多進步,這些進步產(chǎn)生了大量產(chǎn)品和服務。計算系統(tǒng)也有 了許多改變,包括它們的虛擬化。計算機資源的虛擬化通常意味著涉及計算機硬件的抽象, 其實質(zhì)是將操作系統(tǒng)與應用同底層硬件相分離。硬件因而在多個操作系統(tǒng)和應用之間被共 享,其中每個操作系統(tǒng)和應用在對應的虛擬機(VM)中被隔離。虛擬化的結(jié)果是硬件被更有 效利用并被平衡,因此虛擬桌面基礎(chǔ)架構(gòu)(VDI)正成為更有前途的解決方案。利用VDI,用 戶通過網(wǎng)絡(luò)連接訪問在遠程服務器上運行的虛擬機所提供的個人桌面。每個VM是完整的 執(zhí)行環(huán)境,并且服務器通過網(wǎng)絡(luò)連接提供用戶界面,從而在用戶和VM之間傳輸用戶輸入和 輸出。在用戶使用遠程服務時為用戶提供與使用程序在本地執(zhí)行的傳統(tǒng)系統(tǒng)類似的桌面體 驗,這是非常有吸引力的。用戶體驗的質(zhì)量基于許多基礎(chǔ)因子(例如,往返等待時間或網(wǎng)絡(luò) 帶寬)而會變化。 在用于遠程傳送的眾多關(guān)鍵應用中,解決方案提供商將遠程視頻回放視為最重要 的應用之一。遠程視頻回放也是最經(jīng)常使用的應用之一,其由于施加在實時視頻傳送所需 的底層資源(例如,服務器計算能力和下行鏈路帶寬)上的壓力,易受到性能劣化的影響。 在視頻傳送期間,多數(shù)資源會變成瓶頸。盡管存在一些措施來找到這些資源中的一些資源 的利用率,但是不存在測量遠程端的視頻性能和質(zhì)量的準確方法。過去的方法使用對進入 網(wǎng)絡(luò)數(shù)據(jù)的分析,以試圖使網(wǎng)絡(luò)性能和視頻質(zhì)量相關(guān)。該方法并不準確,因為可能發(fā)生由于 有限帶寬而使服務器端的協(xié)議降低視頻的比特率,或者因為可能存在影響視頻性能的一些 用于播放器皮膚(Player skin)、窗口外觀或其他屏幕更新的分組。
正是在這種情況下,本發(fā)明的實施例應運而生。 本申請與2008年12月18日遞交的名為"MEASURING CLIENT INTERACTIVE PERFORMANCE USING A DISPLAY CHANNEL"的美國專利申請12/337, 774有關(guān),該申請通過引 用結(jié)合于此。
發(fā)明內(nèi)容
本發(fā)明的實施例提供了用于測量遠程視頻傳送的性能的方法、系統(tǒng)和計算機程 序。編碼信息被添加到視頻幀的像素中,以在將視頻傳送到遠程客戶后標識幀號碼并獲得 信息。 應當認識到,本發(fā)明可以以多種方式實現(xiàn),例如方法、裝置、系統(tǒng)、設(shè)備或者計算機 可讀介質(zhì)上的方法。下面描述了本發(fā)明的若干創(chuàng)造性實施例。 在一個實施例中,一種方法在服務器計算機處在視頻流的幀中嵌入標記符,所述 標記符包括預配置的像素序列,并且其后跟隨被編碼在像素數(shù)據(jù)中的幀號碼。在一個實施 例中,針對每個字節(jié)的像素數(shù)據(jù)編碼一個比特。該方法隨后在客戶計算機處找到第一標記
5符,以確定所述標記符在顯示中的位置。 一旦標記符的位置被確定,后續(xù)幀中的標記符以及 他們對應的幀號碼就被檢測。該方法存儲每個檢測到的標記符的幀號碼和到達時間。所存 儲的到達時間和幀號碼可以用于遠程視頻傳送的統(tǒng)計性能分析。在另一實施例中,包含在 計算機可讀存儲介質(zhì)中的計算機程序可以用來執(zhí)行該方法。 在又一實施例中,一種測量遠程視頻傳送的性能的系統(tǒng)包括視頻服務器、視頻客 戶以及性能服務器。視頻服務器傳送視頻流并將標記符嵌入視頻流的選定幀中。標記符包 括預配置的像素序列,并且其后跟隨包含編碼幀號碼的像素。視頻客戶接收所述視頻流并 且被配置成找到第一標記符,然后在其他視頻幀中檢測其后的標記符。 一旦在顯示中找到 第一標記符,其位置就被用做尋找其他標記符以及他們對應幀號碼的位置。性能服務器被 配置成從視頻客戶接收每個檢測到的標記符的幀號碼和到達時間,以及存儲所接收的到達 時間和幀號碼。 通過下面以示例的方式對本發(fā)明原理的詳細說明并結(jié)合附圖,本發(fā)明的其他方面 將變得明顯。
通過下面的說明并結(jié)合附圖可以最好地理解本發(fā)明,其中 圖1描述了根據(jù)一個實施例的遠程視頻回放環(huán)境。 圖2示出了根據(jù)一個實施例使用在視頻通道上發(fā)送并且在鏡像緩沖器上檢測到 的信息測量視頻性能的體系結(jié)構(gòu)。 圖3A-3D描述了用于在視頻通道上發(fā)送編碼信息的不同實施例。 圖4描述了根據(jù)一個實施例在客戶和服務器之間的視頻通信。 圖5圖示了在視頻通信的像素中傳輸編碼信息的實施例。 圖6圖示了利用增量更新傳輸視頻信息的實施例。 圖7描述了根據(jù)一個實施例解碼每字節(jié)像素數(shù)據(jù)的一比特信息。 圖8示出了根據(jù)一個實施例檢測視頻通信中的標記符的開始的方法流程。 圖9A-9C示出了利用本發(fā)明的實施例獲得的性能度量的圖形表達。 圖10示出了根據(jù)一個實施例測量遠程視頻傳送的性能的方法流程。 圖11是用于實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)的簡化示意圖。
具體實施例方式
下面的實施例描述了用于測量遠程視頻傳送的性能的方法和裝置。然而對本領(lǐng)
域普通技術(shù)人員來說很明顯,本發(fā)明可以在沒有這些具體細節(jié)中的一些或全部的情況下實
施。在其他實例中,并未詳細描述公知的方法步驟,以免不必要地混淆本發(fā)明。
圖1描述了根據(jù)一個實施例的遠程視頻回放環(huán)境。圖1中描述的環(huán)境包括虛擬桌
面服務器114,虛擬桌面服務器114向遠程用戶118提供虛擬桌面。盡管本發(fā)明的實施例是
在虛擬桌面系統(tǒng)中進行描述的,但是這里提供的實施例可以在具有將顯示數(shù)據(jù)傳輸?shù)竭h程
客戶的遠程顯示應用的其他環(huán)境中使用。 視頻服務器116有權(quán)訪問視頻庫112,視頻庫112保有用于呈現(xiàn)給用戶118的多種 不同視頻。視頻服務器116可以將視頻直接傳送給用戶118,或者可以將視頻傳送到虛擬桌面服務器114,虛擬桌面服務器114隨后將視頻傳送到用戶118。在一個實施例中,視頻是 由web服務器120在瀏覽器窗口 102內(nèi)傳送的。 性能服務器122從服務器和客戶收集性能數(shù)據(jù),然后分析收集的數(shù)據(jù)用以提供給 用戶。盡管圖1中分別示出了不同的服務器,但是服務器114、116、120和122可以組合成 一個或多個服務器,或者可以在多個服務器上復制以用于視頻傳送優(yōu)化。網(wǎng)絡(luò)110在服務 器之間并且在服務器和客戶之間傳輸數(shù)據(jù)。用于視頻傳送的客戶可以是多種類型,例如個 人計算機104、膝上型電腦106、移動電話108、PDA、連接到機頂盒124的TV屏幕126等。
本發(fā)明的實施例測量用戶118或多個用戶所見到的虛擬環(huán)境的性能。視頻數(shù)據(jù) 在被在網(wǎng)絡(luò)IIO上傳輸之前被編碼。視頻數(shù)據(jù)可以使用不同的視頻編碼方法和協(xié)議進行 傳輸,例如用于運行微軟終端服務的計算機的遠程桌面協(xié)議(RDP),多媒體流技術(shù),例如 Adobe的Flash⑧、微軟的Silverlight⑧、以及數(shù)字多媒體廣播(DMB),數(shù)字TV信號傳輸協(xié) 議,例如數(shù)字視頻廣播(DVB)、數(shù)字地面電視(DTT)、等等。 遠程桌面協(xié)議是支持多通道的協(xié)議,其支持用于承載表達數(shù)據(jù)、串行設(shè)備通信、許 可信息、高度加密數(shù)據(jù)(鍵盤、鼠標活動)等的單獨虛擬通道。在一個實施例中,視頻數(shù)據(jù) 是使用RDP的顯示通道進行傳輸?shù)摹T谠S多情形中,由于服務器和客戶之間的防火墻和其 他障礙,顯示通道是到達客戶機器的唯一通道。此外,這里提供的實施例獨立于用來傳輸顯 示數(shù)據(jù)的通信協(xié)議,因此能夠在不同拓撲結(jié)構(gòu)和協(xié)議之下可靠獲得性能測量結(jié)果,并且評 估不同因素如何影響視頻性能。此外,這里提供的方法可以擴展到數(shù)萬客戶和服務器,而不 會過度加重虛擬基礎(chǔ)架構(gòu)的負擔。 網(wǎng)絡(luò)分組分析不足以獲得視頻傳送的可靠性能測量。用于獲得性能度量的一種方 法是使用單獨的插口 (socket)連接以將視頻元數(shù)據(jù)傳輸?shù)娇蛻?,例如每個所傳輸幀的幀 號碼。這種方法的問題是,由于視頻幀是在單獨的連接上發(fā)送的,分組可能以不同的順序到 達,因此等待時間測量結(jié)果不準確。該方法還需要服務器端上的修改。因此,需要一種方 法,該方法不依賴于任何底層協(xié)議,不需要對服務器端的任何改變,并能提供測量客戶端的 遠程視頻回放的質(zhì)量和等待時間的準確方法。 本發(fā)明的實施例提供了在每幀視頻中的視頻數(shù)據(jù)中編碼視頻元數(shù)據(jù),這里也稱之 為水印,從而元數(shù)據(jù)可以在客戶端被準確標識。 圖2示出了根據(jù)一個實施例使用在視頻通道上發(fā)送并且在鏡像緩沖器上檢測到 的信息測量視頻性能的體系結(jié)構(gòu)。視頻服務器212生成視頻顯示的虛擬桌面視圖218,其 被傳輸?shù)娇蛻?02。視頻管理器216訪問視頻庫214以獲得所需的視頻信息并為遠程客戶 202播放視頻。視頻傳送模塊220與遠程客戶202通信以通過通信通道222傳輸視頻數(shù)據(jù)。 在一個實施例中,視頻數(shù)據(jù)以視頻更新的形式發(fā)送,如圖6所示,但是用于傳輸視頻數(shù)據(jù)的 其他方法也是可行的。 在客戶202處,幀緩沖器210使用包含客戶的桌面視圖204的數(shù)據(jù)的完整幀的存 儲器緩沖器來驅(qū)動視頻顯示器(未示出)。緩沖器中的信息典型地包含屏幕上的每個像素 的色彩值。色彩值通常以1比特黑白、4比特調(diào)色、8比特調(diào)色、16比特高彩色、24比特真彩 色格式存儲。 為了準確測量遠程視頻回放的質(zhì)量和等待時間,知曉哪個幀以及何時在客戶端被 接收至關(guān)重要。這在網(wǎng)絡(luò)層中很難做到,因為分組不一定具有視頻幀的信息。本發(fā)明的實
7施例使用顯示器驅(qū)動器處的信息,其中由于所有視頻幀被提供給顯示器設(shè)備幀緩沖器210, 因此在顯示器驅(qū)動器處所有更新被提供。服務器212生成具有經(jīng)編碼的嵌入信息的定制視 頻。在一個實施例中,編碼包括標記符和視頻元數(shù)據(jù)。標記符可以是已知的視頻像素序列, 這里也被稱為魔術(shù)像素,而視頻元數(shù)據(jù)提供視頻幀的信息,例如幀號碼。下文參考圖5描述 了用于編碼視頻元數(shù)據(jù)的一個實施例??梢园ㄔ谝曨l元數(shù)據(jù)中的其他信息可以包括時間 戳、產(chǎn)生視頻圖像的應用的標識、服務器標識(例如,名稱、IP地址等)、視頻信息(屏幕尺 寸、分辨率、編碼等)、壓縮信息、代理服務器信息、恥b服務器等。 在一個實施例中,標記符和元數(shù)據(jù)被包括在每個幀中,而在另一實施例中,標記符 和元數(shù)據(jù)被周期性包括在例如每2個幀中的一個幀中。嵌入幀信息的頻率可以隨時間調(diào) 節(jié),例如在視頻傳送的開始時較高頻率,在預定義的初始階段之后較低頻率。此外,可以基 于環(huán)境因子來調(diào)節(jié)頻率,例如運行視頻的應用、視頻分辨率、客戶或服務器的網(wǎng)絡(luò)帶寬等。 盡管抽樣幀不能產(chǎn)生與檢查每個幀同樣準確的性能度量,但是如果檢查的幀的數(shù)量很大, 那么抽樣獲得的性能測量結(jié)果可以盡量準確。例如,如果只有具有偶數(shù)幀號碼的幀被添加 標記符,在檢查大量偶數(shù)幀之后,例如1000個幀,所述方法計算偶數(shù)幀的5%在視頻傳輸期 間丟失,那么可以合理推斷該度量,并假定總體丟失率(對于偶數(shù)和奇數(shù)號碼幀兩者)為 5%。通過減少所傳輸視頻幀所需的處理量,抽樣能夠節(jié)約計算資源。 當視頻幀進入時,視頻數(shù)據(jù)被檢查,如果發(fā)現(xiàn)編碼信息,那么為視頻幀記錄幀號碼 和到達時間。該方法對于無損壓縮工作良好,其中在無損壓縮中標記符和幀號碼像素的值 沒有改變。然而,該方法在有損壓縮的情形中不能正常工作,因為由于壓縮和解壓縮,標記 符和元數(shù)據(jù)在傳輸期間會改變。在一個實施例中,為補償傳輸損失,使用預期像素值附近的 值范圍,如下面參考圖7所描述的那樣。 鏡像緩沖器208保持幀緩沖器210的存儲器的拷貝,以降低視頻跟蹤器206掃描 尋找編碼像素所需的處理量。顯示鏡像技術(shù)被遠程桌面應用廣泛使用,例如NetMeeting、 PC Anywhere、 VNC、 Webex等。鏡像要比原語屏幕抓取執(zhí)行起來更優(yōu),因為鏡像允許僅獲取 顯示器的最小更新區(qū)域并直接獲取數(shù)據(jù),繞過了中間拷貝??少徺I到的鏡像緩沖器的一個 示例是DFMirage,一種用于Windows NT OS家族的視頻驅(qū)動器鏡像技術(shù)。DFMirage是用于 在圖形系統(tǒng)的顯示驅(qū)動器管理層(D匿L)級別處管理的虛擬視頻設(shè)備的驅(qū)動器,其精確鏡 像一個或多個物理顯示設(shè)備的畫圖操作。在另一實施例中,視頻跟蹤器206直接檢查幀緩 沖器210,而不使用鏡像緩沖器。 視頻傳送可以包括多媒體重定向(匪R),其中客戶和服務器處的軟件模塊智能工 作以在客戶和服務器之間動態(tài)重定向多媒體處理任務。多媒體流在客戶處使用設(shè)備的本地
處理能力被本地解碼,從而提供了完整的多媒體回放能力,克服了在傳統(tǒng)單薄計算體系結(jié) 構(gòu)中固有的所有限制。多媒體流在客戶處被解碼,從而釋放了服務器的處理能力。在一個 使用匪R的實施例中, 一旦客戶處的匪R組件解碼視頻數(shù)據(jù),視頻跟蹤器就分析視頻數(shù)據(jù)。 如果使用了 Adobe Flash⑧重定向,那么通過在視頻信息在客戶處被解碼之后分析視頻幀 信息,也可以使用該方法。 在另一實施例中,視頻性能測量是在不同服務器或客戶負荷下進行的,以分析計 算機資源(例如CPU、存儲器等)的可用性是如何影響視頻傳送的。例如,視頻性能測量針 對運行web托管(hosting)應用的服務器進行,并且針對不運行web托管的相同服務器進行。結(jié)果被比較以分析web托管如何影響相同服務器對視頻的傳送。 圖3A-3D描述了用于在視頻通道上發(fā)送編碼信息的不同實施例。在圖3A中,包括 標記符和元數(shù)據(jù)的編碼塊302 (這里也被稱作宏塊)被嵌入視頻圖像的左上角,但是視頻屏 幕上的其他位置也是可以的。圖5描述了將信息編碼到視頻數(shù)據(jù)中的更多細節(jié)。圖3A示 出了窗口顯示環(huán)境,其中視頻圖像被呈現(xiàn)在窗口之一當中。在其他環(huán)境中(例如圖3B所示 出的環(huán)境),視頻以全屏模式顯示。全屏視頻的傳送可能包括在客戶處對所傳輸視頻的分辨 率改變,以便填充整個視頻屏幕。在此情形中,一個實施例包括在服務器處擴大視頻用于全 屏呈現(xiàn)之前檢查所接收的視頻幀。在一個實施例中,擴大的比例是預定義的,而在另一實施 例中,擴大的比例作為幀中的嵌入信息被傳輸?shù)娇蛻簟?在圖3B所示的實施例中,編碼塊304被屏幕上的已知值遮蔽,例如圖標310,即,與 編碼塊304相對應的區(qū)域在客戶處被其他視頻信息代替,以便對用戶隱藏編碼塊。圖標可 以是在客戶處預配置的,或者可以是作為編碼塊中的元數(shù)據(jù)被傳輸。在并沒有在每個幀中 傳輸編碼塊的另一實施例中,編碼塊304用來自最近接收到的不具有編碼標記符的視頻幀 的視頻數(shù)據(jù)遮蔽。 圖3C示出了在瀏覽器窗口內(nèi)部顯示的視頻內(nèi)的編碼塊306。由于窗口的位置以及 瀏覽器中視頻區(qū)域的位置均可能改變,因此需要找到編碼塊位于顯示中的什么位置。下文 的圖6描述了找到編碼塊的方法。 圖3D示出了在視頻數(shù)據(jù)內(nèi)發(fā)送冗余信息的實施例。編碼塊308a-d被包括在視頻 顯示的不同部分之中,用于冗余目的,這在視頻信息高損失的情形下會有用,或者在測試期 間輔助視覺塊識別。 應當意識到,圖3A-3D中圖示的實施例是視頻幀內(nèi)加密塊的示例性布置。其他實 施例可以使用不同布置或不同像素值。因此,圖3A-3D圖示的實施例不應當被理解為窮盡 性的或限制性的,而僅具示例性或圖示性。 圖4描述了根據(jù)一個實施例在客戶和服務器之間的視頻通信。服務器404將幀 Fl-F5 406a-e依次傳輸?shù)娇蛻?02。完整的視頻幀可以在一次操作中發(fā)送,或者視頻幀可 以以視頻顯示的分區(qū)(稱為更新)分部分地發(fā)送。此外,視頻幀或視頻更新可以被下面對 應的傳輸層分段,以便在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)。在一個實施例中,只有選中的幀包括嵌入信息, 例如幀406a、406c和406e。在另一實施例中,所有幀攜帶嵌入信息。 圖5圖示了在視頻通信的像素中傳輸編碼信息的實施例。編碼宏塊534被嵌入到 顯示530的窗口 532當中。宏塊534包括標記符536、元數(shù)據(jù)538和填充部分540。在一個 實施例中,宏塊538具有100個像素的大小,但是其他值也是可以的。應當意識到,圖5中 的宏塊534是示例性布置,其他實施例可以采用不同的組成要素、組成要素的子集、或者不 同順序下的相同組成要素。因此,圖5圖示的實施例不應當被理解為窮盡性或限制性的,而 僅具示例性或圖示性。 根據(jù)一個實施例,宏塊534內(nèi)的像素可以具有三個值中的一個
1.紅〈Oxff0000〉,
2.綠〈OxOOffOO〉,或
3.藍〈OxOOOOff〉。 這三個特定色彩具有為Oxff或0x00的字節(jié)組分。即使在特定協(xié)議中存在有損壓
9縮,解壓縮之后的最終色彩值也不會大幅度改變,因為協(xié)議必須在客戶端提供看起來相似 的屏幕。例如,如果字節(jié)0x00在解壓縮之后變成0x3a,那么可以使用適當?shù)钠铋撝祦碚?蔽該不希望得到的噪聲。在一個實施例中,與預期值的偏差作為所接收視頻質(zhì)量的額外計 量被記錄。 視頻元數(shù)據(jù)538以相似的方式被編碼。在一個實施例中,幀號碼使用字節(jié)Oxff或 0x00編碼。幀號碼的每個比特在一個字節(jié)中被編碼。例如,如果最大幀號碼可以表示為n 比特,那么幀號碼的比特表達式為仏A…bJ。如果比特bi具有二進制值l,那么bi被編 碼為Oxf f ,如果其具有二進制值0,那么bi被編碼為0x00。因此,每個幀號碼被編碼為Oxf f 和OxOO的序列。當在客戶端重建幀號碼時該編碼是有用的,因為適當?shù)拈撝当挥脕碚诒斡?損壓縮中產(chǎn)生的噪聲或者由任何其他原因引起的噪聲。在其他實施例中,每個比特在來自 像素數(shù)據(jù)的多個字節(jié)中被編碼。在另一實施例中,每個比特的信息在像素數(shù)據(jù)的一個子像 素中被編碼。子像素被表示為一個像素的色彩組分的強度值。通常,子像素定義像素的紅、 綠或藍組分的強度(intensity)信息。對于24比特"真彩色",其中每個子像素被編碼為一 個字節(jié)(8比特)的像素數(shù)據(jù),那么在一個字節(jié)中編碼每個比特。但是,如果子像素需要不 同的存儲量,那么將使用子像素所需要的存儲量對每個比特編碼。例如,在16比特"高彩 色"中,紅色和藍色子像素每個用5比特的數(shù)據(jù)編碼,而綠色子像素用6比特編碼。
—些視頻或圖像壓縮算法依靠被稱為色度(chroma)子抽樣的算法,其中色度(或 色彩信息)以比亮度(或亮度信息)更低的分辨率進行抽樣。在此情形中,使用子像素信 息對個體像素數(shù)據(jù)來說會是不可靠的。當使用色度子抽樣時,可以使用像素的總體強度對 每個比特的信息編碼,而不是在子像素信息的基礎(chǔ)上進行區(qū)分。在此情形中,可以使用白色 和黑色像素,從而每個像素與一個比特的信息相關(guān)。可以實施多種技術(shù)來獲得準確的總體 強度值。例如,由于綠色組分攜帶最多的強度信息,因此每個像素的綠色組分可以被單獨用 來標識比特值。 在一個實施例中,視頻幀被首先在單獨圖像文件中被解碼,然后魔術(shù)像素和特定 幀號碼被嵌入每個圖像頭8個像素中(24字節(jié),假定BGR24編碼)??赡馨l(fā)生一些協(xié)議將執(zhí) 行視頻優(yōu)化并且丟棄很小的變化,從而僅將相對于先前視頻幀顯著的更新發(fā)送到視頻幀。 因此,為避免由于視頻優(yōu)化引起的信息丟失,隨機填充部分540被包括在宏塊534中,其中 隨機填充部分540在幀與幀之間不同。通過定制視頻,每個發(fā)送的幀帶有隨機填充部分、標 記符和幀號碼。最后,使用無損壓縮編碼圖像文件以使定制視頻帶有嵌入的元數(shù)據(jù)。
在另一實施例中,視頻幀的編碼可以"即時"(on the fly)完成,即,在視頻數(shù)據(jù)被
傳輸?shù)娇蛻糁罢诒惶幚頃r,在視頻數(shù)據(jù)上完成視頻幀的編碼。在又一實施例中,視頻幀 的編碼可以在操作員的請求下"即時"完成。這允許操作員自由打開或關(guān)閉編碼,以便獲得 特定客戶的視頻質(zhì)量測量結(jié)果。這對檢查視頻傳送是否支持滿足所需服務級別協(xié)議(SLA) 的期望服務級別是有幫助的。 注意上述編碼是示例性的,本領(lǐng)域普通技術(shù)人員在了解本說明書公開的內(nèi)容后, 可以想到許多修改方式,這些修改也落在本發(fā)明的范圍之內(nèi)。例如,前述過程可以用在具有 每像素不同編碼比特數(shù)目和不同顏色深度的視頻數(shù)據(jù)中。 圖6圖示了利用增量更新傳輸視頻信息的實施例。不同的遠程顯示協(xié)議以不同的 方式發(fā)送更新。視頻幀可以作為多個更新被發(fā)送,其可以由不同通信協(xié)議出于優(yōu)化目的而完成。更新640a-d對應于視頻顯示的不同部分。如果視頻在窗口 632內(nèi)運行,那么宏塊634 的位置取決于窗口的位置并且在一些情形中取決于視頻在窗口內(nèi)的位置(如圖3C所示), 而可能變化。 在客戶處在每個視頻幀中搜索到標記符是非常消耗資源的。在一個實施例中,標
記符的位置在第一個幀上發(fā)現(xiàn),然后在未來幀中僅檢查那個標記符的位置以搜索到宏塊。
為了簡化客戶處的搜索,在一個實施例中僅對預定的視頻屏幕區(qū)域進行搜索以找到標記
符,但是完整屏幕630也可以用做標記符搜索的范圍。如果更新矩形與預定的視頻屏幕不
重疊,那么認為該更新矩形不具有嵌入的標記符。相反,如果更新與預定視頻屏幕區(qū)域重
疊,那么更新與預定視頻屏幕區(qū)域的交集被掃描以找到標記符或宏塊。 在一個實施例中,必須滿足下述條件以確定已找到標記符 1.頭九個連續(xù)字節(jié)滿足以下約束條件 _b2、b^Pb6 >上閾值-b。、bi、b3、bs、b7和b8 <下閾值 2.所有后面的15個字節(jié)bi(i G 0-14)滿足以下約束條件
<下閾值)或& >上閾值) 這些條件意味著標記符具有值OxOOOOFFOOFFOOFFOOOO,但是通過調(diào)節(jié)第一條件, 其他標記符也是可以的。如果對于特定像素滿足所有約束條件,那么該像素被認為是標記 符的開始,并且該像素的位置被記錄以定義將對所有進入視頻幀或更新搜索標記符的區(qū) 域。可以調(diào)節(jié)上閾值和下閾值的值以控制誤測的數(shù)量。在一個實施例中,它們的值分別是 OxaO和0x50,但是其他值也是可以的。下面的偽代碼描述了用來找到標記符的算法
FindMagicPixelsStartPoint 0
If (update—rectangle—overlap (video—screen) == false) return None
Region = intersection(video—screen, update—rectangle)
For each pixel in Region
Skip—pixels—if—constraints—not—met 0 If (CheckForRGBConstraints (pixel) == True) If (CheckforFrameN咖berConstraints (pixel) == True) return pixel —旦已標識出標記符,就通過掃描后面的15個字節(jié)找到幀號碼。如果給定字節(jié)大 于0x80,那么給定字節(jié)被分配二進制值l,否則其被分配二進制值O。 15個比特組合在一起
形成最終幀號碼。下面的偽代碼描述了找到幀號碼的程序
FindCurrentFrame ()
startPixel = MagicPixelStartPoint
framePixelStartPoint = startPixel+9
frame—num = 0
for i in[O to 14]
index = framePixelStartPoint+i bit = (framebuffer[index] > 0x80) frame—num = (bit << i) | frame—num
return frame num 幀號碼的15個比特的使用是示例性的,還可以使用其他值。其他實施例使用基于 顏色深度和分辨率的幀號碼的其他類型編碼。圖7描述了根據(jù)一個實施例解碼每字節(jié)像素 數(shù)據(jù)的一比特信息。圖7的幀號碼具有8比特的尺寸。8個字節(jié)被包括在抽樣接收序列702 中。在第一操作中,如前所述,每個字節(jié)被分配預測的傳輸值。例如,0x01被分配預期的傳 輸值0x00,而0xb3被分配0xff 。進一步地,每個分配的值被分配比特值0或1,如串706所 示,并且8個比特組合成一個幀號碼708,具有二進制值0x4A。 圖8示出了根據(jù)一個實施例檢測視頻通信中的標記符的開始的方法流程。在操作 802中,過程等待視頻更新。 一旦接收到視頻更新,操作804就確定視頻更新是否包括可以 檢測到標記符的視頻屏幕的至少一部分。如果更新不包括標記符的可能位置,那么方法返 回到操作802,否則方法繼續(xù)操作805,在操作805中,找到預先規(guī)定的視頻屏幕和更新之間 的交集。在操作806中,從交集區(qū)域獲得第一像素作為標記符的可能開始的第一候選。
操作810確定像素是否滿足作為標記符開始的條件。例如參見上面參考圖6描述 的條件。如果已檢測到標記符的開始,那么方法繼續(xù)操作S14,操作814返回作為標記符開 始的像素,否則方法繼續(xù)操作812,檢查是否有更多候選像素。如果有更多候選像素,那么方 法進入操作808,在操作808中,在循環(huán)回到操作810之前選擇下一像素。如果操作812確 定不再有候選像素,那么方法返回到操作802,在操作802中方法等待新的視頻更新。
圖9A-9C示出了利用本發(fā)明的實施例獲得的性能度量的圖形表達。圖9A示出了 根據(jù)一個實施例限制上行鏈路帶寬對遠程視頻回放的影響。 一旦上行鏈路帶寬降至100千 比特/秒(kpbs)之下,所支持的幀速率就有大幅度的下降。圖9B示出了限制下行鏈路帶 寬對遠程視頻回放的影響。對于20,000kpbs以上的下行鏈路速度,所支持的幀速率幾乎是 恒定的。對于20,000kpbs以下的下行鏈路速度,所支持的幀速率以幾乎線性的方式下降。
圖9C示出了增加往返等待時間對遠程視頻回放的影響。隨著往返等待時間增加, 支持的幀速率下降,因為幀由于網(wǎng)絡(luò)條件或由于服務器上的高資源使用率而遭到丟棄。
圖10示出了根據(jù)一個實施例測量遠程視頻傳送的性能的方法流程。在操作1002 中,方法在服務器計算機處在視頻流的選定幀中嵌入標記符。標記符包括預配置的像素序 列,并且后面跟隨幀號碼,幀號碼被編碼為每字節(jié)像素數(shù)據(jù)的至少一個比特。例如參見圖 3A-3D關(guān)于如何將標記符嵌入視頻顯示中的示例,以及圖5-6關(guān)于如何編碼信息的示例。
在操作1004中,方法在客戶計算機處找到第一標記符以確定標記符在顯示中的 位置。例如參見參考圖6描述的作為檢測第一標記符的一個實施例的偽代碼。在操作1006 中檢測第一標記符之后的標記符以及他們對應的幀號碼。在操作1008中,方法存儲每個檢
12測到的標記符的幀號碼和到達時間。 圖11是用于實現(xiàn)本發(fā)明實施例的計算機系統(tǒng)的簡化示意圖。應當意識到,這里描 述的方法可以用數(shù)字處理系統(tǒng)執(zhí)行,例如傳統(tǒng)的通用計算機系統(tǒng)。或者,可以使用被設(shè)計或 編程用來執(zhí)行僅僅一個功能的專用計算機。計算機系統(tǒng)包括中央處理單元(CPU)1104,CPU 1104通過總線lllO連接到隨機存取存儲器(RAM) 1106、只讀存儲器(ROM) 1112、以及大容量 存儲設(shè)備1114。程序1108駐留在隨機存取存儲器(RAM) 1106中,但也可以駐留在大容量存 儲設(shè)備1114中。程序1108可以包括與這里描述的實施例相關(guān)聯(lián)的任何程序,例如實現(xiàn)圖 1的視頻服務器116、虛擬服務器114、web服務器120和性能服務器122的功能以及圖2的 視頻跟蹤器206、視頻管理器216和視頻傳送220的功能的程序。 大容量存儲設(shè)備1114代表永久性的數(shù)據(jù)存儲設(shè)備,例如軟盤驅(qū)動或固定盤驅(qū)動, 其可以是本地或遠程的。網(wǎng)絡(luò)接口 1130提供與網(wǎng)絡(luò)1132的連接,允許與其它設(shè)備通信。應 當意識到,CPU 1104可以實現(xiàn)為通用處理器、專用處理器、或?qū)iT編程邏輯設(shè)備。輸入/輸 出(I/O)接口提供與不同外圍設(shè)備的通信,并且通過總線1110與CPU 1104、RAM 1106、R0M 1112和大容量存儲設(shè)備1114相連。示例性外圍設(shè)備包括顯示器1118、鍵盤1122、光標控制 1124、可移動介質(zhì)設(shè)備1134等。 顯示器1118被配置成顯示這里描述的用戶界面,例如圖2的遠程桌面視圖202。 鍵盤1122、光標控制1124、可移動介質(zhì)設(shè)備1134和其它外圍設(shè)備耦合到1/0接口 1120,以 便向CPU 1104傳送命令集信息。應當意識到,來自和去往外部設(shè)備的數(shù)據(jù)可以通過I/0接 口 1120傳送。 本發(fā)明的實施例可以利用多種計算機系統(tǒng)配置來實施,包括手持設(shè)備、微處理器 系統(tǒng)、基于微處理器或可編程的消費電子產(chǎn)品、微機算計、大型計算機等。本發(fā)明還可以在 分布式計算環(huán)境中實施,在分布式計算環(huán)境中,任務由通過有線或無線網(wǎng)絡(luò)連接的遠程處 理設(shè)備執(zhí)行。 盡管虛擬化操作可以采用許多形式,但是為確保物理機器的物理構(gòu)建被正確轉(zhuǎn) 移到虛擬機, 一些概念是重要的。有鑒于此,作為參考,有關(guān)虛擬系統(tǒng)和方法的更多信息 可以在由本申請的申請人威睿公司擁有的美國專利中找到。因此,美國專利6,397,242, 6, 496, 847, 7, 069, 413, 7, 356, 679和美國申請公開2008/0244028A1通過引用結(jié)合于此。
出于完整性考慮,參考一個示例性服務器系統(tǒng),其是由加州Palo Alto的VMware 公司提供的"ESXTM"。然而所述的方法、系統(tǒng)和實施例不限于任何品牌的服務器或虛擬化服 務器。示例ESX服務器是將物理服務器劃分成多個虛擬機的系統(tǒng)監(jiān)管器。每個虛擬機可以 代表完整系統(tǒng),具有處理器、存儲器、連網(wǎng)、存儲裝置和BIOS。 VMware ESX使得多個虛擬機 能夠(a)共享物理資源,(b)運行未經(jīng)修改的操作系統(tǒng)和應用,以及(c)在同一服務器上并 排運行資源密集型應用。取決于它們的目標產(chǎn)品,其它供應商制造的其它服務器可以具有 類似的功能或更多或更少的功能。因此,可以使用任何產(chǎn)品、軟件或硬件配置來實施所述系 統(tǒng)、方法和計算機可讀介質(zhì)。 參考上述實施例,應當理解,本發(fā)明可以使用多種計算機實現(xiàn)的涉及存儲在計算 機系統(tǒng)中的數(shù)據(jù)的操作。這些操作是需要對物理量進行物理操縱的操作。這里描述的構(gòu)成 本發(fā)明一部分的任何操作是有用的機器操作。本發(fā)明還涉及用于執(zhí)行這些操作的設(shè)備或裝 置。所述裝置可以為所需目的專門構(gòu)建,或者所述裝置可以是由存儲在計算機中的計算機程序有選擇地啟動或配置的通用計算機。特別地,多個通用計算機可以結(jié)合根據(jù)這里的教 導編寫的計算機程序一起使用?;蛘?,構(gòu)建更為專門的裝置來執(zhí)行所需操作可能是更方便 的。 本發(fā)明還可以實現(xiàn)為計算機可讀介質(zhì)上的計算機可讀代碼。計算機可讀介質(zhì)是能
夠存儲數(shù)據(jù)的任何數(shù)據(jù)存儲設(shè)備,其隨后可以被計算機系統(tǒng)讀取。計算機可讀介質(zhì)的示例
包括硬驅(qū)動、網(wǎng)絡(luò)附接存儲(NAS)、只讀存儲器、隨機存取存儲器、CD-R0M、 CD-R、 CD-RW、磁
帶、以及其它光和非光數(shù)據(jù)存儲設(shè)備。計算機可讀介質(zhì)可以包括在網(wǎng)絡(luò)連接的計算機系統(tǒng)
上分布的計算機可讀有形介質(zhì),從而計算機可讀代碼以分布的方式被存儲和執(zhí)行。 盡管以具體的順序描述了方法操作,但是應當理解,其它內(nèi)務操作可以在操作之
間執(zhí)行,或者操作可以被調(diào)整使得它們在稍不同的時間發(fā)生,或者可以分布在下述系統(tǒng)中,
所述系統(tǒng)允許在與處理相關(guān)聯(lián)的多個間隔處發(fā)生處理操作,只要上層操作的處理以期望的
方式被執(zhí)行即可。 盡管出于明確說明的目的詳細描述了前述發(fā)明,很明顯在權(quán)利要求的范圍內(nèi)可以 進行某些修改和改變。因此,實施例應視為示例性的而非限制性的,并且本發(fā)明不限于這里 給出的細節(jié),而是可以在權(quán)利要求的范圍和等同物之內(nèi)進行修改。
1權(quán)利要求
一種計算機實現(xiàn)的用于測量遠程視頻傳送的性能的方法,所述方法包括在服務器計算機處在視頻流的選定幀中嵌入標記符,所述標記符包括預配置的像素序列,并且其后跟隨被編碼在像素數(shù)據(jù)中的幀號碼;在客戶計算機處找到第一標記符,以確定所述標記符在顯示中的位置;檢測所述第一標記符之后的標記符以及它們對應的幀號碼;以及存儲每個檢測到的標記符的幀號碼和到達時間。
2. 如權(quán)利要求1所述的方法,進一步包括在服務器計算機處在所述選定幀中嵌入圍繞所述標記符和所述幀號碼的隨機宏塊。
3. 如權(quán)利要求1所述的方法,其中所述幀號碼是通過組合多個比特形成的,來自所述 多個比特的每個比特被編碼在像素數(shù)據(jù)的一個字節(jié)中。
4. 如權(quán)利要求1所述的方法,其中所述幀號碼是通過組合多個比特形成的,來自所述 多個比特的每個比特被編碼在多個像素數(shù)據(jù)字節(jié)中。
5. 如權(quán)利要求1所述的方法,其中所述幀號碼是通過組合多個比特形成的,來自所述 多個比特的每個比特被編碼在來自所述像素數(shù)據(jù)的子像素中,所述子像素包括對應像素中 的色彩的強度信息。
6. 如權(quán)利要求1所述的方法,其中找到第一標記符的步驟進一步包括 從所述視頻流接收顯示更新,直到在顯示更新中找到幀號碼, 評估接收到的顯示更新是否包括所述顯示內(nèi)的視頻顯示屏幕,當所述接收到的顯示更新包括所述視頻顯示屏幕時,確定所述接收到的顯示更新是否 包括幀號碼,以及當所述接收到的顯示更新包括所述幀號碼時,將值分配給所述標記符的位置。
7. 如權(quán)利要求6所述的方法,其中確定所述接收到的顯示更新是否包括幀號碼的步驟 進一步包括搜索所述接收到的顯示更新以找到所述預配置序列; 確定找到的預配置序列之后的多個像素是否形成有效幀號碼,以及 當所述預配置序列已被找到并且找到的預配置序列之后的所述多個像素形成有效幀 號碼時,確立所述幀號碼已找到。
8. 如權(quán)利要求7所述的方法,其中搜索所述接收到的顯示更新的步驟進一步包括 允許所述預配置序列中與標準值的預定偏差。
9. 如權(quán)利要求7所述的方法,其中確定找到的預配置序列之后的多個像素是否形成有 效幀號碼的步驟進一步包括當來自所述多個像素的每個字節(jié)的值在兩個有效值范圍之一中時,評估所述每個字節(jié) 的值是有效的,當來自所述多個像素的所有字節(jié)的值被評估為有效時,確定幀號碼是有效的。
10. 如權(quán)利要求1所述的方法,其中檢測標記符的步驟進一步包括 從所述視頻流接收顯示更新,確定所述顯示更新是否包括所述標記符的位置,當所述顯示更新包括所述標記符的位置時,搜索所述顯示更新中預配置的像素序列,以及當在所述搜索過程中找到所述預配置序列時,從所述預配置序列之后的像素中解碼所 述幀號碼。
11. 如權(quán)利要求10所述的方法,其中解碼所述幀號碼的步驟進一步包括 將二進制比特值分配給來自所述預配置序列之后的多個像素的每個字節(jié), 合并所分配的二進制比特值以形成二進制字,以及 將所述二進制字分派給所述幀號碼。
12. 如權(quán)利要求11所述的方法,其中解碼所述幀號碼的步驟進一步包括 當分配二進制比特值時使用閾值,以及基于來自所述預配置序列之后的所述多個像素的字節(jié)值與標準字節(jié)值的偏差,測量所 述視頻流的質(zhì)量。
13. 如權(quán)利要求IO所述的方法,其中所述顯示更新包括用于所述視頻流的幀內(nèi)的矩形 的顯示數(shù)據(jù)。
14. 一種測量遠程視頻傳送的性能的系統(tǒng),所述系統(tǒng)包括用于傳送視頻流的視頻服務器,所述視頻服務器將標記符嵌入所述視頻流的選定幀 中,所述標記符包括預配置的像素序列,并且其后跟隨被編碼在像素數(shù)據(jù)中的幀號碼; 接收所述視頻流的視頻客戶,所述視頻客戶被配置成 找到第一標記符以確定所述標記符在顯示中的位置,并且 檢測所述第一標記符之后的標記符以及它們對應的幀號碼;以及 性能服務器,被配置成從所述視頻客戶接收每個檢測到的標記符的幀號碼和到達時間,以及 存儲所接收的到達時間和幀號碼。
15. 如權(quán)利要求14所述的系統(tǒng),其中所述選定幀中的標記符被放置在視頻幀的若干位置中。
16. 如權(quán)利要求14所述的系統(tǒng),其中所述視頻流在所述顯示中的窗口內(nèi)顯示。
17. 如權(quán)利要求14所述的系統(tǒng),其中所述視頻流在所述顯示處以全屏模式被顯示。
18. 如權(quán)利要求14所述的系統(tǒng),其中所述視頻客戶進一步包括連接到幀緩沖器的鏡像緩沖器,所述幀緩沖器接收來自所述服務器的更新,其中所述 視頻客戶通過監(jiān)視所述鏡像緩沖器來檢測標記符。
19. 一種包含在計算機可讀存儲介質(zhì)中的計算機程序,當由一個或多個處理器執(zhí)行時,用于測量遠程視頻傳送的性能,所述計算機程序包括用于在服務器計算機處在視頻流的選定幀中嵌入標記符的程序指令,所述標記符包括 預配置的像素序列,并且其后跟隨被編碼在像素數(shù)據(jù)中的幀號碼;用于在客戶計算機處找到第一標記符以確定所述標記符在顯示中的位置的程序指令;用于檢測所述第一標記符之后的標記符以及它們對應的幀號碼的程序指令;以及 用于存儲每個檢測到的標記符的幀號碼和到達時間的程序指令。
20. 如權(quán)利要求19所述的計算機程序,其中標記符被嵌入在所述視頻流的每個幀中。
21. 如權(quán)利要求19所述的計算機程序,其中標記符被周期性嵌入在所述視頻流的幀 中,嵌入標記符的周期是可調(diào)的。
22. 如權(quán)利要求19所述的計算機程序,其中所述標記符在所述客戶計算機處的所述顯 示中是用預配置值遮蔽的。
23. 如權(quán)利要求19所述的計算機程序,其中所述標記符在所述客戶計算機處的所述顯 示中是用與最近的沒有標記符的幀相對應的值遮蔽的。
全文摘要
本發(fā)明提供了用于測量遠程視頻傳送的性能的方法、系統(tǒng)和計算機程序。該方法在服務器計算機處在視頻流的選定幀中嵌入標記符。該標記符包括預配置的像素序列并且其后跟隨編碼在像素數(shù)據(jù)中的幀號碼。該方法隨后在客戶計算機處找到第一標記符以確定標記符在顯示中的位置。一旦標記符的位置被確定,后續(xù)幀中的標記符及其對應的幀號碼被檢測。該方法存儲每個檢測到的標記符的幀號碼和到達時間。存儲的到達時間和幀號碼可以用于遠程視頻傳送的統(tǒng)計性能分析。
文檔編號H04N7/173GK101783937SQ200910250399
公開日2010年7月21日 申請日期2009年12月7日 優(yōu)先權(quán)日2008年12月18日
發(fā)明者梅金賈·維克拉姆M, 畢達卡·里希N, 科里斯南·斯里尼瓦斯, 薩特娜·蘇尼爾, 阿格拉沃爾·班尼特 申請人:威睿公司