降幀率的實時轉(zhuǎn)碼方法和裝置的制造方法
【專利摘要】本發(fā)明公開了一種降幀率的實時轉(zhuǎn)碼方法,所述方法包括:根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄;如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄且為參考幀,改為抽取丟棄當(dāng)前幀之后的第一個非參考幀,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄且為非參考幀,則抽取丟棄當(dāng)前幀;對沒有丟棄的當(dāng)前幀解碼獲得當(dāng)前解碼幀,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測轉(zhuǎn)碼幀的幀類型及宏塊編碼信息以對當(dāng)前解碼幀進行編碼。本發(fā)明還公開了一種降幀率的實時轉(zhuǎn)碼裝置。本發(fā)明提供的降幀率的實時轉(zhuǎn)碼方法和裝置,在降幀率的過程中保留參考幀,并預(yù)測出當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型以及宏塊編碼信息用于轉(zhuǎn)碼,實現(xiàn)了高效率的實時轉(zhuǎn)碼。
【專利說明】
降幀率的實時轉(zhuǎn)碼方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及視頻技術(shù)領(lǐng)域,尤其涉及一種降幀率的實時轉(zhuǎn)碼方法和裝置。
【背景技術(shù)】
[0002]隨著4K電視的普及以及家庭帶寬的增加,人們對高質(zhì)量視頻直播的需求也越來越多。4K電視指屏幕顯示采用4K分辨率的電視機。4K分辨率是一種新興的數(shù)字電影及數(shù)字內(nèi)容的解析度標(biāo)準(zhǔn),得名于其橫向解析度約為4000像素(pixel),根據(jù)不同的應(yīng)用領(lǐng)域而存在細微差距。4K級別的分辨率可提供880多萬像素,至少能提供近千萬像素的顯示品質(zhì),實現(xiàn)電影級的畫質(zhì),相當(dāng)于當(dāng)前頂級的1SOp分辨率的四倍還多,顯示細膩度為1SOp的4倍以上。
[0003]當(dāng)然超高清的代價也是不菲的,4K顯示中,每一幀的數(shù)據(jù)量都達到了50MB,因此4K的實時轉(zhuǎn)碼對轉(zhuǎn)碼器的資源消耗是巨大的。
[0004]轉(zhuǎn)碼的過程本質(zhì)上是一個先解碼、再編碼的過程,目的主要是保持與觀眾的終端設(shè)備的視頻編碼格式一致,以及適應(yīng)不同的網(wǎng)絡(luò)帶寬、不同的終端處理能力和不同的用戶需求。
[0005]在降幀率轉(zhuǎn)碼的情況下,通常是等間隔地抽取要丟棄的幀,例如輸入碼流為60幀/秒,編碼的目標(biāo)碼流為30幀/秒,則需要每隔一幀就丟棄一幀,每秒共需要丟棄30幀?,F(xiàn)有這種降幀率的實時轉(zhuǎn)碼方式,轉(zhuǎn)碼效率不夠高,因此有必要提出一種高效率的降幀率的實時轉(zhuǎn)碼技術(shù)方案。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的一個目的是提供一種降幀率的實時轉(zhuǎn)碼的新技術(shù)方案,能夠有較高的轉(zhuǎn)碼效率。
[0007]根據(jù)本發(fā)明的第一方面,提供了一種降幀率的實時轉(zhuǎn)碼方法,包括以下步驟:
[0008]根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄;
[0009]如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀;如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀;
[0010]如果當(dāng)前幀沒有被抽取丟棄,則對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。
[0011]進一步,所述輸入碼流采用H.264視頻編碼格式;將當(dāng)前幀的幀類型作為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,其中所述幀類型包括幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀或雙向預(yù)測編碼幀。
[0012]進一步,對所述幀內(nèi)預(yù)測編碼幀的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8X8分塊模式進行編碼的編碼代價;從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式;根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。
[0013]進一步,對所述前向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量;根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。
[0014]進一步,對所述雙向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式以及默認(rèn)開啟的B_DIRECT模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
[0015]根據(jù)本發(fā)明的第二方面,提供了一種降幀率的實時轉(zhuǎn)碼裝置,包括幀抽取模塊、解碼模塊、以及編碼模塊;
[0016]所述幀抽取模塊,用于根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄;以及,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀;
[0017]所述解碼模塊,用于在當(dāng)前幀沒有被抽取丟棄的情況下,對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息;
[0018]所述編碼模塊,用于在當(dāng)前幀沒有被抽取丟棄的情況下,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。
[0019]進一步,所述輸入碼流采用H.264視頻編碼格式;所述編碼模塊,用于將當(dāng)前幀的幀類型作為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,其中所述幀類型包括幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀或雙向預(yù)測編碼幀。
[0020]進一步,所述編碼模塊,進一步用于,對所述幀內(nèi)預(yù)測編碼幀的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8 X 8分塊模式進行編碼的編碼代價;從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式;根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。
[0021]進一步,所述編碼模塊,進一步用于,對所述前向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量;根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。
[0022]進一步,所述編碼模塊,進一步用于,對所述雙向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式以及默認(rèn)開啟的8_011?(:1'模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
[0023]本發(fā)明提供的降幀率的實時轉(zhuǎn)碼方法和裝置,在降幀率的過程中保留參考幀,然后進行編碼信息繼承,預(yù)測出當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型以及宏塊編碼信息用于轉(zhuǎn)碼,實現(xiàn)了高效率的實時轉(zhuǎn)碼??蛇x地,本發(fā)明通過預(yù)測宏塊的編碼模式和/或運動矢量,實現(xiàn)了高質(zhì)量的實時轉(zhuǎn)碼??蛇x地,本發(fā)明的轉(zhuǎn)碼方法及裝置在減少轉(zhuǎn)碼時間的同時保持較高的視頻輸出質(zhì)量。
[0024]通過以下參照附圖對本發(fā)明的示例性實施例的詳細描述,本發(fā)明的其它特征及其優(yōu)點將會變得清楚。
【附圖說明】
[0025]被結(jié)合在說明書中并構(gòu)成說明書的一部分的附圖示出了本發(fā)明的實施例,并且連同其說明一起用于解釋本發(fā)明的原理。
[0026]圖1示出了本發(fā)明第一實施例提供的降幀率的實時轉(zhuǎn)碼方法的流程圖。
[0027]圖2示出了本發(fā)明第二實施例提供的預(yù)測轉(zhuǎn)碼幀的編碼信息的流程圖。
[0028]圖3示出了本發(fā)明第三實施例提供的預(yù)測轉(zhuǎn)碼幀的編碼信息的流程圖。
[0029]圖4示出了本發(fā)明第四實施例提供的預(yù)測轉(zhuǎn)碼幀的編碼信息的流程圖。
[0030]圖5示出了本發(fā)明實施例提供的降幀率的實時轉(zhuǎn)碼裝置的框圖。
[0031 ]圖6示出了可用于實現(xiàn)本發(fā)明實施例的直播平臺的硬件配置的例子的框圖。
【具體實施方式】
[0032]現(xiàn)在將參照附圖來詳細描述本發(fā)明的各種示例性實施例。應(yīng)注意到:除非另外具體說明,否則在這些實施例中闡述的部件和步驟的相對布置、數(shù)字表達式和數(shù)值不限制本發(fā)明的范圍。
[0033]以下對至少一個示例性實施例的描述實際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制。
[0034]對于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說明書的一部分。
[0035]在這里示出和討論的所有例子中,任何具體值應(yīng)被解釋為僅僅是示例性的,而不是作為限制。因此,示例性實施例的其它例子可以具有不同的值。
[0036]應(yīng)注意到:相似的標(biāo)號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步討論。
[0037]本發(fā)明實施例應(yīng)用于實時轉(zhuǎn)碼系統(tǒng),尤其適用于4K的實時轉(zhuǎn)碼。
[0038]實施例一:
[0039]參考圖1所示,本發(fā)明實施例提供了一種降幀率的實時轉(zhuǎn)碼方法,包括以下步驟:
[0040]步驟1、根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄。
[0041]步驟2、如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀;如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀。
[0042]本發(fā)明在降低幀率的過程中仍然保留參考幀。例如,如果輸入碼流為60幀/秒,轉(zhuǎn)碼的目標(biāo)碼流是為40幀/秒,在等間隔抽取的情況下,應(yīng)當(dāng)每隔2幀就抽取丟棄I幀,例如抽取丟棄第3、6、9.....57、60幀;假設(shè)當(dāng)前幀為第9幀,在等間隔抽取的情況下應(yīng)當(dāng)被抽取丟棄,但由于第9幀為參考幀,則保留第9幀,改為抽取丟棄第9幀之后的第一個非參考幀(例如第10幀為非參考幀,則改為抽取丟棄第10幀),如果第9幀為非參考幀,則抽取丟棄第9幀。通過步驟I和步驟2的降幀方法,在降低幀率的過程中保留了參考幀。
[0043]步驟3、如果當(dāng)前幀沒有被抽取丟棄,則對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。
[0044]步驟3的核心在于,對當(dāng)前解碼幀進行編碼之前,獲取輸入碼流的原編碼信息(包括幀類型以及宏塊編碼信息),并根據(jù)所述原編碼信息進行編碼信息繼承,從而實現(xiàn)編碼信息預(yù)測用以進行后續(xù)高質(zhì)量的編碼。
[0045]本發(fā)明的實施例中,編碼默認(rèn)采用H.264視頻編碼格式。輸入碼流的幀類型包括幀內(nèi)預(yù)測編碼幀(I幀)、前向預(yù)測編碼幀(P幀)以及雙向預(yù)測編碼幀(B幀),其中幀內(nèi)預(yù)測編碼幀(I幀)為參考幀,前向預(yù)測編碼幀(P幀)和雙向預(yù)測編碼幀(B幀)為非參考幀。
[0046]數(shù)據(jù)在網(wǎng)絡(luò)上是以很小的稱為幀(Frame)的單位傳輸?shù)?,幀由幾部分組成,不同的部分執(zhí)行不同的功能。一幀就是一副靜止的畫面,連續(xù)的幀就形成動畫,如電視圖像等。
[0047]在實際壓縮時,會采取各種算法減少數(shù)據(jù)的容量,其中IPB就是最常見的。I幀是幀內(nèi)預(yù)測編碼幀,屬于幀內(nèi)壓縮,I幀畫面完整保留,解碼時只需要本幀數(shù)據(jù)就可以完成。
[0048]P幀為向前預(yù)測編碼幀,屬于幀間編碼。P幀表示的是這一幀跟之前一個參考幀的差別,殘差數(shù)據(jù)加上通過前向運動補償?shù)玫降念A(yù)測數(shù)據(jù)來重構(gòu)當(dāng)前P幀。
[0049]B幀是雙向差別幀,也就是B幀記錄的是本幀與前后參考幀的差別,解碼時既需要前向參考幀又需要后向參考幀,通過殘差數(shù)據(jù)加上通過前-后向運動補償?shù)玫降念A(yù)測數(shù)據(jù)來重構(gòu)當(dāng)前B幀。
[0050]在本發(fā)明的一個實施例中,所述宏塊編碼信息包括原始輸入碼流中每一宏塊的編碼模式、參考幀以及運動矢量,以使后續(xù)編碼繼承這些編碼信息,實現(xiàn)高效的編碼預(yù)測。
[0051]在步驟3中,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,當(dāng)采用H.264作為視頻編碼格式時,是將當(dāng)前幀的幀類型預(yù)測為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,即當(dāng)前幀的轉(zhuǎn)碼幀的幀類型和當(dāng)前幀的幀類型一致。對所述輸入碼流進行轉(zhuǎn)碼包括對幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀以及雙向預(yù)測編碼幀的轉(zhuǎn)碼:
[0052]對所述幀內(nèi)預(yù)測編碼幀(I幀)的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8X8分塊模式進行編碼的編碼代價;從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式;根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。
[0053]對所述前向預(yù)測編碼幀(P幀)進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量;根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。
[0054]對所述雙向預(yù)測編碼幀(B幀)進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式以及默認(rèn)開啟的8_011^(^模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
[0055]本發(fā)明提供的降幀率的實時轉(zhuǎn)碼方法,在降幀率的過程中保留參考幀,然后進行編碼信息繼承,預(yù)測出當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型以及宏塊編碼信息用于轉(zhuǎn)碼,實現(xiàn)了高效率的實時轉(zhuǎn)碼。
[0056]實施例二
[0057]圖2是本發(fā)明實施例二的技術(shù)流程圖,實施例二是上述步驟3中,對所述幀內(nèi)預(yù)測編碼幀(I幀)的幀內(nèi)編碼宏塊進行編碼的具體示例。I幀編碼采用幀內(nèi)預(yù)測模式進行編碼,分塊模式可以劃分為Ι_16χ16,Ι_8χ8,Ι_4χ4。為了保證視頻質(zhì)量,通常會遍歷所有的編碼模式來選擇最優(yōu)的模式,這無疑會在很大程度上增加編碼時間。但I幀作為參考幀,所以要優(yōu)先保證更好的視頻質(zhì)量。
[0058]步驟210:對當(dāng)前宏塊進行編碼之前,預(yù)先計算以Ι_8χ8分塊模式進行編碼的編碼代價;
[0059]由于Ι_8χ8只在H.264-High-prof i Ie中定義,有些輸入碼流并未采用此模式,而1_8x8是在I_16xl6,I_4x4之間折中的選擇,所以為了更好的保證視頻質(zhì)量,所以所述當(dāng)前編碼宏塊進行編碼時,預(yù)先計算I_8x8的編碼代價(cost);
[0060]步驟220:從所述輸入碼流中獲取與所述當(dāng)前宏塊的相同位置的宏塊對應(yīng)的原分塊模式,并根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。
[0061 ]若所述原分塊模式為I_8x8,則以I_8x8分塊模式對所述當(dāng)前宏塊進行編碼;
[0062]若所述原分塊模式為16X16,則以16X16分塊模式對所述當(dāng)前宏塊進行編碼;
[0063]若所述原分塊模式為4X4,,比較I_4x4與預(yù)先計算的I_8x8的cost,以cost較小的作為真正的編碼模式。
[0064]本發(fā)明實施例中,通過判斷所述輸入碼流中與當(dāng)前編碼宏塊位置相同的編碼宏塊的編碼模式,并結(jié)合預(yù)先計算以I_8x8模式進行編碼的編碼代價,實現(xiàn)了 I幀最優(yōu)編碼模式的快速選擇,提高了編碼效率以及編碼視頻質(zhì)量。
[0065]實施例三
[0066]圖3是本發(fā)明實施例三的技術(shù)流程圖,實施例三是上述步驟3中,對所述前向預(yù)測編碼幀(P幀)進行編碼的具體示例。
[0067]由于P幀采用前向參考幀編碼和幀內(nèi)編碼的混合模式,原始輸入碼流對應(yīng)位置宏塊的運動向量有很高的可利用性,因此,本發(fā)明實施例中,所以將所述輸入碼流的MV(Mot1n Vector,即運動矢量)作為后續(xù)運動估計的起始參考點。
[0068]步驟310:從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;
[0069]若所述原編碼模式為幀內(nèi)編碼宏塊(INTRA塊),則所述當(dāng)前編碼宏塊采用與I幀的幀內(nèi)編碼模塊相同的編碼策略進行編碼。
[0070]若所述原編碼模式為SKIP類型的宏塊(P_SKIP),則判斷所述當(dāng)前編碼宏塊是否適合進行P_SKIP編碼,若適合,則將所述當(dāng)前編碼宏塊的編碼模式標(biāo)記Sp_skip。
[0071]若所述原編碼模式為P_16xl6,則所述當(dāng)前編碼宏塊只進行?_51(1?和?_16116的模式?jīng)Q策,以COSt最小的作為最后的實際編碼模式。
[0072]若所述原編碼模式為P_16x8,則所述當(dāng)前編碼宏塊只進行?_51(1?和?_16#的模式?jīng)Q策,以cost最小的作為最后的實際編碼模式。
[0073]若所述原編碼模式為P_8xl6,則所述當(dāng)前編碼宏塊只進行?_51(1?和?_8116的模式?jīng)Q策,以COSt最小的作為最后的實際編碼模式。
[0074]若所述原編碼模式的編碼模式為P_8x8,則所述當(dāng)前編碼宏塊只進行?_31(1?和?_16116和?_818的模式?jīng)Q策。
[0075]步驟320:根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量;
[0076]在幀間預(yù)測編碼中,由于活動圖像鄰近幀中的景物存在著一定的相關(guān)性。因此,可將活動圖像分成若干塊或宏塊,并設(shè)法搜索出每個塊或宏塊在鄰近幀圖像中的位置,并得出兩者之間的空間位置的相對偏移量,得到的相對偏移量就是通常所指的運動矢量,得到運動矢量的過程被稱為運動估計。
[0077]運動矢量和經(jīng)過運動匹配后得到的預(yù)測誤差通過量化-變換發(fā)送到解碼端,在解碼端按照運動矢量指明的位置,從已經(jīng)解碼的鄰近參考幀圖像中找到相應(yīng)的塊或宏塊,和預(yù)測誤差相加后就可以重構(gòu)當(dāng)前宏塊。
[0078]本發(fā)明實施例中,若所述原編碼模式為SKIP類型的宏塊(P_SKIP),以MV(0,0)作為搜索候選運動矢量的起始點;
[0079]若所述原編碼模式為?_16116、?_1618、?_8116或?_818,以所述當(dāng)前編碼宏塊在所述輸入碼流中對應(yīng)位置的宏塊的MV作為搜索候選MV的起始點。
[0080]步驟330:根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。
[0081]本實施例中,利用原始輸入碼流對應(yīng)位置宏塊的運動向量對當(dāng)前編碼宏塊進行運動估計,可以相當(dāng)大的程度上減少編碼時間,而且可以將實際編碼運動搜索窗口,限制在一個比較小的范圍內(nèi),進一步提高運動估計的效率。
[0082]實施例四
[0083]圖4是本發(fā)明實施例四的技術(shù)流程圖,實施例四是上述步驟3中,對所述雙向預(yù)測編碼幀(B幀)進行編碼的具體示例:
[0084]步驟410:禁用8_1618和8_8116兩種編碼模式并默認(rèn)開啟B_DIRECT模式;
[0085]B幀類似于P幀的編碼,只是可以支持后向參考幀。所以模式選擇較P幀而言也更加復(fù)雜。在實際測試當(dāng)中,由于116#和8_8116所占的比重不足5%,而且?guī)淼拇a率節(jié)省也十分有限(不同內(nèi)容的測試序列可能結(jié)果也會不同,通常也不會超過5% ),所以在實際轉(zhuǎn)碼系統(tǒng)當(dāng)中禁用[1618和8_8116兩種編碼模式并默認(rèn)開啟B_DIRECT模式。
[0086]步驟420:從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式,根據(jù)所述原編碼模式以及默認(rèn)開啟的B_DIRECT模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
[0087]若所述原編碼模式為INTRA塊(幀內(nèi)編碼宏塊),則所述當(dāng)前編碼宏塊采用與I幀INTRA相同的編碼策略,選擇最優(yōu)的INTRA預(yù)測模式與B_DIRECT模式進行比較,以cost最小的,作為最終的編碼模式;
[0088]若所述原編碼模式為B_SKIPSB_DIRECT,則所述當(dāng)前編碼宏塊只進行B_DIRECT模式的預(yù)先判別以及B_16xl6下ref O的模式判決,以cost最小的,作為最終的編碼模式;
[0089]若所述原編碼模式為B_16xl6,則所述當(dāng)前編碼宏塊只進行B_DIRECT模式的預(yù)先判別以&B_16xl6的模式判決,以對應(yīng)位置塊的參考幀作為候選參考幀,以cost最小的,作為最終的編碼模式;
[0090]若所述原編碼模式為B_8x8,則所述當(dāng)前編碼宏塊只進行B_DIRECT模式的預(yù)先判別以及B_8x8的模式判決,以對應(yīng)位置塊的參考幀作為候選參考幀,以cost最小的,作為最終的編碼模式;
[0091]本實施例中,通過獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式,預(yù)測所述當(dāng)前編碼塊的編碼模式,在減少轉(zhuǎn)碼的時間的同時保持較高的視頻輸出質(zhì)量。
[0092]與本發(fā)明實施例提供的降幀率的實時轉(zhuǎn)碼方法相對應(yīng)的,本發(fā)明實施例還提供了一種降幀率的實時轉(zhuǎn)碼裝置,參考圖5所示,本發(fā)明的降幀率的實時轉(zhuǎn)碼裝置包括幀抽取模塊11、解碼模塊102、以及編碼模塊103。
[0093]所述幀抽取模塊101,用于根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄;以及,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀。
[0094]所述解碼模塊102,用于在當(dāng)前幀沒有被抽取丟棄的情況下,對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息。
[0095]所述編碼模塊103,用于在當(dāng)前幀沒有被抽取丟棄的情況下,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。
[0096]所述輸入碼流采用H.264視頻編碼格式;所述編碼模塊,用于將當(dāng)前幀的幀類型作為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,其中所述幀類型包括幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀或雙向預(yù)測編碼幀。
[0097]所述編碼模塊103,進一步用于,對所述幀內(nèi)預(yù)測編碼幀的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8X8分塊模式進行編碼的編碼代價;從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式;根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。
[0098]所述編碼模塊103,進一步用于,對所述前向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量;根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。
[0099]所述編碼模塊103,進一步用于,對所述雙向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式;根據(jù)所述原編碼模式以及默認(rèn)開啟的B_DIRECT模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
[0100]圖5所示裝置可以執(zhí)行圖1?圖4所示實施例的方法,實現(xiàn)原理和技術(shù)效果參考圖1?圖4所示實施例,不再贅述。
[0101]本發(fā)明還提供了一種直播平臺,包括如前所述的實時轉(zhuǎn)碼裝置。圖6顯示了可用于實現(xiàn)本發(fā)明實施例的直播平臺的硬件配置的例子的框圖。
[0102]如圖6所示,直播平臺包括計算裝置1110。計算裝置1110包含通過系統(tǒng)總線1121連接的處理單元1120、系統(tǒng)存儲器1130、不可拆卸非易失性存儲器接口 1140、可拆卸非易失性存儲器接口 1150、用戶輸入接口 1160、網(wǎng)絡(luò)接口 1170、視頻接口 1190和輸出外設(shè)接口 1195。
[0103]其中,某個存儲器用于存儲指令,所述指令用于控制處理單元1120進行操作以執(zhí)行本發(fā)明的降幀率的實時轉(zhuǎn)碼方法。
[0104]系統(tǒng)存儲器1130包含ROM(只讀存儲器)1131和RAM(隨機存取存儲器)1132A1S(基本輸入輸出系統(tǒng))1133駐留于ROM 1131中。操作系統(tǒng)1134、應(yīng)用程序1135、其它的程序模塊1136和一些程序數(shù)據(jù)1137駐留于RAM 1132中。
[0105]諸如硬盤的不可拆卸非易失性存儲器1141與不可拆卸非易失性存儲器接口1140連接。例如,不可拆卸非易失性存儲器1141可存儲操作系統(tǒng)1144、應(yīng)用程序1145、其它的程序模塊1146和一些程序數(shù)據(jù)1147。
[0106]諸如軟盤驅(qū)動器1151和⑶-ROM驅(qū)動器1155的可拆卸非易失性存儲器與可拆卸非易失性存儲器接口 1150連接。例如,軟盤可被插入軟盤驅(qū)動器1151中,并且,CD(光盤)可被插入CD-ROM驅(qū)動器1155中。
[0107]諸如鼠標(biāo)1161和鍵盤1162的輸入設(shè)備與運維管理接口 1160連接。
[0108]計算裝置1110可通過網(wǎng)絡(luò)接口 1170與遠程計算裝置1180連接。例如,網(wǎng)絡(luò)接口1170可通過局域網(wǎng)絡(luò)1171與遠程計算裝置1180連接。作為替代方案,網(wǎng)絡(luò)接口 1170可與調(diào)制解調(diào)器(調(diào)制器-解調(diào)器)1172連接,并且調(diào)制解調(diào)器1172通過廣域網(wǎng)絡(luò)1173與遠程計算裝置1180連接。
[0109]遠程計算裝置1180可包含存儲遠程應(yīng)用程序1185的諸如硬盤的存儲器1181。
[0110]視頻接口1190與監(jiān)視器1191連接。
[0111]輸出外設(shè)接口 1195與打印機1196和揚聲器1197連接。
[0112]圖6所示的直播后臺僅是解釋性的,并且決不是為了要限制本發(fā)明、其應(yīng)用或用途。
[0113]本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
[0114]計算機可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機可讀存儲介質(zhì)例如可以是一一但不限于一一電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?br>[0115]這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關(guān)計算機和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機可讀程序指令,并轉(zhuǎn)發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機可讀存儲介質(zhì)中。
[0116]用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機器指令、機器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言一諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言一諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務(wù)器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
[0117]這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
[0118]這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質(zhì)中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的計算機可讀介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
[0119]也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
[0120]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。對于本領(lǐng)域技術(shù)人員來說公知的是,通過硬件方式實現(xiàn)、通過軟件方式實現(xiàn)以及通過軟件和硬件結(jié)合的方式實現(xiàn)都是等價的。
[0121]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。本發(fā)明的范圍由所附權(quán)利要求來限定。
[0122]以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實施例的原理、實際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進,或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實施例。本發(fā)明的范圍由所附權(quán)利要求來限定。
【主權(quán)項】
1.一種降幀率的實時轉(zhuǎn)碼方法,其特征在于,包括以下步驟: 根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄; 如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀;如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀; 如果當(dāng)前幀沒有被抽取丟棄,則對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述輸入碼流采用H.264視頻編碼格式;將當(dāng)前幀的幀類型作為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,其中所述幀類型包括幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀或雙向預(yù)測編碼幀。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,對所述幀內(nèi)預(yù)測編碼幀的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8X8分塊模式進行編碼的編碼代價; 從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式; 根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,對所述前向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式; 根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量; 根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。5.根據(jù)權(quán)利要求2所述的方法,其特征在于,對所述雙向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式; 根據(jù)所述原編碼模式以及默認(rèn)開啟的8_011^(^模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。6.—種降幀率的實時轉(zhuǎn)碼裝置,其特征在于,包括幀抽取模塊、解碼模塊、以及編碼模塊; 所述幀抽取模塊,用于根據(jù)輸入碼流的幀率和目標(biāo)碼流的幀率,判斷在等間隔抽取的情況下,當(dāng)前幀是否應(yīng)當(dāng)被抽取丟棄;以及,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為參考幀,則保留當(dāng)前幀并改為抽取丟棄當(dāng)前幀之后的第一個非參考幀,如果當(dāng)前幀應(yīng)當(dāng)被抽取丟棄并且當(dāng)前幀為非參考幀,則抽取丟棄當(dāng)前幀; 所述解碼模塊,用于在當(dāng)前幀沒有被抽取丟棄的情況下,對當(dāng)前幀進行解碼獲得當(dāng)前解碼幀,并在解碼過程中獲取當(dāng)前幀的幀類型以及宏塊編碼信息; 所述編碼模塊,用于在當(dāng)前幀沒有被抽取丟棄的情況下,根據(jù)當(dāng)前幀的幀類型以及宏塊編碼信息預(yù)測當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息,按照預(yù)測出的轉(zhuǎn)碼幀的幀類型及宏塊編碼信息對所述當(dāng)前解碼幀進行編碼。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述輸入碼流采用H.264視頻編碼格式;所述編碼模塊,用于將當(dāng)前幀的幀類型作為當(dāng)前幀對應(yīng)的轉(zhuǎn)碼幀的幀類型,其中所述幀類型包括幀內(nèi)預(yù)測編碼幀、前向預(yù)測編碼幀或雙向預(yù)測編碼幀。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述編碼模塊,進一步用于,對所述幀內(nèi)預(yù)測編碼幀的幀內(nèi)編碼宏塊進行編碼時,預(yù)先計算以8X8分塊模式進行編碼的編碼代價; 從所述輸入碼流中獲取與所述幀內(nèi)預(yù)測編碼幀的當(dāng)前幀內(nèi)編碼宏塊位置相同的宏塊對應(yīng)的原分塊模式; 根據(jù)所述原分塊模式和所述編碼代價對所述幀內(nèi)編碼宏塊的編碼模式進行選擇。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述編碼模塊,進一步用于,對所述前向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述前向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式; 根據(jù)所述原編碼模式進行運動估計,從而得到運動矢量; 根據(jù)所述運動矢量對所述前向預(yù)測編碼幀進行運動補償預(yù)測編碼。10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述編碼模塊,進一步用于,對所述雙向預(yù)測編碼幀進行編碼時,從所述輸入碼流中獲取與所述雙向預(yù)測編碼幀的當(dāng)前編碼宏塊位置相同的宏塊對應(yīng)的原編碼模式; 根據(jù)所述原編碼模式以及默認(rèn)開啟的8_011^(^模式選擇最優(yōu)的所述雙向預(yù)測編碼幀的編碼模式。
【文檔編號】H04N21/4402GK106028139SQ201610323809
【公開日】2016年10月12日
【申請日】2016年5月16日
【發(fā)明人】白茂生, 蔡硯剛, 魏偉
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司