專利名稱:四字節(jié)字的讀取處理方法與裝置、解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及解碼技術(shù),尤其是一種四字節(jié)字的讀取處理方法與裝置、解碼器。
背景技術(shù):
現(xiàn)有視頻編碼技術(shù)中的運(yùn)動(dòng)估計(jì)技術(shù),是在編碼當(dāng)前幀的一個(gè)塊時(shí),利用塊匹配 準(zhǔn)則,在已經(jīng)編碼并且重構(gòu)的圖像中找到與當(dāng)前編碼的當(dāng)前塊最匹配的塊,作為當(dāng)前塊的 預(yù)測(cè)過(guò)程。其中,在已經(jīng)編碼并且重構(gòu)的圖像中找到與當(dāng)前編碼的當(dāng)前塊最匹配的塊的過(guò) 程,稱為塊匹配過(guò)程。在現(xiàn)有的塊匹配過(guò)程中,通常是在圖像的整像素級(jí)做塊匹配,但是為 了得到更高的匹配精度與匹配效果,就需要在分像素級(jí)別上做塊匹配,以便得到精度更高 的運(yùn)動(dòng)估計(jì)效果。根據(jù)運(yùn)動(dòng)圖象專家組(MPEG,Moving Picture Experts Group) 2/4標(biāo)準(zhǔn) 規(guī)定,可以對(duì)兩個(gè)相鄰的整像素進(jìn)行雙線性(1,1)插值,來(lái)獲得分像素。圖1為一種32位系統(tǒng)中內(nèi)存組織方式示意圖,圖1中,內(nèi)存地址由低到高排列。在 Windows系統(tǒng)中,一次取四個(gè)字節(jié),如果當(dāng)前地址是四字節(jié)對(duì)齊,取到的都是當(dāng)前地址由低 到高組成的一個(gè)四字節(jié)字,例如,可以分別通過(guò)以下方式讀取地址空間0x4000、0x4005與 0x400B上的四字節(jié)字addressA = 0x4000 ; (unsigned int*)addressA = 0x03020100 ;addressB = 0x4005 ; (unsigned int*)addressB = 0x08070605 ;addressC = 0x400B ; (unsigned int*)addressC = OxOEODOCOB。然而,在現(xiàn)有的一些芯片產(chǎn)品中,需要在高級(jí)精簡(jiǎn)指令集機(jī)器(AdvancedRISC Machines,以下簡(jiǎn)稱ARM)處理器上實(shí)現(xiàn)MPEG2/4編解碼算法。但是,ARM系統(tǒng)與Windows 系統(tǒng)在內(nèi)存訪問上的策略不相同。在ARM系統(tǒng)中,可以直接讀取的四字節(jié)字所在的地址必 須是四字節(jié)對(duì)齊的,例如可以從圖1中的0x4000、0x4004、0x4008、0x400C地址取出四字節(jié) 字,取出的值分別是0x03020100、0x07060504、0x0B0A0908與0x0F0E0D0C。為了利用快速的 四字節(jié)同時(shí)計(jì)算插值結(jié)果技術(shù),并且在解碼端,運(yùn)動(dòng)向量值指向的位置不一定是四字節(jié)對(duì) 齊位置,因此,就需要在非四字節(jié)對(duì)齊位置讀取32位整數(shù),而ARM系統(tǒng)無(wú)法直接從非四字節(jié) 對(duì)齊的地址讀取所需的四字節(jié)字,例如無(wú)法像windows系統(tǒng)中那樣,從圖1中的addressB 或者addressC位置,直接讀取到需要的四字節(jié)字。如果想要從非四字節(jié)對(duì)齊的地址讀取所 需的四字節(jié)字,例如需要從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字02,則需要依次取 從02開始的四個(gè)四字節(jié)字,包括02、03、04、05放入寄存器R0 ;然后依次執(zhí)行如下操作將 02放入寄存器R。,將03左移8位后與Rtl進(jìn)行或操作,將04左移8位后與Rtl進(jìn)行或操作, 將05左移8位后與Rtl進(jìn)行或操作,最終得到所需的四字節(jié)字02。由此可見,需要通過(guò)執(zhí)行 11條相應(yīng)指令進(jìn)行相關(guān)操作,才能從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字。因此,在ARM系統(tǒng)中,從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字的操作復(fù)雜、繁 瑣,而且需要較長(zhǎng)的時(shí)間去執(zhí)行相應(yīng)的操作,而在運(yùn)動(dòng)估計(jì)技術(shù)的插值過(guò)程中,需要對(duì)每?jī)?個(gè)相鄰的整像素點(diǎn)都做雙線性(1,1)插值,若每次從非四字節(jié)對(duì)齊的地址讀取一個(gè)所需的 四字節(jié)字都需要執(zhí)行上述繁瑣操作,就使得插值過(guò)程所需周期較長(zhǎng),效率低下。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的是提供一種四字節(jié)字的讀取處理方法與裝置、解碼器,以簡(jiǎn) 化從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字的操作,減小該操作所需的時(shí)間,從而縮短 插值周期,提高插值效率。本發(fā)明實(shí)施例提供的一種四字節(jié)字的讀取處理方法,包括識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址;并在待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址N時(shí),從所述地址N的 前一相鄰四字節(jié)對(duì)齊的地址空間讀取第一個(gè)32位整數(shù),從所述地址N的后一相鄰四字節(jié)對(duì) 齊的地址空間讀取第二個(gè)32位整數(shù),其中,N取值為1、2或3 ;將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè)32位整數(shù)左移32_N*8 位,得到第二數(shù)值;對(duì)所述第一數(shù)值與所述第二數(shù)值進(jìn)行或操作,得到作為第三個(gè)32位整數(shù)的所述 待讀取的四字節(jié)字。本發(fā)明實(shí)施例提供的一種四字節(jié)字的讀取處理裝置,包括識(shí)別模塊,用于識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址;第一操作處理模塊,用于根據(jù)所述識(shí)別模塊的識(shí)別結(jié)果,在待讀取的四字節(jié)字所 在的地址為非四字節(jié)對(duì)齊的地址N時(shí),從所述地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀 取第一個(gè)32位整數(shù),從所述地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整 數(shù),其中,N取值為1、2或3;第二操作處理模塊,用于將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè) 32位整數(shù)左移32-N*8位,得到第二數(shù)值;第三操作處理模塊,用于對(duì)所述第一數(shù)值與所述第二數(shù)值進(jìn)行或操作,得到作為 第三個(gè)32位整數(shù)的所述待讀取的四字節(jié)字。本發(fā)明實(shí)施例提供的一種解碼器,包括熵解碼模塊、反掃描模塊、反量化模塊、反 余弦變換模塊、運(yùn)動(dòng)補(bǔ)償模塊與加法器,所述運(yùn)動(dòng)補(bǔ)償模塊包括本發(fā)明上述實(shí)施例提供的 四字節(jié)字的讀取處理裝置?;诒景l(fā)明上述實(shí)施例提供的四字節(jié)字的讀取處理方法與裝置、解碼器,在待讀 取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址N時(shí),將從地址N的前一相鄰四字節(jié)對(duì)齊 的地址空間讀取的第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將從地址N的后一相鄰四 字節(jié)對(duì)齊的地址空間讀取的第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值,再對(duì)第一數(shù)值 與第二數(shù)值進(jìn)行或操作,總共通過(guò)執(zhí)行五條相應(yīng)的指令就可以得到四字節(jié)字,與現(xiàn)有技術(shù) 需要通過(guò)執(zhí)行11條相應(yīng)指令進(jìn)行相關(guān)操作才能從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié) 字相比,大大簡(jiǎn)化了從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字的操作,減小了該操作所 需的時(shí)間,從而縮短了插值周期,提高了插值效率。下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1為一種32位系統(tǒng)中內(nèi)存組織方式示意圖;圖2為本發(fā)明四字節(jié)字的讀取處理方法一個(gè)實(shí)施例的流程圖;圖3為本發(fā)明實(shí)施例像素點(diǎn)的一個(gè)分像素結(jié)構(gòu)示意圖;圖4為本發(fā)明四字節(jié)字的讀取處理裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明四字節(jié)字的讀取處理裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;圖6為本發(fā)明四字節(jié)字的讀取處理裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;圖7為本發(fā)明解碼器一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖2為本發(fā)明四字節(jié)字的讀取處理方法一個(gè)實(shí)施例的流程圖。如圖1所示,該實(shí) 施例的方法包括步驟101,識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址。若待讀取 的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址N,執(zhí)行步驟102 ;否則,若待讀取的四字節(jié) 字所在的地址為四字節(jié)對(duì)齊的地址N,不執(zhí)行本實(shí)施例的后續(xù)流程。步驟102,從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取第一個(gè)32位整數(shù),從地 址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整數(shù),其中,N取值為1、2或3。其中,前一相鄰四字節(jié)對(duì)齊的地址空間指的是地址小的緊鄰當(dāng)前地址的四字節(jié)對(duì) 齊位置;后一相鄰四字節(jié)對(duì)齊的地址空間指的是地址大的緊鄰當(dāng)前地址的四字節(jié)對(duì)齊位 置。步驟103,將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè)32位整數(shù)左移 32-N*8位,得到第二數(shù)值。步驟104,對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或操作,得到作為第三個(gè)32位整數(shù)的待讀 取的四字節(jié)字。本發(fā)明上述實(shí)施例提供的四字節(jié)字的讀取處理方法中,在待讀取的四字節(jié)字所在 的地址為非四字節(jié)對(duì)齊的地址N時(shí),將從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取的 第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將從地址N的后一相鄰四字節(jié)對(duì)齊的地址空 間讀取的第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值,再對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或 操作,總共通過(guò)執(zhí)行五條相應(yīng)的指令就可以得到四字節(jié)字,大大簡(jiǎn)化了從非四字節(jié)對(duì)齊的 地址讀取所需的四字節(jié)字的操作,減小了該操作所需的時(shí)間,從而縮短了插值周期,提高了 插值效率。以下以具體實(shí)例,對(duì)圖1所示實(shí)施例進(jìn)行說(shuō)明。例如對(duì)于非四字節(jié)對(duì)齊的地址 1,如0x4001,取四字節(jié)字的方式為在步驟102中,從地址空間0x4000讀取第一個(gè)32位整數(shù),得到0x03020100,該操作可以通過(guò)如下指令實(shí)現(xiàn)a = (unsigned int*) 0x4000 = 0x03020100 ;從地址空間0x4004讀取第一個(gè)32位整數(shù),得到0x07060504,該操作可以通過(guò) 如下指令實(shí)現(xiàn):b = (unsignedint*) 0x4004 = 0x07060504。在步驟103中,將第一個(gè)32位 整數(shù)a右移8位,得到第一數(shù)值,將第二個(gè)32位整數(shù)b左移24位,得到第二數(shù)值;在步驟 104中,對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或操作,即可得到非四字節(jié)對(duì)齊的地址1讀取到四字節(jié) 字0x04030201。步驟103與步驟104的操作可以通過(guò)如下指令實(shí)現(xiàn)val = (a >>8) | (b << 24)。其中,>>表示右移,去掉低位的00 ;<<表示左移,去掉高位的070605。同理,對(duì)于非四字節(jié)對(duì)齊的地址2,如0x4002,可以根據(jù)圖1所示實(shí)施例的步驟, 通過(guò)如下指令讀取四字節(jié)字al = (unsigned int*)0x4000 = 0x03020100 ;bl = (unsigned int*)0x4004 = 0x07060504 ;val = (al >> 16) | (bl << 16)。再如對(duì)于非四字節(jié)對(duì)齊的地址2,如0x4003,可以根據(jù)圖1所示實(shí)施例的步驟, 通過(guò)如下指令讀取四字節(jié)字a2 = (unsigned int*)0x4000 = 0x03020100 ;b2 = (unsigned int*)0x4004 = 0x07060504 ;val = (a2 >> 24) | (b2 << 8)。具體地,作為本發(fā)明的一個(gè)實(shí)施方式,圖2所示實(shí)施例的步驟101中,可以通過(guò)如 下方法識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址將待讀取的四字節(jié)字所在的地址與4做求余操作,得到第三數(shù)值,該第三數(shù)值為 0、1、2 或 3 ;判斷第三數(shù)值是否為0 ;若第三數(shù)值為0,則待讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址;否則,若第三數(shù)值為1、2或3,則待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的 地址。另外,作為本發(fā)明的另一個(gè)實(shí)施方式,通過(guò)圖2所示實(shí)施例的步驟101,識(shí)別出待 讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址N時(shí),可以像Windows系統(tǒng)那樣,直接從地 址N讀取第四個(gè)32位整數(shù)。進(jìn)一步地,作為本發(fā)明的又一個(gè)實(shí)施方式,通過(guò)本發(fā)明上述實(shí)施例提供的四字節(jié) 字的讀取處理方法,得到待讀取的四字節(jié)字之后,還可以對(duì)兩個(gè)相鄰的整像素A與B進(jìn)行雙 線性(1,1)插值,例如可以通過(guò)公式(A+B+l)/2或(A+B)/2,對(duì)兩個(gè)相鄰的整像素A與B進(jìn) 行雙線性(1,1)插值,獲得分像素值。其中的整像素即為32位整數(shù)像素點(diǎn)。運(yùn)動(dòng)估計(jì)技術(shù),即是據(jù)運(yùn)動(dòng)向量的指向在參考幀中得到預(yù)測(cè)值,在運(yùn)動(dòng)向量指向 的位置為分像素位置時(shí),需要對(duì)參考圖像的整像素進(jìn)行插值,得到分像素。插值過(guò)程就是利 用相鄰的整像素點(diǎn),通過(guò)一定的運(yùn)算規(guī)則得到分像素點(diǎn)的過(guò)程。圖3為本發(fā)明實(shí)施例像素 點(diǎn)的一個(gè)分部結(jié)構(gòu)示意圖。圖3中,X表示整像素點(diǎn),Y表示分像素點(diǎn)。如果當(dāng)前需要插值 的是水平方向上的1/2點(diǎn),即圖4中Y表示的點(diǎn),則需要利用水平方向上最近的兩個(gè)X點(diǎn)來(lái) 插值得到,插值公式可以是(Xl+X2+l)/2,其中Xl表示Y點(diǎn)左側(cè)最近的點(diǎn),X2表示Y點(diǎn)右側(cè) 最近的點(diǎn),由插值后得到的Y點(diǎn)后組成的塊即為預(yù)測(cè)塊。
圖4為本發(fā)明四字節(jié)字的讀取處理裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,該實(shí)施例的四 字節(jié)字的讀取處理裝置可用于實(shí)現(xiàn)本發(fā)明上述各實(shí)施例的四字節(jié)字的讀取處理方法流程。 如圖4所示,其包括識(shí)別模塊201、第一操作處理模塊202、第二操作處理模塊203與第三操 作處理模塊204。其中,識(shí)別模塊201用于識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的 地址。第一操作處理模塊202用于根據(jù)識(shí)別模塊201的識(shí)別結(jié)果,在待讀取的四字節(jié)字所 在的地址為非四字節(jié)對(duì)齊的地址N時(shí),從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取第 一個(gè)32位整數(shù),從地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整數(shù),其中,N 取值為1、2或3。第二操作處理模塊203用于將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù) 值,將第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值。第三操作處理模塊204用于對(duì)第一 數(shù)值與第二數(shù)值進(jìn)行或操作,得到作為第三個(gè)32位整數(shù)的待讀取的四字節(jié)字。本發(fā)明上述實(shí)施例提供的四字節(jié)字的讀取處理裝置中,在待讀取的四字節(jié)字所在 的地址為非四字節(jié)對(duì)齊的地址N時(shí),將從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取的 第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將從地址N的后一相鄰四字節(jié)對(duì)齊的地址空 間讀取的第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值,再對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或 操作,總共通過(guò)執(zhí)行五條相應(yīng)的指令就可以得到四字節(jié)字,大大簡(jiǎn)化了從非四字節(jié)對(duì)齊的 地址讀取所需的四字節(jié)字的操作,減小了該操作所需的時(shí)間,從而縮短了插值周期,提高了 插值效率。進(jìn)一步可選地,第一操作處理模塊202還可以根據(jù)識(shí)別模塊201的識(shí)別結(jié)果,在待 讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址N時(shí),直接從地址N讀取第四個(gè)32位整數(shù)。作為本發(fā)明的一個(gè)實(shí)施方式,圖4所示的實(shí)施例中,識(shí)別模塊201可以通過(guò)如下方 法識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址將待讀取的四字節(jié)字所在 的地址與4做求余操作,得到第三數(shù)值,判斷第三數(shù)值是否為0,若第三數(shù)值為0,則認(rèn)為待 讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址,否則,若第三數(shù)值為1、2或3,則待讀取 的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址。圖5為本發(fā)明四字節(jié)字的讀取處理裝置另 一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,該實(shí)施例提供的四字節(jié)字的讀取處理裝置可用于實(shí)現(xiàn)該實(shí)施方 式。與圖4所示的實(shí)施例相比,該實(shí)施例中,識(shí)別模塊201包括操作處理單元301、判斷單元 302與識(shí)別單元303。其中,操作處理單元301用于將待讀取的四字節(jié)字所在的地址與4做 求余操作,得到第三數(shù)值。判斷單元302用于判斷第三數(shù)值是否為0。識(shí)別單元303用于根 據(jù)判斷單元302的判斷結(jié)果,在第三數(shù)值為0時(shí),識(shí)別出待讀取的四字節(jié)字所在的地址為四 字節(jié)對(duì)齊的地址;否則,在第三數(shù)值為1、2或3時(shí),識(shí)別出待讀取的四字節(jié)字所在的地址為 非四字節(jié)對(duì)齊的地址。圖6為本發(fā)明四字節(jié)字的讀取處理裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。與圖4或圖 5所示的實(shí)施例相比,該實(shí)施例的四字節(jié)字的讀取處理裝置還包括插值處理模塊205,用于 對(duì)第一操作處理模塊202和/或第三操作處理模塊204處理得到的兩個(gè)相鄰的整像素A與 B進(jìn)行雙線性(1,1)插值,獲得分像素值。其中的整像素即為32位整數(shù)像素點(diǎn)。圖7為本發(fā)明解碼器一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。該實(shí)施例的解碼器包括熵解碼模 塊1、反掃描模塊2、反量化模塊3、反余弦變換模塊4、運(yùn)動(dòng)補(bǔ)償模塊5與加法器6,其中的運(yùn)動(dòng)補(bǔ)償模塊5可以通過(guò)本發(fā)明上述任一實(shí)施例提供的四字節(jié)字的讀取處理裝置實(shí)現(xiàn)。本發(fā)明實(shí)施例的解碼器接收到P幀的壓縮的視頻比特流后,熵解碼 (EntropyDecode)模塊1對(duì)該比特流進(jìn)行解碼,得到一系列量化系數(shù)包括用于指示需要插 值位置的運(yùn)動(dòng)向量(Motion Vector)值,和用于表示當(dāng)前幀F(xiàn)n中的當(dāng)前編碼宏塊與參考幀 Flri中最匹配宏塊之間的殘差,其中,η為大于1的整數(shù),表示當(dāng)前幀的序號(hào)。反掃描模塊2、 反量化模塊3、反余弦變換模塊4依次對(duì)殘差進(jìn)行重排序、反量化(Inverse Quantization, 以下簡(jiǎn)稱10)與反離散余弦變換(inverse discrete cosine transform,以下簡(jiǎn)稱 IDCT),得到原始值與預(yù)測(cè)值之間的差值。運(yùn)動(dòng)補(bǔ)償(Motion Compensate,以下簡(jiǎn)稱MC)模 塊5根據(jù)運(yùn)動(dòng)向量(Motion Vector)值在參考幀F(xiàn)lri中插值,得到所需的預(yù)測(cè)值,其中的參 考幀F(xiàn)lri為已經(jīng)解碼完成的前一幀。加法器6將反余弦變換模塊4得到的差值與運(yùn)動(dòng)補(bǔ)償 模塊5得到的預(yù)測(cè)值相加,得到重構(gòu)值,即解碼后當(dāng)前幀F(xiàn)n圖像,該當(dāng)前幀F(xiàn)n圖像作為后 一幀解碼的參考幀。本發(fā)明上述實(shí)施例提供的解碼器,在待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì) 齊的地址N時(shí),將從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取的第一個(gè)32位整數(shù)右移 N*8位,得到第一數(shù)值,將從地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取的第二個(gè)32位整 數(shù)左移32-N*8位,得到第二數(shù)值,再對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或操作,總共通過(guò)執(zhí)行五 條相應(yīng)的指令就可以得到四字節(jié)字,大大簡(jiǎn)化了從非四字節(jié)對(duì)齊的地址讀取所需的四字節(jié) 字的操作,減小了該操作所需的時(shí)間,從而縮短了插值周期,提高了插值效率。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過(guò) 程序指令相關(guān)的硬件來(lái)完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序 在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于系統(tǒng)實(shí)施例 而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部 分說(shuō)明即可。本發(fā)明實(shí)施例提供的四字節(jié)字的讀取處理方法與裝置、解碼器,大大簡(jiǎn)化了從非 四字節(jié)對(duì)齊的地址讀取所需的四字節(jié)字的操作,減小了該操作所需的時(shí)間,從而縮短了插 值周期,提高了插值效率。最后所應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)本發(fā)明作 限制性理解。盡管參照上述較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員 應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這種修改或者等同 替換并不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
一種四字節(jié)字的讀取處理方法,其特征在于,包括識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址;并在待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址N時(shí),從所述地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取第一個(gè)32位整數(shù),從所述地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整數(shù),其中,N取值為1、2或3;將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值;對(duì)所述第一數(shù)值與所述第二數(shù)值進(jìn)行或操作,得到作為第三個(gè)32位整數(shù)的所述待讀取的四字節(jié)字。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述識(shí)別待讀取的四字節(jié)字所在的地址 是否為四字節(jié)對(duì)齊的地址包括將所述待讀取的四字節(jié)字所在的地址與4做求余操作,得到第三數(shù)值; 判斷所述第三數(shù)值是否為0 ;若所述第三數(shù)值為0,則所述待讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址; 否則,若所述第三數(shù)值為1、2或3,則所述待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì) 齊的地址。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在待讀取的四字節(jié)字所在的地址為四字 節(jié)對(duì)齊的地址N時(shí),直接從所述地址N讀取第四個(gè)32位整數(shù)。
4.根據(jù)權(quán)利要求1、2或3所述的方法,其特征在于,得到所述待讀取的四字節(jié)字之后, 還包括對(duì)兩個(gè)相鄰的整像素A與B進(jìn)行雙線性(1,1)插值,獲得分像素值。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對(duì)兩個(gè)相鄰的整像素A與B進(jìn)行雙線 性(1,1)插值包括通過(guò)公式(A+B+l)/2或(A+B)/2,對(duì)兩個(gè)相鄰的整像素A與B進(jìn)行雙線性(1,1)插值。
6.一種四字節(jié)字的讀取處理裝置,其特征在于,包括識(shí)別模塊,用于識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址; 第一操作處理模塊,用于根據(jù)所述識(shí)別模塊的識(shí)別結(jié)果,在待讀取的四字節(jié)字所在的 地址為非四字節(jié)對(duì)齊的地址N時(shí),從所述地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取第 一個(gè)32位整數(shù),從所述地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整數(shù),其 中,N取值為1、2或3 ;第二操作處理模塊,用于將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè)32 位整數(shù)左移32-N*8位,得到第二數(shù)值;第三操作處理模塊,用于對(duì)所述第一數(shù)值與所述第二數(shù)值進(jìn)行或操作,得到作為第三 個(gè)32位整數(shù)的所述待讀取的四字節(jié)字。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述識(shí)別模塊包括操作處理單元,用于將所述待讀取的四字節(jié)字所在的地址與4做求余操作,得到第三 數(shù)值;判斷單元,用于判斷所述第三數(shù)值是否為0 ;識(shí)別單元,用于根據(jù)所述判斷單元的判斷結(jié)果,在所述第三數(shù)值為0時(shí),識(shí)別出所述待讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址;否則,在所述第三數(shù)值為1、2或3,識(shí)別 出所述待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一操作處理模塊還用于根據(jù)所述 識(shí)別模塊的識(shí)別結(jié)果,在待讀取的四字節(jié)字所在的地址為四字節(jié)對(duì)齊的地址N時(shí),直接從 所述地址N讀取第四個(gè)32位整數(shù)素。
9.根據(jù)權(quán)利要求6、7或8所述的裝置,其特征在于,還包括插值處理模塊,用于對(duì)所述第一操作處理模塊和/或所述第三操作處理模塊處理得到 的兩個(gè)相鄰的整像素A與B進(jìn)行雙線性(1,1)插值,獲得分像素值。
10.一種解碼器,包括熵解碼模塊、反掃描模塊、反量化模塊、反余弦變換模塊、運(yùn)動(dòng)補(bǔ) 償模塊與加法器,其特征在于,所述運(yùn)動(dòng)補(bǔ)償模塊包括權(quán)利要求6至9任意一項(xiàng)所述的四字 節(jié)字的讀取處理裝置。
全文摘要
本發(fā)明公開了一種四字節(jié)字的讀取處理方法與裝置、解碼器,其中,方法包括識(shí)別待讀取的四字節(jié)字所在的地址是否為四字節(jié)對(duì)齊的地址;并在待讀取的四字節(jié)字所在的地址為非四字節(jié)對(duì)齊的地址N時(shí),從地址N的前一相鄰四字節(jié)對(duì)齊的地址空間讀取第一個(gè)32位整數(shù),從地址N的后一相鄰四字節(jié)對(duì)齊的地址空間讀取第二個(gè)32位整數(shù),N取值為1、2或3;將第一個(gè)32位整數(shù)右移N*8位,得到第一數(shù)值,將第二個(gè)32位整數(shù)左移32-N*8位,得到第二數(shù)值;對(duì)第一數(shù)值與第二數(shù)值進(jìn)行或操作,得到作為第三個(gè)32位整數(shù)的待讀取四字節(jié)字。本發(fā)明可以簡(jiǎn)化從非四字節(jié)對(duì)齊地址讀取所需四字節(jié)字的操作,減小該操作所需時(shí)間,從而縮短插值周期,提高插值效率。
文檔編號(hào)H04N7/50GK101882112SQ201010219448
公開日2010年11月10日 申請(qǐng)日期2010年6月25日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者季鵬飛 申請(qǐng)人:北京中星微電子有限公司