一種多媒體重定向的方法、設(shè)備和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例提供一種多媒體重定向的方法、設(shè)備和系統(tǒng),涉及多媒體技術(shù)領(lǐng)域,能夠解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。具體方案為:服務(wù)器接收客戶端發(fā)送的硬件解碼能力,硬件解碼能力是客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,服務(wù)器在接收到硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流,服務(wù)器將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示。本發(fā)明實(shí)施例用于基于非Windows操作系統(tǒng)的客戶端的多媒體重定向。
【專利說明】
一種多媒體重定向的方法、設(shè)備和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明實(shí)施例涉及多媒體技術(shù)領(lǐng)域,尤其涉及一種多媒體重定向的方法、設(shè)備和系統(tǒng)。
【背景技術(shù)】
[0002]基于虛擬桌面基礎(chǔ)架構(gòu)(Virtual Desktop Infrastructure,VDI)的遠(yuǎn)程桌面技術(shù)可以通過本地客戶端遠(yuǎn)程控制服務(wù)器的虛擬桌面,從而進(jìn)行遠(yuǎn)程屏幕顯示、遠(yuǎn)程聲音傳送、可插拔硬件映射等操作。在通過遠(yuǎn)程虛擬桌面進(jìn)行多媒體文件例如視頻文件(視頻文件的視頻數(shù)據(jù)可以包括文字、音頻、視覺媒體、動畫等各種類型的多媒體數(shù)據(jù))播放時,月艮務(wù)器通常通過中央處理器(Central Processing Unit,CPU)將視頻數(shù)據(jù)進(jìn)行軟件解碼,并將解碼后的視頻數(shù)據(jù)傳遞給顯示驅(qū)動,而后將解碼后的視頻數(shù)據(jù)發(fā)送至客戶端進(jìn)行顯示,上述過程可以參見圖1,其中,服務(wù)器的桌面協(xié)議服務(wù)端根據(jù)桌面協(xié)議組織網(wǎng)絡(luò)報文將解碼后的視頻數(shù)據(jù)發(fā)送至桌面協(xié)議客戶端。這樣以來,由于視頻數(shù)據(jù)需要通過服務(wù)器的CPU進(jìn)行軟件解碼,使得服務(wù)器的CPU、內(nèi)存等資源占用率較高。
[0003]現(xiàn)有技術(shù)中,當(dāng)基于Windows操作系統(tǒng)的客戶端將微軟視頻硬件加速(DirectXVideo Accelerat1n,DXVA)規(guī)范的硬件解碼能力發(fā)送至基于Windows操作系統(tǒng)的服務(wù)器時,服務(wù)器可以將該硬件解碼能力當(dāng)作自身的硬件解碼能力,又由于客戶端具有該硬件解碼能力,因而服務(wù)器可以不通過CPU對視頻數(shù)據(jù)進(jìn)行軟件解碼,而可以通過Windows顯示驅(qū)動模型(Windows Display Driver Model,WDDM)截取到未解碼的視頻數(shù)據(jù),并將未解碼的視頻數(shù)據(jù)通過桌面協(xié)議服務(wù)端發(fā)送至桌面協(xié)議客戶端進(jìn)行硬件解碼并顯示,從而實(shí)現(xiàn)視頻數(shù)據(jù)的重定向,該過程可以參見圖2。這里的重定向是指,服務(wù)器將解碼前的視頻數(shù)據(jù)發(fā)送至客戶端進(jìn)行解碼從而進(jìn)行視頻播放。但現(xiàn)有技術(shù)中的重定向方案僅適用于基于Windows操作系統(tǒng)的客戶端,不適用于基于Linux、Android、1S等非Windows操作系統(tǒng)的客戶端。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供一種多媒體重定向的方法、設(shè)備和系統(tǒng),能夠解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0005]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0006]第一方面,提供了一種多媒體重定向的方法,包括:
[0007]服務(wù)器接收客戶端發(fā)送的硬件解碼能力,所述硬件解碼能力是所述客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力;
[0008]所述服務(wù)器在接收到所述硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流;
[0009]所述服務(wù)器將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示。
[0010]結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級別。
[0011]結(jié)合第一方面,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流包括:
[0012]所述服務(wù)器從圖片緩沖區(qū)中獲取解碼所述視頻數(shù)據(jù)所需要的解碼參數(shù)信息,所述解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從所述碼流緩沖區(qū)中獲取所述視頻數(shù)據(jù)的視頻幀序列;
[0013]所述服務(wù)器將所述解碼參數(shù)信息填充到所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中;
[0014]所述服務(wù)器將所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列合成得到所述標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0015]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能實(shí)現(xiàn)的方式中,所述服務(wù)器將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示包括:
[0016]所述服務(wù)器向所述客戶端發(fā)送視頻幀指令,所述視頻幀指令包括所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀;
[0017]所述服務(wù)器向所述客戶端發(fā)送所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域。
[0018]結(jié)合第一方面至第一方面的第三種可能的實(shí)現(xiàn)方式中的任意一種,在第一方面的第四種可能實(shí)現(xiàn)的方式中,在所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流之前,所述方法還包括:
[0019]所述服務(wù)器根據(jù)所述客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令;
[0020]所述服務(wù)器將所述解碼器初始化指令發(fā)送至所述客戶端,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器,以等待接收視頻幀。
[0021]結(jié)合第一方面的第四種可能實(shí)現(xiàn)的方式,在第一方面的第五種可能實(shí)現(xiàn)的方式中,所述方法還包括:
[0022]所述服務(wù)器在發(fā)送完所述視頻幀之后,向所述客戶端發(fā)送解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。
[0023]第二方面,提供一種多媒體重定向的方法,包括:
[0024]客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,所述客戶端包括非Windows操作系統(tǒng);
[0025]所述客戶端向服務(wù)器發(fā)送所述DXVA規(guī)范的硬件解碼能力;
[0026]所述客戶端接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對所述視頻碼流進(jìn)行解碼并顯示。
[0027]結(jié)合第二方面,在第二方面的第一種可能實(shí)現(xiàn)的方式中,所述客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力包括:
[0028]所述客戶端將所述硬件解碼能力按照所述DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。
[0029]結(jié)合第二方面,在第二方面的第二種可能實(shí)現(xiàn)的方式中,所述客戶端接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對所述視頻碼流進(jìn)行解碼并顯示包括:
[0030]所述客戶端接收所述服務(wù)器發(fā)送的視頻幀指令,所述視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀,所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率;
[0031]所述客戶端接收所述服務(wù)器發(fā)送的所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域;
[0032]所述客戶端根據(jù)所述視頻幀指令和所述渲染指令,對所述視頻碼流進(jìn)行解碼并顯不O
[0033]結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中的任一種,在第二方面的第三種可能實(shí)現(xiàn)的方式中,所述方法還包括:
[0034]在所述客戶端接收所述視頻碼流之前,接收所述服務(wù)器發(fā)送的解碼器初始化指令,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器;
[0035]在完成解碼后,所述客戶端接收所述服務(wù)器發(fā)送的解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。
[0036]第三方面,提供一種服務(wù)器,包括:
[0037]接收單元,用于接收客戶端發(fā)送的硬件解碼能力,所述硬件解碼能力是所述客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力;
[0038]還原單元,用于在所述接收單元接收到所述硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流;
[0039]發(fā)送單元,用于將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示。
[0040]結(jié)合第三方面,在第三方面的第一種可能的實(shí)現(xiàn)方式中,所述DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級別。
[0041]結(jié)合第三方面,在第三方面的第二種可能的實(shí)現(xiàn)方式中,所述還原單元具體用于:
[0042]從圖片緩沖區(qū)中獲取解碼所述視頻數(shù)據(jù)所需要的解碼參數(shù)信息,所述解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從所述碼流緩沖區(qū)中獲取所述視頻數(shù)據(jù)的視頻幀序列;
[0043]將所述解碼參數(shù)信息填充到所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中;
[0044]將所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列合成得到所述標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0045]結(jié)合第三方面的第二種可能的實(shí)現(xiàn)方式,在第三方面的第三種可能實(shí)現(xiàn)的方式中,所述發(fā)送單元具體用于:
[0046]向所述客戶端發(fā)送視頻幀指令,所述視頻幀指令包括所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀;
[0047]向所述客戶端發(fā)送所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域。
[0048]結(jié)合第三方面至第三方面的第三種可能的實(shí)現(xiàn)方式中的任意一種,在第三方面的第四種可能實(shí)現(xiàn)的方式中,還包括:
[0049]構(gòu)建單元,用于根據(jù)所述客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令;
[0050]所述發(fā)送單元還用于,將所述解碼器初始化指令發(fā)送至所述客戶端,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器,以等待接收視頻幀。
[0051]結(jié)合第三方面的第四種可能實(shí)現(xiàn)的方式,在第三方面的第五種可能實(shí)現(xiàn)的方式中,所述發(fā)送單元還用于:
[0052]在發(fā)送完所述視頻幀之后,向所述客戶端發(fā)送解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。
[0053]第四方面,提供一種客戶端,包括:
[0054]處理單元,用于將所述客戶端的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,所述客戶端包括非Windows操作系統(tǒng);
[0055]發(fā)送單元,用于向服務(wù)器發(fā)送所述DXVA規(guī)范的硬件解碼能力;
[0056]接收單元,用于接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流;
[0057]所述處理單元還用于,對所述接收單元接收到的所述視頻碼流進(jìn)行解碼并顯示。
[0058]結(jié)合第四方面,在第四方面的第一種可能實(shí)現(xiàn)的方式中,所述處理單元具體用于:
[0059]將所述硬件解碼能力按照所述DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。
[0060]結(jié)合第四方面,在第四方面的第二種可能實(shí)現(xiàn)的方式中,所述接收單元具體用于:
[0061]接收所述服務(wù)器發(fā)送的視頻幀指令,所述視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀,所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率;
[0062]接收所述服務(wù)器發(fā)送的所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域;
[0063]所述處理單元具體用于,根據(jù)所述接收單元接收到的所述視頻幀指令和所述渲染指令,對所述視頻碼流進(jìn)行解碼并顯示。
[0064]結(jié)合第四方面至第四方面的第二種可能的實(shí)現(xiàn)方式中的任意一種,在第四方面的第三種可能實(shí)現(xiàn)的方式中,所述接收單元還用于:
[0065]在接收所述視頻碼流之前,接收所述服務(wù)器發(fā)送的解碼器初始化指令,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器;
[0066]在完成解碼后,接收所述服務(wù)器發(fā)送的解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。
[0067]第五方面,提供一種系統(tǒng),包括如第三方面所述的服務(wù)器和如第四方面所述的客戶端。
[0068]本發(fā)明實(shí)施例提供一種多媒體重定向的方法、設(shè)備和系統(tǒng),基于非Windows操作系統(tǒng)的客戶端通過將其硬件解碼能力轉(zhuǎn)換為基于Windows操作系統(tǒng)的服務(wù)器能夠識別的DXVA規(guī)范的硬件解碼能力并發(fā)送至服務(wù)器,服務(wù)器以此硬件解碼能力當(dāng)作自身的硬件解碼能力從而不對視頻數(shù)據(jù)進(jìn)行軟件解碼,而是將未解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流并發(fā)送至實(shí)際具有硬件解碼能力的客戶端,以便于基于非Windows操作系統(tǒng)的客戶端也能夠?qū)υ摌?biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,以此來實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
【附圖說明】
[0069]為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0070]圖1為現(xiàn)有技術(shù)中客戶端遠(yuǎn)程控制服務(wù)器進(jìn)行視頻播放時的交互示意圖;
[0071]圖2為現(xiàn)有技術(shù)中基于Windows操作系統(tǒng)的客戶端和服務(wù)器進(jìn)行多媒體重定向時的交互示意圖;
[0072]圖3為本發(fā)明實(shí)施例提供的一種多媒體重定向的方法流程圖;
[0073]圖4為本發(fā)明另一實(shí)施例提供的一種多媒體重定向的方法流程圖;
[0074]圖5為現(xiàn)有技術(shù)中WDDM的模型結(jié)構(gòu)示意圖;
[0075]圖6為本發(fā)明實(shí)施例提供的H.264標(biāo)準(zhǔn)編碼格式的碼流結(jié)構(gòu)示意圖;
[0076]圖7為本發(fā)明實(shí)施例提供的服務(wù)器向客戶端發(fā)送的消減后的指令序列;
[0077]圖8為本發(fā)明實(shí)施例提供的一種服務(wù)器與客戶端的交互流程圖;
[0078]圖9為本發(fā)明實(shí)施例提供的一種服務(wù)器與客戶端的交互示意圖;
[0079]圖10為本發(fā)明另一實(shí)施例提供的一種多媒體重定向的方法流程圖;
[0080]圖11本發(fā)明實(shí)施例提供的一種服務(wù)器結(jié)構(gòu)示意圖;
[0081]圖12本發(fā)明實(shí)施例提供的另一種服務(wù)器結(jié)構(gòu)示意圖;
[0082]圖13本發(fā)明實(shí)施例提供的一種客戶端結(jié)構(gòu)示意圖;
[0083]圖14本發(fā)明另一實(shí)施例提供的一種服務(wù)器結(jié)構(gòu)示意圖;
[0084]圖15本發(fā)明另一實(shí)施例提供的一種客戶端結(jié)構(gòu)示意圖;
[0085]圖16本發(fā)明實(shí)施例提供的一種系統(tǒng)結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0086]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0087]基于VDI的遠(yuǎn)程桌面技術(shù)將運(yùn)行Windows操作系統(tǒng)的服務(wù)器桌面進(jìn)行虛擬化,客戶端與服務(wù)器的虛擬桌面進(jìn)行連接從而實(shí)現(xiàn)遠(yuǎn)程屏幕顯示、遠(yuǎn)程視頻播放等,而不是為每個客戶端都配置一臺運(yùn)行Windows操作系統(tǒng)的物理桌面,客戶端訪問遠(yuǎn)程虛擬桌面類似于訪問傳統(tǒng)的本地桌面。服務(wù)器虛擬桌面通常通過兩種方式來實(shí)現(xiàn):服務(wù)器上運(yùn)行若干Windows虛擬機(jī)(Virtual Machine,VM),客戶端以一對一的方式連接到VM,其中的VM是指通過軟件模擬的具有完整硬件系統(tǒng)功能的,運(yùn)行在一個隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng);月艮務(wù)器上安裝Windows刀片,從而構(gòu)成若干個刀片式服務(wù)器,客戶端以一對一的方式連接到刀片服務(wù)器。本發(fā)明實(shí)施例將以第一種實(shí)現(xiàn)方式為例進(jìn)行說明。
[0088]在進(jìn)行遠(yuǎn)程視頻文件播放時,可以通過兩種方案對視頻數(shù)據(jù)進(jìn)行解碼:通過CPU進(jìn)行軟件解碼的方案;通過硬件模塊進(jìn)行硬件解碼的方案。例如,可以通過圖形芯片廠商提供的圖形處理器(Graphic Processing Unit, GPU)進(jìn)行硬件解碼,從而通過硬件模塊替代軟件算法以充分利用硬件所固有的快速特性實(shí)現(xiàn)視頻硬件加速,增強(qiáng)計(jì)算機(jī)的視頻性能。其中,GPU通常為顯卡的核心部件。
[0089]DXVA規(guī)范是微軟公司專門定制的視頻加速規(guī)范,DXVA規(guī)范中規(guī)定了四種GPU的硬件解碼能力級別:視頻比特流處理VLD級別、幀內(nèi)壓縮IDC級別、幀間壓縮MoComp級別、后期處理PostProc級別。其中,VLD級別是最高級別的硬件解碼能力,可以包含IDCT級別、MoComp級別和PostProc級別的硬件解碼能力。具有VLD級別的硬件解碼能力的GPU可以對未解碼的視頻數(shù)據(jù)流進(jìn)行解析,而后進(jìn)行IDCT、MoComp、PostProc等處理,從而實(shí)現(xiàn)硬件解碼。而IDCT級別、MoComp級別和PostProc級別的硬件解碼能力,則需要CPU先對未解碼的視頻數(shù)據(jù)流進(jìn)行解析,得到若干宏塊,而后通過GPU對宏塊繼續(xù)進(jìn)行相應(yīng)的解碼處理。因而,具有VLD級別的硬件解碼能力的GPU可以直接對未解碼的視頻數(shù)據(jù)流進(jìn)行解碼處理。基于微軟Windows操作系統(tǒng)的客戶端具有的硬件解碼能力可以分為以上四個級別。
[0090]在視頻文件播放前,視頻文件中的視頻數(shù)據(jù)為標(biāo)準(zhǔn)編碼格式的視頻碼流,這里的標(biāo)準(zhǔn)編碼格式可以是視頻編碼標(biāo)準(zhǔn)中規(guī)定的編碼格式,例如可以包括由視頻編碼專家組(Video Coding Experts Group, VCEG)和動態(tài)圖像專家組(Moving Picture ExpertsGroup, MPEG)聯(lián)合組成的聯(lián)合視頻組(Joint Video Team, JVT)提出的高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn)H.264規(guī)定的標(biāo)準(zhǔn)編碼格式,運(yùn)動圖像專家組(Moving Picture ExpertsGroup, MPEG)制定的基于數(shù)字存儲媒體運(yùn)動圖像和語音的壓縮標(biāo)準(zhǔn)MPEG-2規(guī)定的標(biāo)準(zhǔn)編碼格式,微軟開發(fā)的視訊編解碼器(Video Codec 1,VC_1)規(guī)定的標(biāo)準(zhǔn)編碼格式,音視頻編碼標(biāo)準(zhǔn)(Aud1 Video coding Standard,AVS)規(guī)定的標(biāo)準(zhǔn)編碼格式以及其它多種標(biāo)準(zhǔn)編碼格式,本發(fā)明實(shí)施例將以視頻文件中的標(biāo)準(zhǔn)編碼格式的視頻碼流為H.264標(biāo)準(zhǔn)編碼格式(即H.264規(guī)定的標(biāo)準(zhǔn)編碼格式)為例進(jìn)行說明。在開始進(jìn)行視頻文件播放后,現(xiàn)有技術(shù)中服務(wù)器對標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解析,播放器等應(yīng)用程序按照多媒體編程接口(Direct extens1n,DX)運(yùn)行庫提供的接口,傳入相應(yīng)的參數(shù)進(jìn)行接口調(diào)用,最終調(diào)用到WDDM驅(qū)動中并發(fā)送至客戶端的視頻數(shù)據(jù)不再是標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0091]在本申請文件以下實(shí)施例的描述中,基于非Windows操作系統(tǒng)的客戶端采用基于VDI的遠(yuǎn)程桌面技術(shù)與基于Windows操作系統(tǒng)的服務(wù)器連接,從而進(jìn)行遠(yuǎn)程多媒體文件播放。其中,客戶端具體可以遠(yuǎn)程登錄服務(wù)器中運(yùn)行的虛擬機(jī),并通過虛擬機(jī)中的WDDM、播放器、DX運(yùn)行庫、桌面協(xié)議服務(wù)端等部件進(jìn)行多媒體重定向,從而進(jìn)行遠(yuǎn)程多媒體文件播放。
[0092]參見圖3,本發(fā)明實(shí)施例提供一種多媒體重定向的方法,可以包括以下主要步驟:
[0093]101、服務(wù)器接收客戶端發(fā)送的硬件解碼能力,硬件解碼能力是客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力。
[0094]102、服務(wù)器在接收到硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0095]103、服務(wù)器將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示。
[0096]在步驟101中,服務(wù)器可以為基于Windows操作系統(tǒng)的服務(wù)器,可以識別DXVA規(guī)范的硬件解碼能力。客戶端可以為基于非Windows操作系統(tǒng)的客戶端,其所具有的硬件解碼能力不是DXVA規(guī)范的硬件解碼能力,在客戶端將其具有的非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力后,該硬件解碼能力能夠被基于Windows操作系統(tǒng)的虛擬機(jī)識別。對于具有DXVA規(guī)范的硬件解碼能力的基于Windows操作系統(tǒng)的客戶端來說,基于Windows操作系統(tǒng)的服務(wù)器中的虛擬機(jī)可以識別其DXVA規(guī)范的硬件解碼能力,因而可以不用轉(zhuǎn)換而直接發(fā)送至虛擬機(jī),這與現(xiàn)有技術(shù)一致。本發(fā)明實(shí)施例中的客戶端若無特別說明,則均為基于非Windows操作系統(tǒng)的客戶端。
[0097]可選地,DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級別。
[0098]可選地,在步驟102中,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流可以包括:
[0099]服務(wù)器從圖片緩沖區(qū)中獲取解碼視頻數(shù)據(jù)所需要的解碼參數(shù)信息,解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從碼流緩沖區(qū)中獲取視頻數(shù)據(jù)的視頻幀序列;服務(wù)器將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中;服務(wù)器將標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列合成得到標(biāo)準(zhǔn)編碼格式的視頻碼流。其中,服務(wù)器可以根據(jù)標(biāo)準(zhǔn)編碼格式對應(yīng)的視頻編碼標(biāo)準(zhǔn)中指定的算法,將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中。
[0100]可選地,在步驟103中,服務(wù)器將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示可以包括:
[0101]服務(wù)器向客戶端發(fā)送視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀;服務(wù)器向客戶端發(fā)送視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域。
[0102]可選地,在步驟102之前,該方法還可以包括:
[0103]服務(wù)器根據(jù)客戶端需要創(chuàng)建的解碼器類型和解碼參數(shù)信息構(gòu)建解碼器初始化指令;服務(wù)器將解碼器初始化指令發(fā)送至客戶端,解碼器初始化指令用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器,以等待接收視頻幀。
[0104]可選地,該方法還可以包括:
[0105]服務(wù)器在發(fā)送完視頻幀之后,向客戶端發(fā)送解碼器銷毀指令,解碼器銷毀指令用于指示客戶端銷毀解碼器。
[0106]需要說明的是,本發(fā)明實(shí)施例中客戶端在通過基于VDI的遠(yuǎn)程桌面技術(shù)遠(yuǎn)程登錄基于Windows操作系統(tǒng)的服務(wù)器播放多媒體文件時,客戶端具體可以遠(yuǎn)程登錄服務(wù)器中運(yùn)行的虛擬機(jī)進(jìn)行遠(yuǎn)程多媒體文件播放。
[0107]本發(fā)明實(shí)施例提供一種多媒體重定向的方法,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,基于Windows操作系統(tǒng)的服務(wù)器在接收到基于非Windows操作系統(tǒng)的客戶端發(fā)送的將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換成的DXVA規(guī)范的硬件解碼能力后,可以識別出該DXVA規(guī)范的硬件解碼能力,并以此當(dāng)作服務(wù)器自身的硬件解碼能力從而不對視頻數(shù)據(jù)進(jìn)行軟件解碼,而是將未解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流并發(fā)送至實(shí)際具有硬件解碼能力的客戶端,以便于基于非Windows操作系統(tǒng)的客戶端也能夠?qū)υ摌?biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,以此來實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0108]參見圖4,本發(fā)明實(shí)施例中將以基于Windows操作系統(tǒng)的服務(wù)器中的虛擬機(jī)與客戶端相連進(jìn)行多媒體重定向?yàn)槔M(jìn)行詳細(xì)描述,其主要步驟可以包括:
[0109]201、服務(wù)器接收客戶端發(fā)送的硬件解碼能力,硬件解碼能力是客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力。
[0110]其中,在基于VDI的遠(yuǎn)程桌面技術(shù)中,客戶端可以遠(yuǎn)程登錄基于Windows操作系統(tǒng)的服務(wù)器中運(yùn)行的虛擬機(jī)進(jìn)行遠(yuǎn)程多媒體文件播放,該虛擬機(jī)可以識別DXVA規(guī)范的硬件解碼能力。這里的客戶端可以為基于非Windows操作系統(tǒng)的客戶端,其所具有的硬件解碼能力不是DXVA規(guī)范的硬件解碼能力,在客戶端將其具有的非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力后,該硬件解碼能力能夠被基于Windows操作系統(tǒng)的虛擬機(jī)識別。本發(fā)明實(shí)施例中的客戶端若無特別說明,則均為基于非Windows操作系統(tǒng)的客戶端。
[0111]可選地,步驟201中轉(zhuǎn)換后的DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級另O。具體的,基于非Widows操作系統(tǒng)的客戶端包括具有硬件解碼能力和不具有硬件解碼能力兩種情況,而不具有類似DXVA規(guī)范中的四個級別的硬件解碼能力,當(dāng)基于非Widows操作系統(tǒng)的客戶端不具有硬件解碼能力時不能對未解碼視頻數(shù)據(jù)的視頻比特流進(jìn)行解碼;當(dāng)其具有硬件解碼能力時可以對未解碼視頻數(shù)據(jù)的視頻比特流進(jìn)行解碼,該硬件解碼能力可以對應(yīng)于DXVA規(guī)范中VLD級別的硬件解碼能力,因而客戶端可以將客戶端的硬件解碼能力轉(zhuǎn)換成DXVA規(guī)范中VLD級別的硬件解碼能力。
[0112]示例性的,基于非Widows操作系統(tǒng)的客戶端可以在系統(tǒng)初始化時,根據(jù)內(nèi)部GPU的硬件參數(shù)檢測其是否具有硬件解碼能力以及客戶端可以支持的解碼器類型或其它硬件解碼能力參數(shù)。其中,解碼器類型可以為DXVA規(guī)范支持的硬件解碼格式例如支持H.264、MPEG-2標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行硬件解碼的解碼器??蛻舳丝梢詫⑵溆布獯a能力按照DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中,從而將其硬件解碼能力轉(zhuǎn)換成DXVA規(guī)范中VLD級別的硬件解碼能力。其中,DXVA規(guī)范定義的描述硬件解碼能力的結(jié)構(gòu)可以包括全局唯一標(biāo)識符(GloballyUnique Identifier,⑶ID)、用以描述硬件解碼能力的具體參數(shù)信息的結(jié)構(gòu)體例如DXVA2_ConfigPictureDecodeN DXVA2_VideoProcessorCaps 結(jié)構(gòu)體等,GUID 可以用于標(biāo)識硬件解碼能力級別以及支持的解碼器類型等。而后,客戶端可以將DXVA規(guī)范定義的描述硬件解碼能力的結(jié)構(gòu)中描述硬件解碼能力的GUID、結(jié)構(gòu)體等進(jìn)行封裝并發(fā)送至虛擬機(jī),并存處于服務(wù)器中的存儲區(qū)域內(nèi)。
[0113]或者,客戶端也可以將支持相同解碼器類型VLD級別硬件解碼能力的基于Windows操作系統(tǒng)的客戶端中對應(yīng)的DXVA規(guī)范定義的描述硬件能力的結(jié)構(gòu)中的數(shù)據(jù)復(fù)制一份發(fā)送至虛擬機(jī)并保存。當(dāng)然還可以采用其它方式將客戶端的硬件解碼能力轉(zhuǎn)換成DXVA規(guī)范的硬件解碼能力并發(fā)送至虛擬機(jī),本發(fā)明實(shí)施例對具體實(shí)現(xiàn)方式不做限定。
[0114]當(dāng)客戶端遠(yuǎn)程控制虛擬機(jī)進(jìn)行視頻播放時,DX運(yùn)行庫通過WDDM的用戶模式顯示驅(qū)動User-mode display driver部分在初始化時注冊的pfnGetCaps函數(shù)查詢服務(wù)器的存儲區(qū)域內(nèi)的數(shù)據(jù)表征的硬件解碼能力,并由WDDM驅(qū)動向DX運(yùn)行庫反饋硬件解碼能力,謊稱虛擬機(jī)具有對應(yīng)的硬件解碼能力。由于播放器等應(yīng)用程序認(rèn)為虛擬機(jī)具有該硬件解碼能力,因而服務(wù)器可以不通過CPU對視頻數(shù)據(jù)進(jìn)行軟件解碼,此時服務(wù)器可以創(chuàng)建解碼設(shè)備從而創(chuàng)建緩沖區(qū)(例如圖片緩沖區(qū)和碼流緩沖區(qū))等解碼所需要的資源,獲取解碼參數(shù)信息以及視頻數(shù)據(jù)的視頻幀序列,但由于服務(wù)器實(shí)際上不具有硬件解碼能力因而不會創(chuàng)建用于進(jìn)行硬件解碼的解碼器,而需要通過真正具有硬件解碼能力的客戶端創(chuàng)建的解碼器進(jìn)行硬件解碼并顯示。其中,WDDM的模型結(jié)構(gòu)圖可以參見圖5,主要可以分為User-mode displaydriver和內(nèi)核模式顯示驅(qū)動Kernel-mode display driver。需要說明的是,由于虛擬機(jī)并不是物理機(jī),因而虛擬機(jī)的WDDM中的各部件可以不是實(shí)際的物理部件而可以是通過軟件實(shí)現(xiàn)的部件。
[0115]需要說明的是,客戶端需要創(chuàng)建的解碼器類型與視頻播放前視頻文件中未解碼的標(biāo)準(zhǔn)編碼格式的視頻碼流的標(biāo)準(zhǔn)編碼格式相一致,在本發(fā)明實(shí)施例中,當(dāng)未解碼的視頻碼流為H.264標(biāo)準(zhǔn)編碼格式時,則客戶端需要創(chuàng)建的解碼器類型為支持H.264標(biāo)準(zhǔn)編碼格式的解碼器,可以對H.264標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼。
[0116]202、服務(wù)器根據(jù)客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令,解碼器初始化指令用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器。
[0117]具體的,服務(wù)器中的虛擬機(jī)可以經(jīng)由DX運(yùn)行庫通過WDDM提供的PfnCreateDecodeDevice接口創(chuàng)建解碼設(shè)備,并通過pfnCreateResource函數(shù)創(chuàng)建解碼需要的緩沖區(qū),而后根據(jù)客戶端需要創(chuàng)建的解碼器類型,構(gòu)建一條解碼器初始化指令,該解碼器初始化指令可以包括解碼器類型、視頻的長、寬值等解碼器初始化需要的參數(shù)信息,可以用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器。
[0118]需要說明的是,與現(xiàn)有技術(shù)中相比,這里構(gòu)建的指示客戶端(即基于非Windows操作系統(tǒng)的客戶端)根據(jù)解碼器初始化指令初始化客戶端的解碼器的一條解碼器初始化指令是消減后的指令。在現(xiàn)有技術(shù)中,服務(wù)器需要將一組指令例如CreateDevice指令、DestroyDevice 指令、CreateDecodeDevice 指令、DestroyDecodeDevice 指令、CreateResource 指令、DestroyResource 指令、CreateVideoProcessDevice 指令、DestroyVideoProcessDevice指令等多條指令發(fā)送至基于Windows操作系統(tǒng)的客戶端,以指示基于Windows操作系統(tǒng)的客戶端根據(jù)上述多條指令初始化客戶端的解碼器。由于現(xiàn)有技術(shù)中多條指令中的任一指令都需要攜帶頭部信息并組裝成網(wǎng)絡(luò)報文發(fā)送給客戶端,本發(fā)明實(shí)施例將現(xiàn)有技術(shù)中的多條指令消減為一條解碼器初始化指令并組裝成網(wǎng)絡(luò)報文發(fā)送給客戶端,因而可以減少服務(wù)器發(fā)送至客戶端的指令數(shù)量,減少服務(wù)器發(fā)送至客戶端的數(shù)據(jù)量,從而節(jié)省了帶寬。
[0119]203、服務(wù)器將解碼器初始化指令發(fā)送至客戶端,以等待接收視頻幀。
[0120]現(xiàn)有技術(shù)中,基于Windows操作系統(tǒng)的客戶端通常在接收到用以指示客戶端進(jìn)行解碼器初始化的一組指令中的最后一條指令時,調(diào)用初始化解碼器接口(InitializeDecoder接口),從而初始化解碼器。在步驟中,服務(wù)器中的虛擬機(jī)在構(gòu)建一條解碼器初始化指令后,根據(jù)桌面協(xié)議組裝網(wǎng)絡(luò)報文,將解碼器初始化指令發(fā)送至客戶端,客戶端在接收到服務(wù)器發(fā)送的解碼器初始化指令后,調(diào)用客戶端的初始化解碼器接口,根據(jù)解碼器初始化指令中攜帶的參數(shù)進(jìn)行解碼器初始化,以等待接收步驟204中服務(wù)器發(fā)送的視頻幀從而進(jìn)行解碼。本發(fā)明實(shí)施例中的解碼器初始化指令是通用的解碼器初始化指令而不是Window操作系統(tǒng)規(guī)范下的初始化指令,基于任一操作系統(tǒng)的客戶端在接收到本發(fā)明實(shí)施例中的初始化指令后均可以調(diào)用客戶端自身的初始化解碼器接口從而進(jìn)行解碼器初始化,因而,基于非Window操作系統(tǒng)的客戶端在多媒體重定向過程中能夠初始化解碼器從而對視頻數(shù)據(jù)進(jìn)行硬件解碼。
[0121]示例性的,在本發(fā)明實(shí)施例中,若視頻文件中未解碼的標(biāo)準(zhǔn)編碼格式的視頻碼流為H.264標(biāo)準(zhǔn)編碼格式,則構(gòu)建的解碼器初始化指令用于指示客戶端初始化的解碼器類型為支持H.264標(biāo)準(zhǔn)編碼格式的解碼器,該類型的解碼器可以解碼以H.264標(biāo)準(zhǔn)編碼格式進(jìn)行編碼的視頻碼流。具體的,客戶端在接收到解碼器初始化指令后,調(diào)用硬件芯片廠商提供的初始化接口從而初始化解碼器。
[0122]204、服務(wù)器從圖片緩沖區(qū)中獲取解碼視頻數(shù)據(jù)所需要的解碼參數(shù)信息,解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從碼流緩沖區(qū)中獲取視頻數(shù)據(jù)的視頻幀序列。
[0123]服務(wù)器中虛擬機(jī)的WDDM為播放器等應(yīng)用程序所屬的應(yīng)用層提供了pfnDecodeExecute接口,應(yīng)用層在調(diào)用pfnDecodeExecute接口時,會填充圖片緩沖區(qū)和碼流緩沖區(qū),圖片緩沖區(qū)和碼流緩沖區(qū)是Usernode display driver中CreateResource接口創(chuàng)建的緩沖器。應(yīng)用層先調(diào)用GetBufTer接口獲得緩沖區(qū)的地址,再將未解碼視頻數(shù)據(jù)拷貝到緩沖區(qū)中保存,User-mode display driver就可以根據(jù)圖片緩沖區(qū)和碼流緩沖區(qū)的地址,從圖片緩沖區(qū)中獲取解碼視頻數(shù)據(jù)所需要的解碼參數(shù)信息,該解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從碼流緩沖區(qū)中獲取視頻數(shù)據(jù)的視頻幀序列。
[0124]由于在開始播放視頻文件后,服務(wù)器對標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解析,播放器等應(yīng)用程序按照多媒體編程接口(Direct extens1n, DX)運(yùn)行庫提供的接口,傳入相應(yīng)的參數(shù)進(jìn)行接口調(diào)用,最終調(diào)用到WDDM驅(qū)動中并發(fā)送至客戶端的視頻數(shù)據(jù)不再是標(biāo)準(zhǔn)編碼格式的視頻碼流,因而保存至圖片緩沖區(qū)和碼流緩沖區(qū)中的視頻數(shù)據(jù)不再是標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0125]205、服務(wù)器將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中。
[0126]服務(wù)器中的虛擬機(jī)可以根據(jù)從圖片緩沖區(qū)和碼流緩沖區(qū)中獲取的數(shù)據(jù),將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流。具體的,虛擬機(jī)可以根據(jù)標(biāo)準(zhǔn)編碼格式對應(yīng)的視頻編碼標(biāo)準(zhǔn)中指定的算法,將從圖片緩沖區(qū)獲得的解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中。
[0127]以H.264標(biāo)準(zhǔn)編碼格式為例,如圖6所示,H.264標(biāo)準(zhǔn)編碼格式的視頻碼流可以包括SPS和PPS和視頻幀序列I Frame、P Frame、B Frame,其中,SPS和PPS是H.264標(biāo)準(zhǔn)編碼格式對應(yīng)的填充解碼參數(shù)信息的結(jié)構(gòu),例如視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范(profile)、畫質(zhì)級別(level)以及視頻分辨率等。具體的,虛擬機(jī)可以將WDDM的圖片緩沖區(qū)中的解碼參數(shù)信息填充至DXVA_PictureParameters結(jié)構(gòu)體,再根據(jù)H.264標(biāo)準(zhǔn)編碼格式對應(yīng)的H.264高度壓縮數(shù)字視頻編解碼器標(biāo)準(zhǔn)中指定的算法轉(zhuǎn)換成seq_parameter_set_rbsp結(jié)構(gòu)體(SPS)和pic_parameter_set_rbsp結(jié)構(gòu)體(PPS),從而將圖片緩沖區(qū)中的解碼參數(shù)信息填充至H.264標(biāo)準(zhǔn)編碼格式的SPS和PPS中。
[0128]206、服務(wù)器將標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列合成得到標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0129]具體的,以H.264標(biāo)準(zhǔn)編碼格式為例,服務(wù)器中的虛擬機(jī)可以通過將存放H.264標(biāo)準(zhǔn)編碼格式中SPS和PPS的解碼參數(shù)信息和視頻幀序列I Frame、P Frame,B Frame合成得到標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0130]需要說明的是,由于視頻播放前視頻文件中的視頻數(shù)據(jù)為標(biāo)準(zhǔn)編碼格式的視頻碼流,而在開始進(jìn)行視頻播放后,虛擬機(jī)通過解析等相關(guān)處理使得視頻數(shù)據(jù)不再為標(biāo)準(zhǔn)編碼格式的視頻碼流,而通過步驟205和步驟206使得視頻數(shù)據(jù)又變?yōu)闃?biāo)準(zhǔn)編碼格式的視頻碼流,也就是說步驟205和步驟206將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0131 ] 當(dāng)然,對于視頻播放前視頻文件中的視頻數(shù)據(jù)為MPEG-2,VC-U AVS或其它標(biāo)準(zhǔn)編碼格式的視頻碼流來說,也可以通過圖片緩沖區(qū)和碼流緩沖區(qū)中的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流,此處不再具體描述。
[0132]需要說明的是,由于本步驟中得到的是通用的標(biāo)準(zhǔn)編碼格式的視頻碼流,因而不僅是基于Windows操作系統(tǒng)的客戶端,基于非Windows操作系統(tǒng)的客戶端也可以識別并進(jìn)行解碼和顯示,從而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0133]207、服務(wù)器向客戶端發(fā)送視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀。
[0134]在得到標(biāo)準(zhǔn)編碼格式的視頻碼流后,服務(wù)器中的虛擬機(jī)將包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀的視頻幀指令根據(jù)桌面協(xié)議組裝成網(wǎng)絡(luò)報文發(fā)送至客戶端,以便于客戶端根據(jù)標(biāo)準(zhǔn)編碼格式對應(yīng)的解碼參數(shù)信息對標(biāo)準(zhǔn)編碼格式的視頻碼流中的視頻幀進(jìn)行硬件解碼,而后經(jīng)過視頻后處理進(jìn)行顯示。
[0135]當(dāng)然,服務(wù)器也可以在第一次發(fā)送的視頻幀指令中攜帶有標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀,而在之后發(fā)送的視頻幀指令中不攜帶標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息,而僅攜帶視頻幀序列的視頻幀,客戶端根據(jù)第一次接收到的標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息對視頻碼流進(jìn)行解碼,本發(fā)明實(shí)施例不做限定。
[0136]208、服務(wù)器向客戶端發(fā)送視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域。
[0137]服務(wù)器中的虛擬機(jī)在向客戶端發(fā)送視頻幀指令后,通過DX運(yùn)行庫調(diào)用WDDM中內(nèi)核模式顯示驅(qū)動的顯示微端口驅(qū)動Display miniport driver用于顯示的接口,通知驅(qū)動顯示某一幀,并附帶顯示參數(shù),包括視頻幀的標(biāo)識和顯示區(qū)域,WDDM在接口函數(shù)PfnPresent中獲取顯示參數(shù)。其中,視頻幀的標(biāo)識用于標(biāo)明要顯示的圖像的視頻幀,顯示區(qū)域用于指示要顯示的圖像將要顯示在屏幕中的區(qū)域。虛擬機(jī)根據(jù)桌面協(xié)議將攜帶有視頻幀的標(biāo)識和顯示區(qū)域等顯示參數(shù)的渲染指令組裝成網(wǎng)絡(luò)報文發(fā)送至客戶端,以便于客戶端在接收到與當(dāng)前視頻幀指令對應(yīng)的渲染指令后,通知指令執(zhí)行模塊根據(jù)視頻幀指令對應(yīng)的渲染指令中攜帶的視頻幀的標(biāo)識和顯示區(qū)域,將視頻幀指令中攜帶的視頻幀中的視頻圖像顯示到屏幕上指定的顯示區(qū)域中,并刪除數(shù)據(jù)緩存中與當(dāng)前視頻幀指令相關(guān)的數(shù)據(jù),以便于接收下一視頻幀指令并根據(jù)接收的對應(yīng)的渲染指令顯示視頻圖像。
[0138]209、服務(wù)器在發(fā)送完視頻幀之后,向客戶端發(fā)送解碼器銷毀指令,解碼器銷毀指令用于指示客戶端銷毀解碼器。
[0139]在發(fā)送完當(dāng)前視頻的全部視頻幀之后,服務(wù)器中的虛擬機(jī)銷毀解碼設(shè)備,釋放服務(wù)器端相應(yīng)的資源,并向客戶端發(fā)送解碼器銷毀指令,以便于客戶端在完成全部視頻幀的硬件解碼后銷毀解碼器,釋放占用的客戶端資源。
[0140]需要說明的是,與步驟202中的解碼器初始化指令類似,步驟207中的視頻幀指令、步驟208中的渲染指令以及步驟209中的解碼器銷毀指令也是消減后的指令。其中,服務(wù)器向客戶端發(fā)送的消減后的指令序列可以參見圖7。具體的,與解碼器初始化指令類似,當(dāng)基于任一操作系統(tǒng)(包括非Windows操作系統(tǒng)和Windows操作系統(tǒng))的客戶端在接收到本發(fā)明實(shí)施例中的視頻幀指令時,可以調(diào)用解碼接口(Decode接口)進(jìn)行硬件解碼,而不用像現(xiàn)有技術(shù)中那樣客戶端需要接收一組指令并在接收到該組指令的最后一條指令時調(diào)用Decode接口進(jìn)行硬件解碼;同樣,客戶端在接收到渲染指令時,可以調(diào)用渲染接口(Present接口)進(jìn)行顯示;客戶端在接收到解碼器銷毀指令時,可以調(diào)用解碼器銷毀接口(DestroyDecoder接口)銷毀解碼器。因而,與現(xiàn)有技術(shù)中服務(wù)器在多媒體重定向過程中需要向客戶端發(fā)送四十多種指令(例如CreateDevice指令,DestroyDevice 指令,CreateResource 指令,DestroyResource 指令,CreateDecodeDevice指令,DestroyDecodeDevice 指令,SetDecodeRenderTarget 指令,DecodeBeginFrame 指令,DecodeExcute指令,DecodeEndFrame指令,Present指令等)相比,本發(fā)明實(shí)施例提供的方法僅發(fā)送解碼器初始化指令、視頻幀指令、渲染指令和解碼器銷毀指令四種消減后的指令,因而可以減少服務(wù)器發(fā)送至客戶端的指令數(shù)量,減少服務(wù)器發(fā)送至客戶端的數(shù)據(jù)量,從而可以節(jié)省帶寬。
[0141]在本發(fā)明實(shí)施例中,由于基于非Windows操作系統(tǒng)的客戶端在將硬件解碼能力轉(zhuǎn)換為DXVA規(guī)范的硬件解碼能力后,基于Windows操作系統(tǒng)的服務(wù)器可以識別,從而將未解碼的視頻數(shù)據(jù)發(fā)送至基于非Windows操作系統(tǒng)的客戶端;又由于解碼器初始化指令、視頻幀指令、渲染指令和解碼器銷毀指令并不是Windows規(guī)范下的指令,而是通用指令,基于非Windows操作系統(tǒng)和基于Windows操作系統(tǒng)的客戶端均能夠根據(jù)該指令初始化解碼器;且還原后的標(biāo)準(zhǔn)編碼格式視頻碼流是通用的標(biāo)準(zhǔn)編碼格式,基于非Windows操作系統(tǒng)和基于Windows操作系統(tǒng)的客戶端均能夠識別從而通過解碼器進(jìn)行硬件解碼并顯示,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0142]根據(jù)步驟201至209中的描述,本發(fā)明實(shí)施例提供的一種服務(wù)器與客戶端進(jìn)行多媒體重定向時的交互流程圖可以參見圖8。其中,基于非Windows操作系統(tǒng)的客戶端在將硬件解碼能力轉(zhuǎn)換成DXVA規(guī)范的硬件解碼能力后,通過桌面協(xié)議客戶端發(fā)送給桌面協(xié)議服務(wù)端;服務(wù)器通過桌面協(xié)議服務(wù)端接收到客戶端發(fā)送的DXVA規(guī)范的硬件解碼能力后將DXVA規(guī)范的硬件解碼能力傳遞給WDDM驅(qū)動;在進(jìn)行視頻播放時,播放器等應(yīng)用程序通過調(diào)用DX運(yùn)行庫向WDDM驅(qū)動查詢并獲得該DXVA規(guī)范的硬件解碼能力,而后指示W(wǎng)DDM創(chuàng)建解碼設(shè)備;WDDM構(gòu)建一條消減后的解碼器初始化指令并通過桌面協(xié)議服務(wù)端發(fā)送給客戶端;客戶端在接收到解碼器初始化指令后進(jìn)行解碼器初始化;而后,應(yīng)用程序通過調(diào)用DX運(yùn)行庫將未解碼的視頻數(shù)據(jù)填充至圖片緩沖區(qū)和碼流緩沖區(qū)并進(jìn)行碼流還原,并構(gòu)建消減后的視頻幀指令發(fā)送給客戶端;客戶端在接收到視頻幀指令后開始進(jìn)行硬件解碼;此外,應(yīng)用程序通過調(diào)用DX運(yùn)行庫進(jìn)行渲染控制,將渲染參數(shù)傳遞給WDDM ;WDDM根據(jù)渲染參數(shù)構(gòu)建消減后的渲染指令并發(fā)送給客戶端;客戶端在接收到渲染指令后進(jìn)行視頻圖像顯示;在發(fā)送完視頻數(shù)據(jù)后,應(yīng)用程序通過調(diào)用DX運(yùn)行庫指示W(wǎng)DDM銷毀解碼設(shè)備,WDDM構(gòu)建消減后的解碼器銷毀指令并發(fā)送給客戶端;客戶端在接收到解碼器銷毀指令后銷毀解碼器,從而完成本次視頻播放。另外,本發(fā)明實(shí)施例提供的一種服務(wù)器與客戶端進(jìn)行多媒體重定向時的交互示意圖可以參見圖9,其中,解碼器初始化指令、視頻幀指令、解碼器銷毀指令的構(gòu)建和發(fā)送可以通過線路I進(jìn)行,渲染指令的構(gòu)建和發(fā)送可以通過線路2進(jìn)行。
[0143]本發(fā)明實(shí)施例提供一種多媒體重定向的方法,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,基于Windows操作系統(tǒng)的虛擬機(jī)在接收到基于非Windows操作系統(tǒng)的客戶端發(fā)送的將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換成的DXVA規(guī)范的硬件解碼能力后,可以識別出該DXVA規(guī)范的硬件解碼能力,并以此當(dāng)作虛擬機(jī)自身的硬件解碼能力從而不對視頻數(shù)據(jù)進(jìn)行軟件解碼,而是將未解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流并發(fā)送至實(shí)際具有硬件解碼能力的客戶端,以便于基于非Windows操作系統(tǒng)的客戶端也能夠?qū)υ摌?biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0144]參見圖10,本發(fā)明實(shí)施例提供一種多媒體重定向的方法,其主要步驟可以包括:
[0145]301、客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,客戶端包括非Windows操作系統(tǒng)。
[0146]302、客戶端向服務(wù)器發(fā)送DXVA規(guī)范的硬件解碼能力。
[0147]303、客戶端接收服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對視頻碼流進(jìn)行解碼并顯示。
[0148]在步驟301中,服務(wù)器可以為基于Windows操作系統(tǒng)的服務(wù)器,可以識別DXVA規(guī)范的硬件解碼能力??蛻舳丝梢詾榛诜荳indows操作系統(tǒng)的客戶端,其所具有的硬件解碼能力不是DXVA規(guī)范的硬件解碼能力,在客戶端將其具有的非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力后,該硬件解碼能力能夠被基于Windows操作系統(tǒng)的虛擬機(jī)識別。本發(fā)明實(shí)施例中的客戶端若無特別說明,則均為基于非Windows操作系統(tǒng)的客戶端。
[0149]可選地,在步驟301中非Windows操作系統(tǒng)的客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力可以包括:
[0150]客戶端將硬件解碼能力按照DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。
[0151]其中,步驟301和步驟302中客戶端將硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力并發(fā)送至服務(wù)器的具體實(shí)現(xiàn)過程可以參見上述實(shí)施例中的步驟201中的具體描述,這里不再贅述。
[0152]可選地,在步驟303中,客戶端接收服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對視頻碼流進(jìn)行解碼并顯示可以包括:
[0153]客戶端接收服務(wù)器發(fā)送的視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀,標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率;客戶端接收服務(wù)器發(fā)送的視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域;客戶端根據(jù)視頻幀指令和渲染指令,對視頻碼流進(jìn)行解碼并顯示。
[0154]具體的,客戶端在接收到服務(wù)器發(fā)送的視頻幀指令后根據(jù)標(biāo)準(zhǔn)編碼格式對應(yīng)的解碼參數(shù)信息對視頻碼流進(jìn)行解碼,而后根據(jù)渲染指令對視頻圖像進(jìn)行顯示,其中視頻幀指令和渲染指令的具體描述可以參見步驟207和步驟208。
[0155]可選地,該方法還可以包括:
[0156]在步驟303中客戶端接收服務(wù)器發(fā)送的還原為標(biāo)準(zhǔn)編碼格式的視頻碼流之前,客戶端可以接收服務(wù)器發(fā)送的解碼器初始化指令,解碼器初始化指令用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器。具體的,客戶端在接收到解碼器初始化指令后,調(diào)用硬件芯片廠商提供的初始化接口從而初始化解碼器。
[0157]可選地,在完成解碼后,客戶端還可以接收服務(wù)器發(fā)送的解碼器銷毀指令,解碼器銷毀指令用于指示客戶端銷毀解碼器??蛻舳嗽谕瓿扇恳曨l幀的硬件解碼后銷毀解碼器,釋放占用的客戶端資源。
[0158]需要說明的是,本發(fā)明實(shí)施例中客戶端接收到的解碼器初始化指令、視頻幀指令、渲染指令以及解碼器銷毀指令是消減后的指令,與現(xiàn)有技術(shù)中服務(wù)器在多媒體重定向過程中需要向客戶端發(fā)送四十多種指令相比,本發(fā)明實(shí)施例提供的方法僅發(fā)送解碼器初始化指令、視頻幀指令、渲染指令和解碼器銷毀指令四種消減后的指令,因而可以減少服務(wù)器發(fā)送至客戶端的指令數(shù)量,從而節(jié)省帶寬。
[0159]同時,在本發(fā)明實(shí)施例中,由于客戶端將基于非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為DXVA規(guī)范的硬件解碼能力后,基于Windows操作系統(tǒng)的服務(wù)器可以識別,從而可以將未解碼的視頻數(shù)據(jù)發(fā)送至基于非Windows操作系統(tǒng)的客戶端;又由于解碼器初始化指令、視頻幀指令、渲染指令和解碼器銷毀指令并不是Windows規(guī)范下的指令,而是通用指令,基于非Windows操作系統(tǒng)和基于Windows操作系統(tǒng)的客戶端均能夠根據(jù)該指令初始化解碼器;且還原后的標(biāo)準(zhǔn)編碼格式的視頻碼流是通用的標(biāo)準(zhǔn)編碼格式,基于非Windows操作系統(tǒng)和基于Windows操作系統(tǒng)的客戶端均能夠識別從而通過解碼器進(jìn)行硬件解碼并顯示,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0160]此外,若客戶端不具有硬件解碼能力,也可以將VLD級別的硬件解碼能力發(fā)送至虛擬機(jī),以便于虛擬機(jī)可以不對視頻數(shù)據(jù)進(jìn)行軟件解碼,并將未解碼的視頻數(shù)據(jù)發(fā)送至客戶端進(jìn)行解碼,從而實(shí)現(xiàn)多媒體數(shù)據(jù)的重定向。客戶端在接收到虛擬機(jī)發(fā)送的未解碼的視頻數(shù)據(jù)后,也可以不進(jìn)行硬件解碼而通過客戶端的CPU進(jìn)行軟件解碼,本發(fā)明實(shí)施例不做限定,當(dāng)然與通過CPU進(jìn)行軟件解碼相比,通過客戶端硬件解碼可以達(dá)到的視頻播放效果較佳。
[0161]需要說明的是,本發(fā)明實(shí)施例提供的方法可以實(shí)現(xiàn)基于非Windows操作系統(tǒng)的客戶端的多媒體重定向,對于基于Windows操作系統(tǒng)的客戶端來說,在進(jìn)行多媒體重定向時不需要轉(zhuǎn)換硬件解碼能力,但也可以采用本發(fā)明實(shí)施例提供的方法進(jìn)行碼流還原和指令消減,從而可以降低服務(wù)器發(fā)送至客戶端的指令數(shù)量,降低帶寬要求。
[0162]本發(fā)明實(shí)施例提供一種多媒體重定向的方法,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,基于非Windows操作系統(tǒng)的客戶端將其硬件解碼能力轉(zhuǎn)換為DXVA規(guī)范的硬件解碼能力后發(fā)送給基于Windows操作系統(tǒng)的服務(wù)器,以便于服務(wù)器能夠識別該DXVA規(guī)范的硬件解碼能力并當(dāng)作自身的硬件解碼能力,從而將未進(jìn)行軟件解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流后發(fā)送至客戶端,基于非Windows操作系統(tǒng)的客戶端對接收到的標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0163]參見圖11,本發(fā)明實(shí)施例提供一種服務(wù)器400,該服務(wù)器400可以包括:
[0164]接收單元401,可以用于接收客戶端發(fā)送的硬件解碼能力,硬件解碼能力是客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力;
[0165]還原單元402,可以用于在接收單元401接收到硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流;
[0166]發(fā)送單元403,可以用于將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示。
[0167]可選地,DXVA規(guī)范的硬件解碼能力可以為視頻比特流處理VLD級別。
[0168]可選地,還原單元402可以具體用于:
[0169]從圖片緩沖區(qū)中獲取解碼視頻數(shù)據(jù)所需要的解碼參數(shù)信息,解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從碼流緩沖區(qū)中獲取視頻數(shù)據(jù)的視頻幀序列;
[0170]將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中;
[0171]將標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列合成得到標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0172]其中,服務(wù)器可以根據(jù)標(biāo)準(zhǔn)編碼格式對應(yīng)的視頻編碼標(biāo)準(zhǔn)中指定的算法,將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中。
[0173]可選地,發(fā)送單元403可以具體用于:
[0174]向客戶端發(fā)送視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀;
[0175]向客戶端發(fā)送視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域。
[0176]可選地,參見圖12,該服務(wù)器400還可以包括:
[0177]構(gòu)建單元404,用于根據(jù)客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令;
[0178]發(fā)送單元403還可以用于,將解碼器初始化指令發(fā)送至客戶端,解碼器初始化指令用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器,以等待接收視頻幀。
[0179]可選地,發(fā)送單元403還可以用于:
[0180]在發(fā)送完視頻幀之后,向客戶端發(fā)送解碼器銷毀指令,解碼器銷毀指令用于指示客戶端銷毀解碼器。
[0181]本發(fā)明實(shí)施例提供一種基于Windows操作系統(tǒng)的服務(wù)器400,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,服務(wù)器400在接收到基于非Windows操作系統(tǒng)的客戶端發(fā)送的將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換成的DXVA規(guī)范的硬件解碼能力后,可以識別出該DXVA規(guī)范的硬件解碼能力,并以此當(dāng)作服務(wù)器400自身的硬件解碼能力從而不對視頻數(shù)據(jù)進(jìn)行軟件解碼,而是將未解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流并發(fā)送至實(shí)際具有硬件解碼能力的客戶端,以便于基于非Windows操作系統(tǒng)的客戶端也能夠?qū)υ摌?biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0182]參見圖13,本發(fā)明實(shí)施例提供一種客戶端500,該客戶端500主要可以包括:
[0183]處理單元501,可以用于將客戶端500的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,客戶端500包括非Windows操作系統(tǒng);
[0184]發(fā)送單元502,可以用于向服務(wù)器發(fā)送DXVA規(guī)范的硬件解碼能力;
[0185]接收單元503,可以用于接收服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流;
[0186]處理單元501還可以用于,對接收單元503接收到的視頻碼流進(jìn)行解碼并顯示。
[0187]可選地,處理單元501可以具體用于:
[0188]將硬件解碼能力按照DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。
[0189]可選地,接收單元503可以具體用于:
[0190]接收服務(wù)器發(fā)送的視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀,標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率;
[0191]接收服務(wù)器發(fā)送的視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域;
[0192]處理單元501可以具體用于,根據(jù)接收單元503接收到的視頻幀指令和清染指令,對視頻碼流進(jìn)行解碼并顯示。
[0193]可選地,接收單元503還可以用于:
[0194]在接收視頻碼流之前,接收服務(wù)器發(fā)送的解碼器初始化指令,解碼器初始化指令用于指示客戶端500根據(jù)解碼器初始化指令初始化客戶端500的解碼器;
[0195]在完成解碼后,接收服務(wù)器發(fā)送的解碼器銷毀指令,解碼器銷毀指令用于指示客戶端500銷毀解碼器。
[0196]本發(fā)明實(shí)施例提供一種基于非Windows操作系統(tǒng)的客戶端500,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,客戶端500在將其硬件解碼能力轉(zhuǎn)換為DXVA規(guī)范的硬件解碼能力后發(fā)送給基于Windows操作系統(tǒng)的服務(wù)器,以便于服務(wù)器能夠識別該DXVA規(guī)范的硬件解碼能力并當(dāng)作自身的硬件解碼能力,從而將未進(jìn)行軟件解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流后發(fā)送至客戶端500,基于非Windows操作系統(tǒng)的客戶端500對接收到的標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端500的問題。
[0197]圖14為本發(fā)明實(shí)施例提供一種服務(wù)器600的結(jié)構(gòu)示意圖,該服務(wù)器600可以包括:
[0198]處理器(Processor)601,通信接口(Communicat1nsInterface)602,存儲器(Memory) 603,通信總線 604。
[0199]處理器601,通信接口 602,存儲器603通過通信總線604完成相互間的通信。
[0200]通信接口 602,用于與網(wǎng)元通信,比如客戶端等。
[0201]處理器601,用于執(zhí)行程序605,具體可以執(zhí)行上述圖3、圖4所示的方法實(shí)施例中的相關(guān)步驟。
[0202]具體地,程序605可以包括程序代碼,程序代碼包括計(jì)算機(jī)操作指令。
[0203]處理器601可能是一個中央處理器CPU (Central Processing Unit),或者是特定集成電路ASIC(Applicat1n Specific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個或多個集成電路。
[0204]存儲器603用于存放程序605,存儲器603可能包含高速RAM (Random AccessMemory)存儲器,也可能還包括非易失性存儲器(Non-volatile Memory),例如至少一個磁盤存儲器。程序605具體可以包括:接收客戶端發(fā)送的硬件解碼能力,硬件解碼能力是客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力;在接收到硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流;將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示。
[0205]程序605中各模塊具體可以包括:
[0206]可選地,DXVA規(guī)范的硬件解碼能力可以為視頻比特流處理VLD級別。
[0207]可選地,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流可以包括:
[0208]從圖片緩沖區(qū)中獲取解碼視頻數(shù)據(jù)所需要的解碼參數(shù)信息,解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從碼流緩沖區(qū)中獲取視頻數(shù)據(jù)的視頻幀序列;
[0209]將解碼參數(shù)信息填充到標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中;
[0210]將標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列合成得到標(biāo)準(zhǔn)編碼格式的視頻碼流。
[0211]可選地,將視頻碼流發(fā)送至客戶端進(jìn)行解碼并顯示可以包括:
[0212]向客戶端發(fā)送視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀;
[0213]向客戶端發(fā)送視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域。
[0214]可選地,在將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流之前,還可以包括:
[0215]根據(jù)客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令;
[0216]將解碼器初始化指令發(fā)送至客戶端,解碼器初始化指令用于指示客戶端根據(jù)解碼器初始化指令初始化客戶端的解碼器,以等待接收視頻幀。
[0217]可選地,程序605還可以包括:
[0218]在發(fā)送完視頻幀之后,向客戶端發(fā)送解碼器銷毀指令,解碼器銷毀指令用于指示客戶端銷毀解碼器。
[0219]本發(fā)明實(shí)施例提供一種基于Windows操作系統(tǒng)的服務(wù)器600,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,服務(wù)器600在接收到基于非Windows操作系統(tǒng)的客戶端發(fā)送的將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換成的DXVA規(guī)范的硬件解碼能力后,可以識別出該DXVA規(guī)范的硬件解碼能力,并以此當(dāng)作服務(wù)器600自身的硬件解碼能力從而不對視頻數(shù)據(jù)進(jìn)行軟件解碼,而是將未解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流并發(fā)送至實(shí)際具有硬件解碼能力的客戶端,以便于基于非Windows操作系統(tǒng)的客戶端也能夠?qū)υ摌?biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端的問題。
[0220]圖15為本發(fā)明實(shí)施例提供的又一種客戶端700的結(jié)構(gòu)示意圖,該客戶端700可以包括:
[0221]處理器(Processor)701,通信接口(Communicat1ns Interface) 702,存儲器(Memory) 703,通信總線 704。
[0222]處理器701,通信接口 702,存儲器703通過通信總線704完成相互間的通信。
[0223]通信接口 702,用于與網(wǎng)元通信,比如服務(wù)器等。
[0224]處理器701,用于執(zhí)行程序705,具體可以執(zhí)行上述圖10所示的方法實(shí)施例中的相關(guān)步驟。
[0225]具體地,程序705可以包括程序代碼,程序代碼包括計(jì)算機(jī)操作指令。
[0226]處理器701可能是一個中央處理器CPU (Central Processing Unit),或者是特定集成電路ASIC(Applicat1n Specific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個或多個集成電路。
[0227]存儲器703用于存放程序705,存儲器703可能包含高速RAM (Random AccessMemory)存儲器,也可能還包括非易失性存儲器(Non-volatile Memory),例如至少一個磁盤存儲器。程序具體可以包括:將客戶端700的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,客戶端700包括非Windows操作系統(tǒng);向服務(wù)器發(fā)送DXVA規(guī)范的硬件解碼能力;接收服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對視頻碼流進(jìn)行解碼并顯示。
[0228]程序705中各模塊具體可以包括:
[0229]可選地,將客戶端700的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力可以包括:
[0230]將硬件解碼能力按照DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。
[0231]可選地,接收服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對視頻碼流進(jìn)行解碼并顯示可以包括:
[0232]接收服務(wù)器發(fā)送的視頻幀指令,視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和視頻幀序列的視頻幀,標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率;
[0233]接收服務(wù)器發(fā)送的視頻幀指令對應(yīng)的渲染指令,渲染指令包括視頻幀的標(biāo)識和顯示區(qū)域;
[0234]根據(jù)視頻幀指令和渲染指令,對視頻碼流進(jìn)行解碼并顯示。
[0235]可選地,該程序還可以包括:
[0236]在接收視頻碼流之前,接收服務(wù)器發(fā)送的解碼器初始化指令,解碼器初始化指令用于指示客戶端700根據(jù)解碼器初始化指令初始化客戶端700的解碼器;
[0237]在完成解碼后,接收服務(wù)器發(fā)送的解碼器銷毀指令,解碼器銷毀指令用于指示客戶端700銷毀解碼器。
[0238]本發(fā)明實(shí)施例提供一種基于非Windows操作系統(tǒng)的客戶端700,在通過基于VDI的遠(yuǎn)程桌面技術(shù)進(jìn)行遠(yuǎn)程多媒體文件播放時,客戶端700在將其硬件解碼能力轉(zhuǎn)換為DXVA規(guī)范的硬件解碼能力后發(fā)送給基于Windows操作系統(tǒng)的服務(wù)器,以便于服務(wù)器能夠識別該DXVA規(guī)范的硬件解碼能力并當(dāng)作自身的硬件解碼能力,從而將未進(jìn)行軟件解碼的視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流后發(fā)送至客戶端700,基于非Windows操作系統(tǒng)的客戶端700對接收到的標(biāo)準(zhǔn)編碼格式的視頻碼流進(jìn)行解碼并顯示,從而實(shí)現(xiàn)多媒體重定向,因而可以解決現(xiàn)有技術(shù)中的多媒體重定向技術(shù)不適用于基于非Windows操作系統(tǒng)的客戶端700的問題。
[0239]本發(fā)明實(shí)施例提供一種系統(tǒng)800,其結(jié)構(gòu)示意圖可以參見圖16,該系統(tǒng)800可以包括如圖11、圖12或圖14所示的服務(wù)器和如圖13或圖15所示的客戶端,其中服務(wù)器和客戶端的具體實(shí)現(xiàn)方式可以參見上述實(shí)施例的描述。
[0240]在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),設(shè)備和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0241]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0242]另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理包括,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0243]上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲在一個計(jì)算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,簡稱ROM)、隨機(jī)存取存儲器(Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0244]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1.一種多媒體重定向的方法,其特征在于,包括: 服務(wù)器接收客戶端發(fā)送的硬件解碼能力,所述硬件解碼能力是所述客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力; 所述服務(wù)器在接收到所述硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流; 所述服務(wù)器將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級別。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流包括: 所述服務(wù)器從圖片緩沖區(qū)中獲取解碼所述視頻數(shù)據(jù)所需要的解碼參數(shù)信息,所述解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從所述碼流緩沖區(qū)中獲取所述視頻數(shù)據(jù)的視頻幀序列; 所述服務(wù)器將所述解碼參數(shù)信息填充到所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中; 所述服務(wù)器將所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列合成得到所述標(biāo)準(zhǔn)編碼格式的視頻碼流。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述服務(wù)器將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示包括: 所述服務(wù)器向所述客戶端發(fā)送視頻幀指令,所述視頻幀指令包括所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀; 所述服務(wù)器向所述客戶端發(fā)送所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域。5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,在所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流之前,所述方法還包括: 所述服務(wù)器根據(jù)所述客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令; 所述服務(wù)器將所述解碼器初始化指令發(fā)送至所述客戶端,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器,以等待接收視頻幀。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 所述服務(wù)器在發(fā)送完所述視頻幀之后,向所述客戶端發(fā)送解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。7.一種多媒體重定向的方法,其特征在于,包括: 客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,所述客戶端包括非Windows操作系統(tǒng); 所述客戶端向服務(wù)器發(fā)送所述DXVA規(guī)范的硬件解碼能力; 所述客戶端接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對所述視頻碼流進(jìn)行解碼并顯示。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述客戶端將其硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力包括: 所述客戶端將所述硬件解碼能力按照所述DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。9.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述客戶端接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流,進(jìn)而對所述視頻碼流進(jìn)行解碼并顯示包括: 所述客戶端接收所述服務(wù)器發(fā)送的視頻幀指令,所述視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀,所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率; 所述客戶端接收所述服務(wù)器發(fā)送的所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域; 所述客戶端根據(jù)所述視頻幀指令和所述渲染指令,對所述視頻碼流進(jìn)行解碼并顯示。10.根據(jù)權(quán)利要求7-9任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 在所述客戶端接收所述視頻碼流之前,接收所述服務(wù)器發(fā)送的解碼器初始化指令,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器; 在完成解碼后,所述客戶端接收所述服務(wù)器發(fā)送的解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。11.一種服務(wù)器,其特征在于,包括: 接收單元,用于接收客戶端發(fā)送的硬件解碼能力,所述硬件解碼能力是所述客戶端將非Windows操作系統(tǒng)的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力;還原單元,用于在所述接收單元接收到所述硬件解碼能力后,將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式的視頻碼流; 發(fā)送單元,用于將所述視頻碼流發(fā)送至所述客戶端進(jìn)行解碼并顯示。12.根據(jù)權(quán)利要求11所述的服務(wù)器,其特征在于,所述DXVA規(guī)范的硬件解碼能力為視頻比特流處理VLD級別。13.根據(jù)權(quán)利要求11所述的服務(wù)器,其特征在于,所述還原單元具體用于: 從圖片緩沖區(qū)中獲取解碼所述視頻數(shù)據(jù)所需要的解碼參數(shù)信息,所述解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率,并從所述碼流緩沖區(qū)中獲取所述視頻數(shù)據(jù)的視頻幀序列; 將所述解碼參數(shù)信息填充到所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中; 將所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列合成得到所述標(biāo)準(zhǔn)編碼格式的視頻碼流。14.根據(jù)權(quán)利要求13所述的服務(wù)器,其特征在于,所述發(fā)送單元具體用于: 向所述客戶端發(fā)送視頻幀指令,所述視頻幀指令包括所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀; 向所述客戶端發(fā)送所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域。15.根據(jù)權(quán)利要求11-14任一項(xiàng)所述的服務(wù)器,其特征在于,還包括: 構(gòu)建單元,用于根據(jù)所述客戶端需要創(chuàng)建的解碼器類型構(gòu)建解碼器初始化指令; 所述發(fā)送單元還用于,將所述解碼器初始化指令發(fā)送至所述客戶端,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器,以等待接收視頻幀。16.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,所述發(fā)送單元還用于: 在發(fā)送完所述視頻幀之后,向所述客戶端發(fā)送解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。17.一種客戶端,其特征在于,包括: 處理單元,用于將所述客戶端的硬件解碼能力轉(zhuǎn)換為視頻硬件加速DXVA規(guī)范的硬件解碼能力,所述客戶端包括非Windows操作系統(tǒng); 發(fā)送單元,用于向服務(wù)器發(fā)送所述DXVA規(guī)范的硬件解碼能力; 接收單元,用于接收所述服務(wù)器將視頻數(shù)據(jù)還原為標(biāo)準(zhǔn)編碼格式之后的視頻碼流; 所述處理單元還用于,對所述接收單元接收到的所述視頻碼流進(jìn)行解碼并顯示。18.根據(jù)權(quán)利要求17所述的客戶端,其特征在于,所述處理單元具體用于: 將所述硬件解碼能力按照所述DXVA規(guī)范的視頻比特流處理VLD級別的硬件解碼能力的格式,填充在DXVA規(guī)范描述硬件解碼能力的結(jié)構(gòu)中。19.根據(jù)權(quán)利要求17所述的客戶端,其特征在于,所述接收單元具體用于: 接收所述服務(wù)器發(fā)送的視頻幀指令,所述視頻幀指令包括標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息和所述視頻幀序列的視頻幀,所述標(biāo)準(zhǔn)編碼格式對應(yīng)的結(jié)構(gòu)中的解碼參數(shù)信息包括所述視頻數(shù)據(jù)的碼流對應(yīng)的規(guī)范、畫質(zhì)級別以及視頻分辨率; 接收所述服務(wù)器發(fā)送的所述視頻幀指令對應(yīng)的渲染指令,所述渲染指令包括所述視頻幀的標(biāo)識和顯示區(qū)域; 所述處理單元具體用于,根據(jù)所述接收單元接收到的所述視頻幀指令和所述渲染指令,對所述視頻碼流進(jìn)行解碼并顯示。20.根據(jù)權(quán)利要求17-19任一項(xiàng)所述的客戶端,其特征在于,所述接收單元還用于: 在接收所述視頻碼流之前,接收所述服務(wù)器發(fā)送的解碼器初始化指令,所述解碼器初始化指令用于指示所述客戶端根據(jù)所述解碼器初始化指令初始化所述客戶端的解碼器;在完成解碼后,接收所述服務(wù)器發(fā)送的解碼器銷毀指令,所述解碼器銷毀指令用于指示所述客戶端銷毀所述解碼器。21.—種系統(tǒng),其特征在于,包括如權(quán)利要求11-16任一項(xiàng)所述的服務(wù)器和如權(quán)利要求17-20任一項(xiàng)所述的客戶端。
【文檔編號】H04N21/658GK106034241SQ201510124397
【公開日】2016年10月19日
【申請日】2015年3月19日
【發(fā)明人】陳沖, 孟艷平
【申請人】華為技術(shù)有限公司