欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

視頻轉(zhuǎn)碼方法和裝置系統(tǒng)的制作方法

文檔序號(hào):10539301閱讀:543來(lái)源:國(guó)知局
視頻轉(zhuǎn)碼方法和裝置系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種視頻轉(zhuǎn)碼方法和裝置、系統(tǒng),其中,利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;根據(jù)所述編碼所需的宏塊信息,利用中央處理器CPU對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。利用GPU解碼來(lái)節(jié)省CPU資源,同時(shí)對(duì)解碼流進(jìn)行碼流分析,在不影響轉(zhuǎn)碼質(zhì)量的同時(shí)提高整體轉(zhuǎn)碼速度,節(jié)省轉(zhuǎn)碼CPU資源。
【專(zhuān)利說(shuō)明】
視頻轉(zhuǎn)碼方法和裝置系統(tǒng)
技術(shù)領(lǐng)域
[0001 ]本發(fā)明屬于互聯(lián)網(wǎng)視頻處理技術(shù)領(lǐng)域,具體地說(shuō),涉及一種視頻轉(zhuǎn)碼方法和裝置、系統(tǒng)。
【背景技術(shù)】
[0002]目前隨著互聯(lián)網(wǎng)視頻和硬件設(shè)備的發(fā)展,人們制作視頻的成本越來(lái)越低,對(duì)視頻的質(zhì)量要求也日益提高。視頻的分辨率越來(lái)越大,高清(1080P,1920x1080)甚至超清(4K,3840x2160)日益普遍。對(duì)于視頻轉(zhuǎn)碼行業(yè)而言,視頻轉(zhuǎn)碼的壓力也越來(lái)越大。在進(jìn)行大分辨率視頻直播,離線(xiàn)轉(zhuǎn)碼時(shí),轉(zhuǎn)碼服務(wù)器往往處于很高的負(fù)荷之下。如何在已有的轉(zhuǎn)碼服務(wù)器上更有效的利用硬件資源來(lái)提高轉(zhuǎn)碼速度是業(yè)內(nèi)共同的話(huà)題。

【發(fā)明內(nèi)容】

[0003]有鑒于此,本申請(qǐng)?zhí)峁┝艘环N視頻轉(zhuǎn)碼方法和裝置、系統(tǒng),可以利用GPU解碼來(lái)節(jié)省CPU資源,同時(shí)對(duì)解碼流進(jìn)行碼流分析,在不影響轉(zhuǎn)碼質(zhì)量的同時(shí)提高整體轉(zhuǎn)碼速度,節(jié)省轉(zhuǎn)碼CPU資源。
[0004]本發(fā)明實(shí)施例提供一種視頻轉(zhuǎn)碼方法,包括:
[0005]利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0006]利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;
[0007]根據(jù)所述編碼所需的宏塊信息,利用中央處理器CPU對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0008]其中,利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,包括:
[0009]確定所述GPU是否支持所述輸入碼流的解碼,若支持,則獲取所述GPU的解碼能力信息;通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼。
[0010]其中,利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼之前,包括:
[0011 ]根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流。
[0012]其中,利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息,包括:
[0013]利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;
[0014]對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式信息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
[0015]本申請(qǐng)還提供一種視頻轉(zhuǎn)碼裝置,包括:
[0016]解碼模塊,位于圖形處理器GPU側(cè),用于對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0017]分析模塊,位于中央處理器CPU側(cè),用于對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;
[0018]編碼模塊,位于中央處理器CPU側(cè),用于根據(jù)所述編碼所需的宏塊信息,對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0019]其中,所述的裝置還包括:
[0020]判斷模塊,用于確定所述GPU是否支持所述輸入碼流的解碼;
[0021 ]獲取模塊,用于在判斷模塊確定所述GPU支持所述輸入碼流的解碼,則獲取所述GHJ的解碼能力信息;
[0022]發(fā)送模塊,用于通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼。
[0023]其中,所述的裝置還包括:
[0024]初始化模塊,用于根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流。
[0025]其中,所述分析模塊具體用于:
[0026]利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;
[0027]對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式?目息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
[0028]本申請(qǐng)還提供一種視頻轉(zhuǎn)碼系統(tǒng),包括:解碼器和編碼器;
[0029]所述解碼器,用于利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0030]所述編碼器,用于利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;根據(jù)所述編碼所需的宏塊信息,利用中央處理器CHJ對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0031]其中,所述解碼器,還用于確定所述GPU是否支持所述輸入碼流的解碼,若支持,則獲取所述GHJ的解碼能力信息;根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流;通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼;
[0032]所述編碼器,還用于利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式?目息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
[0033]本提案提出了一種基于GPU和CPU混合的轉(zhuǎn)碼架構(gòu),主要應(yīng)用于H.264,HEVC等轉(zhuǎn)碼方案。利用GHJ解碼來(lái)節(jié)省CPU資源,同時(shí)對(duì)解碼流進(jìn)行碼流分析,在不影響轉(zhuǎn)碼質(zhì)量的同時(shí)提高整體轉(zhuǎn)碼速度,節(jié)省轉(zhuǎn)碼CPU資源。該轉(zhuǎn)碼架構(gòu)相比現(xiàn)有轉(zhuǎn)碼架構(gòu)可以節(jié)省10%的CPU資源,從而在確保恢復(fù)的視頻質(zhì)量的前提下,提高了轉(zhuǎn)碼速度,更好地滿(mǎn)足了實(shí)時(shí)視頻轉(zhuǎn)碼要求。
【附圖說(shuō)明】
[0034]此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
[0035]圖1是本申請(qǐng)實(shí)施例提供的一種視頻轉(zhuǎn)碼方法的流程示意圖;
[0036]圖2為本發(fā)明實(shí)施例提出的一種CPU+GPU混合轉(zhuǎn)碼架構(gòu)流程圖;
[0037]圖3為本發(fā)明實(shí)施例提出的一種GPU上完成視頻解碼的流程圖;
[0038]圖4本發(fā)明實(shí)施例提出的一種CPU上完成碼流分析流程圖;
[0039]圖5是本申請(qǐng)實(shí)施例提供的一種視頻轉(zhuǎn)碼裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0040]以下將配合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,藉此對(duì)本發(fā)明如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問(wèn)題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。
[0041]在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
[0042]內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性?xún)?nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
[0043]計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪(fǎng)問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
[0044]如在說(shuō)明書(shū)及權(quán)利要求當(dāng)中調(diào)用了某些詞匯來(lái)指稱(chēng)特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會(huì)用不同名詞來(lái)稱(chēng)呼同一個(gè)組件。本說(shuō)明書(shū)及權(quán)利要求并不以名稱(chēng)的差異來(lái)作為區(qū)分組件的方式,而是以組件在功能上的差異來(lái)作為區(qū)分的準(zhǔn)則。如在通篇說(shuō)明書(shū)及權(quán)利要求當(dāng)中所提及的“包含”為一開(kāi)放式用語(yǔ),故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問(wèn)題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過(guò)其他裝置或耦接手段間接地電性耦接至所述第二裝置。說(shuō)明書(shū)后續(xù)描述為實(shí)施本發(fā)明的較佳實(shí)施方式,然所述描述乃以說(shuō)明本發(fā)明的一般原則為目的,并非用以限定本發(fā)明的范圍。本發(fā)明的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
[0045]還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
[0046]發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn):
[0047]由于視頻分辨率、碼率的不斷提高,視頻解碼的復(fù)雜度也在不斷的提高,視頻解碼計(jì)算所占用的系統(tǒng)資源相應(yīng)的也在持續(xù)增加。用CPU(Central Processing Unit,中央處理器)進(jìn)行視頻解碼(軟解碼)要占用大量的CPU計(jì)算資源,甚至有可能出現(xiàn)CPU計(jì)算資源無(wú)法滿(mǎn)足高分辨率、高碼率的需要。
[0048]本發(fā)明實(shí)施例提出了一種新的視頻轉(zhuǎn)碼系統(tǒng)架構(gòu),主要應(yīng)用于H.264,HEVC等各種視頻格式的轉(zhuǎn)換。傳統(tǒng)轉(zhuǎn)碼方案往往全部計(jì)算都基于對(duì)CHJ資源的使用,在高分辨率高質(zhì)量的轉(zhuǎn)碼過(guò)程中,CPU資源往往負(fù)荷過(guò)大,從而影響轉(zhuǎn)碼速度。本發(fā)明實(shí)施例所述的轉(zhuǎn)碼系統(tǒng)架構(gòu)特點(diǎn)在于將轉(zhuǎn)碼過(guò)程中的視頻解碼工作放在圖形處理器(英語(yǔ):Graphics ProcessingUnit,縮寫(xiě):GPU)上完成,僅把解碼信息分析的部分放在CPU上,通過(guò)有效利用GPU解碼緩解CPU計(jì)算資源,從而提高整體轉(zhuǎn)碼速度。該轉(zhuǎn)碼方案可以在完全不影響轉(zhuǎn)碼質(zhì)量的情況下,節(jié)省CPU資源,提高轉(zhuǎn)碼速度。
[0049]圖1是本申請(qǐng)實(shí)施例提供的一種視頻轉(zhuǎn)碼方法的流程示意圖,如圖1所示,包括:
[0050]101、利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0051]在一種實(shí)施方式中,步驟101具體實(shí)現(xiàn)時(shí)包括:
[0052]首先,確定所述GPU是否支持所述輸入碼流的解碼,若支持,則獲取所述GPU的解碼能力信息;
[0053]根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間;
[0054]通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼;
[0055]將解碼后的所述輸入碼流保存到上述分配的內(nèi)存空間。
[0056]其中,上述確定GPU是否支持所述輸入碼流的解碼,當(dāng)有待解碼的視頻需要進(jìn)行解碼時(shí),應(yīng)用程序可以通過(guò)系統(tǒng)程序(如windows操作系統(tǒng))建立與GPU的驅(qū)動(dòng)程序的連接。具體的,應(yīng)用程序生成DXVA Output(輸出)Pin(接口),并使用DXVA Output Pin連接到VMR(Video Mixing Renderer,視頻混合清染器)的IAMVideoAccelerator Input Pin(windows系統(tǒng)提供的用于應(yīng)用程序連接GPU驅(qū)動(dòng)程序的接口,可以稱(chēng)之為GHJ驅(qū)動(dòng)連接接口,屬于DXVA接口的一種),生成相應(yīng)的Fi I ter Graph(濾鏡圖,就是多個(gè)連接在一起,完成特定功能(比如視頻播放,視頻捕獲)的濾鏡的組合)。應(yīng)用程序建立與GPU的驅(qū)動(dòng)程序的連接之后,可以向驅(qū)動(dòng)程序查詢(xún)GPU的解碼能力信息,驅(qū)動(dòng)程序接收到查詢(xún)指令后,向應(yīng)用程序發(fā)送GPU的解碼能力信息,如該GPU的解碼能力信息包括DXVA_ModeH261_B、DXVA_ModeH263_B、DXVA_
[0057]當(dāng)獲取的解碼能力信息中存在支持待解碼的視頻的編碼格式的解碼能力信息時(shí),應(yīng)用程序繼續(xù)查詢(xún)GPU在該解碼能力信息對(duì)應(yīng)的工作模式下是否支持待解碼的視頻的解碼配置信息,如果是,則表明查詢(xún)結(jié)果為GPU能夠支持待解碼視頻的解碼。如果獲取的解碼能力信息中不存在支持待解碼的視頻的編碼格式的解碼能力信息,或者查詢(xún)到GPU在此工作模式下不支持待解碼視頻的解碼配置信息,則表明查詢(xún)結(jié)果為GHJ不能夠支持待解碼視頻的解碼。具體的,應(yīng)用程序可以從待解碼的視頻的文件中獲取到該視頻的編碼格式和解碼配置信息,該編碼格式可以包括H261、H263、H264、MPEG2等,該解碼配置信息可以包括分辨率、碼率、緩存幀數(shù)、色彩空間格式等信息。具體的,應(yīng)用程序在驅(qū)動(dòng)程序上報(bào)的解碼能力信息中查找能夠支持待解碼視頻的編碼格式的解碼能力信息,如果能夠查找到,則進(jìn)一步將該解碼能力信息和待解碼視頻的解碼配置信息發(fā)送給GHJ驅(qū)動(dòng)程序,以查詢(xún)GPU在相應(yīng)的工作模式下是否支持相應(yīng)的解碼配置。
[0058]例如(此處解碼配置信息僅以分辨率和碼率為例說(shuō)明),某視頻的編碼格式為H261,分辨率為1280X720,碼率2000kbps,并假設(shè)GPU支持DXVA_ModeH261_8的工作模式,且在該工作模式下最高可以支持1280 X 720的分辨率、3000kbps的碼率,視頻播放器在驅(qū)動(dòng)程序上報(bào)的解碼能力信息中查找到0乂¥々_]?0(16!1261_8后,將DXVA_ModeH261_B、1280X720和2000kbps發(fā)送給驅(qū)動(dòng)程序,以查詢(xún)GPU在工作模式下是否支持1280 X720的分辨率和2000kbps的碼率,驅(qū)動(dòng)程序會(huì)返回“支持”的信息。
[0059]102、利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;
[0060]具體地,步驟102在實(shí)現(xiàn)時(shí)包括:
[0061]利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,宏塊信息包括:塊類(lèi)型信息、分塊模式信息、運(yùn)動(dòng)矢量信息、塊編碼類(lèi)型(Coded Block Pattern,簡(jiǎn)稱(chēng)CBP)彳目息、量化參數(shù)和宏塊殘差等編碼所需的彳目息;宏塊編碼模式包括:塊類(lèi)型信息、分塊模式信息和運(yùn)動(dòng)矢量信息。
[0062]103、根據(jù)所述編碼所需的宏塊信息,利用中央處理器CPU對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0063 ]下面以具體實(shí)現(xiàn)方式為例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)的描述:
[0064]圖2為本發(fā)明實(shí)施例提出的一種CPU+GPU混合轉(zhuǎn)碼架構(gòu)流程圖,如圖2所示,該轉(zhuǎn)碼架構(gòu)主要有兩個(gè)部分的改進(jìn):1.視頻的解碼在GPU上完成;2.輸入解碼后的視頻信息的分析以及記錄在CPU上完成。
[0065]為了調(diào)用GPU進(jìn)行視頻解碼,首先要選擇使用可以支持GPU視頻解碼的服務(wù)器,例如intel的E3-1285服務(wù)器。圖3為本發(fā)明實(shí)施例提出的一種GPU上完成視頻解碼的流程圖,如圖3所示,在轉(zhuǎn)碼開(kāi)始運(yùn)行之后,當(dāng)輸入碼流到達(dá)解碼端,解碼器需要首先初始化GPU解碼參數(shù),并為當(dāng)前幀分配內(nèi)存空間。初始化GPU參數(shù)時(shí),需要參考對(duì)應(yīng)GPU解碼模塊的調(diào)用接口要求,選擇適當(dāng)?shù)脑O(shè)備。分配空間時(shí)必須滿(mǎn)足GPU解碼需求:空間必須32字節(jié)對(duì)齊,亮度與色差空間之間必須連續(xù)。如果采用交由GPU設(shè)備來(lái)分配內(nèi)存空間的方式,則需要在初始化GPU時(shí)做相應(yīng)設(shè)置。完成之后,即可通過(guò)調(diào)用GPU視頻解碼的接口為當(dāng)前幀進(jìn)行解碼。此時(shí)解碼過(guò)程僅占用GPU資源,不占用任何CPU資源。當(dāng)GPU解碼完成后,會(huì)將解碼幀填充到之前預(yù)分配的內(nèi)存空間中,至此,GPU解碼一幀完成。之后需要將解碼幀輸出到下游,共轉(zhuǎn)碼架構(gòu)的下一步繼續(xù)處理。
[0066]由于解碼過(guò)程是在GPU上進(jìn)行,無(wú)法存儲(chǔ)輸入碼流的詳細(xì)解碼信息,所以轉(zhuǎn)碼架構(gòu)需要增加一個(gè)分析模塊,用于分析并存儲(chǔ)輸入碼流中解碼參數(shù),以供接下來(lái)的編碼器復(fù)用。該分析模塊運(yùn)行于CHJ上,僅負(fù)責(zé)碼流分析,不做更深一層解碼,且沒(méi)有較大內(nèi)存操作,其速度遠(yuǎn)遠(yuǎn)快于解碼。圖4本發(fā)明實(shí)施例提出的一種CPU上完成碼流分析流程圖,如圖4所示,首先需要分析輸入碼流的頭信息,得到熵編碼類(lèi)型。接下來(lái)為了得到更具體的碼流信息,需要對(duì)碼流進(jìn)行熵解碼。在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,僅記錄下宏塊類(lèi)型,運(yùn)動(dòng)矢量,宏塊編碼比特等信息。這些信息將提供給編碼器復(fù)用。
[0067]本提案提出了一種基于GPU和CPU混合的轉(zhuǎn)碼架構(gòu),主要應(yīng)用于H.264,HEVC等轉(zhuǎn)碼方案。利用GHJ解碼來(lái)節(jié)省CPU資源,同時(shí)對(duì)解碼流進(jìn)行碼流分析,在不影響轉(zhuǎn)碼質(zhì)量的同時(shí)提高整體轉(zhuǎn)碼速度,節(jié)省轉(zhuǎn)碼CPU資源。該轉(zhuǎn)碼架構(gòu)相比現(xiàn)有轉(zhuǎn)碼架構(gòu)可以節(jié)省10%的CPU資源,從而在確?;謴?fù)的視頻質(zhì)量的前提下,提高了轉(zhuǎn)碼速度,更好地滿(mǎn)足了實(shí)時(shí)視頻轉(zhuǎn)碼要求。
[0068]圖5是本申請(qǐng)實(shí)施例提供的一種視頻轉(zhuǎn)碼裝置的結(jié)構(gòu)示意圖,如圖5所示,包括:
[0069]解碼模塊51,位于圖形處理器GPU側(cè),用于對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0070]分析模塊52,位于中央處理器CPU側(cè),用于對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;
[0071]編碼模塊53,位于中央處理器CPU側(cè),用于根據(jù)所述編碼所需的宏塊信息,對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0072]其中,所述的裝置還包括:
[0073]判斷模塊53,用于確定所述GPU是否支持所述輸入碼流的解碼;
[0074]獲取模塊54,用于在判斷模塊確定所述GPU支持所述輸入碼流的解碼,則獲取所述GHJ的解碼能力信息;
[0075]發(fā)送模塊55,用于通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GHJ進(jìn)行解碼。
[0076]所述的裝置還包括:
[0077]初始化模塊56,用于根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流。
[0078]其中,所述分析模塊52具體用于:
[0079]利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;
[0080]對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式?目息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
[0081]圖5所示的裝置可以執(zhí)行圖1所示的方法,其實(shí)現(xiàn)原理和技術(shù)效果不再贅述。
[0082]本發(fā)明實(shí)施例還提供一種視頻轉(zhuǎn)碼系統(tǒng),其特征在于,包括:解碼器和編碼器;
[0083]所述解碼器,用于利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;
[0084]所述編碼器,用于利用中央處理器CPU對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;根據(jù)所述編碼所需的宏塊信息,利用中央處理器CHJ對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。
[0085]所述解碼器,還用于確定所述GPU是否支持所述輸入碼流的解碼,若支持,則獲取所述GPU的解碼能力信息;根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流;通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼;
[0086]所述編碼器,還用于利用所述CPU分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式?目息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
[0087]本發(fā)明實(shí)施例所述系統(tǒng)可以執(zhí)行圖1所示的方法,其實(shí)現(xiàn)原理和技術(shù)效果不再贅述。
[0088]上述說(shuō)明示出并描述了本發(fā)明的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對(duì)其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過(guò)上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識(shí)進(jìn)行改動(dòng)。而本領(lǐng)域人員所進(jìn)行的改動(dòng)和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種視頻轉(zhuǎn)碼方法,其特征在于,包括: 利用圖形處理器GRJ對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流; 利用中央處理器CR]對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息; 根據(jù)所述編碼所需的宏塊信息,利用中央處理器CPU對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。2.如權(quán)利要求1所述的方法,其特征在于,利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼,包括: 確定所述GHJ是否支持所述輸入碼流的解碼,若支持,則獲取所述GPU的解碼能力信息;通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼。3.如權(quán)利要求1或2所述的方法,其特征在于,利用圖形處理器GPU對(duì)輸入碼流進(jìn)行解碼之前,包括: 根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GHJ的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流。4.如權(quán)利要求3所述的方法,其特征在于,利用中央處理器CHJ對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息,包括: 利用所述CHJ分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型; 對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式信息、運(yùn)動(dòng)矢量信息、塊編碼類(lèi)型信息、量化參數(shù)和宏塊殘差等編碼所需的信息。5.一種視頻轉(zhuǎn)碼裝置,其特征在于,包括: 解碼模塊,位于圖形處理器GRJ側(cè),用于對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流;分析模塊,位于中央處理器CPU側(cè),用于對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息; 編碼模塊,位于中央處理器CPU側(cè),用于根據(jù)所述編碼所需的宏塊信息,對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。6.如權(quán)利要求5所述的裝置,其特征在于,還包括: 判斷模塊,用于確定所述GHJ是否支持所述輸入碼流的解碼; 獲取模塊,用于在判斷模塊確定所述GPU支持所述輸入碼流的解碼,則獲取所述GPU的解碼能力信息; 發(fā)送模塊,用于通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GHJ進(jìn)行解碼。7.如權(quán)利要求5或6所述的裝置,其特征在于,還包括: 初始化模塊,用于根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GHJ的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流。8.如權(quán)利要求7所述的裝置,其特征在于,所述分析模塊具體用于: 利用所述CHJ分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型; 對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式信息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。9.一種視頻轉(zhuǎn)碼系統(tǒng),其特征在于,包括:解碼器和編碼器; 所述解碼器,用于利用圖形處理器GRJ對(duì)輸入碼流進(jìn)行解碼,得到解碼后的輸入碼流; 所述編碼器,用于利用中央處理器CHJ對(duì)解碼后的輸入碼流進(jìn)行分析,得到編碼所需的宏塊信息;根據(jù)所述編碼所需的宏塊信息,利用中央處理器(PU對(duì)所述解碼后的輸入碼流按照目標(biāo)碼率進(jìn)行編碼。10.如權(quán)利要求9所述的系統(tǒng),其特征在于: 所述解碼器,還用于確定所述GPU是否支持所述輸入碼流的解碼,若支持,則獲取所述GPU的解碼能力信息;根據(jù)與所述解碼能力信息對(duì)應(yīng)的解碼接口,初始化所述GPU的解碼參數(shù),并為所述待解碼的輸入碼流分配內(nèi)存空間,所述內(nèi)存空間用于保存解碼后的所述輸入碼流;通過(guò)與所述解碼能力信息對(duì)應(yīng)的解碼接口將所述輸入碼流發(fā)送給所述GPU進(jìn)行解碼; 所述編碼器,還用于利用所述CHJ分析所述解碼后的輸入碼流的頭信息,得到熵編碼類(lèi)型;對(duì)所述解碼后的輸入碼流進(jìn)行熵解碼,在熵解碼的過(guò)程中,丟棄所有解碼殘差信息,記錄下編碼所需的宏塊信息,其中,所述編碼所需的宏塊信息包括塊類(lèi)型信息、分塊模式信息、運(yùn)動(dòng)矢量?目息、塊編碼類(lèi)型?目息、量化參數(shù)和宏塊殘差等編碼所需的?目息。
【文檔編號(hào)】H04N19/40GK105898315SQ201510890653
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2015年12月7日
【發(fā)明人】呂超, 魏偉, 白茂生
【申請(qǐng)人】樂(lè)視云計(jì)算有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
西盟| 丽江市| 乡宁县| 宁津县| 镇巴县| 金沙县| 富阳市| 冷水江市| 元氏县| 周宁县| 福清市| 芦溪县| 萍乡市| 太谷县| 三门县| 虎林市| 丹寨县| 永宁县| 曲阜市| 磐安县| 鄯善县| 洪湖市| 墨脱县| 克什克腾旗| 吉林市| 方城县| 云浮市| 丰都县| 普安县| 托里县| 洞口县| 宁晋县| 甘谷县| 鹰潭市| 武胜县| 宁化县| 探索| 女性| 商南县| 云阳县| 商城县|