專利名稱:一種運(yùn)動(dòng)矢量預(yù)測裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)字視頻編解碼技術(shù)領(lǐng)域,特別涉及一種視頻編碼運(yùn)動(dòng)矢量預(yù)測裝置 和方法。
背景技術(shù):
隨著電子和通信技術(shù)的發(fā)展,數(shù)字視頻已經(jīng)深入日常生活,人們對視頻的需求不 斷高漲。其中數(shù)字視頻壓縮技術(shù)被廣泛應(yīng)用于通信、個(gè)人計(jì)算機(jī)、廣播電視、消費(fèi)電子等領(lǐng) 域,堪稱數(shù)字媒體產(chǎn)業(yè)的最核心技術(shù)。以MPEG-2為代表的信源編碼標(biāo)準(zhǔn)獲得了巨大的成 功。目前,以H. 264/AVC和AVS為代表的新一代信源編碼標(biāo)準(zhǔn)出現(xiàn)了。AVS標(biāo)準(zhǔn)是中國具有 自主知識(shí)產(chǎn)權(quán)的信源編碼標(biāo)準(zhǔn)。2006年2月,AVS視頻標(biāo)準(zhǔn)已經(jīng)正式被批準(zhǔn)為國家標(biāo)準(zhǔn),進(jìn) 入了產(chǎn)業(yè)化推廣的階段。主流視頻編碼的核心算法是幀間預(yù)測。幀間預(yù)測的主要目的是去除視頻序列中的 時(shí)序冗余,它是混合視頻編碼框架中對性能影響最為重要的一個(gè)環(huán)節(jié)。其中運(yùn)動(dòng)矢量預(yù)測, 是實(shí)現(xiàn)視頻幀間預(yù)測高效率的關(guān)鍵技術(shù)。所謂運(yùn)動(dòng)矢量預(yù)測就是在一幀圖像中選中一個(gè)目 標(biāo)塊,預(yù)測其在連續(xù)視頻(前向/后向)中另一幀圖像中的位置。編碼通常有實(shí)時(shí)性的要求,同時(shí)現(xiàn)在的視頻應(yīng)用向高清,超高清方向發(fā)展,使得同 一時(shí)間處理的信息量很大,只能采用多級流水的硬件結(jié)構(gòu)。在這樣的流水結(jié)構(gòu)下,由于運(yùn)動(dòng) 矢量預(yù)測時(shí)數(shù)據(jù)存在較大的關(guān)聯(lián)性,使得編碼在做運(yùn)動(dòng)矢量預(yù)測時(shí),存儲(chǔ)的最佳運(yùn)動(dòng)矢量 數(shù)據(jù)量大,為當(dāng)前塊選擇鄰近塊運(yùn)動(dòng)矢量時(shí)控制復(fù)雜,運(yùn)算模塊占用過多硬件資源。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明的提出了一種新的高清實(shí)時(shí)視頻編碼運(yùn)動(dòng)矢量預(yù)測裝置 和方法。本發(fā)明提供的技術(shù)方案如下一種運(yùn)動(dòng)矢量預(yù)測裝置(參圖1),主要包括運(yùn)動(dòng)矢量預(yù)測控制模塊(M1,即MVP 控制模塊),鄰近塊初始化模塊(M2),當(dāng)前塊初始化模塊(M3),時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊 (M4),其特征在于,_所述運(yùn)動(dòng)矢量預(yù)測控制模塊(Ml),位于鄰近塊初始化模塊(M2)和當(dāng)前塊初始化 模塊(M3)和時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)之間,用于控制鄰近塊初始化模塊(M2)和當(dāng)前塊 初始化模塊(M3)到時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)的最佳運(yùn)動(dòng)矢量的傳遞;-所述鄰近塊初始化模塊(M2),用于預(yù)測塊的鄰近數(shù)據(jù)更新存儲(chǔ),為當(dāng)前預(yù)測塊 填充準(zhǔn)備好鄰近裝載模塊的數(shù)據(jù);-所述當(dāng)前塊初始化模塊(M3),用于在當(dāng)前塊各種分割模式下,提供鄰近裝載模 塊(M2)的塊索引,選出當(dāng)前預(yù)測塊需要的鄰近塊運(yùn)動(dòng)矢量數(shù)據(jù);-所述時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)為各種模式計(jì)算按照標(biāo)準(zhǔn)的時(shí)域運(yùn)動(dòng)矢量。進(jìn)一步,所述裝置的硬件流水采用zig-zag掃描結(jié)構(gòu),該結(jié)構(gòu)的工作方式為每三行宏塊為一組,每一組掃描時(shí),第一行先順序處理5個(gè)宏塊,然后和第二行開始一一交替; 到第15個(gè)宏塊時(shí),加入第三行,三行宏塊一一交替;每一組結(jié)束的時(shí)候采用和開始對稱的 方式,逐漸結(jié)束一組的掃描,然后以同樣的方式開始下一組。進(jìn)一步,每個(gè)參考幀的時(shí)域運(yùn)動(dòng)矢量預(yù)測采用一套時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4), 串行執(zhí)行各種模式的預(yù)測。進(jìn)一步,鄰近塊初始化模塊(M2)中采用3條長buffer和3個(gè)左邊buffer更新存 儲(chǔ)最佳的運(yùn)動(dòng)矢量,并采用初始化鄰近塊寄存器組的方式,為預(yù)測塊提供一個(gè)鄰近塊的數(shù)
據(jù)集合。進(jìn)一步,當(dāng)前塊初始化模塊(M3)為每種分割模式下的預(yù)測塊制定一個(gè)查找碼表, 用于從初始化鄰近塊寄存器組中,選出預(yù)測塊所需的運(yùn)動(dòng)矢量。一種運(yùn)動(dòng)矢量預(yù)測方法,其特征在于,所述方法包括如下步驟1)處于初始狀態(tài),判斷工作使能信號(hào),如果工作使能信號(hào)為真,進(jìn)入步驟2),否則 待在步驟1);2)解析幀級的信息和宏塊級的信息,分別判斷前向運(yùn)動(dòng)矢量預(yù)測和后向運(yùn)動(dòng)矢量 預(yù)測要不要做,要做進(jìn)入步驟3),否則退回到步驟1);3)運(yùn)動(dòng)矢量預(yù)測控制模塊從模式選擇模塊獲得當(dāng)前宏塊的最佳分割模式和最佳 運(yùn)動(dòng)矢量,獲得后進(jìn)入步驟4);4)鄰近塊初始化模塊根據(jù)當(dāng)前宏塊的坐標(biāo),從3條長buffer和3個(gè)左邊buffer 中,選出其鄰近塊的運(yùn)動(dòng)矢量信息,將這些運(yùn)動(dòng)矢量和當(dāng)前塊的最佳運(yùn)動(dòng)矢量一起寫入鄰 近塊寄存器組,準(zhǔn)備好后進(jìn)入步驟5);5)當(dāng)前塊初始化模塊根據(jù)當(dāng)前宏塊的最佳分割模式和要預(yù)測的具體塊塊號(hào),查找 索引表,找到所要預(yù)測塊的塊索引,用這個(gè)塊索引在鄰近塊寄存器組中選出所需的鄰近塊 A,B,C的運(yùn)動(dòng)矢量信息,準(zhǔn)備好后進(jìn)入步驟6);6)選出的鄰近塊A,B, C的運(yùn)動(dòng)矢量信息通過運(yùn)動(dòng)矢量預(yù)測控制模塊傳遞給時(shí)域 運(yùn)動(dòng)矢量預(yù)測模塊,做出預(yù)測后,將預(yù)測的結(jié)果送回運(yùn)動(dòng)矢量控制模塊,輸出給下一級模 塊,完成后進(jìn)入步驟7);7)根據(jù)當(dāng)前宏塊的坐標(biāo),將當(dāng)前宏塊的最佳運(yùn)動(dòng)矢量通過鄰近塊初始化模塊更新 到3條長buffer和3個(gè)左邊buffer的對應(yīng)位置,保存下來,為后面的宏塊預(yù)測使用,完成 后返回步驟1)。本發(fā)明采用了前后向各一套時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊,通過控制串行執(zhí)行各種模式 預(yù)測,大大節(jié)省了運(yùn)算單元的資源,特別是乘除法器的資源。本發(fā)明解決了宏塊級流水線工 作時(shí),運(yùn)動(dòng)矢量預(yù)測遇到一些數(shù)據(jù)依賴性的問題,使得為亞像素運(yùn)動(dòng)估計(jì)的搜索起始點(diǎn)預(yù) 測可以和模式?jīng)Q策模塊并行處理,提高編碼的性能,降低編碼系統(tǒng)的復(fù)雜度。本發(fā)明采用的 存儲(chǔ)結(jié)構(gòu)簡化了控制,節(jié)省了資源,降低動(dòng)態(tài)存儲(chǔ)器帶寬。本發(fā)明采用查表的方式對鄰近塊 運(yùn)動(dòng)矢量的選取和控制做了簡化,降低了編碼的復(fù)雜度,節(jié)省了工作時(shí)鐘,滿足了高清視頻 編碼的實(shí)時(shí)性。
圖1是提出的運(yùn)動(dòng)矢量預(yù)測裝置系統(tǒng)結(jié)構(gòu)圖2是提出的編碼系統(tǒng)流水線圖;圖3是提出的基于宏塊(16X 16像素)級硬件流水的zig-zag掃描圖;圖4是提出的上邊最佳運(yùn)動(dòng)矢量buffer和左邊最佳運(yùn)動(dòng)矢量模塊數(shù)據(jù)更新說明 圖;圖5是提出的鄰近塊裝載模塊裝載說明圖;圖6是提出的當(dāng)前塊各種分割下對應(yīng)的塊索引;圖7是提出的當(dāng)前塊初始化模塊硬件結(jié)構(gòu)圖;圖8是提出的運(yùn)動(dòng)矢量預(yù)測硬件系統(tǒng)流程圖。
具體實(shí)施例方式下面結(jié)合具體實(shí)施方法和附圖對本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明提出的運(yùn)動(dòng)矢量預(yù)測(以下簡稱MVP)裝置見附圖1,主要包括以下幾部分。 其中,1、MVP控制模塊完成以下功能11、接收工作使能信號(hào),返回MVP工作狀態(tài)包括idle狀態(tài)和error狀態(tài)??刂芃VP 總狀態(tài)機(jī)的工作和各模塊的運(yùn)行。1. 2、從鄰近塊初始化模塊中選出當(dāng)前宏塊(16X16像素)需要的鄰近塊(8X8像 素)的數(shù)據(jù)。為前后向時(shí)域運(yùn)算模塊選出合適的前后向運(yùn)動(dòng)矢量信息。1. 3、為P幀skip模式模塊和B幀direct模式模塊提供運(yùn)動(dòng)矢量信息。1. 4、從時(shí)域運(yùn)算模塊和P幀skip模式模塊和B幀direct模式模塊得到預(yù)測的運(yùn) 動(dòng)矢量信息,傳遞給MVP輸入輸出模塊。2、MVP輸入輸出包括以下模塊2. 1、整像素運(yùn)動(dòng)估計(jì)FIFO(先進(jìn)先出存儲(chǔ)器)(2個(gè))分別接收宏塊整像素運(yùn)動(dòng) 估計(jì)搜索到的各種模式(16X16像素,16X8像素,8X16像素,8X8像素)下的整像素運(yùn)動(dòng)矢量。2. 2亞像素運(yùn)動(dòng)估計(jì)FIFO 接收亞像素運(yùn)動(dòng)估計(jì)搜索到的8 X 8像素模式下的亞像
素運(yùn)動(dòng)矢量。2. 3、模式?jīng)Q策FIFO 接收模式?jīng)Q策模塊確定的宏塊最佳模式和最佳運(yùn)動(dòng)矢量。2. 4、動(dòng)態(tài)存儲(chǔ)器FIFO =B幀時(shí)接收上一 P幀參考幀存入動(dòng)態(tài)存儲(chǔ)器的最佳運(yùn)動(dòng)矢量。2. 5、同時(shí)MVP輸入輸出模塊還負(fù)責(zé)向整像素運(yùn)動(dòng)估計(jì)模塊、亞像素運(yùn)動(dòng)估計(jì)模 塊、變長編碼模塊和動(dòng)態(tài)存儲(chǔ)器模塊寫出它們需要的數(shù)據(jù)。3、鄰近塊初始化模塊包括以下模塊3. 1、上邊最佳運(yùn)動(dòng)矢量buffer (3條)分別用于存儲(chǔ)宏塊掃描時(shí)模式?jīng)Q策模塊提 供的每一行的最佳運(yùn)動(dòng)矢量,為預(yù)測宏塊提供上邊塊的最佳運(yùn)動(dòng)矢量,需要存儲(chǔ)每一行的 所有宏塊(16X16像素)的下面兩個(gè)塊(8X8像素)的最佳運(yùn)動(dòng)矢量,由于裝置支持1080p, 每一行最大可以存儲(chǔ)240個(gè)塊的運(yùn)動(dòng)矢量。包含最佳的前向運(yùn)動(dòng)矢量和最佳的后向運(yùn)動(dòng)矢量。3. 2、左邊運(yùn)動(dòng)矢量模塊用于存儲(chǔ)最佳運(yùn)動(dòng)矢量,為預(yù)測宏塊提供左邊的最佳運(yùn)動(dòng)矢量,只需要存儲(chǔ)每一行最新做過宏塊的最佳運(yùn)動(dòng)矢量。也包含最佳的前向運(yùn)動(dòng)矢量和 最佳的后向運(yùn)動(dòng)矢量。3. 3、鄰近塊裝載模塊將當(dāng)前塊的鄰近塊表格用最佳運(yùn)動(dòng)矢量信息填充完整。4、當(dāng)前塊初始化模塊負(fù)責(zé)為當(dāng)前時(shí)域運(yùn)算模塊需要預(yù)測的塊,從宏塊鄰近初始 化模塊中選出需要的數(shù)據(jù)。5,MVP時(shí)域運(yùn)算模塊(前向)按照時(shí)域預(yù)測算法,計(jì)算P幀對應(yīng)近參考幀的運(yùn)動(dòng) 矢量預(yù)測,或?qū)幀前向參考幀運(yùn)動(dòng)矢量預(yù)測。6、MVP時(shí)域運(yùn)算模塊(后向)按照時(shí)域預(yù)測算法,計(jì)算P幀對應(yīng)遠(yuǎn)參考幀的運(yùn)動(dòng) 矢量預(yù)測,或?qū)幀后向參考幀運(yùn)動(dòng)矢量預(yù)測。本發(fā)明的結(jié)構(gòu)中只有前后向兩套時(shí)域運(yùn)動(dòng) 矢量預(yù)測運(yùn)算模塊,各種模式的運(yùn)算如果需要,將按在流水線中的緩急,串行先后使用運(yùn)算 模塊。大大節(jié)省了硬件資源,特別是乘除法器的資源。因?yàn)楸景l(fā)明是基于AVS視頻編碼標(biāo) 準(zhǔn)設(shè)計(jì)的,AVS視頻編碼的P、B幀最大參考幀數(shù)為兩個(gè),所以運(yùn)算電路以及數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) 也只采用了兩路的形式,針對H. 264的多參考幀,相應(yīng)的電路結(jié)構(gòu)也可以以并聯(lián)形式擴(kuò)展。7、P幀skip模式模塊為P幀skip模式提供預(yù)測數(shù)據(jù)。8、B幀direct模式模塊為B幀direct模式提供預(yù)測數(shù)據(jù)。9、B幀雙向中后向計(jì)算模塊B幀時(shí)為亞像素運(yùn)動(dòng)估計(jì)模塊計(jì)算雙向模式時(shí)后向 的運(yùn)動(dòng)矢量。10、管理宏塊信息模塊更新管理各流水級中模塊的信息。11、解析幀級信息模塊解析來自軟件的幀級的視頻信息。12、解析宏塊級信息模塊解析來自宏塊控制模塊的宏塊級的信息。其中,MVP輸入寄存模塊將所有的輸入信號(hào)寄存一拍,減低布局布線時(shí)由模塊間連 線造成的長連線延時(shí);解析幀級信息模塊解析編碼系統(tǒng)通過片上總線發(fā)送的幀級的信息, 比如幀類型,當(dāng)前幀與參考幀的距離索引等;解析宏塊級信息模塊解析由宏塊控制模塊發(fā) 送的宏塊級的信息,比如宏塊的坐標(biāo),當(dāng)前流水中各級模塊是否工作;MVP輸入輸出模塊用 于MVP模塊與各相關(guān)模塊的數(shù)據(jù)交換,主要給整像素運(yùn)動(dòng)估計(jì)模塊和亞像素運(yùn)動(dòng)估計(jì)模塊 提供搜索點(diǎn)信息,同時(shí)也獲得這兩個(gè)模塊提供的運(yùn)動(dòng)估計(jì)矢量,用于替代當(dāng)前流水無法獲 得的模式?jīng)Q策后的最佳運(yùn)動(dòng)矢量,從模式?jīng)Q策模塊獲得最佳模式和最佳運(yùn)動(dòng)矢量的同時(shí), 也給模式?jīng)Q策模塊提供P幀skip模式和B幀direct模式預(yù)測的運(yùn)動(dòng)矢量用于模式?jīng)Q策,最 重要的通過輸出,給變長編碼模塊輸出符合編解碼標(biāo)準(zhǔn)的預(yù)測運(yùn)動(dòng)矢量,用于最終的編碼; MVP控制模塊是整個(gè)編碼系統(tǒng)的中心,用于控制各模塊的正常工作,并為各模塊提供數(shù)據(jù)的 交流,比如將MVP輸入輸出模塊獲得的最佳運(yùn)動(dòng)矢量傳遞給鄰近塊初始化模塊用于數(shù)據(jù)更 新,將鄰近塊初始化模塊和當(dāng)前塊初始化模塊準(zhǔn)備好的用于預(yù)測的鄰近塊運(yùn)動(dòng)矢量信息傳 遞給時(shí)域運(yùn)動(dòng)運(yùn)算模塊,將計(jì)算得到的預(yù)測運(yùn)動(dòng)矢量傳遞給輸入輸出模塊;鄰近塊初始化 模塊和當(dāng)前塊初始化模塊用于當(dāng)前塊預(yù)測時(shí)相關(guān)鄰近塊的運(yùn)動(dòng)矢量信息的存儲(chǔ)更新;由于 MVP模塊需要跨流水線工作,管理宏塊信息模塊用于管理各級宏塊的信息,采用移位寄存器 的結(jié)構(gòu);其余MVP時(shí)域運(yùn)算模塊,P幀skip模式模塊,B幀direct模式模塊和B幀雙向模 塊分別是計(jì)算模塊,通過預(yù)測算法得到預(yù)測的運(yùn)動(dòng)矢量。參照圖2,為本發(fā)明所在的編碼系統(tǒng)流水線圖。在這樣流水結(jié)構(gòu)下,可以看到亞像 素運(yùn)動(dòng)估計(jì)模塊和模式?jīng)Q策模塊在流水線中處于相鄰的流水級。這樣在順序進(jìn)行宏塊掃描的時(shí)候,就會(huì)造成運(yùn)動(dòng)矢量預(yù)測模塊給亞像素運(yùn)動(dòng)估計(jì)計(jì)算搜索起始點(diǎn)位置的時(shí)候,無法 獲得左邊最佳運(yùn)動(dòng)矢量。參照圖3,為本發(fā)明采用的宏塊級硬件流水的zig-zag掃描圖,每三行宏塊為一 組。每一組掃描時(shí),第一行先順序處理5個(gè)宏塊,然后和第二行開始一一交替。到第15個(gè)宏 塊時(shí),加入第三行,三行宏塊一一交替。每一組結(jié)束的時(shí)候采用和開始對稱的方式,逐漸結(jié) 束一組的掃描,然后以同樣的方式開始下一組。這樣的掃描方式使得宏塊在給亞像素運(yùn)動(dòng) 估計(jì)提供搜索點(diǎn)時(shí),擺脫了流水的限制,大多數(shù)的情況下可以獲得左邊宏塊的最佳運(yùn)動(dòng)矢 量,而順序掃描無法獲得。從而提高了編碼的性能,同時(shí)降低了動(dòng)態(tài)存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)量, 降低了帶寬需求。參照圖4,為本發(fā)明采用的上邊最佳運(yùn)動(dòng)矢量buffer和左邊最佳運(yùn)動(dòng)矢量模塊 數(shù)據(jù)更新說明圖。例如4號(hào)宏塊的最佳運(yùn)動(dòng)矢量由模式?jīng)Q策模塊獲得后,同時(shí)結(jié)束了變長 編碼的運(yùn)動(dòng)矢量預(yù)測,這時(shí)就可以將該宏塊的下面2號(hào)和3號(hào)塊的數(shù)據(jù)更新到三行l(wèi)ine_ buffer中第一行的相對應(yīng)位置,為下面的12號(hào)宏塊存儲(chǔ)上邊塊的數(shù)據(jù),在做12號(hào)塊的預(yù) 測時(shí)可以從linejxiffer的相應(yīng)位置取得該數(shù)據(jù)。同樣該宏塊右邊1號(hào)塊和3號(hào)塊的數(shù) 據(jù)也存入相應(yīng)行的IeftJxifTer中,為5號(hào)塊的預(yù)測提供最佳的運(yùn)動(dòng)矢量,每行的left_ buffer只需要存儲(chǔ)兩個(gè)塊的運(yùn)動(dòng)矢量。但由于流水的限制,5號(hào)塊在做亞像素運(yùn)動(dòng)估計(jì)時(shí), 4號(hào)塊剛剛開始做模式?jīng)Q策,沒有最佳運(yùn)動(dòng)矢量,這時(shí)可以用4號(hào)塊的亞像素運(yùn)動(dòng)估計(jì)中8 像素X 8像素模式的估計(jì)值代替最佳值。采用這種算法的宏塊在所采用的zig-zag掃描結(jié) 構(gòu)中只有每組的前面5個(gè)宏和后面4個(gè)宏塊,如果采用順序掃描,這種情況無法避免。數(shù)據(jù) 存儲(chǔ)和更新的buffer分為前后向各一套參照圖5,為本發(fā)明采用的鄰近塊裝載模塊裝載說明圖。給預(yù)測宏塊需要的相鄰塊 和宏塊本身的4個(gè)塊進(jìn)行編號(hào),如圖從0-9。根據(jù)預(yù)測宏塊的坐標(biāo)信息,以及上下左右的宏 塊可不可以用的信息,從line_buffer運(yùn)動(dòng)矢量,left_buffer運(yùn)動(dòng)矢量和當(dāng)前塊運(yùn)動(dòng)矢量 中選出對應(yīng)的數(shù)據(jù),前后向分開,分別裝入兩個(gè)編號(hào)后的寄存器組當(dāng)中,完成了鄰近塊的裝 載,為當(dāng)前塊初始化模塊查表選擇做好準(zhǔn)備。參照圖6,為本發(fā)明采用的當(dāng)前塊各種分割下對應(yīng)的塊索引。由預(yù)測模塊的模式, 根據(jù)前邊已經(jīng)編號(hào)的鄰近塊裝載模塊,可以制出要預(yù)測塊位置上邊和左邊對應(yīng)相鄰塊。例 如在16像素X 8像素模式下,預(yù)測宏塊上面兩塊的預(yù)測值都為0號(hào)塊的預(yù)測值,根據(jù)算法, 0號(hào)塊的相應(yīng)的相鄰塊為1,3,5,2。同樣對下面兩塊,預(yù)測值為2號(hào)塊的預(yù)測值,對應(yīng)的相 鄰塊為0,6,7,1。參照圖7,為本發(fā)明采用的當(dāng)前塊初始化模塊硬件結(jié)構(gòu)圖。將當(dāng)前塊各種分割下對 應(yīng)的塊索引匯總,加上方向信息,制成一個(gè)表格,預(yù)測時(shí)從表格中查找要預(yù)測塊對應(yīng)的塊索 引,從而很方便地從鄰近塊裝載模塊中選出需要的運(yùn)動(dòng)矢量,也分為前后兩個(gè)方向。最后為 時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊選出前后兩個(gè)方向的最佳運(yùn)動(dòng)矢量A,B, C。參照圖8,為本發(fā)明采用的運(yùn)動(dòng)矢量預(yù)測流程圖。開始時(shí)MVP模塊處于空閑狀態(tài),。 隨后宏塊控制模塊發(fā)出工作使能信號(hào),MVP控制模塊啟功主狀態(tài)機(jī),幀級和宏塊級的數(shù)據(jù)開 始解析,同時(shí)MVP輸入輸出模塊開始讀各數(shù)據(jù)fifo,待數(shù)據(jù)全部準(zhǔn)備好后,由前后向使能信 號(hào)控制前后兩路是否開始工作,并且在B幀的時(shí)候啟動(dòng)B幀雙向后向運(yùn)算模塊,與其它狀態(tài) 并行進(jìn)行。如果前向或后向需要工作,首先判斷P幀skip模式和B幀direct模式是否需要工作,如果需要,通過鄰近塊初始化模塊和當(dāng)前塊初始化模塊對模式?jīng)Q策模塊流水級中對 應(yīng)的宏塊準(zhǔn)備鄰近塊數(shù)據(jù),準(zhǔn)備好后啟動(dòng)運(yùn)算模塊。結(jié)束后將預(yù)測到直接模式的數(shù)據(jù)寫入 亞像素運(yùn)動(dòng)估計(jì)模塊。然后以同樣的方式判斷亞像素運(yùn)動(dòng)估計(jì)的各種模式是否需要工作, 如果需要,則準(zhǔn)備數(shù)據(jù),通過運(yùn)算模塊為亞像素運(yùn)動(dòng)估計(jì)模塊預(yù)測運(yùn)動(dòng)矢量。下一步為變長 編碼模塊計(jì)算預(yù)測的運(yùn)動(dòng)矢量。最后一步為整像素運(yùn)動(dòng)估計(jì)模塊計(jì)算預(yù)測的運(yùn)動(dòng)矢量。以上實(shí)施例僅用以說明而非限制本發(fā)明的技術(shù)方案,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng) 理解可以對本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或 局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。本發(fā)明主要是基于AVS視頻編碼標(biāo)準(zhǔn),但是只要將時(shí)域運(yùn)動(dòng)矢量運(yùn)算模塊的算法 加以修改,本發(fā)明可以用于H. 264視頻編碼標(biāo)準(zhǔn)的編碼運(yùn)動(dòng)矢量預(yù)測。
權(quán)利要求
1.一種運(yùn)動(dòng)矢量預(yù)測裝置,主要包括運(yùn)動(dòng)矢量預(yù)測控制模塊(Ml),鄰近塊初始化模 塊(M2),當(dāng)前塊初始化模塊(M3),時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4),其特征在于,_所述運(yùn)動(dòng)矢量預(yù)測控制模塊(Ml),位于鄰近塊初始化模塊(M2)和當(dāng)前塊初始化模塊 (M3)和時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)之間,用于控制鄰近塊初始化模塊(M2)和當(dāng)前塊初始 化模塊(M3)到時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)的最佳運(yùn)動(dòng)矢量的傳遞;-所述鄰近塊初始化模塊(M2),用于預(yù)測塊的鄰近數(shù)據(jù)更新存儲(chǔ),為當(dāng)前預(yù)測塊填充 準(zhǔn)備好鄰近裝載模塊的數(shù)據(jù);-所述當(dāng)前塊初始化模塊(M3),用于在當(dāng)前塊各種分割模式下,提供鄰近裝載模塊 (M2)的塊索引,選出當(dāng)前預(yù)測塊需要的鄰近塊運(yùn)動(dòng)矢量數(shù)據(jù);_所述時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4)為各種模式計(jì)算按照標(biāo)準(zhǔn)的時(shí)域運(yùn)動(dòng)矢量。
2.如權(quán)利要求1所述的運(yùn)動(dòng)矢量預(yù)測裝置,其特征在于,所述裝置的硬件流水采用 zig-zag掃描結(jié)構(gòu),該結(jié)構(gòu)的工作方式為每三行宏塊為一組,每一組掃描時(shí),第一行先順 序處理5個(gè)宏塊,然后和第二行開始一一交替;到第15個(gè)宏塊時(shí),加入第三行,三行宏塊 一一交替;每一組結(jié)束的時(shí)候采用和開始對稱的方式,逐漸結(jié)束一組的掃描,然后以同樣的 方式開始下一組。
3.如權(quán)利要求1所述的運(yùn)動(dòng)矢量預(yù)測裝置,其特征在于,每個(gè)參考幀的時(shí)域運(yùn)動(dòng)矢量 預(yù)測采用一套時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊(M4),串行執(zhí)行各種模式的預(yù)測。
4.如權(quán)利要求1所述的運(yùn)動(dòng)矢量預(yù)測裝置,其特征在于,鄰近塊初始化模塊(M2)中采 用3條長buffer和3個(gè)左邊buffer更新存儲(chǔ)最佳的運(yùn)動(dòng)矢量,并采用初始化鄰近塊寄存 器組的方式,為預(yù)測塊提供一個(gè)鄰近塊的數(shù)據(jù)集合。
5.如權(quán)利要求4所述的運(yùn)動(dòng)矢量預(yù)測裝置,其特征在于,當(dāng)前塊初始化模塊(M3)為每 種分割模式下的預(yù)測塊制定一個(gè)查找碼表,用于從初始化鄰近塊寄存器組中,選出預(yù)測塊 所需的運(yùn)動(dòng)矢量。
6.一種運(yùn)動(dòng)矢量預(yù)測方法,其特征在于,所述方法包括如下步驟1)處于初始狀態(tài),判斷工作使能信號(hào),如果工作使能信號(hào)為真,進(jìn)入步驟2),否則待在 步驟1);2)解析幀級的信息和宏塊級的信息,分別判斷前向運(yùn)動(dòng)矢量預(yù)測和后向運(yùn)動(dòng)矢量預(yù)測 要不要做,要做進(jìn)入步驟3),否則退回到步驟1);3)運(yùn)動(dòng)矢量預(yù)測控制模塊從模式選擇模塊獲得當(dāng)前宏塊的最佳分割模式和最佳運(yùn)動(dòng) 矢量,獲得后進(jìn)入步驟4);4)鄰近塊初始化模塊根據(jù)當(dāng)前宏塊的坐標(biāo),從3條長buffer和3個(gè)左邊buffer中,選 出其鄰近塊的運(yùn)動(dòng)矢量信息,將這些運(yùn)動(dòng)矢量和當(dāng)前塊的最佳運(yùn)動(dòng)矢量一起寫入鄰近塊寄 存器組,準(zhǔn)備好后進(jìn)入步驟5);5)當(dāng)前塊初始化模塊根據(jù)當(dāng)前宏塊的最佳分割模式和要預(yù)測的具體塊塊號(hào),查找索引 表,找到所要預(yù)測塊的塊索引,用這個(gè)塊索引在鄰近塊寄存器組中選出所需的鄰近塊A,B,C 的運(yùn)動(dòng)矢量信息,準(zhǔn)備好后進(jìn)入步驟6);6)選出的鄰近塊A,B,C的運(yùn)動(dòng)矢量信息通過運(yùn)動(dòng)矢量預(yù)測控制模塊傳遞給時(shí)域運(yùn)動(dòng) 矢量預(yù)測模塊,做出預(yù)測后,將預(yù)測的結(jié)果送回運(yùn)動(dòng)矢量控制模塊,輸出給下一級模塊,完 成后進(jìn)入步驟7);7)根據(jù)當(dāng)前宏塊的坐標(biāo),將當(dāng)前宏塊的最佳運(yùn)動(dòng)矢量通過鄰近塊初始化模塊更新到3 條長buffer和3個(gè)左邊buffer的對應(yīng)位置,保存下來,為后面的宏塊預(yù)測使用,完成后返 回步驟1)。
全文摘要
本發(fā)明提供了一種運(yùn)動(dòng)矢量預(yù)測裝置和方法,屬于數(shù)字視頻編解碼技術(shù)領(lǐng)域。本發(fā)明采用前后向各一套時(shí)域運(yùn)動(dòng)矢量預(yù)測模塊,通過控制串行執(zhí)行各種模式預(yù)測,大大節(jié)省了運(yùn)算單元的資源,特別是乘除法器的資源。宏塊流水結(jié)構(gòu)采用了zig-zag宏塊掃描結(jié)構(gòu),在這種結(jié)構(gòu)下可以解決流水線工作時(shí),運(yùn)動(dòng)矢量預(yù)測遇到一些數(shù)據(jù)依賴性的問題,使預(yù)測可并行處理,提高編碼的性能,降低編碼系統(tǒng)的復(fù)雜度。本發(fā)明提出的鄰近塊初始化模塊和當(dāng)前塊初始化模塊將運(yùn)動(dòng)矢量估計(jì)中復(fù)雜的數(shù)據(jù)更新轉(zhuǎn)化為一個(gè)簡單的數(shù)據(jù)表,采用查表的方式對控制做了簡化,降低了編碼的復(fù)雜度,節(jié)省了工作時(shí)鐘,滿足了高清視頻編碼的實(shí)時(shí)性。
文檔編號(hào)H04N7/32GK102148990SQ20111010935
公開日2011年8月10日 申請日期2011年4月28日 優(yōu)先權(quán)日2011年4月28日
發(fā)明者王生祥, 田山川, 解曉東, 賈惠柱, 黃鐵軍 申請人:北京大學(xué)