專利名稱:一種視頻編碼中的碼率控制方法及其裝置的制作方法
技術領域:
本發(fā)明涉及通信領域的視頻編碼技術,特別是涉及一種視頻編碼中的碼率控制方
法及其裝置。
背景技術:
在目前的視頻編碼壓縮技術中,采集的原始視頻數(shù)據(jù)經過編碼壓縮后,編碼出來 的碼流雖然得到了較高的壓縮比,但是其碼率是變化的。而在視頻通信領域,通信信道帶寬 都是恒定、有限的,碼率不斷變化的碼流不適合在恒定信道中傳輸。所以,在視頻編碼中引 入了碼率控制,如圖1所示,目的是將編碼器產生的碼流碼率控制在一定波動范圍之內。
碼率控制的基本原理是通過不停地調整編碼量化參數(shù)(QuantizationParameter, QP)來控制碼流緩沖區(qū)中比特的占有度,使其在一定程度上盡量保持穩(wěn)定,不出現(xiàn)上溢和下 溢的情況,從而保持碼率的穩(wěn)定。但是另一方面,編碼量化參數(shù)QP的變化直接影響圖像質 量。QP反映了空間細節(jié)壓縮情況,如果QP小,則大部分細節(jié)得以保留,此時圖像質量好而碼 率高;如果QP大,則一些細節(jié)就會被丟失,此時碼率小但是圖像失真加強,圖像質量下降。 所以,如何在控準碼率的前提之下盡可能地提升編碼圖像質量,是碼率控制方法的一個重 要問題。 在一種傳統(tǒng)的碼率控制方案中,先根據(jù)已編碼幀信息預測待編碼幀的復雜度,并
預算該幀的編碼比特數(shù),再根據(jù)反饋的虛擬緩沖區(qū)填充度確定參考量化步長,最后計算宏
塊的空間活動性和宏塊實際量化參數(shù)QP。該方法可如圖2所示,利用預分配的目標編碼比
特數(shù)、預測的圖像復雜度和反饋的虛擬緩沖區(qū)占有度等信息來調整QP值。 在另一種傳統(tǒng)的碼率控制方案中,在正式編碼之前先進行預編碼,得到碼率分配、
圖像復雜度、QP分布等信息,在正式編碼時綜合這些信息再次進行碼率控制。該方法可如
圖3所示,利用兩次編碼來達到更精準的碼率控制效果。 發(fā)明人實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術至少存在以下缺陷 圖2所示的碼率控制方案,一方面,在某些特殊場景時目標比特率分配步驟會存
在較大偏差;另一方面,由于預算得到的編碼比特數(shù)較固定,因此不能隨實際編碼場景的不
同而變化,容易導致碼率控制不準和編碼比特數(shù)分配不均;再一方面,容易導致量化不均
勻,圖像質量差異大; 圖3所示的碼率控制方案,由于采用了兩次編碼,因此增加了碼率控制的運算復 雜度,不適合于實時系統(tǒng)中的應用。
發(fā)明內容
本發(fā)明提供了一種視頻編碼中的碼率控制方法及其裝置,用以實現(xiàn)在控準碼率的 前提之下提升編碼圖像質量。 本發(fā)明提供的視頻編碼中的碼率控制方法,應用于以行宏塊作為最小運算單元的 碼率控制過程,該方法針對當前行宏塊,包括以下步驟
獲取當前幀的初始碼率控制參數(shù); 根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼 場景,確定當前行的QP值; 反饋根據(jù)當前行的QP值對當前行進行宏塊編碼后所得到的編碼結果信息。
獲取當前幀的初始碼率控制參數(shù)之后,還包括根據(jù)編碼場景調整獲取到的初始 碼率控制參數(shù);確定當前行的QP值,具體為根據(jù)調整后的當前幀的初始碼率控制參數(shù)、所 述反饋信息以及編碼場景確定當前行的QP值。 其中,根據(jù)編碼場景調整獲取到的初始碼率控制參數(shù),包括根據(jù)編碼場景調整當 前幀的目標碼率,或調整當前幀的初始QP值和目標碼率。
其中,根據(jù)編碼場景調整當前幀的目標碼率,包括 當前幀為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼
率相比得到的碼率變化超過設定范圍的上限值,則將當前幀的目標碼率減??; 或者,當前幀的為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀
的目標碼率相比得到的碼率變化超過設定范圍的下限值,則將當前幀的目標碼率增加。 上述方法中,根據(jù)編碼場景調整當前幀的初始QP值和目標碼率,包括 當前幀為非I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標
碼率相比得到的碼率變化超過設定范圍時,通過調整QP調整因子,使根據(jù)該QP調整因子得
到的當前幀的初始QP值與上一個已編碼幀的初始QP值的變化在設定范圍之內; 或者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變化超過
設定閾值范圍的上限值,則減少重新確定當前幀的初始QP值,使減小后的QP值與上一個已
編碼幀的初始QP值的變化達到該設定范圍的上限值;或者,當前幀的初始QP值與其上一個
已編碼幀的初始QP相比得到的QP變化超過設定范圍閾值的下限值,則增加當前幀的初始
QP值,使增加后的QP值與上一個已編碼幀的初始QP值達到該設定范圍的下限值。 根據(jù)本發(fā)明的方法,確定當前行的QP值,包括 根據(jù)當前幀的初始QP值和目標碼率,以及已編碼行宏塊的編碼結果反饋信息,確 定當前行的目標碼率;根據(jù)編碼場景調整當前行的目標碼率;根據(jù)調整后的當前行的目標 碼率確定當前行的QP值。 其中,根據(jù)編碼場景調整當前行的目標碼率,包括 將上一個已編碼行的碼率與該編碼行的行目標碼率相比得到的變化超過設定范 圍的上限值,則減小當前幀中待編碼行的行目標碼率;如果前者與后者相比得到的變化低 于設定范圍的下限值,則增加當前幀中待編碼行的行目標碼率。 根據(jù)本發(fā)明的上述方法,根據(jù)當前幀的初始QP值和目標碼率,以及所述反饋信 息,確定當前行的QP值之后,還包括 通過調整當前行的QP值,使將當前行的QP值與當前幀相鄰行的QP值的差值限制 在設定范圍內; 或/和,通過調整當前行的QP值,使當前行的QP值與相鄰幀對應行的QP值的差 值限制在設定范圍內。 其中,若上一個已編碼行的碼率與該已編碼行的目標行碼率相比,差值超過設定 閾值,則增大所述設定范圍。
根據(jù)本發(fā)明的上述方法,所述編碼結果反饋信息,包括行編碼碼率。 本發(fā)明提供的視頻編碼中的碼率控制裝置,應用于以行宏塊作為最小運算單元的
碼率控制過程,該裝置包括 獲取模塊,用于獲取當前幀的初始碼率控制參數(shù); 確定模塊,與所述獲取模塊連接,用于根據(jù)所述獲取模塊獲取到的當前幀的初始 碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼場景,確定當前行的QP值;
反饋模塊,與所述確定模塊連接,用于將根據(jù)所述確定模塊確定出的當前行的QP 值對當前行進行宏塊編碼后得到的編碼結果信息反饋給所述確定模塊。
上述裝置,還包括 第一場景自適應單元,分別與所述獲取模塊和所述確定模塊連接,用于根據(jù)編碼 場景調整所述獲取模塊獲取到的初始碼率控制參數(shù); 所述確定模塊具體用于,根據(jù)所述第一場景自適應單元調整后的當前幀的初始碼 率控制參數(shù)、所述反饋信息以及編碼場景確定當前行的QP值。 上述裝置中,所述第一場景自適應單元具體用于,若當前幀為I幀編碼,且該當前 幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍 的上限值,則將當前幀的目標碼率減??;或者,若當前幀為I幀編碼,且該當前幀的上一個 已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍的下限值,則 將當前幀的目標碼率增加;或者,若當前幀為非I幀編碼,且該當前幀的上一個已編碼幀的 碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍,通過調整QP調整因子, 使根據(jù)該QP調整因子得到的當前幀的初始QP值與上一個已編碼幀的初始QP值的變化在
設定范圍之內;或者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變 化超過設定閾值范圍的上限值,則減少重新確定當前幀的初始QP值,使減小后的QP值與上
一個已編碼幀的初始QP值的變化達到該設定范圍的上限值;或者,當前幀的初始QP值與其
上一個已編碼幀的初始QP相比得到的QP變化超過設定范圍閾值的下限值,則增加當前幀 的初始QP值,使增加后的QP值與上一個已編碼幀的初始QP值達到該設定范圍的下限值。 上述裝置中,所述確定模塊包括 行目標碼率確定單元,用于根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編 碼結果反饋信息,以及當前幀的場景,確定當前行的目標碼率; 第二場景自適應單元,與所述行目標碼率確定單元連接,用于根據(jù)編碼場景調整 當前行的目標碼率; 行QP值確定單元,與所述第二場景自適應單元連接,用于根據(jù)所述第二場景自適 應單元調整后的當前行的目標碼率確定當前行的QP值。 其中,所述第二場景自適應單元具體用于,將上一個已編碼行的碼率與該編碼行 的行目標碼率相比得到的變化超過設定范圍的上限值,則減小當前幀中待編碼行的行目標 碼率;如果前者與后者相比得到的變化低于設定范圍的下限值,則增加當前幀中待編碼行 的行目標碼率。 上述裝置中,所述確定模塊還包括 QP自適應單元,與所述行QP值確定單元連接,用于通過調整所述QP值確定單元確 定出的當前行的QP值,使將當前行的QP值與當前幀相鄰行的QP值的差值限制在設定范圍內;或/和,通過調整當前行的QP值,使當前行的QP值與相鄰幀對應行的QP值的差值限制
在設定范圍內。 其中,所述QP自適應單元具體用于,若上一個已編碼行的碼率與該已編碼行的目
標行碼率相比,差值超過設定閾值,則增大所述設定范圍。 本發(fā)明的有益技術效果包括 通過以一行宏塊作為碼率控制最小計算單元的方式,降低計算復雜度;進一步的, 在碼率控制過程中引入了自適應場景控制,以使碼率控制能更好地適應各種不同的場景, 在控準碼率使其不超標的前提下,盡量使更多的碼流分配到圖像較復雜的行和幀,提高編 碼的圖像質量。
圖1為現(xiàn)有技術中碼率控制和視頻編碼原理示意圖; 圖2為現(xiàn)有技術中的一種碼率控制過程的示意圖; 圖3為現(xiàn)有技術中的另一種碼率控制過程的示意圖; 圖4為本發(fā)明實施例提供的碼率控制過程示意圖; 圖5為本發(fā)明實施例的總體實現(xiàn)流程示意圖; 圖6為本發(fā)明實施例提供的當前行宏塊QP值的限制控制示意圖; 圖7為本發(fā)明實施例提供的碼率控制裝置的結構示意圖。
具體實施例方式
為了克服現(xiàn)有技術由于運算復雜度高而不能應用于實時系統(tǒng),或者對場景適應性
差,編碼出的圖像質量變化差異較大等缺陷,本發(fā)明提出了一種基于行級的自適應碼率控
制方法,該方法碼率控制的最小運算單元是一行宏塊,從而降低了碼率控制的運算復雜度,
同時通過QP自適應限值控制,提高了量化參數(shù)QP的均勻度,進而降低圖像質量的變化差
異。本發(fā)明的碼率控制方法還能自適應不同的場景,如根據(jù)場景的不同,自適應地調整碼率
控制的各參數(shù),以達到在穩(wěn)定碼率的同時,提高圖像質量的效果。 本發(fā)明為解決現(xiàn)有技術存在的技術問題所采用的技術方案可包括 在編碼開始時,根據(jù)幀率、碼率、GOP (Group of Picture,即I幀間隔)等一系列編
碼信息,通過經驗公式得到原始QP值、幀編碼比特數(shù)等; 在編碼過程中,根據(jù)反饋得到的已編碼碼率、當前QP值、幀平均QP值等信息,根據(jù)
不同的場景,實時地調整幀編碼比特數(shù)、行編碼比特數(shù)、行級QP等,以此來達到控制碼率,
同時適應不同場景編碼,提高編碼圖像質量的效果。 下面結合附圖和實施例對本發(fā)明作進一步說明。 參見圖4,為本發(fā)明實施例提供的碼率控制過程示意圖。 如圖所示,在一幀圖像編碼開始時,也即該幀圖像碼率控制開始時(S401),碼率控 制裝置會根據(jù)前一幀圖像宏塊編碼結果的反饋信息,如已編碼的碼率(碼流長度)、場景自 適應條件、平均QP、GOP等信息(S408的輸出),結合場景自適應控制(S402),計算得到當前 幀的起始QP值和當前幀的目標碼率(S402的輸出),之后進入行級碼率控制循環(huán);在行級 碼率控制開始時(S403),碼率控制裝置根據(jù)該幀目標碼率和從行級碼率控制結束時反饋回的已編碼行的碼率等信息(S407的輸出),再結合場景自適應控制(S404)和QP自適應限值 控制(S405),計算得到當前行的QP值和行目標碼率(S405的輸出);然后,根據(jù)計算得到的 當前行的QP值和行目標碼率等對當前行宏塊進行編碼(S406),得到編碼碼流(S406的輸 出),行級碼率控制結束(S407),反饋當前行宏塊編碼的碼率、場景自適應條件等(S407的 輸出),作為對下一行宏塊的行級碼率進行控制的參數(shù)。當一幀編碼結束時(S408),反饋當 前幀宏塊編碼的碼率、場景自適應條件等(S408的輸出),作為對下一幀編碼過程進行碼率 控制的參數(shù)。 這里,在碼率控制過程中引入了場景自適應控制,用于根據(jù)具體編碼場景實時地 調整目標碼率等參數(shù),達到使碼流更多地分配到場景復雜處,以提高編碼圖像質量的效果。 另外,通過以一行宏塊為最小運算單元的碼率控制,結合QP自適應限值控制的方法,可在 減小QP在空間和時間上波動性的同時,控準碼率。 參見圖5,為本發(fā)明實施例的總體實現(xiàn)流程示意圖。如圖所示,當開始對當前視頻 幀進行編碼時,該流程主要包括以下步驟
步驟S500、編碼開始,即碼率控制開始。 步驟S501、執(zhí)行碼率控制初始化,得到一起始QP值。碼率控制初始化的操作可包 括對編碼器設置的碼率控制參數(shù)進行初始化操作,得到起始QP值。 該步驟中,起始QP值可以是預設值,為操作簡便,預設的起始QP值可以是根據(jù)以 往進行幀編碼所得到的平均QP值。本領域技術人員應該理解,起始QP值可以通過上述 方式或者其他一些常規(guī)方式得到,比如在初始化過程中,可根據(jù)期望的目標碼率、期望的
GOP等參數(shù)得到起始QP值,也可以是對一般的圖像場景進行實測得到的結果。起始QP值的 確定主要與三個因素有關一是設置的碼率(BITRATE),二是待編碼圖像的寬WIDTH,三是 待編碼圖像的高HEIGHT。最后得到的起始QP值與上述三個因素的關系是BITRATE越大, (WIDTH*HEIGHT)越小,則QP值越小,反之BITRATE越小,(WIDTH*HEIGHT)越大,則QP值越 大。比如,以編碼H. 2644CIF分辨率(WIDTH為704, HEIGHT為576)碼率BITRATE為4M的 碼流來說,其QP值取30 ;當編碼4CIF分辨率碼率BITRATE為2M的碼流時,QP值取32 ;當 編碼CIF分辨率(WIDTH為352, HEIGHT為288)碼率BITRATE為2M的碼流時,QP取26。
步驟S502、接收前一幀編碼結束時反饋回來的編碼結果信息,開始對當前幀進行 碼率控制。 步驟S503、計算當前幀的初始QP值(記為QP。)和目標碼率,并可進一步通過場景 自適應控制過程,對計算得到的當前幀的QP。和當前幀的目標碼率進行調整。
該步驟可內嵌一個場景自適應控制過程,用于對較復雜場景或編碼碼率起伏較大 的場景進行控制。該控制過程可以包括 如果當前幀為I幀編碼,且檢測出編碼場景較復雜(即當前幀的編碼復雜程度較 高),對碼率控制壓力較大,可能會有碼率控制超標的危險,則會自動調整I幀目標碼率的 計算,使用較小的目標碼率,以達到壓制碼流超標的效果,如減小幀目標碼率。當然,如果檢 測出當前編碼場景較簡單,也可增加幀目標碼率;如果檢測出當前編碼場景復雜度適中,也 可不對幀目標碼率進行調整。其中,編碼復雜程度的高低可由相應的閾值進行界定,例如, 將上一個已編碼幀的碼率與它的目標碼率相比較(如可采用相減得到差值的方式進行比 較,或采用相除得到比值的方式進行比較),如果碼率變化超過設定范圍的上限值,則表示編碼復雜程度較高,可增加當前幀的目標碼率;如果碼率變化低于設定范圍的下限值,則可減少當前幀的目標碼率;如果碼率變化在該設定閾值范圍內,則可保持當前幀的目標碼率不變。 如果當前幀為非I幀編碼,且檢測到上一個已編碼幀的碼率與它的目標碼率相比,編碼碼流長度起伏較大,或者當前幀的QP。與前一幀的QP。相比波動較大,則有可能會影響碼率控制的效果,圖像質量也會由于碼流大小的不合理分配而打折扣,此時可啟動重新計算(或調整)QP。、重新分配(或調整)當前幀的目標碼率的操作,以此來達到抑制過大的碼流波動、更合理地分配各幀目標碼流大小,提高編碼圖像質量的目的。其中,碼流長度(或碼率)起伏的大小程度和QP波動的大小程度可以由相應的閾值進行界定,例如,將上一個已編碼幀的碼率與它的目標碼率相比較,如果碼率變化超過設定范圍,或者初始QP值的變化超過設定范圍,則需要重新計算當前幀的初始QP值和目標碼率。 上述計算(包括重新計算)當前幀的初始QP值(即QP。)的過程中,計算QP。值的公式可以是QP。 = QPbase*(l+QPadj);其中QPbase可以是上一幀的平均QP值,QPadj為QP調整因子。當前幀目標碼率的調整方法可以是當上一幀的實際碼率大于該上一幀的目標幀碼率超過一定范圍的上限值(即碼率變化超過設定范圍的上限值)時,則減小當前幀的目標幀碼率;相反(即碼率變化超過設定范圍的下限值),則增加當前幀的目標幀碼率。
其中,QPadj可由上一幀的實際碼率和該上一幀的目標幀碼率決定,即在對當前幀進行碼率控制開始之前,根據(jù)上一幀的實際碼率和目標碼率來確定出對當前幀進行碼率控制所需的QPadj 。如果實際碼率大于目標幀碼率,則QPadj為一個正值,相反,則QPadj為一個負值。 重新計算QP??梢酝ㄟ^重新確定QPadj來實現(xiàn),當檢測到上述QP。波動較大的情況時,可重新確定一個新的QPadj值,使根據(jù)該QPadj計算得到的QP。值處于允許的波動范圍之內,從而重新計算出QP。。還可以通過以下方式重新計算QP。如果當前幀的QP。與前一幀的QP。相比波動超過設定范圍的下限值,則可以根據(jù)該下限值確定當前幀的QP。(如增加當前幀的QP。,使其與前一幀的QP。相比波動達到該下限值);如果當前幀的QP。與前一幀的QP。相比波動超過設定范圍的上限值,則可以根據(jù)該上限值確定當前幀的QP。(如減小當前幀的QP。,使其與前一幀的QP。相比波動達到該上限值)。
步驟S504、開始對一行宏塊進行碼率控制。 該步驟除了接收并保存當前幀的QP。(如果通過場景自適應控制過程進行了調整,則是調整后的QP。)和當前幀的目標碼率(如果通過場景自適應控制過程進行了調整,則是調整后的目標碼率),還接收和處理相鄰行(包括空間上的相鄰或時間上的相鄰,如前一行)宏塊碼率控制結束后(步驟S508)所反饋的統(tǒng)計信息。 步驟S505、根據(jù)當前幀的QP。和目標碼率、已編碼行編碼結束后反饋的統(tǒng)計信息,
如碼率、平均QP、 GOP等信息,計算得到當前行的行級碼率控制的最終QP值。 該步驟可內嵌一個場景自適應控制過程,以便對那些同一畫面中復雜和簡單畫面
分布較集中的場景進行控制,比如畫面的上半部分是天空,而畫面的下半部分是車水馬龍
的場景。當此處檢測到編碼較簡單的場景時,可自動調整行目標碼率,以便待編碼的各行
宏塊的行目標碼率得到重新分配,以達到更合理地分配碼流、優(yōu)化碼率控制的效果,提高圖
像質量。同理,當檢測到編碼較復雜的場景時,可重新分配行目標碼率,以達到壓制碼率控制超標,均勻圖像質量的效果;當檢測到的編碼復雜程度適中時,可不對行目標碼率進行調整。其中,場景編碼的復雜程度可由相應的閾值進行界定,例如,將上一個已編碼行的碼率與它的目標行碼率相比,如果前者大于后者超過一定的閾值(即前者與后者相比得到的變化超過設定范圍的上限值),則將減小當前幀中待編碼行(尚未編碼)的行目標碼率;如果前者小于后者低于一定的閾值(即前者與后者相比得到的變化低于設定范圍的下限值),則將增加當前幀中待編碼行(尚未編碼)的行目標碼率。 如果對當前行的目標碼率進行了調整,則可根據(jù)調整后的目標碼率計算當前行的QP值。其中,當前行的目標碼率可根據(jù)當前幀的初始QP值和目標碼率,以及已編碼行宏塊的編碼結果反饋信息計算得到。 步驟S506、對當前行的QP進行自適應限值控制。該步驟可選。
該步驟的QP自適應限值控制,主要的功能是完成空間或/和時間上的QP變化限值,減小QP值的波動性和圖像質量的差異性。這里所謂空間上的限值即把當前行QP值與當前幀中的相鄰行的QP值差值限制在一定范圍之內,所謂時間上的限值即把當前行QP值與相鄰幀對應行的QP值差值限制在一定范圍之內。此處的限值控制可以是不固定的(即限值范圍可根據(jù)具體情況而調整),因為在某些情況下如果按固定的方式對QP進行限值,就會發(fā)生QP增加不及時,碼率超標的情況,此處的QP自適應控制就是一個可以檢測并自動調整QP限值的過程,當可能發(fā)生碼率超標時(例如可將上一個已編碼行的碼率與它的目標行碼率相比,如果碼率變化超過一定的閾值),會增大QP的波動范圍。
如圖6所示,假設當前行宏塊為第k+l幀第n+l行,當前行宏塊的QP值為QP(k+1,n+1)',當前幀相鄰行QP值為QP(k+1,n),相鄰幀對應行QP值為QP(k,n+1), X為空間上的QP自適應限值控制因子,T為時間上的QP自適應限值控制因子,CLIP為限值函數(shù),則當前行的QP值限值過程為<formula>formula see original document page 11</formula>
步驟S507、根據(jù)確定出的當前行的QP和當前行的碼率,對當前行宏塊進行編碼,該過程會產生碼流。 步驟S508、結束對當前行宏塊碼率控制。 該步驟主要統(tǒng)計該行碼率和步驟S505中場景自適應控制條件檢測所需的信息等,并將統(tǒng)計的信息反饋回步驟S504,然后進行新的一行宏塊的編碼和碼率控制計算。如果當前行宏塊為該幀最后一行編碼,則結束該幀編碼。
步驟S509 、結束對一幀碼率控制。 該步驟進行當前幀碼率、平均QP等信息的統(tǒng)計,并反饋到步驟S502。 上述流程中,如果當前幀為第一幀,則在步驟502中,在對當前幀進行碼率控制
時,其控制依據(jù)不包括前一幀編碼結束時反饋回來的編碼結果信息。如果當前行為第一幀
的首行,則步驟505中進行碼率控制的依據(jù)不包括前一行宏塊碼率控制結束后所反饋的統(tǒng)
計信息。 基于相同的技術構思,本發(fā)明實施例還提供了一種視頻編碼中的碼率控制裝置,該裝置可應用于以行宏塊作為最小運算單元的碼率控制過程。 如圖7所示,該裝置可包括獲取模塊10、確定模塊20、反饋模塊30,其中
獲取模塊IO,用于獲取當前幀的初始碼率控制參數(shù),如,初始QP值和目標碼率;
確定模塊20,與獲取模塊IO連接,用于根據(jù)獲取模塊IO獲取到的當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼場景,確定當前行的QP值;
反饋模塊30,與確定模塊20連接,用于將根據(jù)確定模塊20確定出的當前行的QP值對當前行進行宏塊編碼后得到的編碼結果信息反饋給確定模塊20。 上述裝置還可包括第一場景自適應單元ll,分別與獲取模塊10和確定模塊20連接,用于根據(jù)編碼場景調整所述獲取模塊獲取到的初始碼率控制參數(shù)。相應的,確定模塊20具體用于根據(jù)第一場景自適應單元11調整后的當前幀的初始碼率控制參數(shù)、所述反饋信息以及編碼場景確定當前行的QP值。 其中,第一場景自適應單元ll可具體用于若當前幀為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍的上限值,則將當前幀的目標碼率減??;或者,若當前幀為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍的下限值,則將當前幀的目標碼率增加;或者,若當前幀為非I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍,通過調整QP調整因子,使根據(jù)該QP調整因子得到的當前幀的初始QP值與上一個已編碼幀的初始QP值的變化在設定范圍之內;或者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變化超過設定閾值范圍的上限值,則減少重新確定當前幀的初始QP值,使減小后的QP值與上一個已編碼幀的初始QP值的變化達到該設定范圍的上限值;或者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變化超過設定范圍閾值的下限值,則增加當前幀的初始QP值,使增加后的QP值與上一個已編碼幀的初始QP值達到該設定范圍的下限值。
上述裝置中的確定模塊20可包括 行目標碼率確定單元201,用于根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及當前幀的場景,確定當前行的目標碼率; 第二場景自適應單元202,與行目標碼率確定單元201連接,用于根據(jù)編碼場景調整當前行的目標碼率; 行QP值確定單元203,與第二場景自適應單元202連接,用于根據(jù)第二場景自適應單元202調整后的當前行的目標碼率確定當前行的QP值。 其中,第二場景自適應單元202可具體用于將上一個已編碼行的碼率與該編碼行的行目標碼率相比得到的變化超過設定范圍的上限值,則減小當前幀中待編碼行的行目標碼率;如果前者與后者相比得到的變化低于設定范圍的下限值,則增加當前幀中待編碼行的行目標碼率。 上述裝置中的確定模塊20還可進一步包括QP自適應單元204,與行QP值確定單元203連接,用于通過調整QP值確定單元203確定出的當前行的QP值,使將當前行的QP值與當前幀相鄰行的QP值的差值限制在設定范圍內;或/和,通過調整當前行的QP值,使當前行的QP值與相鄰幀對應行的QP值的差值限制在設定范圍內。 其中,QP自適應單元203可具體用于若上一個已編碼行的碼率與該已編碼行的目標行碼率相比,差值超過設定閾值,則增大所述設定范圍。 綜上所述,本發(fā)明的上述實施例,通過以一行宏塊作為碼率控制最小計算單元的方式,降低計算復雜度;進一步的,在碼率控制過程中引入了自適應場景控制和自適應QP限值控制,以使碼率控制能更好地適應各種不同的場景,在控準碼率使其不超標的前提下,盡量使更多的碼流分配到圖像較復雜的行和幀,提高編碼的圖像質量。 通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺終端設備(可以是手機,個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。 以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視本發(fā)明的保護范圍。
權利要求
一種視頻編碼中的碼率控制方法,應用于以行宏塊作為最小運算單元的碼率控制過程,其特征在于,針對當前行宏塊,包括以下步驟獲取當前幀的初始碼率控制參數(shù);根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼場景,確定當前行的QP值;反饋根據(jù)當前行的QP值對當前行進行宏塊編碼后所得到的編碼結果信息。
2. 如權利要求1所述的方法,其特征在于,獲取當前幀的初始碼率控制參數(shù)之后,還包 括根據(jù)編碼場景調整獲取到的初始碼率控制參數(shù);確定當前行的QP值,具體為根據(jù)調整后的當前幀的初始碼率控制參數(shù)、所述反饋信 息以及編碼場景確定當前行的QP值。
3. 如權利要求2所述的方法,其特征在于,根據(jù)編碼場景調整獲取到的初始碼率控制 參數(shù),包括根據(jù)編碼場景調整當前幀的目標碼率,或調整當前幀的初始QP值和目標碼率。
4. 如權利要求3所述的方法,其特征在于,根據(jù)編碼場景調整當前幀的目標碼率,包括當前幀為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相 比得到的碼率變化超過設定范圍的上限值,則將當前幀的目標碼率減小;或者,當前幀的為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目 標碼率相比得到的碼率變化超過設定范圍的下限值,則將當前幀的目標碼率增加。
5. 如權利要求3所述的方法,其特征在于,根據(jù)編碼場景調整當前幀的初始QP值和目 標碼率,包括當前幀為非I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范圍時,通過調整QP調整因子,使根據(jù)該QP調整因子得到的 當前幀的初始QP值與上一個已編碼幀的初始QP值的變化在設定范圍之內;或者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變化超過設定 閾值范圍的上限值,則減少重新確定當前幀的初始QP值,使減小后的QP值與上一個已編碼 幀的初始QP值的變化達到該設定范圍的上限值;或者,當前幀的初始QP值與其上一個已 編碼幀的初始QP相比得到的QP變化超過設定范圍閾值的下限值,則增加當前幀的初始QP 值,使增加后的QP值與上一個已編碼幀的初始QP值達到該設定范圍的下限值。
6. 如權利要求1所述的方法,其特征在于,確定當前行的QP值,包括 根據(jù)當前幀的初始QP值和目標碼率,以及已編碼行宏塊的編碼結果反饋信息,確定當前行的目標碼率;根據(jù)編碼場景調整當前行的目標碼率; 根據(jù)調整后的當前行的目標碼率確定當前行的QP值。
7. 如權利要求6所述的方法,其特征在于,根據(jù)編碼場景調整當前行的目標碼率,包括將上一個已編碼行的碼率與該編碼行的行目標碼率相比得到的變化超過設定范圍的上限值,則減小當前幀中待編碼行的行目標碼率;如果前者與后者相比得到的變化低于設 定范圍的下限值,則增加當前幀中待編碼行的行目標碼率。
8. 如權利要求1所述的方法,其特征在于,根據(jù)當前幀的初始QP值和目標碼率,以及所述反饋信息,確定當前行的QP值之后,還包括通過調整當前行的QP值,使將當前行的QP值與當前幀相鄰行的QP值的差值限制在設 定范圍內;或/和,通過調整當前行的QP值,使當前行的QP值與相鄰幀對應行的QP值的差值限 制在設定范圍內。
9. 如權利要求8所述的方法,其特征在于,若上一個已編碼行的碼率與該已編碼行的 目標行碼率相比,差值超過設定閾值,則增大所述設定范圍。
10. 如權利要求1至9任一項所述的方法,其特征在于,所述編碼結果反饋信息,包括 行編碼碼率。
11. 一種視頻編碼中的碼率控制裝置,應用于以行宏塊作為最小運算單元的碼率控制過程,其特征在于,包括獲取模塊,用于獲取當前幀的初始碼率控制參數(shù);確定模塊,與所述獲取模塊連接,用于根據(jù)所述獲取模塊獲取到的當前幀的初始碼率 控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼場景,確定當前行的QP值;反饋模塊,與所述確定模塊連接,用于將根據(jù)所述確定模塊確定出的當前行的QP值對 當前行進行宏塊編碼后得到的編碼結果信息反饋給所述確定模塊。
12. 如權利要求ll所述的裝置,其特征在于,還包括第一場景自適應單元,分別與所述獲取模塊和所述確定模塊連接,用于根據(jù)編碼場景 調整所述獲取模塊獲取到的初始碼率控制參數(shù);所述確定模塊具體用于,根據(jù)所述第一場景自適應單元調整后的當前幀的初始碼率控 制參數(shù)、所述反饋信息以及編碼場景確定當前行的QP值。
13. 如權利要求12所述的裝置,其特征在于,所述第一場景自適應單元具體用于,若當 前幀為I幀編碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到 的碼率變化超過設定范圍的上限值,則將當前幀的目標碼率減??;或者,若當前幀為I幀編 碼,且該當前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超 過設定范圍的下限值,則將當前幀的目標碼率增加;或者,若當前幀為非I幀編碼,且該當 前幀的上一個已編碼幀的碼率與該已編碼幀的目標碼率相比得到的碼率變化超過設定范 圍,通過調整QP調整因子,使根據(jù)該QP調整因子得到的當前幀的初始QP值與上一個已編 碼幀的初始QP值的變化在設定范圍之內;或者,當前幀的初始QP值與其上一個已編碼幀的 初始QP相比得到的QP變化超過設定閾值范圍的上限值,則減少重新確定當前幀的初始QP 值,使減小后的QP值與上一個已編碼幀的初始QP值的變化達到該設定范圍的上限值;或 者,當前幀的初始QP值與其上一個已編碼幀的初始QP相比得到的QP變化超過設定范圍閾 值的下限值,則增加當前幀的初始QP值,使增加后的QP值與上一個已編碼幀的初始QP值 達到該設定范圍的下限值。
14. 如權利要求10或11所述的裝置,其特征在于,所述確定模塊包括 行目標碼率確定單元,用于根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及當前幀的場景,確定當前行的目標碼率;第二場景自適應單元,與所述行目標碼率確定單元連接,用于根據(jù)編碼場景調整當前行的目標碼率;行QP值確定單元,與所述第二場景自適應單元連接,用于根據(jù)所述第二場景自適應單 元調整后的當前行的目標碼率確定當前行的QP值。
15. 如權利要求14述的裝置,其特征在于,所述第二場景自適應單元具體用于,將上一 個已編碼行的碼率與該編碼行的行目標碼率相比得到的變化超過設定范圍的上限值,則減 小當前幀中待編碼行的行目標碼率;如果前者與后者相比得到的變化低于設定范圍的下限 值,則增加當前幀中待編碼行的行目標碼率。
16. 如權利要求14所述的裝置,其特征在于,所述確定模塊還包括QP自適應單元,與所述行QP值確定單元連接,用于通過調整所述QP值確定單元確定出 的當前行的QP值,使將當前行的QP值與當前幀相鄰行的QP值的差值限制在設定范圍內; 或/和,通過調整當前行的QP值,使當前行的QP值與相鄰幀對應行的QP值的差值限制在 設定范圍內。
17. 如權利要求16所述的裝置,其特征在于,所述QP自適應單元具體用于,若上一個已 編碼行的碼率與該已編碼行的目標行碼率相比,差值超過設定閾值,則增大所述設定范圍。
全文摘要
本發(fā)明公開了一種視頻編碼中的碼率控制方法及其裝置,應用于以行宏塊作為最小運算單元的碼率控制過程。本發(fā)明方法包括針對當前行宏塊,包括以下步驟獲取當前幀的初始碼率控制參數(shù);根據(jù)當前幀的初始碼率控制參數(shù)、已編碼行宏塊的編碼結果反饋信息,以及編碼場景,確定當前行的QP值;反饋根據(jù)當前行的QP值對當前行進行宏塊編碼后所得到的編碼結果信息。采用本發(fā)明,可實現(xiàn)在控準碼率的前提之下盡可能地提升編碼圖像質量。
文檔編號H04N7/26GK101795415SQ20101015223
公開日2010年8月4日 申請日期2010年4月22日 優(yōu)先權日2010年4月22日
發(fā)明者李聰廷, 譚熾烈, 鄭曉先, 陳航鋒 申請人:杭州華三通信技術有限公司