一種視頻編解碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻數(shù)據(jù)編解碼領(lǐng)域,尤其涉及一種視頻編解碼方法。
【背景技術(shù)】
[0002] 在現(xiàn)有技術(shù)中,對(duì)一幀視頻數(shù)據(jù)的編解碼通常采用光柵掃描(raster掃描)的方 式進(jìn)行。圖1所示為現(xiàn)有技術(shù)提供的一種視頻編解碼方法的原理示意圖。如圖1所示,現(xiàn) 有的編解碼方式為:首先從第一行宏塊的第〇個(gè)宏塊依次編解碼至第P-1個(gè),然后再開始第 二行第〇個(gè)宏塊至第P-1個(gè)宏塊的編解碼,以此類推至當(dāng)前幀圖像的最后一個(gè)宏塊行。該 視頻編解碼方法可通過如下偽代碼實(shí)現(xiàn):
[0003] For(j= 0 ;j< (pic_h+P-l)/N;j++) {
[0004] For(i= 0 ;i< (pic_w+P-l)/N;i++) {
[0005] Codec_MB(i,j);
[0006] }
[0007] }
[0008] 其中,pic_h/pic_w分別為當(dāng)前幀圖像的高度(Picture_height)和寬度 (Picture_width)。Codec_MB(I,j)指對(duì)第i宏塊行的第j個(gè)宏塊進(jìn)行編解碼。
[0009] 在對(duì)一個(gè)宏塊進(jìn)行編解碼的過程中,需要利用參考幀圖像中位于該宏塊周邊的一 個(gè)相鄰宏塊的數(shù)據(jù)作為參考幀數(shù)據(jù),以此來提高對(duì)該宏塊的編解碼效率。其中,用于搜索該 相鄰宏塊的參考幀范圍稱為當(dāng)前宏塊的運(yùn)動(dòng)搜索窗。為了使得當(dāng)前宏塊的運(yùn)動(dòng)搜索窗能夠 在下一個(gè)宏塊的編解碼過程中被重復(fù)利用,需要將該當(dāng)前宏塊的運(yùn)動(dòng)搜索窗數(shù)據(jù)緩存在一 個(gè)存儲(chǔ)器中。由于存儲(chǔ)器中的緩存數(shù)據(jù)需要從一個(gè)動(dòng)態(tài)隨機(jī)存儲(chǔ)器ODR)中讀取,而反復(fù) 從DDR中讀取數(shù)據(jù)會(huì)降低編解碼效率,因此應(yīng)盡量提高存儲(chǔ)器中緩存數(shù)據(jù)的數(shù)據(jù)利用率。
[0010] 在現(xiàn)有的編解碼方法中,通常采用如下兩種方式來緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)。
[0011] 圖2所示為現(xiàn)有技術(shù)提供的一種視頻編解碼方法中緩存參考幀數(shù)據(jù)的原理示意 圖。如圖2所示,CB1為當(dāng)前要進(jìn)行編解碼的宏塊,CB0為已緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)的宏塊,每 個(gè)宏塊的長寬均為為N個(gè)像素。當(dāng)假設(shè)針對(duì)一個(gè)像素的運(yùn)動(dòng)搜索窗高為SRv-1,寬為SRh-1 時(shí)(在視頻編碼中,SRv/SRh所針對(duì)的是像素個(gè)數(shù)的概念,由于在算法設(shè)計(jì)中變量一般從0 開始,因此需要將運(yùn)動(dòng)搜索窗的高表示為SRv-1,寬表示為SRh-1);則針對(duì)一個(gè)宏塊的運(yùn)動(dòng) 搜索窗的高為SRv+N-1,寬為SRh+N-1。又由于CB1的運(yùn)動(dòng)搜索窗需要相對(duì)于CB0右移一個(gè) 宏塊的寬度(N個(gè)像素),因此用于緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)的存儲(chǔ)器大小需對(duì)應(yīng)高為SRv+N-1, 寬為SRh+2N-l的矩形窗口內(nèi)的參考幀數(shù)據(jù)。然而,當(dāng)采用這種緩存方式時(shí),存儲(chǔ)器所緩存 的運(yùn)動(dòng)搜索窗數(shù)據(jù)的利用率很低。這是因?yàn)楫?dāng)編解碼至一宏塊行的最后一個(gè)宏塊時(shí),存儲(chǔ) 器中所緩存的僅為當(dāng)前宏塊行最后一個(gè)宏塊的運(yùn)動(dòng)搜索窗數(shù)據(jù),而由于該當(dāng)前宏塊行最后 一個(gè)宏塊的運(yùn)動(dòng)搜索窗距下一行的第一個(gè)宏塊距離較遠(yuǎn),因而存儲(chǔ)器中的緩存數(shù)據(jù)往往 不能被重復(fù)利用。因此,雖然隨著當(dāng)前宏塊行編解碼的逐漸進(jìn)行,存儲(chǔ)器中所緩存的運(yùn)動(dòng) 搜索窗數(shù)據(jù)在水平方向上的利用率可達(dá)100% ;但在垂直方向上的利用率僅有一個(gè)宏塊行 的高度。因此,存儲(chǔ)器中緩存數(shù)據(jù)的數(shù)據(jù)利用率=水平利用率*垂直利用率,可表示為N/ (SRv+N-1)〇
[0012] 為了解決存儲(chǔ)器所緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)在垂直方向上的利用率低的問題,現(xiàn)有技 術(shù)還提供了另一種緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)的方式。
[0013] 圖3所示為現(xiàn)有技術(shù)提供的另一種視頻編解碼方法中緩存參考幀數(shù)據(jù)的原理示 意圖。如圖3所示,存儲(chǔ)器中所緩存的為一個(gè)與當(dāng)前幀圖像等寬的運(yùn)動(dòng)搜索窗數(shù)據(jù),這樣當(dāng) 編解碼至下一宏塊行的第一個(gè)宏塊時(shí),該宏塊的運(yùn)動(dòng)搜索窗必然會(huì)與已緩存的運(yùn)動(dòng)搜索窗 數(shù)據(jù)有所重疊。因此隨著光柵掃描編解碼的逐漸進(jìn)行,存儲(chǔ)器中已緩存的動(dòng)搜索窗數(shù)據(jù)在 水平和垂直方向上都會(huì)被100 %利用。然而,采用這種緩存方式時(shí)存儲(chǔ)器的大小需對(duì)應(yīng)高為 SRv+N-1,寬為當(dāng)前幀圖像寬度(Picture_Width)的矩形窗口內(nèi)的參考幀數(shù)據(jù),這就需要在 硬件架構(gòu)中使用大容量的存儲(chǔ)器,從而會(huì)導(dǎo)致較大的硬件成本。
[0014] 由此可見,采用現(xiàn)有的視頻編解碼方法根本無法達(dá)到硬件成本和緩存數(shù)據(jù)利用率 之間的平衡。因此,急需一種既節(jié)省硬件成本又兼顧緩存數(shù)據(jù)利用率的新的視頻編解碼方 法。
【發(fā)明內(nèi)容】
[0015] 本發(fā)明實(shí)施例提供一種視頻編解碼方法,既能有效利用已緩存的運(yùn)動(dòng)搜索窗數(shù) 據(jù),提高數(shù)據(jù)利用率,又能節(jié)省硬件成本。
[0016] -種視頻編解碼方法,包括:
[0017] 將當(dāng)前幀圖像分為至少兩個(gè)編解碼區(qū)域,每個(gè)編解碼區(qū)域的高度與當(dāng)前幀圖像的 高度相同;
[0018] 在每個(gè)編解碼區(qū)域內(nèi)部,按照光柵掃描的方式進(jìn)行編解碼;其中,將與上一宏塊行 對(duì)應(yīng)的運(yùn)動(dòng)搜索窗數(shù)據(jù)緩存在一存儲(chǔ)器中;利用所述存儲(chǔ)器中的運(yùn)動(dòng)搜索窗數(shù)據(jù)對(duì)當(dāng)前宏 塊行進(jìn)行編碼。
[0019] 本發(fā)明實(shí)施例提供的一種視頻編解碼方法,通過將當(dāng)前幀圖像分成多個(gè)編解碼區(qū) 域,在每個(gè)編解碼區(qū)域內(nèi)部進(jìn)行編解碼時(shí),存儲(chǔ)器中僅需緩存一個(gè)編解碼區(qū)域?qū)挾鹊倪\(yùn)動(dòng) 搜索窗數(shù)據(jù),從而不需要大容量的存儲(chǔ)器來完成緩存;且當(dāng)對(duì)當(dāng)前編解碼區(qū)域內(nèi)的下一宏 塊行進(jìn)行編解碼時(shí),仍能夠重復(fù)利用存儲(chǔ)器中緩存的運(yùn)動(dòng)搜索窗數(shù)據(jù)。由此便實(shí)現(xiàn)了一種 既能節(jié)省硬件成本,又能有效利用已緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)的視頻編解碼方法。
【附圖說明】
[0020] 圖1所示為現(xiàn)有技術(shù)提供的一種視頻編解碼方法的原理示意圖。
[0021] 圖2所示為現(xiàn)有技術(shù)提供的一種視頻編解碼方法中緩存參考幀數(shù)據(jù)的原理示意 圖。
[0022] 圖3所示為現(xiàn)有技術(shù)提供的另一種視頻編解碼方法中緩存參考幀數(shù)據(jù)的原理示 意圖。
[0023] 圖4所示為本發(fā)明一實(shí)施例提供的一種視頻編解碼方法的原理示意圖。
[0024] 圖5所示為本發(fā)明另一實(shí)施例提供的一種視頻編解碼方法的原理示意圖。
[0025] 圖6所示為本發(fā)明一實(shí)施例提供的一種視頻編解碼方法中緩存參考幀數(shù)據(jù)的原 理示意圖。
【具體實(shí)施方式】
[0026] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0027] 本發(fā)明一實(shí)施例提供的一種視頻編解碼方法包括:將當(dāng)前幀圖像分為至少兩個(gè)編 解碼區(qū)域,每個(gè)編解碼區(qū)域的高度與當(dāng)前幀圖像的高度相同;在每個(gè)編解碼區(qū)域內(nèi)部,按照 光柵掃描的方式進(jìn)行編解碼;其中,將與上一宏塊行對(duì)應(yīng)的運(yùn)動(dòng)搜索窗數(shù)據(jù)緩存在一存儲(chǔ) 器中;利用所述存儲(chǔ)器中的運(yùn)動(dòng)搜索窗數(shù)據(jù)對(duì)當(dāng)前宏塊行進(jìn)行編碼。
[0028] 這樣在每個(gè)編解碼區(qū)域內(nèi)部進(jìn)行編解碼時(shí),存儲(chǔ)器中僅需緩存一個(gè)編解碼區(qū)域?qū)?度的運(yùn)動(dòng)搜索窗數(shù)據(jù),從而不需要大容量的存儲(chǔ)器來完成緩存;且當(dāng)對(duì)當(dāng)前編解碼區(qū)域內(nèi) 的下一宏塊行進(jìn)行編解碼時(shí),仍能夠重復(fù)利用存儲(chǔ)器中緩存的運(yùn)動(dòng)搜索窗數(shù)據(jù)。由此便實(shí) 現(xiàn)了一種既能節(jié)省硬件成本,又能有效利用已緩存運(yùn)動(dòng)搜索窗數(shù)據(jù)的視頻編解碼方法。
[0029] 下面通過一個(gè)實(shí)施例來詳細(xì)說明本發(fā)明視頻編解碼方法的技術(shù)方案。
[0030] 圖4所示為本發(fā)明一實(shí)施例提供的一種視頻編解碼方法的原理示意圖。如圖4所 示,通過限制當(dāng)前幀圖像的水平掃描寬度Horizontal_scan_size,將當(dāng)前幀視頻圖像被分 為了多個(gè)編解碼區(qū)域,每個(gè)編解碼區(qū)域內(nèi)的一個(gè)宏塊行包括P個(gè)宏塊(編號(hào)從〇到P-1)。
[0031] 這樣在每個(gè)編解碼區(qū)域內(nèi)部,仍以宏塊為單位按照光柵掃描的順序進(jìn)行編解碼。 具體而言,首先從當(dāng)前編解碼區(qū)域內(nèi)第一行宏塊的第0個(gè)宏塊