本發(fā)明涉及視頻通信領域,尤其涉及一種視頻編碼器、視頻編碼系統(tǒng)和視頻編碼方法。
背景技術:
多媒體內容產(chǎn)生和分發(fā)操作通常包括視頻編碼。視頻編碼過程通常是計算密集型的。結果,視頻編碼過程可能是非常耗時的。例如,編碼器編碼一部高質量高清電影可能要花費數(shù)十小時。尤其是對于高分辨率和高幀率場景,一個編碼器往往難以處理,可能會產(chǎn)生較為嚴重的延遲。由于視頻編碼的時間對于成功的多媒體內容產(chǎn)生和分發(fā)流水線而言是重要因素,因此減少視頻編碼時間的系統(tǒng)和技術將是非常有用的。
技術實現(xiàn)要素:
在發(fā)明內容部分中引入了一系列簡化形式的概念,這將在具體實施方式部分中進一步詳細說明。本發(fā)明的發(fā)明內容部分并不意味著要試圖限定出所要求保護的技術方案的關鍵特征和必要技術特征,更不意味著試圖確定所要求保護的技術方案的保護范圍。
一方面,本發(fā)明公開了一種視頻編碼器,包括邏輯控制模塊和編碼模塊。其中,所述邏輯控制模塊配置為接收外部控制器發(fā)送的對每一幀圖像的指定部分進行編碼的控制命令,并將所述控制命令發(fā)送給所述編碼模塊;以及所述編碼模塊配置為從所述邏輯控制模塊接收所述控制命令,并基于所述控制命令對每一幀圖像的所述指定部分進行編碼,以與其他多個所述視頻編碼器合作完成每一幀圖像的編碼。
在本發(fā)明的一個實施例中,所述編碼模塊包括幀間預測模塊、幀內預測模塊、模式判決模塊和熵編碼模塊,其中,所述幀間預測模塊和所述幀內預測模塊均配置為將每一幀圖像的所述指定部分視為一幀圖像數(shù)據(jù)。
在本發(fā)明的一個實施例中,所述幀間預測模塊和所述幀內預測模塊各 自的寄存器的值基于每一幀圖像的所述指定部分的圖像大小而設置。
在本發(fā)明的一個實施例中,所述幀間預測模塊配置為在進行幀間預測時將已經(jīng)編碼的前一幀整幀圖像作為參考幀。
在本發(fā)明的一個實施例中,在所述視頻編碼器中編碼的每一幀圖像的指定部分定義為條帶(strip),所述條帶的邊界無需進行去塊效應濾波。
在本發(fā)明的一個實施例中,所述視頻編碼器進行編碼的條帶和與所述視頻編碼器合作完成編碼的其他多個所述視頻編碼器的每一個進行編碼的條帶大小相近。
在本發(fā)明的一個實施例中,所述視頻編碼器通過配置NVENC硬件編碼引擎而實現(xiàn)。
在本發(fā)明的一個實施例中,所述視頻編碼器能夠應用于GP100圖形處理單元中。
另一方面,本發(fā)明還公開了一種視頻編碼系統(tǒng),包括控制器、多個視頻編碼器和存儲器。其中,所述控制器配置為向所述多個視頻編碼器中的每一個發(fā)送控制命令,以控制每一幀圖像由所述多個視頻編碼器共同完成編碼;以及所述多個視頻編碼器中的每一個配置為接收所述控制命令、基于所述控制命令從所述存儲器讀取一幀圖像的部分數(shù)據(jù)、對所讀取的數(shù)據(jù)進行編碼、以及將經(jīng)編碼的數(shù)據(jù)寫入所述存儲器。
在本發(fā)明的一個實施例中,所述多個視頻編碼器中的每一個進行編碼的一幀圖像的部分數(shù)據(jù)定義為條帶,所述多個視頻編碼器中的每一個進行編碼的條帶大小相近。
在本發(fā)明的一個實施例中,所述視頻編碼器包括邏輯控制模塊和編碼模塊。其中,所述邏輯控制模塊配置為接收所述控制器發(fā)送的所述控制命令,并將所述控制命令發(fā)送給所述編碼模塊;以及所述編碼模塊配置為從所述邏輯控制模塊接收所述控制命令,并基于所述控制命令對每一幀圖像的指定部分進行編碼,以與其他多個所述視頻編碼器合作完成每一幀圖像的編碼。
在本發(fā)明的一個實施例中,所述編碼模塊包括幀間預測模塊、幀內預測模塊、模式判決模塊和熵編碼模塊,其中,所述幀間預測模塊和所述幀內預測模塊均配置為將每一幀圖像的所述指定部分視為一幀圖像數(shù)據(jù)。
在本發(fā)明的一個實施例中,所述幀間預測模塊和所述幀內預測模塊各 自的寄存器的值基于每一幀圖像的所述指定部分的圖像大小而設置。
在本發(fā)明的一個實施例中,所述幀間預測模塊配置為在進行幀間預測時將已經(jīng)編碼的前一幀整幀圖像作為參考幀。
在本發(fā)明的一個實施例中,在所述多個視頻編碼器的每一個中編碼的條帶的邊界無需進行去塊效應濾波。
再一方面,本發(fā)明還公開了一種視頻編碼方法,包括:將每一幀圖像分為多個條帶;將所述多個條帶分配給多個視頻編碼器進行編碼;以及將經(jīng)編碼的多個條帶合并為一幀經(jīng)編碼的圖像。
在本發(fā)明的一個實施例中,所述條帶的數(shù)目與所述視頻編碼器的數(shù)目相等。
在本發(fā)明的一個實施例中,所述將每一幀圖像分為多個條帶進一步包括:將每一幀圖像按照水平方向分為多個條帶。
在本發(fā)明的一個實施例中,所述多個條帶的邊界無需進行去塊效應濾波。
在本發(fā)明的一個實施例中,所述視頻編碼器為包括邏輯控制模塊和編碼模塊。其中,所述邏輯控制模塊配置為接收外部控制器發(fā)送的對每一幀圖像的指定條帶進行編碼的控制命令,并將所述控制命令發(fā)送給所述編碼模塊;以及所述編碼模塊配置為從所述邏輯控制模塊接收所述控制命令,并基于所述控制命令對每一幀圖像的所述指定條帶進行編碼,以與其他多個所述視頻編碼器合作完成每一幀圖像的編碼。
使用本發(fā)明提供的視頻編碼器、視頻編碼系統(tǒng)和視頻編碼方法,每一幀圖像可以由多個視頻編碼器共同完成,從而有效減少編碼時間,降低編碼延遲,實現(xiàn)對高清視頻源尤其是4k及其以上分辨率視頻源的實時編碼。
附圖說明
本發(fā)明的下列附圖在此作為本發(fā)明的一部分用于理解本發(fā)明。附圖中示出了本發(fā)明的實施例及其描述,用來解釋本發(fā)明的原理。在附圖中,
圖1示出了根據(jù)本發(fā)明一個實施例的視頻編碼器的結構框圖;
圖2示出了根據(jù)本發(fā)明一個實施例的視頻編碼系統(tǒng)的結構框圖;以及
圖3示出了根據(jù)本發(fā)明的一個實施例的視頻編碼方法的流程圖。
具體實施方式
在下文的描述中,給出了大量具體的細節(jié)以便提供對本發(fā)明更為徹底的理解。然而,對于本領域技術人員來說顯而易見的是,本發(fā)明可以無需一個或多個這些細節(jié)而得以實施。在其他的例子中,為了避免與本發(fā)明發(fā)生混淆,對于本領域公知的一些技術特征未進行描述。
為了徹底了解本發(fā)明,將在下列的描述中提出詳細的結構。顯然,本發(fā)明的施行并不限定于本領域的技術人員所熟習的特殊細節(jié)。本發(fā)明的較佳實施例詳細描述如下,然而除了這些詳細描述外,本發(fā)明還可以具有其他實施方式。
在現(xiàn)有的視頻編碼技術中,一幀圖像通常僅由一個編碼器進行編碼。然而,一個編碼器難以滿足高分辨率、高幀率和/或實時處理的應用場合。
根據(jù)本發(fā)明的一方面,公開了一種視頻編碼器。圖1示出了根據(jù)本發(fā)明一個實施例的視頻編碼器100的結構框圖。如圖1所示,該視頻編碼器100包括邏輯控制模塊101和編碼模塊102。其中,邏輯控制模塊配置為接收外部控制器發(fā)送的對每一幀圖像的指定部分進行編碼的控制命令,并將該控制命令發(fā)送給編碼模塊102;編碼模塊102配置為從邏輯控制模塊101接收控制命令,并基于該控制命令對每一幀圖像的指定部分進行編碼,以與其他多個視頻編碼器合作完成每一幀圖像的編碼。這里,其他多個視頻編碼器可以是和視頻編碼器100結構相同的編碼器。每個視頻編碼器100基于所接收的控制命令從外部存儲器讀取一幀圖像的指定部分,并對該幀圖像的該指定部分進行編碼,使該幀圖像的編碼可以由多個視頻編碼器來共同完成,從而有效減少編碼時間,降低編碼延遲,實現(xiàn)對高清視頻源尤其是4k及其以上分辨率視頻源的實時編碼。例如,可以由3個視頻編碼器100共同完成一幀圖像的編碼,其中每個視頻編碼器100完成一幀圖像的指定部分的編碼,例如每個視頻編碼器100完成一幀圖像的三分之一。
根據(jù)本發(fā)明的一個實施例,編碼模塊102可以包括幀間預測模塊1021、幀內預測模塊1022、模式判決模塊1023和熵編碼模塊1024。其中,幀間預測模塊1021進行幀間運動估計和運動補償,幀間預測模塊1021還配置為在進行幀間預測時將已經(jīng)編碼的前一幀整幀圖像作為參考幀;幀內預測模塊1022進行幀內預測編碼,并將最終的殘差等需要編碼的信息發(fā)送給熵編碼模塊1024;模塊判決模塊1023從幀間預測結果和幀內預測結果中選出最優(yōu)的預測結果,并將該最優(yōu)結果返回給幀間預測模塊1021和幀內預測 模塊1022;熵編碼模塊1024對預測殘差等信息進行編碼,并將編碼后的結果寫入外部存儲器。
其中,幀間預測模塊1021和幀內預測模塊1022均可以配置為將每一幀圖像的指定部分視為一幀圖像數(shù)據(jù)。例如,通過對幀間預測模塊1021和幀內預測模塊1022進行配置,使其各自的寄存器的值基于每一幀圖像的指定部分的圖像大小而設置。如上面的示例所述,可以由3個視頻編碼器100共同完成一幀圖像的編碼,其中每個視頻編碼器100完成一幀圖像的指定部分的編碼,例如每個視頻編碼器100完成一幀圖像的三分之一。此處,該3個視頻編碼器100內的幀間預測模塊1021和幀內預測模塊1022中的圖像高度和寬度寄存器的值可以基于三分之一幀圖像的高度和寬度而設置。此外,在幀間預測模塊1021中和熵編碼模塊1024中,宏塊(MB)位置寄存器的值可以基于該宏塊在整幅圖像中的位置而設置。這樣,編碼模塊102可以將其讀取的一幀圖像的一部分視為獨立的一幀圖像數(shù)據(jù)而非一幀圖像的一部分,從而在完成該指定部分的編碼時發(fā)出本幀編碼結束的信號,實現(xiàn)多個編碼器共同完成一幀圖像的編碼。
根據(jù)本發(fā)明的一個實施例,在視頻編碼器100中編碼的每一幀圖像的指定部分可以定義為條帶,所述條帶的邊界無需進行去塊效應濾波。由于每個視頻編碼器100僅編碼一幀圖像的一部分,換句話說,一幀圖像的兩個邊界的像素點分別位于兩個視頻編碼器100內,因此,在視頻編碼器100中編碼的條帶的邊界無需進行去塊效應濾波。
根據(jù)本發(fā)明的一個實施例,視頻編碼器進行編碼的條帶和與視頻編碼器合作完成編碼的其他多個視頻編碼器的每一個進行編碼的條帶大小相近。如上面的示例所述,可以由3個視頻編碼器100共同完成一幀圖像的編碼,其中每個視頻編碼器100完成一幀圖像的指定部分的編碼。該3個視頻編碼器100各自所完成的編碼量可以相同(例如每個視頻編碼器100完成一幀圖像的三分之一)也可以不同。每個視頻編碼器100完成大小相近的條帶的編碼可以最大限度地提高編碼效率。
根據(jù)本發(fā)明的一個實施例,視頻編碼器100可以通過配置NVENC硬件編碼引擎而實現(xiàn)。NVENC為H.264硬件編碼引擎,其可以提供較快的編碼和轉碼速度,還可以提供良好的性能瓦特比。
根據(jù)本發(fā)明的一個實施例,視頻編碼器100能夠應用于GP100圖形 處理單元中。GP100圖像處理單元中包括3個NVENC編碼引擎,通過將每個NVENC編碼引擎配置為如上所述的視頻編碼器100,可以實現(xiàn)GP100圖像處理單元中3個NVENC編碼引擎合作完成每幀圖像的編碼,從而提高編碼速度,減少編碼時間,實現(xiàn)對高清視頻源尤其是4k及其以上分辨率視頻源的實時編碼。
根據(jù)本發(fā)明的另一方面,還公開了一種視頻編碼系統(tǒng)。圖2示出了根據(jù)本發(fā)明一個實施例的視頻編碼系統(tǒng)200的結構框圖。如圖2所示,該視頻編碼系統(tǒng)200包括控制器201、多個視頻編碼器202和存儲器203。其中,控制器201配置為向多個視頻編碼器202中的每一個發(fā)送控制命令,以控制每一幀圖像由多個視頻編碼器202共同完成編碼;多個視頻編碼器202中的每一個配置為接收控制命令、基于控制命令從存儲器讀取一幀圖像的部分數(shù)據(jù)、對所讀取的數(shù)據(jù)進行編碼、以及將經(jīng)編碼的數(shù)據(jù)寫入存儲器。這里,多個視頻編碼器202中的每一個可以與圖1所示的視頻編碼器100的結構相同。為了描述簡單,此處不再贅述視頻編碼器202的結構和工作過程。與先前示例類似,在一個示例中,視頻編碼系統(tǒng)200可以包括3個視頻編碼器202,其中每個視頻編碼器可以基于控制器201的控制命令從存儲器203讀取一幀圖像的指定部分并對其進行編碼。這樣,可以由視頻編碼系統(tǒng)200內包括的3個視頻編碼器202合作完成每幀圖像的編碼。
根據(jù)本發(fā)明的一個實施例,多個視頻編碼器202中的每一個進行編碼的一幀圖像的部分數(shù)據(jù)可以定義為條帶,多個視頻編碼器202中的每一個進行編碼的條帶大小相近。如上面的示例所述,視頻編碼系統(tǒng)200可以包括3個視頻編碼器202,其中每個視頻編碼器可以基于控制器201的控制命令從存儲器203讀取一幀圖像的指定部分并對其進行編碼。該3個視頻編碼器202各自要完成的編碼量可以相同(例如每個視頻編碼器202完成一幀圖像的三分之一)也可以不同。每個視頻編碼器202完成相同大小相近的條帶的編碼可以最大限度地提高編碼效率。
根據(jù)本發(fā)明的一個實施例,視頻編碼器202可以通過配置NVENC硬件編碼引擎而實現(xiàn)。視頻編碼系統(tǒng)200能夠實現(xiàn)于GP100圖形處理單元中。其中,控制器201可以由GP100圖形處理單元的GPU控制中心實現(xiàn),多個視頻編碼器202可以由GP100圖形處理單元的3個NVENC硬件編碼引擎實現(xiàn),并且存儲器203可以由GP100圖形處理單元的GPU顯存實現(xiàn)。
本領域普通技術人員可以理解,上述包括3個視頻編碼器202的視頻編碼系統(tǒng)200僅為一個實施例,視頻編碼系統(tǒng)200可以包括其他數(shù)目的視頻編碼器202以滿足不同的編碼需求。此外,視頻編碼系統(tǒng)200可以實現(xiàn)在其他圖形處理單元(非GP100圖形處理單元)中。
根據(jù)本發(fā)明的再一方面,還公開了一種視頻編碼方法。圖3示出了根據(jù)本發(fā)明的一個實施例的視頻編碼方法300的流程圖。該視頻編碼方法300包括以下步驟:
步驟301:將每一幀圖像分為多個條帶;
步驟302:將多個條帶分配給多個視頻編碼器進行編碼;
步驟303:將經(jīng)編碼的多個條帶合并為一幀經(jīng)編碼的圖像。
此處所述的視頻編碼器例如可以采用如圖1所示的視頻編碼器100的結構,以支持一個視頻編碼器僅編碼一幀圖像的一部分。為了描述簡單,此處不再贅述視頻編碼方法300中所述的視頻編碼器的結構和工作過程。
根據(jù)本發(fā)明的一個實施例,條帶的數(shù)目與視頻編碼器的數(shù)目可以相等。例如,當包括3個視頻編碼器時,可以將每一幀圖像分為3個條帶,每個視頻編碼器完成1個條帶的編碼。每個視頻編碼器完成相同數(shù)據(jù)量的編碼可以最大限度地提高編碼效率。
根據(jù)本發(fā)明的一個實施例,將每一幀圖像分為多個條帶可以進一步包括:將每一幀圖像按照水平方向分為多個條帶。從外,由于將每一幀圖像分為多個條帶,每一幀圖像的兩個邊界的像素點分別位于兩個視頻編碼器內,因此多個條帶的邊界無需進行去塊效應濾波。
通過該視頻編碼方法300,一幀圖像的編碼可以由多個視頻編碼器合作完成。每個視頻編碼器僅需處理一幀圖像的一部分,與一個視頻編碼器處理整幀圖像相比,有效提高了編碼效率,減少了編碼時間。
本發(fā)明已經(jīng)通過上述實施例進行了說明,但應當理解的是,上述實施例只是用于舉例和說明的目的,而非意在將本發(fā)明限制于所描述的實施例范圍內。此外本領域技術人員可以理解的是,本發(fā)明并不局限于上述實施例,根據(jù)本發(fā)明的教導還可以做出更多種的變型和修改,這些變型和修改均落在本發(fā)明所要求保護的范圍以內。本發(fā)明的保護范圍由附屬的權利要求書及其等效范圍所界定。