專利名稱:視頻編碼和解碼技術(shù)的制作方法
技術(shù)領(lǐng)域:
本揭示涉及數(shù)字視頻處理,尤其涉及視頻序列的編碼。
背景數(shù)字視頻能力被包括在大量設(shè)備中,包括數(shù)字電視、數(shù)字直接廣播系統(tǒng)、無(wú)線通信設(shè)備、個(gè)人數(shù)字助手(PDA)、手提電腦、臺(tái)式電腦、數(shù)字?jǐn)z像機(jī)、數(shù)字記錄設(shè)備、蜂窩或衛(wèi)星無(wú)線電話等。數(shù)字視頻設(shè)備相比常規(guī)模擬視頻系統(tǒng)可以提供很大改善,包括建立、修改、發(fā)送、存儲(chǔ)、記錄和播放全活動(dòng)視頻序列。
已經(jīng)為數(shù)字視頻序列編碼建立了多個(gè)不同的視頻編碼標(biāo)準(zhǔn)。活動(dòng)圖片專家組(MPEG)例如已經(jīng)研發(fā)了多個(gè)標(biāo)準(zhǔn),包括MPEG-1、MPEG-2和MPEG-4。其他標(biāo)準(zhǔn)包括ITU H.263、加利福尼亞州Cupertino的蘋果計(jì)算機(jī)公司研發(fā)的QuickTimeTM技術(shù)、華盛頓Redmond的微軟公司研發(fā)的WindowsTM的視頻、英特爾公司研發(fā)的IndeoTM、華盛頓州西雅圖RealNetworks公司的RealVideoTM以及SuperMac公司研發(fā)的CinepakTM。
許多視頻編碼標(biāo)準(zhǔn)是通過(guò)以壓縮的方式對(duì)數(shù)據(jù)編碼而增加傳輸速率。壓縮可以減少視頻幀有效傳輸發(fā)送需要的總數(shù)據(jù)量。例如,MPEG標(biāo)準(zhǔn)利用了圖形和視頻壓縮技術(shù)以方便在比沒(méi)有壓縮時(shí)更窄的帶寬上傳輸視頻和圖像。
例如,MPEG標(biāo)準(zhǔn)支持利用連續(xù)視頻幀間類似性的視頻編碼技術(shù),該類似性被稱為時(shí)間或幀間相關(guān),用于提供幀間壓縮。幀間壓縮技術(shù)通過(guò)將基于象素的視頻幀表示轉(zhuǎn)換成運(yùn)動(dòng)表示而利用幀的數(shù)據(jù)冗余性。另外,視頻編碼技術(shù)可以利用幀內(nèi)的類似性,這被稱為空間或幀內(nèi)相關(guān),用于進(jìn)一步壓縮視頻幀。幀內(nèi)壓縮一般是基于用于壓縮靜止圖像的紋理編碼,諸如離散余弦變換(DCT)編碼。
為了支持壓縮,數(shù)字視頻設(shè)備一般包括用于對(duì)數(shù)字視頻序列壓縮的編碼器以及用于對(duì)數(shù)字視頻序列解壓縮的解碼器。在許多情況下,編碼器和解碼器形成集成的編碼器/解碼器(CODEC),它對(duì)定義視頻圖像序列的幀內(nèi)的象素模塊操作。在MPEG-4標(biāo)準(zhǔn)內(nèi),例如編碼器一般將要發(fā)送的視頻幀分割成包括16×16象素陣列的宏塊。
對(duì)于視頻幀內(nèi)的每個(gè)宏塊,編碼器搜索在緊鄰的前一視頻幀(或相繼幀)的宏塊以標(biāo)識(shí)最類似的宏塊,并將宏塊間的差異編碼以用于傳輸,同時(shí)還傳輸指示先前幀的哪個(gè)宏塊用于編碼的運(yùn)動(dòng)向量。解碼器接收運(yùn)動(dòng)向量以及編碼后的差異,并實(shí)現(xiàn)運(yùn)動(dòng)壓縮以生成視頻序列。
視頻編碼過(guò)程是計(jì)算強(qiáng)度很高的,特別是當(dāng)使用運(yùn)動(dòng)估計(jì)技術(shù)時(shí)。例如,將要編碼的視頻塊與先前發(fā)送的幀的視頻塊相比較的過(guò)程需要大量計(jì)算。非常期望改善的編碼技術(shù),特別是用于無(wú)線設(shè)備或其他便攜式視頻設(shè)備,這些設(shè)備的計(jì)算資源更有限且功耗也是一重要考慮。同時(shí),期望改善的壓縮能減少視頻序列的有效傳輸需要的帶寬。改善這些因子的一個(gè)或多個(gè)會(huì)方便視頻序列的實(shí)時(shí)編碼,特別是在無(wú)線和其他帶寬受限的設(shè)置中。
概述該揭示描述了一些視頻編碼技術(shù),所述技術(shù)減少了對(duì)視頻序列編碼需要的處理周期和存儲(chǔ)器轉(zhuǎn)移的數(shù)目。這樣,揭示的視頻編碼技術(shù)可以增加視頻編碼速度并減少功耗。另外,該技術(shù)可以使用相同的計(jì)算集合以定義與要編碼的宏塊相關(guān)聯(lián)的差異值,并定義與形成要編碼的宏塊的各個(gè)微塊相關(guān)聯(lián)的差異值。
在此描述的視頻編碼技術(shù)可以使用候選存儲(chǔ)器,所述存儲(chǔ)器按列存儲(chǔ)運(yùn)動(dòng)估計(jì)例程的搜索空間。存儲(chǔ)器控制單元可以定址候選存儲(chǔ)器以并行方式檢索多個(gè)象素,用于與要編碼的視頻塊象素的同時(shí)比較,例如使用絕對(duì)差值求和(SAD)或平方差值求和(SSD)技術(shù)。差值處理器可以并行地實(shí)現(xiàn)計(jì)算。每個(gè)并行計(jì)算集合可以對(duì)應(yīng)形成宏塊的一個(gè)微塊的一行。另外,對(duì)于要編碼的相繼視頻塊,候選存儲(chǔ)器可以通過(guò)加載一新的視頻塊列而遞增地經(jīng)更新,而不是重新加載整個(gè)搜索空間。
在此描述的這些和其他技術(shù)可以實(shí)現(xiàn)在數(shù)字視頻設(shè)備內(nèi)的硬件、軟件、固件或其任意組合內(nèi)。如果實(shí)現(xiàn)在軟件內(nèi),該技術(shù)可以是針對(duì)計(jì)算機(jī)可讀媒質(zhì),包括當(dāng)被執(zhí)行時(shí)實(shí)現(xiàn)在此描述的一個(gè)或多個(gè)編碼技術(shù)的程序代碼。各個(gè)實(shí)施例的附加細(xì)節(jié)在所附附圖和以下的描述中提出。通過(guò)附圖和描述以及權(quán)利要求書,本發(fā)明的特征、性質(zhì)和優(yōu)點(diǎn)將變得更加明顯。
附圖的簡(jiǎn)要描述
圖1是說(shuō)明一示例系統(tǒng)的框圖,其中源數(shù)字視頻設(shè)備將編碼后的視頻數(shù)據(jù)序列發(fā)送到接收數(shù)字視頻設(shè)備。
圖2是說(shuō)明對(duì)數(shù)字視頻序列編碼的視頻編碼器框圖。
圖3是說(shuō)明視頻數(shù)據(jù)的示例宏塊概念說(shuō)明。
圖4是示例搜索空間的概念說(shuō)明。
圖5是要編碼的宏塊的概念說(shuō)明,所述宏塊概念性地(conceptually)位于被安排為宏塊陣列的搜索空間上。
圖6A是說(shuō)明宏塊象素索引圖。
圖6B是說(shuō)明視頻存儲(chǔ)器內(nèi)視頻數(shù)據(jù)安排圖。
圖6C是說(shuō)明編碼存儲(chǔ)器內(nèi)視頻數(shù)據(jù)安排圖。
圖7A是說(shuō)明搜索空間象素索引圖。
圖7B是說(shuō)明視頻存儲(chǔ)器內(nèi)搜索空間安排圖。
圖7C是說(shuō)明候選存儲(chǔ)器內(nèi)搜索空間安排圖。
圖8A是說(shuō)明宏塊列象素索引圖。
圖8B是說(shuō)明視頻存儲(chǔ)器內(nèi)宏塊列安排圖。
圖9是說(shuō)明為候選存儲(chǔ)器內(nèi)存儲(chǔ)器組(bank)象素索引到基地址轉(zhuǎn)換的轉(zhuǎn)換框圖。
圖10是說(shuō)明模塊計(jì)數(shù)器的框圖,所述計(jì)數(shù)器用于通過(guò)形成宏塊的一系列模塊跟蹤搜索進(jìn)程。
圖11是說(shuō)明候選存儲(chǔ)器內(nèi)存儲(chǔ)器組的物理地址映射的框圖。
圖12是說(shuō)明候選存儲(chǔ)器內(nèi)宏塊列更新的物理地址映射框圖。
圖13是說(shuō)明差值處理器框圖。
圖14是說(shuō)明視頻編碼技術(shù)流圖。
圖15是說(shuō)明使用列更新以遞增地加載搜索空間的視頻編碼技術(shù)流圖。
圖16是說(shuō)明候選存儲(chǔ)器內(nèi)存儲(chǔ)器組的基地址映射流圖。
圖17是說(shuō)明候選存儲(chǔ)器內(nèi)物理地址映射流圖。
圖18是說(shuō)明候選存儲(chǔ)器內(nèi)宏塊列更新的物理地址映射流圖。
圖19是說(shuō)明為宏塊和多個(gè)形成宏塊的微塊使用相同的計(jì)算生成差值的流圖。
詳細(xì)描述該揭示一般涉及可以用于改善數(shù)字視頻數(shù)據(jù)編碼的視頻編碼技術(shù)。該視頻編碼技術(shù)可以減少對(duì)視頻序列編碼需要的處理周期和存儲(chǔ)器轉(zhuǎn)移數(shù)目,從而增加視頻編碼速度并減少功耗。例如,視頻編碼技術(shù)可以提供增加的計(jì)算效率,尤其是運(yùn)動(dòng)估計(jì)過(guò)程,該過(guò)程一般是視頻編碼過(guò)程中計(jì)算強(qiáng)度最大的。另外,該視頻編碼技術(shù)可以與諸如MPEG-4解碼標(biāo)準(zhǔn)的解碼標(biāo)準(zhǔn)兼容。
視頻編碼技術(shù)可以實(shí)現(xiàn)在多個(gè)數(shù)字視頻設(shè)備內(nèi),諸如數(shù)字廣播系統(tǒng)、個(gè)人數(shù)字助手(PDA)、手提電腦、臺(tái)式計(jì)算機(jī)、數(shù)字?jǐn)z像機(jī)、數(shù)字記錄設(shè)備、移動(dòng)電話等。視頻編碼技術(shù)可以根據(jù)諸如MPEG-4標(biāo)準(zhǔn)改善視頻編碼效率,且更好地方便實(shí)現(xiàn)無(wú)線通信設(shè)備內(nèi)的視頻編碼,諸如移動(dòng)電話,其計(jì)算資源更加受限且功耗也是一大考慮。
視頻編碼技術(shù)可以使用候選存儲(chǔ)器,它按列將視頻塊存儲(chǔ)在搜索空間內(nèi)。存儲(chǔ)控制單元定址候選存儲(chǔ)器以并行檢取多個(gè)象素,用于與要編碼的視頻塊內(nèi)的象素比較,例如使用絕對(duì)差值(SAD)和或平方差值(SSD)求和技術(shù)。差值處理器實(shí)現(xiàn)并行計(jì)算。在多個(gè)并行計(jì)算周期后,差值處理器可以生成搜索結(jié)果,其形式是與搜索空間和候選視頻塊相關(guān)的差值(有時(shí)被稱為稱為差值度量),所述視頻塊與要編碼的視頻塊相比。另外,對(duì)于要編碼的相繼視頻塊,候選存儲(chǔ)器可以通過(guò)加載新視頻塊列而遞增更新,而不是重新加載整個(gè)候選空間。該種列更新可以減少功耗和系統(tǒng)總線使用,且可以減少它加載新搜索空間所化的時(shí)間。
圖1是說(shuō)明示例系統(tǒng)10的框圖,其中源設(shè)備12通過(guò)通信鏈路15將視頻數(shù)據(jù)編碼后序列發(fā)送到接收設(shè)備14。源設(shè)備12和接收設(shè)備14都是數(shù)字視頻設(shè)備。特別是,源設(shè)備12使用多種視頻壓縮標(biāo)準(zhǔn)的任何一種對(duì)視頻數(shù)據(jù)進(jìn)行編碼并發(fā)送,所述標(biāo)準(zhǔn)例如有活動(dòng)圖像專家組研發(fā)的MPEG-4.其它標(biāo)準(zhǔn)可包括MPEG-1,MPEG-2或由活動(dòng)圖像專家組開發(fā)的其它MPEG標(biāo)準(zhǔn)。ITU H.263和類似標(biāo)準(zhǔn)、Motion JPEG2000,加利福尼亞州Gupertino的蘋果計(jì)算機(jī)公司研發(fā)的QuickTimeTM技術(shù)、華盛頓州Redmond的微軟公司研發(fā)的WindowsTM的視頻、英特爾公司研發(fā)的IndeoTM以及SuperMac公司研發(fā)的CinepakTM。
通信鏈路15可以包括無(wú)線鏈路、物理傳輸線、諸如本地局域網(wǎng)的基于分組的網(wǎng)絡(luò)、廣域網(wǎng)或諸如因特網(wǎng)的全球網(wǎng)絡(luò)、公共交換電話網(wǎng)絡(luò)(PSTN)類似網(wǎng)絡(luò)。因此,通信鏈路15表示任何合適的通信介質(zhì)或可能的不同網(wǎng)絡(luò)和鏈路集合,用于將視頻數(shù)據(jù)從源設(shè)備12發(fā)送到接收設(shè)備14。
源設(shè)備12可以是任何能對(duì)視頻數(shù)據(jù)編碼并發(fā)送的數(shù)字視頻設(shè)備。例如,源設(shè)備12可以包括視頻存儲(chǔ)器16以存儲(chǔ)數(shù)字視頻序列、視頻編碼器18以對(duì)序列編碼以及發(fā)射機(jī)20以在通信鏈路15上將編碼后序列發(fā)送到源設(shè)備14。視頻編碼器18可以包括例如數(shù)字信號(hào)處理器(DSP),它執(zhí)行一個(gè)或多個(gè)可編程軟件模塊以控制視頻編碼技術(shù)。可以提供相關(guān)存儲(chǔ)器和邏輯電路以支持DSP控制視頻編碼技術(shù)。如描述,視頻編碼器18可以被配置用于減少處理周期、存儲(chǔ)器轉(zhuǎn)移和功耗。另外,視頻編碼器18可以用于執(zhí)行一組計(jì)算以為宏塊生成差值以及為形成宏塊的各個(gè)微塊生成各個(gè)差值。
另外,源設(shè)備12可以包括視頻捕獲設(shè)備23,諸如視頻攝像機(jī),用以捕獲視頻序列和在存儲(chǔ)器16內(nèi)存儲(chǔ)捕獲的序列。特別是,視頻捕獲設(shè)備23可以包括電荷耦合設(shè)備(CCD)、電荷注入設(shè)備、光電二極管陣列、互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)設(shè)備或能捕獲視頻圖像或數(shù)字視頻序列的其他光感設(shè)備。
作為另一示例,視頻捕獲設(shè)備23可以是視頻轉(zhuǎn)換器,它從例如電視、視頻磁帶記錄、可攜式攝像機(jī)等將模擬視頻數(shù)據(jù)轉(zhuǎn)換成數(shù)字視頻數(shù)據(jù)。在一些實(shí)施例中,源設(shè)備12可以用于在通信鏈路15上發(fā)送實(shí)時(shí)視頻序列。在該情況下,接收設(shè)備14可以接收實(shí)時(shí)視頻序列并向用戶顯示視頻序列?;蛘?,源設(shè)備12可以捕獲并對(duì)視頻序列編碼,所述序列作為視頻數(shù)據(jù)文件發(fā)送到接收設(shè)備14,即不是以實(shí)時(shí)方式。因此,源設(shè)備12和接收設(shè)備14可以在例如移動(dòng)無(wú)線網(wǎng)絡(luò)中支持諸如視頻片斷回播、視頻郵件或視頻會(huì)議等應(yīng)用程序。
接收設(shè)備14可以采取能接收并對(duì)視頻數(shù)據(jù)解碼的任何數(shù)字視頻設(shè)備形式。例如,接收設(shè)備14可以包括接收機(jī)22用以從發(fā)射機(jī)20接收編碼后數(shù)字視頻序列,例如通過(guò)中間鏈路、路由器、其他網(wǎng)絡(luò)設(shè)備等。接收設(shè)備14還可以包括視頻解碼器24用于對(duì)序列解碼,還包括顯示設(shè)備26以向用戶顯示序列。在一些實(shí)施例中,接收設(shè)備14可能不包括集成顯示設(shè)備14。而且,接收設(shè)備14可以作為接收機(jī),它將接收到的視頻數(shù)據(jù)解碼以驅(qū)動(dòng)分離的顯示設(shè)備。例如電視或監(jiān)視器。
源設(shè)備12和接收設(shè)備14的示例設(shè)備包括位于計(jì)算機(jī)網(wǎng)絡(luò)、工作站或其他臺(tái)式機(jī)計(jì)算設(shè)備上的服務(wù)器,還包括諸如手提電腦或個(gè)人數(shù)字助手(PDA)的移動(dòng)計(jì)算設(shè)備。其他示例包括數(shù)字電視廣播衛(wèi)星和接收設(shè)備,諸如數(shù)字電視、數(shù)字?jǐn)z像機(jī)、數(shù)字視頻攝像機(jī)或其他數(shù)字記錄設(shè)備、數(shù)字視頻電話,諸如帶有視頻功能的移動(dòng)電話、其他無(wú)線視頻設(shè)備等。
在一些情況下,源設(shè)備12和接收設(shè)備14每個(gè)包括編碼器/解碼器(CODEC)(未示出),用于對(duì)數(shù)字視頻數(shù)據(jù)編碼和解碼。在該情況下,源設(shè)備12和接收設(shè)備14可以包括發(fā)射機(jī)和接收機(jī)以及存儲(chǔ)器和顯示。以下示出的許多編碼技術(shù)在包括編碼器的數(shù)字視頻設(shè)備環(huán)境中描述。然而可以理解編碼器可以形成COCEC的一部分。在該情況下,CODEC可以用DSP、微處理器、應(yīng)用專用集成電路(ASIC)、離散硬件組件或其各種組合實(shí)現(xiàn)。
源設(shè)備12內(nèi)的視頻編碼器18對(duì)視頻幀序列內(nèi)的象素模塊操作以對(duì)視頻數(shù)據(jù)編碼。例如,視頻編碼器18可以執(zhí)行運(yùn)動(dòng)估計(jì)編碼技術(shù),其中要發(fā)送的視頻幀被分成象素模塊(被稱為視頻塊)。為了說(shuō)明的目的,視頻塊可以包括微塊和宏塊。作為一例,微塊可以是8乘8的象素陣列。宏塊可以是16乘16的象素陣列。因此,宏塊可以包括四個(gè)微塊。該種格式經(jīng)常用于符合MPEG-4的編碼技術(shù)中。然而,還可以使用其他微塊和宏塊大小。一般在該揭示中宏塊和微塊一詞指包括多個(gè)象素的視頻塊。宏塊進(jìn)一步被定義為多個(gè)微塊。定義宏塊的微塊的數(shù)目、定義微塊的象素?cái)?shù)目以及定義宏塊的象素的數(shù)目是可以由實(shí)現(xiàn)特定格式的大量變體決定的。
有時(shí),改善的分辨率可以通過(guò)計(jì)算微塊而不是宏塊的運(yùn)動(dòng)估計(jì)而獲得。而且,如以下詳細(xì)列出,宏塊象素可以被存儲(chǔ)或定址,這可以以允許計(jì)算更小的微塊的差值以及并行計(jì)算宏塊差值的方式實(shí)現(xiàn),所述差值還被稱為差異度量。換而言之,宏塊差異度量的計(jì)算可以被視作形成宏塊的四個(gè)微塊的差異度量的四個(gè)計(jì)算的序列。相應(yīng)地,宏塊的差異度量以及形成宏塊的微塊可以從相同的計(jì)算中生成。特別是,該種技術(shù)可以不用加入附加的SAD或SSD計(jì)算而方便化。而且,可以設(shè)計(jì)尋址和計(jì)算方案,使得相同的計(jì)算可以由編碼器解釋為微塊差值計(jì)算以及宏塊差值計(jì)算。
微塊和宏塊內(nèi)的每個(gè)象素可由一個(gè)n比特值表示,例如8比特,它定義諸如色彩和強(qiáng)度的象素視覺(jué)特性,例如色度和亮度。然而,運(yùn)動(dòng)估計(jì)一般只對(duì)亮度分量實(shí)現(xiàn),因?yàn)槿祟愐曈X(jué)對(duì)亮度改變的敏感性要大于色彩改變。相應(yīng)地,為了進(jìn)行運(yùn)動(dòng)估計(jì),整個(gè)n比特值可以為給定象素量化亮度。然而該揭示的原理不限于象素的格式,且可以擴(kuò)展用于更簡(jiǎn)單比特更少的象素格式或更復(fù)雜比特更大的象素格式。
對(duì)于視頻幀內(nèi)的每個(gè)視頻塊,源設(shè)備12的視頻編碼器18為先前已經(jīng)被發(fā)送(或相繼的視頻幀搜索在存儲(chǔ)器16內(nèi)存儲(chǔ)的視頻塊,以標(biāo)識(shí)類似的視頻塊,對(duì)視頻塊之差連同運(yùn)動(dòng)向量編碼,所述運(yùn)動(dòng)向量標(biāo)識(shí)用于編碼的先前幀(或相繼幀)的視頻塊。這樣,取代將每個(gè)幀作為獨(dú)立圖片編碼,視頻編碼器18對(duì)相鄰幀間的差異編碼。運(yùn)動(dòng)估計(jì)涉及在先前或相繼幀內(nèi)標(biāo)識(shí)最匹配要被編碼的當(dāng)前幀內(nèi)的微塊或宏塊的微塊或宏塊。
運(yùn)動(dòng)向量可以定義與視頻塊的左上角相關(guān)的象素位置,雖然可以使用其他運(yùn)動(dòng)向量的格式。在任何情況下,通過(guò)使用運(yùn)動(dòng)向量對(duì)視頻塊編碼,可以大大減少傳輸視頻數(shù)據(jù)流需要的帶寬。在一些情況下,源設(shè)備12可以支持可編程閥值,該閥值會(huì)使得在編碼過(guò)程中各個(gè)比較或計(jì)算的中止以減少計(jì)算數(shù)目并保存功率。
接收設(shè)備14的接收機(jī)22可以接收運(yùn)動(dòng)向量和編碼后差值形式的編碼后視頻數(shù)據(jù)。解碼器24實(shí)現(xiàn)運(yùn)動(dòng)補(bǔ)償技術(shù)以生成視頻序列以通過(guò)顯示設(shè)備26向用戶顯示。接收設(shè)備14的解碼器24還可以作為編碼器/解碼器(CODEC)實(shí)現(xiàn)。在該情況下,源設(shè)備12和接收設(shè)備14能對(duì)數(shù)字視頻序列編碼、發(fā)送、接收和解碼。
圖2是說(shuō)明視頻編碼器18的框圖,所述編碼器根據(jù)上述技術(shù)對(duì)數(shù)字視頻序列編碼。圖2表示示例實(shí)現(xiàn),且不應(yīng)被認(rèn)為限制揭示。如圖2內(nèi)示出,視頻編碼器18還可以包括數(shù)字信號(hào)處理器(DSP)28和運(yùn)動(dòng)估計(jì)器29。DSP 28控制運(yùn)動(dòng)估計(jì)器29的操作,且用作為視頻編碼控制器?;蛘撸曨l編碼控制器可以由處理器、硬件組件、固件、應(yīng)用專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)等實(shí)現(xiàn)。
在圖2示例中,DSP 28執(zhí)行一個(gè)或多個(gè)可編程軟件模塊以控制視頻編碼技術(shù)。運(yùn)動(dòng)估計(jì)器29可以包括DSP接口30。DSP 28、DSP接口30以及視頻存儲(chǔ)器32通過(guò)總線33通信。視頻存儲(chǔ)器32可以被視作視頻編碼器18的外部組件或被集成為視頻編碼器18的一部分。DSP接口30與差值處理器34互動(dòng),所述處理器實(shí)現(xiàn)與運(yùn)動(dòng)估計(jì)例程相關(guān)聯(lián)的計(jì)算。例如差值處理器34可以實(shí)現(xiàn)SAD或SSD計(jì)算,以為給定視頻幀計(jì)算要編碼的塊或宏塊的運(yùn)動(dòng)向量。通過(guò)將編碼算法的控制分配給DSP 28并在運(yùn)動(dòng)估計(jì)器29的硬件內(nèi)分離計(jì)算強(qiáng)度高的運(yùn)動(dòng)估計(jì)計(jì)算,可以增強(qiáng)支持實(shí)時(shí)編碼的能力。
差值處理器35如圖2內(nèi)進(jìn)一步示出,包括編碼存儲(chǔ)器36和候選存儲(chǔ)器38。編碼存儲(chǔ)器36使用運(yùn)動(dòng)估計(jì)例程存儲(chǔ)要編碼的當(dāng)前宏塊。當(dāng)前宏塊對(duì)應(yīng)要編碼的視頻幀內(nèi)的宏塊陣列中的一個(gè)。候選存儲(chǔ)器38存儲(chǔ)從形成搜索空間的不同幀來(lái)的宏塊陣列。差值處理器34將候選存儲(chǔ)器38內(nèi)的宏塊與編碼存儲(chǔ)器36內(nèi)的當(dāng)前宏塊相比以標(biāo)識(shí)用作運(yùn)動(dòng)向量的最佳匹配。作為一例,可以使用48乘48的搜索空間。在該情況下,搜索空間會(huì)包含九個(gè)宏塊,即三個(gè)宏塊的三列,每個(gè)包含16乘16象素陣列。還可以在48乘48象素陣列搜索空間內(nèi)定義其他宏塊,以包括來(lái)自定義搜索空間的九個(gè)宏塊的兩個(gè)或更多的象素。
存儲(chǔ)器控制單元39控制候選存儲(chǔ)器38和編碼存儲(chǔ)器36的尋址以為運(yùn)動(dòng)估計(jì)例程驅(qū)動(dòng)搜索過(guò)程。特別是,存儲(chǔ)器控制單元39控制將來(lái)自視頻存儲(chǔ)器32的象素?cái)?shù)據(jù)通過(guò)總線33載入到候選存儲(chǔ)器38以形成搜索空間。為了這個(gè)目的,可配備存儲(chǔ)器控制單元39以用于提供存儲(chǔ)器地址轉(zhuǎn)換。將整個(gè)48乘48象素搜索空間直接載入候選存儲(chǔ)器38而不經(jīng)過(guò)DSP 28的干預(yù)可以減少DSP 28和DSP接口單元30之間的總線活動(dòng),并減少DSP 28內(nèi)移動(dòng)視頻數(shù)據(jù)需要的指令數(shù)目。差值處理器34為每個(gè)宏塊確定SAD或SSD結(jié)果并向DSP接口30返回最佳匹配的結(jié)果。DSP接口30接著向DSP 28提供編碼后宏塊和運(yùn)動(dòng)向量以通過(guò)總線33存儲(chǔ)在視頻存儲(chǔ)器32內(nèi)。
在操作中,DSP 28可以控制DSP接口單元30以通過(guò)控制信道40驅(qū)動(dòng)搜索過(guò)程。一般,控制信道40是用于存儲(chǔ)器載入指令,這可以包括象素索引,用于使得搜索空間被載入候選存儲(chǔ)器38。雖然可以使用其他格式,但每個(gè)象素索引可以指示候選宏塊左上角的地址。另外,DSP 28可以通過(guò)數(shù)據(jù)信道41接收由差值處理器34生成的搜索結(jié)果。數(shù)據(jù)信道41還可以用于硬件配置以及模式切換。DSP 28和視頻存儲(chǔ)器32間的存儲(chǔ)器轉(zhuǎn)移可以通過(guò)在DSP和總線33上的直接存儲(chǔ)器交換(DME)端口完成。在該情況下,DSP接口單元30、差值處理器34、編碼存儲(chǔ)器36、候選存儲(chǔ)器38和存儲(chǔ)器控制單元39可以駐留在DSP 28控制的總運(yùn)動(dòng)估計(jì)器(ME)內(nèi)。一般,DME用于將數(shù)據(jù)從視頻存儲(chǔ)器32中取出用于載入編碼存儲(chǔ)器36和候選存儲(chǔ)器38。
在圖2的示例中,DSP接口單元30作為從視頻存儲(chǔ)器32通過(guò)總線33和存儲(chǔ)器控制單元39到編碼存儲(chǔ)器36以及候選存儲(chǔ)器38的存儲(chǔ)器轉(zhuǎn)移的隨從單元。開始時(shí),DSP接口單元30可以將整個(gè)搜索空問(wèn)載入候選存儲(chǔ)器38。此后,DSP接口單元30可以遞增地更新候選存儲(chǔ)器38,例如因?yàn)榻o定幀內(nèi)的下一塊是要被編碼的,因此向搜索空間加入一新列。DSP接口單元30可以具有數(shù)據(jù)和配置信道,用于轉(zhuǎn)移視頻數(shù)據(jù)和存儲(chǔ)器控制單元39的配置。另外,DSP接口單元30可以具有配置信道,用于控制差值處理器34實(shí)現(xiàn)的搜索過(guò)程,且還具有結(jié)果信道,用于接收搜索結(jié)果。
在圖2的示例中,視頻編碼器18向主源設(shè)備12提供壓縮后數(shù)字視頻序列用于發(fā)送到接收設(shè)備14。視頻編碼器18對(duì)視頻序列編碼并在傳輸前在視頻存儲(chǔ)器32內(nèi)緩沖編碼后的數(shù)字視頻序列。視頻存儲(chǔ)器32以及差值處理器存儲(chǔ)器35的形式可以是同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SDRAM)、閃存存儲(chǔ)器、電可擦除可編程只讀存儲(chǔ)器(EEPROM)等。編碼存儲(chǔ)器36和候選存儲(chǔ)器一般是視頻編碼器18的本地存儲(chǔ)器,且可能包括被分開成“虛擬”存儲(chǔ)器的公共存儲(chǔ)器設(shè)備。
除了圖2內(nèi)說(shuō)明的組件外,在一些實(shí)施例中,視頻編碼器18可以包括其他組件,諸如紋理編碼器以實(shí)現(xiàn)一般用于處理靜態(tài)圖像的幀內(nèi)或幀間壓縮,諸如離散余弦變換(DCT)編碼。在處理能力被認(rèn)為對(duì)于有效運(yùn)動(dòng)估計(jì)過(guò)于受限情況下,例如除了運(yùn)動(dòng)估計(jì)外或取代運(yùn)動(dòng)估計(jì),可以實(shí)現(xiàn)紋理編碼。DSP 28可以基于任何給定時(shí)間的處理能力通過(guò)選擇性地調(diào)用運(yùn)動(dòng)估計(jì)器(29)和紋理編碼器(未示出)而引導(dǎo)編碼例程。
圖3說(shuō)明示例視頻塊,其形式是可以用視頻幀存儲(chǔ)在視頻存儲(chǔ)器32內(nèi)的宏塊42。MPEG標(biāo)準(zhǔn)和其他視頻編碼方案可以在運(yùn)動(dòng)估計(jì)視頻編碼期間使用宏塊形式的視頻塊。如上所述,在符合MPEG-4的系統(tǒng)中,“宏塊”一詞指16乘16的象素值集合,它形成了視頻幀的子集。每個(gè)象素值可以由數(shù)據(jù)字節(jié)表示,雖然還可以使用更大或更小的比特?cái)?shù)來(lái)定義每個(gè)象素,以獲得期望的圖像質(zhì)量。宏塊可以包括多個(gè)較小的8乘8象素微塊44A-44D。然而一般,在此描述的編碼技術(shù)可以使用任何定義大小的塊操作,諸如16字節(jié)乘16字節(jié)宏塊,8字節(jié)乘8字節(jié)微塊模塊或不同大小的視頻塊,如果期望。
圖4說(shuō)明搜索空間46的示例部分,該搜索空間可以被存儲(chǔ)在候選存儲(chǔ)器38內(nèi)。搜索空間安46是對(duì)應(yīng)先前發(fā)送的視頻幀的象素集合(或幀序列的相繼視頻幀)。如果期望,搜索空間可以包括在其整體中的先前或相繼視頻幀,或視頻幀的子集。搜索空間可以是長(zhǎng)方形的,如說(shuō)明,或可以采用任何形狀和大小。
在視頻編碼期間,要編碼的當(dāng)前宏塊與搜索空間46內(nèi)的視頻塊比較以標(biāo)識(shí)充分匹配,使得當(dāng)前宏塊和搜索空間內(nèi)類似宏塊間的差異可以連同運(yùn)動(dòng)向量一起被發(fā)送,所述運(yùn)動(dòng)向量標(biāo)識(shí)類似視頻塊。如上所述,定義在搜索空間46內(nèi)的宏塊48可以被存儲(chǔ)在候選存儲(chǔ)器38內(nèi),而要編碼的當(dāng)前宏塊可以被存儲(chǔ)在編碼存儲(chǔ)器36內(nèi)。
在運(yùn)動(dòng)估計(jì)視頻編碼期間,差值處理器34可以使用諸如SAD和SSD技術(shù)的比較技術(shù)將要編碼的當(dāng)前宏塊與先前或相繼幀的宏塊相比。如圖4內(nèi)指示的,搜索空間46內(nèi)的宏塊48可以由相應(yīng)宏塊的左上角象素地址48標(biāo)識(shí)。還可以使用其他比較技術(shù)。值得注意的是,根據(jù)揭示的原理,還可以為多個(gè)象素并行地進(jìn)行SAD或SSD計(jì)算。而且,象素方式比較的尋址和計(jì)算順序可以以以下方式完成,即使得生成要編碼每個(gè)宏塊的差值以及形成宏塊的微塊的差值。
在揭示中,“任務(wù)”一詞指用于將當(dāng)前視頻塊與搜尋空間內(nèi)不同視頻塊相比的公共計(jì)算集合。換而言之,一項(xiàng)任務(wù)指當(dāng)前視頻塊和搜索空間內(nèi)不同視頻塊間的單次比較。例如,任務(wù)可能涉及實(shí)現(xiàn)多次比較以將多個(gè)當(dāng)前視頻塊象素與搜索空間內(nèi)的候選視頻塊相比。如上所述,這些任務(wù)計(jì)算的各個(gè)子集可以并行地實(shí)現(xiàn)以加速編碼過(guò)程。64次計(jì)算可以被視作微塊任務(wù)(假設(shè)微塊被定義為8乘8象素陣列),且256次計(jì)算可以被視為宏塊任務(wù)(假設(shè)宏塊被定義為16乘16象素陣列)。在每個(gè)任務(wù)期間,計(jì)算被累加以為任務(wù)定義當(dāng)前差值(有時(shí)被稱為差異度量)。
在該揭示中,“迭代”一詞指在視頻編碼期間實(shí)現(xiàn)的公共任務(wù)集合。與要編碼的當(dāng)前視頻塊相關(guān)聯(lián)的一完整任務(wù)序列是一次迭代。換而言之,迭代是比較集合,其中當(dāng)前視頻塊與搜索空間內(nèi)的先前視頻塊(或相繼視頻塊)集合相比。每個(gè)單個(gè)比較是涉及多次計(jì)算的任務(wù)。因此,搜索空間定義了在迭代中與當(dāng)前視頻塊比較的視頻塊集合。每次迭代的比較被稱為任務(wù),且每個(gè)任務(wù)即每個(gè)比較可以涉及多個(gè)計(jì)算。
在一些情況下,迭代可以包括在搜索空間上定義第一搜索,在搜索空間內(nèi)標(biāo)識(shí)第一匹配,基于第一匹配在搜索空間子集上定義第二搜索,并在子集內(nèi)標(biāo)識(shí)第二匹配。例如,較后的迭代搜索可以涉及搜索空間內(nèi)輕微的偏移以更充分地指出最佳匹配。還可以使用其他搜索技術(shù),諸如菱形搜索技術(shù),其中搜索直到進(jìn)行到以下情況才停止,即當(dāng)標(biāo)識(shí)產(chǎn)生最低差值的宏塊的象素位置位于菱形搜索參數(shù)中心時(shí)。另外,也可以使用其他技術(shù)諸如圓形索技術(shù),其中標(biāo)識(shí)產(chǎn)生最低差值的宏塊的象素位置在半徑(R)定義的搜索參數(shù)中心處。半徑(R)的圓可以比菱形搜索參數(shù)定義更大、更多包含的搜索參數(shù)。
如果在迭代期間使用菱形搜索技術(shù)或圓形搜索技術(shù),還可以使用初始化技術(shù)用于加速標(biāo)識(shí)在菱形搜索參數(shù)或圓形定義的搜索參數(shù)中心處產(chǎn)生最低差值的宏塊的過(guò)程。例如,還可以使用利用空間冗余現(xiàn)象的初始化技術(shù)??臻g冗余一般預(yù)測(cè)給定視頻塊的視頻運(yùn)動(dòng)可能類似于空間相鄰于給定視頻塊的另一視頻塊的視頻運(yùn)動(dòng)。初始化技術(shù)還可以方便地利用該現(xiàn)象以初始化搜索空間內(nèi)一位置處的運(yùn)動(dòng)估計(jì),該處有很高的概率包括可以用于有效視頻編碼的視頻塊。
尤其是,初始化技術(shù)還可以利用為在要編碼的視頻塊空間臨近處的視頻塊計(jì)算的運(yùn)動(dòng)向量,以標(biāo)識(shí)搜索空間內(nèi)的位置,其中可以初始化運(yùn)動(dòng)估計(jì)例程,即搜索空間內(nèi)運(yùn)動(dòng)估計(jì)例程開始的象素位置。例如,平均象素位置、中值象素位置或使用加權(quán)函數(shù)計(jì)算的象素位置可以基于先前為在當(dāng)前要編碼的視頻塊空間臨近處的視頻塊確定的運(yùn)動(dòng)向量而經(jīng)計(jì)算。還可以使用其他線性或非線性函數(shù)。在任何情況下,通過(guò)該方式初始化運(yùn)動(dòng)估計(jì)例程,視頻編碼可以通過(guò)在迭代中減少在搜索空間內(nèi)定義視頻塊需要的任務(wù)的次數(shù),在菱形搜索或圓形搜索情況中被加速,該定位的視頻塊是被編碼的視頻塊的可接受匹配。
如果期望,用于生成差值的計(jì)算可以涉及SAD技術(shù)、SSD技術(shù)或其他比較。SAD技術(shù)涉及實(shí)現(xiàn)要編碼的當(dāng)前宏塊象素值以及當(dāng)前宏塊與其比較的先前宏塊象素值之間的絕對(duì)差值計(jì)算的任務(wù)。這些絕對(duì)差值計(jì)算的結(jié)果被求和即經(jīng)累加以定義指示當(dāng)前宏塊和先前宏塊間的差異的差值,當(dāng)前宏塊與先前宏塊進(jìn)行比較。對(duì)于8乘8象素圖像模塊,可以計(jì)算64個(gè)差值并求和,對(duì)于16乘16象素宏塊,可以計(jì)算256個(gè)差值并進(jìn)行求和。通過(guò)定址當(dāng)前視頻塊并按特定順序?qū)崿F(xiàn)計(jì)算,可以計(jì)算256個(gè)差值,但還可以在四個(gè)分離的集合內(nèi)求和,以為每個(gè)微塊生成差值。四個(gè)集合的所有計(jì)算的總和然后可定義該宏塊的差值。
較低的差值一般表明與當(dāng)前宏塊比較的宏塊是更佳的匹配,且因此在運(yùn)動(dòng)估計(jì)編碼中是優(yōu)于產(chǎn)生較高差值的候選宏塊的候選,較高差值意味著增加的失真。在一些情況下,當(dāng)累加的差值超過(guò)定義閥值時(shí)可以中止計(jì)算。在該情況下,附加的計(jì)算可能不是必要的,因?yàn)榕c當(dāng)前視頻塊比較的宏塊對(duì)于有效用于運(yùn)動(dòng)估計(jì)編碼將是不可接受的。
SSD技術(shù)還涉及實(shí)現(xiàn)要編碼的當(dāng)前宏塊象素值以及當(dāng)前宏塊與之比較的先前宏塊象素值之間的差值計(jì)算。然而,在SSD技術(shù)中,絕對(duì)差值計(jì)算的結(jié)果被平方,然后平方值被求和,即累加,以定義指示當(dāng)前宏塊和與之比較的先前宏塊間差異的差值。或者還可以實(shí)現(xiàn)其他比較技術(shù),諸如平均平方誤差(MSE)、歸一化互相關(guān)函數(shù)(NCCF)或其他合適的比較算法。
在一些情況下,可以在確定例如給定任務(wù)不會(huì)產(chǎn)生比先前任務(wù)更佳的匹配或標(biāo)識(shí)給定任務(wù)產(chǎn)生可接受匹配之后提早中止各個(gè)任務(wù)和迭代。例如,可以使用一些技術(shù)以標(biāo)識(shí)何時(shí)給定任務(wù)的附加計(jì)算不是必要的。尤其是,當(dāng)?shù)诙蝿?wù)計(jì)算子集一起產(chǎn)生大于與先前計(jì)算的第一任務(wù)相關(guān)的差值時(shí),一般已知第二任務(wù)的附加計(jì)算不是必要的,因?yàn)榈诙蝿?wù)的完成不會(huì)導(dǎo)致低于第一任務(wù)的差值。在該情況下,第二任務(wù)可以在不犧牲編碼性能情況下被中止,且可以更快地開始執(zhí)行第三任務(wù)。
中止技術(shù)還可以在迭代層被執(zhí)行,或在任務(wù)層和迭代層一起被執(zhí)行。在一示例中,迭代閥值定義可接受值,即足以進(jìn)行有效視頻編碼。在該情況下,如果實(shí)現(xiàn)一任務(wù),它在搜索空間內(nèi)標(biāo)識(shí)匹配當(dāng)前要編碼的視頻塊的候選視頻塊,后者以被認(rèn)為由迭代閥值可接受的方式與前者匹配,且下一要編碼的視頻塊可以與搜索空間相比。在該情況下,可以避免多次不必要的任務(wù)執(zhí)行。
在此的許多技術(shù)可以在將要編碼的視頻塊與先前視頻幀的先前視頻塊比較的環(huán)境下描述。然而可以理解可以在將要編碼的視頻塊與相繼視頻幀的候選視頻塊相比時(shí)使用相同技術(shù)。在一些情況下,可以使用雙向運(yùn)動(dòng)估計(jì),其中要編碼的視頻塊與一個(gè)或多個(gè)先前視頻幀的各個(gè)候選視頻塊和相繼視頻幀的各個(gè)視頻塊相比。簡(jiǎn)而言之,無(wú)論何時(shí)要編碼的視頻塊與不同視頻塊相比時(shí),諸如先前視頻幀的候選視頻塊或相繼視頻幀的候選視頻塊,可以使用在此描述的許多技術(shù)。換而言之,搜索空間可以在該種不同的實(shí)現(xiàn)內(nèi)被加載入各種不同候選。
圖5是在被安排為候選宏塊陣列的示例搜索空間52內(nèi)要編碼的當(dāng)前宏塊50的概念說(shuō)明。特別是,如圖5內(nèi)示出,搜索空間52包括候選宏塊的三行54A-54C以及三列56A-56C用于與要編碼的宏塊50比較。因此,在圖5的示例中,搜索空間52包括九個(gè)16乘16象素宏塊的陣列,形成了48乘48象素區(qū)域。要編碼的當(dāng)前宏塊50使用差值處理器34與搜索空間52內(nèi)的宏塊比較。
為了減少視頻存儲(chǔ)器32和候選存儲(chǔ)器38之間的存儲(chǔ)器轉(zhuǎn)移以及相關(guān)的處理開銷,一旦搜索空間52在開始時(shí)被加載,如需要,相繼的搜索空間更新可以在逐列基礎(chǔ)上進(jìn)行。例如,為了對(duì)給定幀的相繼宏塊編碼,存儲(chǔ)器控制單元39可以簡(jiǎn)單地替換搜索空間52的左手列56A內(nèi)的候選宏塊,而不是重新載入整個(gè)搜索空間52。
為了完成按列更新,并允許并行運(yùn)動(dòng)估計(jì)計(jì)算在多個(gè)象素上同時(shí)實(shí)現(xiàn),存儲(chǔ)器控制單元39用于執(zhí)行地址映射方案以在維持在視頻存儲(chǔ)器32、編碼存儲(chǔ)器36和候選存儲(chǔ)器38內(nèi)的存儲(chǔ)器地址間轉(zhuǎn)換。編碼存儲(chǔ)器36和候選存儲(chǔ)器38的數(shù)據(jù)更新通過(guò)總線33發(fā)生在視頻存儲(chǔ)器32之間,總線33直接訪問(wèn)視頻存儲(chǔ)器。為了初始化并控制在總線33上的該轉(zhuǎn)移,DSP 28通過(guò)DME端口用作總線主控。
圖6A是說(shuō)明宏塊象素索引圖。如圖6A內(nèi)示出,宏塊象素索引可以被分成四個(gè)微塊(A,B,C,D)。宏塊象素索引是16乘16,其中每個(gè)微塊A,B,C,D是8乘8。整個(gè)宏塊象素索引從左上角象素YO擴(kuò)展到右下角象素Y255(未示出)。象素索引由DSP 28維持以跟蹤搜索空間內(nèi)的宏塊。存儲(chǔ)器控制單元39用于將DSP 28提供的象素索引轉(zhuǎn)換成視頻存儲(chǔ)器32、編碼存儲(chǔ)器36或候選存儲(chǔ)器38內(nèi)的物理存儲(chǔ)器地址,如可應(yīng)用。例如,存儲(chǔ)器控制單元39向候選存儲(chǔ)器38提供轉(zhuǎn)換后的地址用于搜索空間更新,或提供給編碼存儲(chǔ)器36以由SAD引擎34進(jìn)行SAD計(jì)算。
圖6B是說(shuō)明視頻存儲(chǔ)器32內(nèi)視頻數(shù)據(jù)安排圖。特別是,圖6B說(shuō)明DSP 28維持的宏塊象素索引和視頻存儲(chǔ)器32內(nèi)宏塊象素?cái)?shù)據(jù)的物理安排間差異。如圖6B內(nèi)示出,視頻存儲(chǔ)器32在安排在四個(gè)象素行內(nèi)的64個(gè)地址處存儲(chǔ)宏塊象素?cái)?shù)據(jù),為每個(gè)宏塊生成64行。在每象素8比特時(shí),每行包括32個(gè)數(shù)據(jù)比特。因此,響應(yīng)于來(lái)自DSP 28的象素索引訪問(wèn)視頻存儲(chǔ)器32,存儲(chǔ)控制單元39需要將象素索引轉(zhuǎn)換成視頻存儲(chǔ)器內(nèi)的物理地址。
圖6C是說(shuō)明編碼存儲(chǔ)器34內(nèi)的視頻數(shù)據(jù)安排圖。如圖6C內(nèi)示出,存儲(chǔ)在編碼存儲(chǔ)器36內(nèi)的宏塊象素?cái)?shù)據(jù)被安排在每行8個(gè)象素的32行內(nèi),即每行64比特。根據(jù)該揭示,編碼存儲(chǔ)器36內(nèi)的存儲(chǔ)器安排方便了差值處理器36同時(shí)對(duì)多個(gè)象素的絕對(duì)差值(AD)計(jì)算。特別是,圖6C的示例是允許每次8個(gè)象素的并行AD計(jì)算的編碼存儲(chǔ)器36的物理安排。而且,當(dāng)微塊被定義為有8個(gè)象素寬度時(shí),圖6C的物理安排可以允許為微塊以及宏塊生成差值,因?yàn)槲K一般有8象素寬度。編碼存儲(chǔ)器36的寬度可以是64比特。圖6A-6C一起說(shuō)明宏塊象素索引如何映射到視頻存儲(chǔ)器32以及視頻存儲(chǔ)器如何映射到差值處理器存儲(chǔ)器35內(nèi)的物理編碼存儲(chǔ)器36。
圖7A是說(shuō)明DSP 28維持的搜索空間象素索引圖。搜索空間內(nèi)的象素索引為DSP 28用于規(guī)定搜索任務(wù),例如用于建立差值處理器34生成的結(jié)果(差值)的計(jì)算集合。圖7A的搜索空間象素索引對(duì)應(yīng)3宏塊乘3宏塊搜索空間,且因此包含2304象素(3*3*16*16)。如圖7A內(nèi)進(jìn)一步示出,搜索空間象素索引包含48行,每個(gè)包含48個(gè)象素。
圖7B是說(shuō)明視頻存儲(chǔ)器32內(nèi)搜索空間安排圖。如圖7B內(nèi)示出,搜索空間象素的物理安排包括每行4個(gè)象素,如圖6B的宏塊存儲(chǔ)器安排。另外,象素被安排在576行內(nèi)。在每象素8比特時(shí),4象素每行包含32比特。
圖7C是說(shuō)明候選存儲(chǔ)器38內(nèi)搜索空間安排圖。值得注意的是,如同編碼存儲(chǔ)器36,候選存儲(chǔ)器38被安排在8象素的行內(nèi)。為了存儲(chǔ)整個(gè)搜索空間,候選存儲(chǔ)器38包括288行。換而言之,候選存儲(chǔ)器38被安排為8個(gè)288乘8比特存儲(chǔ)器組。每行為64比特寬。雖然編碼存儲(chǔ)器36只存儲(chǔ)宏塊,且候選存儲(chǔ)器38存儲(chǔ)三個(gè)宏塊寬且總共包括九個(gè)微塊的搜索空間,存儲(chǔ)器36、38的每個(gè)具有8像素寬的輸出。以這種方式,編碼存儲(chǔ)器36和候選存儲(chǔ)器38為要編碼的每個(gè)宏塊的比較而安排,即為了方便每次8個(gè)象素的絕對(duì)差值并行計(jì)算。另外,編碼存儲(chǔ)器36和候選存儲(chǔ)器38被安排為在宏塊差值計(jì)算期間對(duì)微塊差值計(jì)算。
而且,除了允許對(duì)多個(gè)象素的并行AD計(jì)算外,候選存儲(chǔ)器38被安排以允許在搜索空間內(nèi)任何象素處開始的對(duì)宏塊的尋址。而且,如將要描述的,候選存儲(chǔ)器38的結(jié)構(gòu)可以允許遞增列更新,即每次加載宏塊的一列,而不是為要編碼的每個(gè)新宏塊重新加載整個(gè)搜索空間。該種加載技術(shù)可以通過(guò)避免對(duì)冗余的存儲(chǔ)器加負(fù)并減少總線33的使用而減少功率。同樣,存儲(chǔ)器控制單元39用于將搜索空間象素索引轉(zhuǎn)換成視頻存儲(chǔ)器32內(nèi)的物理存儲(chǔ)器地址,然后將來(lái)自視頻存儲(chǔ)器的存儲(chǔ)器地址轉(zhuǎn)換成候選存儲(chǔ)器38內(nèi)對(duì)應(yīng)的物理存儲(chǔ)器地址。
圖8A是說(shuō)明宏塊列象素索引圖。對(duì)于兩個(gè)相鄰要編碼的宏塊,可應(yīng)用搜索空間間差異只是宏塊列中的一列。作為結(jié)果,只需要更新一個(gè)宏塊列。候選存儲(chǔ)器38被安排以利用該方面,從而減少視頻存儲(chǔ)器32和候選存儲(chǔ)器間的轉(zhuǎn)移需要的數(shù)據(jù)帶寬。如圖8A示出,由DSP 28維持的宏塊列象素索引可以安排在16個(gè)象素的行內(nèi),且可為搜索空間內(nèi)的單列長(zhǎng)度擴(kuò)展,即48行。因此,圖8A內(nèi)示出的宏塊象素索引對(duì)應(yīng)三個(gè)宏塊的列,且因此是圖7A的搜索空間象素索引的三分之一。
宏塊列象素索引的視頻存儲(chǔ)器32內(nèi)的物理存儲(chǔ)器安排還不同于整個(gè)搜索空間象素索引的存儲(chǔ)器安排。圖8B是說(shuō)明視頻存儲(chǔ)器32內(nèi)宏塊列安排圖。對(duì)于宏塊列,視頻存儲(chǔ)器32提供192行每行4個(gè)象素。因此,視頻存儲(chǔ)器32用32比特寬度安排宏塊列。一旦搜索空間為初始宏塊被載入候選存儲(chǔ)器38,搜索相繼、相鄰要編碼宏塊可以通過(guò)簡(jiǎn)單地載入新列完成。
在列更新過(guò)程中,存儲(chǔ)器控制單元39用新宏塊列替換先前左手側(cè)的宏塊列。新載入宏塊列然后被指定為當(dāng)前右手側(cè)宏塊列。另外,先前中間宏塊列被指定為新左手側(cè)宏塊列,而先前右手側(cè)宏塊列被指定為新中間宏塊列。
因此,搜索空間可以被視為在更大的視頻幀內(nèi)被偏移到右邊以去除先前左手側(cè)宏塊列,從而為新右手側(cè)宏塊列留出空間。接著該列更新操作,候選存儲(chǔ)器38內(nèi)的搜索空間就適用于在編碼存儲(chǔ)器36內(nèi)考慮下一宏塊。
通過(guò)將DSP 28提供的象素索引轉(zhuǎn)換到視頻存儲(chǔ)器32以及存儲(chǔ)器控制單元39內(nèi)的候選存儲(chǔ)器38內(nèi)的物理地址,不需要DSP跟蹤列偏移操作。結(jié)果是,DSP 28只需要為新右手側(cè)宏塊列提供象素索引。
圖9是說(shuō)明形成存儲(chǔ)器控制單元39部分的示例電路框圖,用于為候選存儲(chǔ)器38內(nèi)的存儲(chǔ)器組將象素索引轉(zhuǎn)換成基地址。如圖9內(nèi)示出,存儲(chǔ)器控制單元39包括用于獲得該存儲(chǔ)器地址轉(zhuǎn)換的合適邏輯電路。存儲(chǔ)器控制單元39跟蹤當(dāng)前迭代,諸如編碼存儲(chǔ)器36的更新,候選存儲(chǔ)器38的更新或全加載或搜索任務(wù),其中差值處理器34為編碼存儲(chǔ)器和候選存儲(chǔ)器的內(nèi)容實(shí)現(xiàn)并行AD計(jì)算。如將描述的,存儲(chǔ)器控制單元39還可以在搜索期間跟蹤塊邊界,管理候選存儲(chǔ)器38內(nèi)的宏塊列偏移,并實(shí)現(xiàn)象素到地址轉(zhuǎn)換。
一般為了搜索,存儲(chǔ)器控制單元39根據(jù)以下等式在候選存儲(chǔ)器38內(nèi)確定對(duì)應(yīng)的象素開始組,即八個(gè)象素行內(nèi)的位置開始象素組=模8(象素索引)(1)另外,存儲(chǔ)器控制單元39根據(jù)以下等式確定開始象素行開始象素行=int(象素索引/8)(2)因此,根據(jù)模函數(shù)(1),開始組是象素索引除8的余數(shù)。根據(jù)整除函數(shù)(2),開始行是可除象素索引的最高整數(shù)。
給出上述等式(1)和(2),相應(yīng)組x的開始即“基”地址可以表示為組x基地址=開始象素行,如果x大于等于開始象素組(3)開始象素行+1,如果x小于開始象素組如圖9示出,存儲(chǔ)器控制單元39內(nèi)的比較器58將象素索引指示的行(象素索引模8)與組索引相比,且如果象素索引x小于組索引,則生成為1的輸出,如果象素索引大于或等于組索引,則輸出為零。存儲(chǔ)器控制單元39內(nèi)的加法器60然后向象素索引[int(象素索引/8)]指明的組加入比較器58的輸出(1或0)以生成組x的基地址。
圖10是說(shuō)明視頻塊計(jì)數(shù)器電路62框圖,用于通過(guò)形成宏塊的一系列微塊(A,B,C,D)跟蹤搜索過(guò)程,如圖3示出。一旦確定了相應(yīng)組的基地址,則存儲(chǔ)器控制單元39跟蹤增量更新并基于塊邊界重新加載地址發(fā)生計(jì)數(shù)器。在圖10的示例中,塊計(jì)數(shù)器電路62可以包括5比特計(jì)數(shù)器64,它可以開始時(shí)載入值31以提供32個(gè)計(jì)數(shù)。在初始化(task-start)后,計(jì)數(shù)器64每時(shí)鐘周期向上計(jì)數(shù)一次。還可以使用向下計(jì)數(shù)的計(jì)數(shù)器。
當(dāng)計(jì)數(shù)到達(dá)0b11000時(shí),判決邏輯66指示差值處理器34進(jìn)行的搜索已經(jīng)完成了對(duì)于微塊A的AD計(jì)算。類似地,計(jì)數(shù)0b10000、0b01000和0b00000指示完成微塊B,C和D。當(dāng)?shù)竭_(dá)計(jì)數(shù)0b00000時(shí),對(duì)于給定宏塊完成搜索(task done)。這樣,塊計(jì)數(shù)器電路62跟蹤差值處理器34正在處理的當(dāng)前宏塊差值計(jì)算進(jìn)程。另外,塊計(jì)數(shù)器電路62可以確定何時(shí)已計(jì)算了與每個(gè)微塊聯(lián)相關(guān)的差值。
在跨越每個(gè)微塊邊界后,判決邏輯66生成block_done信號(hào),該信號(hào)指令差值處理器34鎖存單個(gè)微塊結(jié)果。相應(yīng)地,視頻編碼器18生成每個(gè)單個(gè)微塊差值結(jié)果以及宏塊的差值結(jié)果。而且,這些不同結(jié)果使用相同的相應(yīng)計(jì)算生成。換而言之,四個(gè)分開的計(jì)算子集合生成每個(gè)微塊的差值,且所有計(jì)算之和生成宏塊的差值。
如上所述,可以加入中止技術(shù)以中止各種任務(wù)和迭代以避免在一定情況下的計(jì)算。在一實(shí)現(xiàn)中,可以在實(shí)現(xiàn)每個(gè)并行AD計(jì)算集合之后確定是否中止任務(wù)。換而言之,每個(gè)微塊行的鎖存可以提供最佳時(shí)間以確定是否超過(guò)任務(wù)閥值。如果是,因?yàn)橐阎阉鞑粫?huì)產(chǎn)生最低差值,可以中止該特定任務(wù)的附加計(jì)算。特別是,如果超過(guò)任務(wù)閥值,則候選宏塊的子集的差值可能已經(jīng)超過(guò)了為搜索空間先前候選宏塊計(jì)算的差值。
圖11是說(shuō)明候選存儲(chǔ)器38內(nèi)的存儲(chǔ)器組物理地址映射電路68的框圖。候選存儲(chǔ)器38內(nèi)物理地址發(fā)生涉及用象素索引生成的基地址加載累加器以定址圖9所示的轉(zhuǎn)換。在每個(gè)時(shí)鐘周期中,地址遞增48個(gè)象素到宏塊內(nèi)象素的下一行,該轉(zhuǎn)換為6行(48象素除以8個(gè)組)。在完成模塊B之后,累加器為模塊C和模塊D的計(jì)算重新加載基地址+1。
如圖11示出,映射電路68可以包括加法器70,它在完成模塊B計(jì)算時(shí)(block_b_done)向基地址(mb_base_addr)加1,從而在候選存儲(chǔ)器38內(nèi)生成列基地址(col_base_addr)。如果或是完成模塊B或是開始搜索任務(wù)(task_start)時(shí),OR門72將邏輯高輸出傳遞到多路復(fù)用器74。
響應(yīng)于來(lái)自O(shè)R門72的邏輯高輸出,多路復(fù)用器74將列基地址輸出到累加器76。響應(yīng)于來(lái)自O(shè)R門72的邏輯低輸出,多路復(fù)用器將加法器78輸出傳遞到累加器76。加法器78將來(lái)自累加器76的當(dāng)前候選存儲(chǔ)器地址(logical_cram_addr)加入值6。如果沒(méi)有搜索任務(wù)開始或模塊B完成,則多路復(fù)用器74和累加器78將當(dāng)前候選存儲(chǔ)器地址超前六行,即8個(gè)組上的48個(gè)象素。這樣,存儲(chǔ)器控制單元39循環(huán)通過(guò)候選存儲(chǔ)器38內(nèi)的8個(gè)組的每行用于每次向差值處理器34呈現(xiàn)一個(gè)微塊行,這受到模塊B完成或開始新搜索任務(wù)的限制。相應(yīng)地,計(jì)算以一行一行的方式進(jìn)行,直到生成每個(gè)微塊的差值,且計(jì)算以微塊接著微塊的方式進(jìn)行直到計(jì)算了一宏塊的差值。過(guò)程然后在其他行和微塊中按行和按微塊的方式對(duì)搜索空間的下一宏塊進(jìn)行,如此類推。
圖12是說(shuō)明候選存儲(chǔ)器內(nèi)用于宏塊列更新的物理地址映射電路80。如圖11內(nèi)示出的地址映射電路68在發(fā)生宏塊更新時(shí)不處理宏塊列偏移。映射電路68可應(yīng)用于完全重新載入搜索空間內(nèi)的宏塊列。當(dāng)應(yīng)用列更新特征時(shí),圖12的地址映射電路80提供另一層的地址映射。
在物理候選存儲(chǔ)器38內(nèi),宏塊列內(nèi)每行映射到兩行數(shù)據(jù)。例如,在重設(shè)時(shí),地址0和地址1(addr 0/1)表示左宏塊列的第一行。特別是地址0表示候選存儲(chǔ)器38內(nèi)的8組行,這對(duì)應(yīng)左宏塊列的象素索引行內(nèi)的前8個(gè)象素。地址1表示候選存儲(chǔ)器38內(nèi)的8組行,這對(duì)應(yīng)左宏塊列的象素索引行內(nèi)第二8個(gè)象素。
地址2和地址3(addr 2/3)表示中間宏塊列第一行,且地址4和地址5(addr4/5)表示右宏塊列的第一行。因此,如圖7C示出,候選存儲(chǔ)器38的8組行按順序每整行存儲(chǔ)象素?cái)?shù)據(jù)(例如第一行的Y0-Y47),復(fù)蓋了左、中和右宏塊列。
在一宏塊列更新之后,addr 0/1(先前表示左宏塊列)用于表示右宏塊列,addr 2/3(先前中間宏塊列)表示左宏塊列,addr 4/5(先前最右宏塊列)表示中間宏塊列。
這樣,左右宏塊列存儲(chǔ)與先前相應(yīng)中間和右邊宏塊列相同的數(shù)據(jù),且不需要重新加載新數(shù)據(jù)。然而,地址(addr 2/3和addr 4/5)現(xiàn)在被映射到左邊和中間宏塊列。然而先前左邊宏塊列地址(addr 0/1)被重新映射到右邊宏塊列并重新加載來(lái)自視頻存儲(chǔ)器32的新數(shù)據(jù)。
為了為列更新模式執(zhí)行地址映射,圖12內(nèi)的映射電路80確定兩個(gè)條件候選存儲(chǔ)器列基地址的模3輸出(col_bas_addr模3)以及宏塊列偏移狀態(tài),即是否請(qǐng)求完全更新或列更新。
如圖12示出,映射電路80包括一模3操作器82,它生成當(dāng)前基列地址除2的模3(cram_addr[8:1]),并向臨時(shí)存儲(chǔ)設(shè)備84(有時(shí)被稱為雙穩(wěn)態(tài)觸發(fā)器)應(yīng)用模3輸出。模3輸出對(duì)于列基地址總是0、1或2。例如,第一列的列基地址(Y0)會(huì)產(chǎn)生0,第二列的列基地址(Y16)會(huì)生成1,且第三列的列基地址會(huì)生成2。
當(dāng)開始新搜索任務(wù)(task_start)或模塊B的計(jì)算完成時(shí)(block_b_done)時(shí),OR門86使得雙穩(wěn)態(tài)觸發(fā)器84輸出來(lái)自模3操作器82的模3輸出以應(yīng)用到多路復(fù)用器88。模3輸出指明列基地址當(dāng)前駐留的列,即第一列(0),第二列(1)或第三列(2)。
作為響應(yīng),多路復(fù)用器88將多路復(fù)用器90、92、94輸出的一個(gè)輸出傳遞到加法器96。多路復(fù)用器90、92、94的輸出由2比特計(jì)數(shù)器98的輸出確定。計(jì)數(shù)器98響應(yīng)于接收到的full_update信號(hào)用值0重設(shè),指明將重新載入候選存儲(chǔ)器38內(nèi)的整個(gè)搜索空間。響應(yīng)于在使能輸入處的col_update信號(hào),計(jì)數(shù)器98計(jì)數(shù)遞增1(或可以對(duì)于其他實(shí)現(xiàn)進(jìn)行向下計(jì)數(shù))。
Col_update信號(hào)指明候選存儲(chǔ)器38內(nèi)的搜索空間可由加載一個(gè)新列而遞增地更新。計(jì)數(shù)器98可以為每個(gè)列更新而遞增,或可以為兩個(gè)列更新遞增,并接著第三個(gè)列更新返回值0。例如,計(jì)數(shù)器98可以從0遞增到1,到2,回到0,到1,到2,到0,到1,到2等。在計(jì)數(shù)器等于0×11時(shí),計(jì)數(shù)器98還可以被重設(shè),該重設(shè)可以不考慮使能狀態(tài)而發(fā)生。
在任何情況下,計(jì)數(shù)器98的計(jì)數(shù)輸出跟蹤在遞增列更新例程過(guò)程中已實(shí)現(xiàn)了多少次的列偏移。計(jì)數(shù)器98的計(jì)數(shù)輸出可以提供到多路復(fù)用器90、92、94的邏輯輸入以方便地址映射決定。多路復(fù)用器90、92、94分別對(duì)應(yīng)搜索空間的左、中和右列。如果計(jì)數(shù)輸出為0,多路復(fù)用器90、92、94輸出值0、0和0。如果計(jì)數(shù)輸出為1,則多路復(fù)用器90、92、94分別輸出+2、+2和-4。如果計(jì)數(shù)輸出為2,則多路復(fù)用器90、92、94分別輸出0、-4和+2。另外,計(jì)數(shù)輸出被提供給0b11比較器95,它將信號(hào)提供給OR門97。因此,計(jì)數(shù)器98的重設(shè)可以響應(yīng)于或是full_update信號(hào)或是來(lái)自比較器95的信號(hào)而發(fā)生,兩者都是OR門97的輸入。
多路復(fù)用器90、92、94的操作反應(yīng)了先前中間列到左邊列的偏移以及先前右邊列到中間列的偏移,即在每個(gè)情況下左移兩行(+2)。需要注意的是宏塊列內(nèi)的每行用候選存儲(chǔ)器38內(nèi)的兩行表示(見(jiàn)圖7C)。該操作還反應(yīng)了先前左列偏移到右列,即左移四行(-4))。在三次列更新之后,地址再次匹配物理存儲(chǔ)器,因此多路復(fù)用器90、92和94的輸出值分別回到0、0和0。
多路復(fù)用器90、92和94的輸出反應(yīng)了序列中的下一偏移。在第二偏移后,原始中間列已經(jīng)被偏移到左邊列且現(xiàn)在被偏移到右邊列,原始右邊列現(xiàn)在被偏移到左邊列且原始左邊列現(xiàn)在被偏移到中間列。在該情況下,當(dāng)前左邊列是從其原先右列偏移+4行,當(dāng)前中間列是從其原先左列偏移-2行,且當(dāng)前右列是從其原先中間列偏移-2行。
如果雙穩(wěn)態(tài)觸發(fā)器84的輸出為零,第一列多路復(fù)用器90的輸出通過(guò)多路復(fù)用器88被傳遞。如果雙穩(wěn)態(tài)觸發(fā)器84輸出為1或2,則第二或第三列多路復(fù)用器92、94的輸出分別地通過(guò)多路復(fù)用器88。在每種情況下,多路復(fù)用器88的輸出被施加到加法器96,它將到邏輯候選存儲(chǔ)器地址(logical_cram_addr)的輸出相加。
這樣,加法器96將邏輯候選存儲(chǔ)器地址偏移相當(dāng)于列更新偏移狀態(tài)的量以為宏塊獲得物理候選存儲(chǔ)器地址。如果邏輯地址對(duì)應(yīng)于偏移操作后的右列,但物理地址實(shí)際對(duì)應(yīng)于中間列,則映射電路80提供必要的地址轉(zhuǎn)換。存儲(chǔ)器控制單元39然后使差值處理器34將候選存儲(chǔ)器38內(nèi)合適定址的數(shù)據(jù)與編碼存儲(chǔ)器36內(nèi)對(duì)應(yīng)的數(shù)據(jù)相比較,例如對(duì)8個(gè)輸出組進(jìn)行并行AD計(jì)算。
圖13是更詳細(xì)說(shuō)明差值處理器34的框圖。特別是,圖13描述由編碼存儲(chǔ)器36和候選存儲(chǔ)器38安排提供的同時(shí)生成8個(gè)組輸出的并行計(jì)算能力。如圖13內(nèi)示出,差值處理器可以包括多個(gè)絕對(duì)差值(AD)計(jì)算信道100A-100H(一起是100)。每個(gè)AD計(jì)算信道100從編碼存儲(chǔ)器36為要編碼的宏塊接收相應(yīng)的組輸出(a0-a7)。
對(duì)于比較和絕對(duì)差值計(jì)算,每個(gè)AD計(jì)算信號(hào)100還從候選存儲(chǔ)器38接收對(duì)應(yīng)的組輸出(b0-b7)。AD結(jié)果由一組8比特加法器102A-102D、一對(duì)9比特加法器104A、104B以及一10比特加法器106以級(jí)聯(lián)形式求和。如果可以使用更大的比特值用于表示象素,則可以實(shí)現(xiàn)更大的加法器。在任何情況下,加法器106的輸出被應(yīng)用于加法器108。加法器108通過(guò)雙穩(wěn)態(tài)觸發(fā)器對(duì)其本身輸出以及加法器106的輸出求和以生成絕對(duì)差值(SAD)結(jié)果之和。每八個(gè)輸入的集合(a0-a7)可以對(duì)應(yīng)微塊的八象素行。例如,可以為微塊A的每行(圖6A)將輸入提供給差值處理器,然后是微塊B的每行,而后是微塊C,而后是微塊D。累加可以在為每個(gè)宏塊計(jì)算了差值度量之后被鎖存,然后為對(duì)應(yīng)該宏塊的差值度量總累加再次被鎖存。
而且,在每次相應(yīng)的鎖存之后,確定是否中止任務(wù)。換而言之,每次微塊行鎖存可以提供最優(yōu)時(shí)間以確定是否超過(guò)任務(wù)閥值。如果是,則因?yàn)橐阎阉鞑粫?huì)產(chǎn)生最低差值,中止該特定任務(wù)的附加計(jì)算。
圖14是說(shuō)明在此描述的視頻編碼計(jì)數(shù)流圖。如圖14中示出,在搜索開始時(shí),即任務(wù)開始時(shí)(112),DSP 28生成要被編碼的宏塊象素索引(114)。存儲(chǔ)器控制單元39將宏塊象素索引轉(zhuǎn)換成視頻存儲(chǔ)器地址以及編碼存儲(chǔ)器地址(116),且宏塊從視頻存儲(chǔ)器32通過(guò)總線33加載到編碼存儲(chǔ)器36以及存儲(chǔ)器控制單元(118)。DSP 28還為搜索空間生成象素索引(120)。在將搜索空間象素索引轉(zhuǎn)換成視頻存儲(chǔ)器地址和候選存儲(chǔ)器地址之后(122),存儲(chǔ)器控制單元39用搜索空間宏塊加載候選存儲(chǔ)器38。
差值處理器34實(shí)現(xiàn)候選存儲(chǔ)器38和編碼存儲(chǔ)器36的多個(gè)組輸出間的并行AD計(jì)算(126)以將要編碼的宏塊與搜索空間內(nèi)的宏塊相比較。在并行AD計(jì)算的基礎(chǔ)上,差值處理器34生成整個(gè)搜索空間上最佳SAD結(jié)果(128)(或可能生成可接受結(jié)果而不考慮完全搜索空間)。在任何一種情況下,結(jié)果與要編碼的宏塊的象素索引相關(guān)聯(lián)。如描述的,差值處理器34還可以為形成宏塊的每個(gè)微塊生成SAD結(jié)果,而不需要附加的SAD計(jì)算。在為宏塊生成SAD結(jié)果后,DSP 28可以確定是否識(shí)別到可接受匹配,且如果是,則可以存儲(chǔ)運(yùn)動(dòng)向量以標(biāo)識(shí)要根據(jù)MPEG-4壓縮標(biāo)準(zhǔn)編碼的宏塊。
圖15是說(shuō)明使用列更新遞增地載入搜索空間的視頻編碼技術(shù)流圖。在由DSP 28生成下一象素索引(130、132)以驅(qū)動(dòng)另一搜索任務(wù)后,存儲(chǔ)器控制單元39將宏塊象素索引轉(zhuǎn)換成視頻存儲(chǔ)器地址和編碼存儲(chǔ)器地址(134)。相關(guān)宏塊然后從視頻存儲(chǔ)器32加載到編碼存儲(chǔ)器36(136)。然而在該情況下,搜索空間通過(guò)加入新列而不是重新載入整個(gè)搜索空間而遞增地更新。
相應(yīng)地,DSP 28為搜索空間列更新生成象素索引(138),它然后由存儲(chǔ)器控制單元39轉(zhuǎn)換以產(chǎn)生相關(guān)視頻存儲(chǔ)器地址和候選存儲(chǔ)器地址(140)。在將新宏塊列從視頻存儲(chǔ)器32加載到候選存儲(chǔ)器38之后(142),差值處理器34實(shí)現(xiàn)在候選存儲(chǔ)器38和編碼存儲(chǔ)器36的8個(gè)輸出組上的并行AD計(jì)算(144),并在多次并行AD計(jì)算之后生成最佳SAD結(jié)果(或可接受SAD結(jié)果)。
圖16是說(shuō)明候選存儲(chǔ)器內(nèi)存儲(chǔ)組的基地址映射流圖。圖16示出的過(guò)程對(duì)應(yīng)圖9內(nèi)的電路操作,雖然可以使用電路的其他變體。為了從象素索引獲得基地址,存儲(chǔ)器控制單元39對(duì)象素索引計(jì)算模8操作的結(jié)果(150)。如果結(jié)果大于或等于當(dāng)前的組索引(152),則基地址等于象素索引除以8的整數(shù)商數(shù)(154)。如果結(jié)果小于當(dāng)前的組索引(152),則基地址等于象素索引除以8的整數(shù)商數(shù)加1(156)。
圖17是說(shuō)明候選存儲(chǔ)器內(nèi)存儲(chǔ)器組物理地址映射流圖。圖17示出的過(guò)程對(duì)應(yīng)于圖11內(nèi)的電路68操作,雖然還可以使用其他電路變體。如果完成了宏塊內(nèi)的塊B的AD計(jì)算(160),則候選存儲(chǔ)器38內(nèi)的列基地址等于宏塊基地址加1(162)。如果沒(méi)有完成塊B(160),則候選存儲(chǔ)器38內(nèi)的列基地址等于宏塊基地址(164)。則如果或是完成塊B或是開始新搜索任務(wù)(166),候選存儲(chǔ)器38內(nèi)的邏輯存儲(chǔ)器地址等于列基地址(168)。如果塊B沒(méi)有完成或沒(méi)有開始新搜索(166),則邏輯候選存儲(chǔ)器地址偏移六行(170)。
圖18是說(shuō)明候選存儲(chǔ)器內(nèi)宏塊列更新的物理地址映射流圖。圖18內(nèi)示出的過(guò)程對(duì)應(yīng)圖12的電路80的操作,雖然可以使用電路的其他變體。如圖18內(nèi)示出,為了確定列基地址指明的列,存儲(chǔ)器控制單元39對(duì)列基地址應(yīng)用模3操作(174)。如果未啟用列更新特性(176),則不偏移邏輯候選存儲(chǔ)器地址(178)。這對(duì)應(yīng)于來(lái)自圖12內(nèi)多路復(fù)用器90、92、94的輸出(0,0,0),對(duì)應(yīng)從計(jì)數(shù)器98來(lái)的為0的計(jì)數(shù)器輸出,因此由多路復(fù)用器88傳遞0。
如果啟用列更新(176),存儲(chǔ)器控制單元39通過(guò)參考計(jì)數(shù)器98的輸出確定已發(fā)生的列更新偏移次數(shù)(180)?;跇?biāo)識(shí)的列和列更新偏移數(shù),存儲(chǔ)器控制單元39確定邏輯候選存儲(chǔ)器地址偏移的量以生成正確的物理候選存儲(chǔ)器地址(182)。存儲(chǔ)器控制單元39然后通過(guò)應(yīng)用地址偏移將邏輯候選存儲(chǔ)器地址轉(zhuǎn)換成物理候選存儲(chǔ)器地址(184)。
圖19是說(shuō)明使用相同計(jì)算生成宏塊差值以及形成宏塊的多個(gè)微塊差值的流圖。如示出,當(dāng)運(yùn)動(dòng)估計(jì)器29開始宏塊搜索迭代(191)時(shí),差值處理器34在逐個(gè)微塊行基礎(chǔ)上實(shí)現(xiàn)并行絕對(duì)差值(AD)計(jì)算。例如,值X可以經(jīng)初始化(192),且差值處理器34可以在正被編碼的宏塊內(nèi)的第一微塊的第X行上實(shí)現(xiàn)并行AD計(jì)算(193)。只要在微塊內(nèi)有更多的行(194的是分支),則值X被遞增(195),且對(duì)微塊的下一行實(shí)現(xiàn)并行的AD計(jì)算。
視頻塊計(jì)數(shù)器電路62可以確定在微塊內(nèi)是否有更多的行(194)。作為示例,視頻塊計(jì)數(shù)器電路62可以被集成為差值處理器34的一部分或可以形成DSP接口單元30的一部分。在確定為第一微塊的每行實(shí)現(xiàn)AD計(jì)算后,差值處理器34為第一微塊輸出差值(196)。該過(guò)程可以對(duì)宏塊的每個(gè)微塊繼續(xù)直到?jīng)]有微塊(197)。例如還可以在過(guò)程的該級(jí)使用任務(wù)中止技術(shù)以在總累加的差值超過(guò)任務(wù)閥值時(shí)中止任務(wù),閥值諸如對(duì)應(yīng)已經(jīng)為當(dāng)前迭代計(jì)算的最低差值的閥值。
在實(shí)現(xiàn)每個(gè)微塊的計(jì)算時(shí),差值處理器34可以累加宏塊的當(dāng)前差值,且可以輸出每個(gè)微塊的差值。第一微塊的差值可以是直到該點(diǎn)的差值累加。第二微塊的差值可以對(duì)應(yīng)到該點(diǎn)的總累加減去第一微塊的差值。第三微塊的差值可以對(duì)應(yīng)到該點(diǎn)的總累加減去第一和第二微塊的差值,如此類推。
視頻塊計(jì)數(shù)器電路62還確定何時(shí)累加了最后微塊的計(jì)算(197的是分支)。在該點(diǎn),差值處理器34輸出宏塊的差值(198),這是直到該點(diǎn)的AD計(jì)算的總累加。DSP 28或可能的DSPO接口單元30可以確定對(duì)于要編碼的當(dāng)前宏塊是否有其他任務(wù)實(shí)現(xiàn),所在微塊內(nèi)是否有還有的行(194)。同樣,任務(wù)是指用于將要編碼的當(dāng)前視頻塊與搜索空間內(nèi)的視頻塊比較的計(jì)算集合,且迭代是指對(duì)應(yīng)搜索空間的各種不同視頻塊與要編碼的當(dāng)前視頻塊比較的任務(wù)集合。
迭代還可以很簡(jiǎn)單,如將搜索空間定義的視頻塊集合與要編碼的視頻塊相比較,或可能更復(fù)雜,如包括定位搜索空間內(nèi)位置的初始化技術(shù)、嵌套搜索和/或定義和重新定義的搜索參數(shù)以盡快定位最佳匹配。在任何情況下,在運(yùn)動(dòng)估計(jì)器29實(shí)現(xiàn)了迭代的所有任務(wù)之后(199的否分支),視頻編碼器18對(duì)當(dāng)前宏塊編碼(200)。較有利的是,當(dāng)生成搜索空間的各個(gè)候選宏塊的差值以及形成候選的微塊差值時(shí),視頻編碼器可能在編碼過(guò)程中有各種任選項(xiàng)。
對(duì)應(yīng)于最佳候選微塊的四個(gè)分開的運(yùn)動(dòng)向量可以用于對(duì)宏塊編碼以改善壓縮。然而由于其他原因,偏向使用對(duì)應(yīng)最佳候選宏塊的單個(gè)運(yùn)動(dòng)向量,諸如為了符合只識(shí)別宏塊運(yùn)動(dòng)向量的解碼器。還可以加入紋理編碼,諸如通過(guò)對(duì)矩陣實(shí)現(xiàn)離散余弦變換(DCT)編碼,該矩陣定義了要編碼的當(dāng)前宏塊以及由運(yùn)動(dòng)向量定義的視頻塊之間的差值。
在對(duì)當(dāng)前宏塊已被編碼后,視頻編碼器18可以確定對(duì)于當(dāng)前視頻幀是否有另一宏塊以進(jìn)行編碼,即是否要實(shí)現(xiàn)另一次迭代(201)。如果否,則給定視頻幀的編碼過(guò)程完成(201的否分支),且該幀的編碼后視頻塊可以由發(fā)射機(jī)20在通信介質(zhì)15上發(fā)送(圖1)。然而,如果對(duì)于當(dāng)前視頻幀有另一要編碼的宏塊,則可以重新加載搜索空間(202),且可以開始下一迭代(191)。而且,重新加載搜索空間的過(guò)程(202)可以利用上述的列更新技術(shù),其中存儲(chǔ)器控制單元重新加載候選存儲(chǔ)器38列的子集并通過(guò)諸如上述的尋址方案跟蹤候選存儲(chǔ)器。在此描述的這些和其他技術(shù),是否使用獨(dú)立的技術(shù)以改善各種常規(guī)編碼過(guò)程或何時(shí)被組合使用,可以改善根據(jù)諸如MPEG-4標(biāo)準(zhǔn)的視頻編碼效率,且更好地方便在無(wú)線通信設(shè)備內(nèi)實(shí)現(xiàn)視頻編碼,所述無(wú)線通信設(shè)備諸如移動(dòng)電話,其中計(jì)算資源是有限的,且功耗也是重要考慮。
描述了多種不同的實(shí)施例。這些技術(shù)能通過(guò)減少存儲(chǔ)器轉(zhuǎn)移、計(jì)算周期和功耗改善視頻編碼,從而加速編碼過(guò)程并可能擴(kuò)展電池供電的視頻設(shè)備的壽命。另外,這些技術(shù)可以通過(guò)為宏塊和微塊生成差值而不需要附加AD計(jì)算而提供編碼過(guò)程中的任選項(xiàng)。在這些和可能的其他方式中,這些技術(shù)可以根據(jù)諸如MPEG-4或其他視頻編碼標(biāo)準(zhǔn)改善視頻編碼。
這些技術(shù)可以實(shí)現(xiàn)在硬件、軟件、固件或其組合內(nèi)。如果實(shí)現(xiàn)在軟件內(nèi),這些技術(shù)可以實(shí)現(xiàn)在包括程序代碼的計(jì)算機(jī)可讀介質(zhì)上,當(dāng)在對(duì)符合MPEG-4標(biāo)準(zhǔn)的視頻序列編碼的設(shè)備內(nèi)執(zhí)行時(shí),實(shí)現(xiàn)一個(gè)或多個(gè)上述的方法。在該情況下,計(jì)算機(jī)可讀介質(zhì)可以包括隨機(jī)訪問(wèn)存儲(chǔ)器(RAM),諸如同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SDRAM)、只讀存儲(chǔ)器(ROM)、非易失性隨機(jī)訪問(wèn)存儲(chǔ)器(NVRAM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、FLASH存儲(chǔ)器等。
程序代碼可以以計(jì)算機(jī)可讀指令形式存儲(chǔ)在存儲(chǔ)器內(nèi)。在該情況下,諸如DSP的處理器可以執(zhí)行存儲(chǔ)在存儲(chǔ)器內(nèi)的指令以執(zhí)行上述的一個(gè)或多個(gè)技術(shù)。在一些情況下,這些技術(shù)可以由DSP執(zhí)行,它調(diào)用各種硬件組件,諸如運(yùn)動(dòng)估計(jì)器以加速編碼過(guò)程。在其他情況下,視頻編碼器可以被實(shí)現(xiàn)為微處理器、一個(gè)或多個(gè)應(yīng)用專用集成電路(ASIC)、一個(gè)或多個(gè)場(chǎng)可編程門陣列(FPGA)或一些其他硬件軟件組合。這些和其他實(shí)施例在以下權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一方法,其特征在于包括并行地進(jìn)行差值計(jì)算,所述差值是要編碼的視頻塊的多個(gè)象素相對(duì)于搜索空間內(nèi)一個(gè)或多個(gè)候選視頻塊象素的差異;以及生成差值,所述差值至少部分基于計(jì)算的差值計(jì)算定義要編碼的視頻塊和候選視頻塊間的類似程度。
2.如權(quán)利要求1所述的方法,其特征在于還包括從候選存儲(chǔ)器的多個(gè)輸出組(bank)中獲取每個(gè)候選視頻塊內(nèi)的多個(gè)象素。
3.如權(quán)利要求2所述的方法,其特征在于還包括接收標(biāo)識(shí)一個(gè)候選視頻塊的象素索引;將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的物理地址;以及基于物理地址從多個(gè)輸出組中檢取候選視頻塊內(nèi)的多個(gè)象素。
4.如權(quán)利要求3所述的方法,其特征在于還包括將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的邏輯地址,并將邏輯地址轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的物理地址。
5.如權(quán)利要求3所述的方法,其特征在于要編碼的視頻塊和每個(gè)候選視頻塊定義符合MPEG-4標(biāo)準(zhǔn)的象素的16乘16宏塊。
6.如權(quán)利要求1所述的方法,其特征在于還包括并行地計(jì)算以下兩者間的差值,即少于要編碼的視頻塊行內(nèi)所有象素以及搜索空間的候選視頻塊象素間差值。
7.如權(quán)利要求1所述的方法,其特征在于所述搜索空間定義了按列安排的多個(gè)候選視頻塊陣列。
8.如權(quán)利要求7所述的方法,其特征在于還包括用搜索空間中的候選視頻塊加載候選存儲(chǔ)器;并行地計(jì)算要編碼的第一視頻塊內(nèi)的多個(gè)象素以及候選存儲(chǔ)器內(nèi)的候選視頻塊間的差值計(jì)算;重新用候選視頻塊加載候選存儲(chǔ)器的一個(gè)子集,所述候選視頻塊對(duì)應(yīng)于搜索空間內(nèi)的一個(gè)新列;以及并行地計(jì)算要被編碼的第二視頻塊內(nèi)多個(gè)象素以及候選存儲(chǔ)器內(nèi)候選視頻塊間的差值。
9.如權(quán)利要求1所述的方法,其特征在于還包括根據(jù)MPEG標(biāo)準(zhǔn)對(duì)要被編碼的視頻塊進(jìn)行編碼。
10.如權(quán)利要求1所述的方法,其特征在于還包括生成差值,所述差值至少部分基于計(jì)算的差值計(jì)算定義了要被編碼的視頻塊子集和候選視頻塊子集間的類似程度。
11.一種設(shè)備,其特征在于包括差值處理器,用于并行地計(jì)算差值,所述差值是要被編碼的視頻塊的多個(gè)象素相對(duì)搜索空間內(nèi)的一個(gè)或多個(gè)候選視頻塊的象素間的差值;以及視頻編碼控制器,所述控制器生成差值,所述差值至少部分基于計(jì)算的差值計(jì)算定義了要被編碼的視頻塊和候選視頻塊間的類似程度,所述控制器標(biāo)識(shí)產(chǎn)生可接受差值的特定候選,并使用特定候選的運(yùn)動(dòng)向量對(duì)要編碼的視頻塊編碼。
12.如權(quán)利要求11所述的設(shè)備,其特征在于還包括候選存儲(chǔ)器,所述存儲(chǔ)器存儲(chǔ)候選視頻塊,所述差值處理器從候選存儲(chǔ)器內(nèi)的多個(gè)輸出組檢取每個(gè)候選視頻塊內(nèi)的多個(gè)象素。
13.如權(quán)利要求12所述的設(shè)備,其特征在于所述視頻編碼控制器生成標(biāo)識(shí)一個(gè)候選視頻塊的象素索引,所述設(shè)備進(jìn)一步包括存儲(chǔ)器控制單元,以將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的物理地址,所述差值處理器基于物理地址從多個(gè)輸出組檢取候選視頻塊內(nèi)的多個(gè)象素。
14.如權(quán)利要求13所述的設(shè)備,其特征在于所述存儲(chǔ)器控制單元將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的邏輯地址,并將邏輯地址轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的物理地址。
15.如權(quán)利要求13所述的設(shè)備,其特征在于要編碼的視頻塊以及每個(gè)候選視頻塊定義符合MPEG-4標(biāo)準(zhǔn)的16乘16象素陣列。
16.如權(quán)利要求11所述的設(shè)備,其特征在于所述差值處理器并行計(jì)算差值,所述差值是小于要編碼的視頻塊行內(nèi)所有象素和搜索空間內(nèi)候選視頻塊象素間的差值。
17.如權(quán)利要求11所述的設(shè)備,其特征在于所述搜索空間定義了按列安排的多個(gè)候選視頻塊陣列。
18.如權(quán)利要求17所述的設(shè)備,其特征在于還包括存儲(chǔ)器控制單元,該控制單元用搜索空間內(nèi)的候選視頻塊加載候選存儲(chǔ)器用于并行地計(jì)算差值計(jì)算。
19.如權(quán)利要求11所述的設(shè)備,其特征在于所述視頻編碼控制器根據(jù)MPEG標(biāo)準(zhǔn)的一個(gè)對(duì)要編碼的視頻塊編碼。
20.如權(quán)利要求11所述的設(shè)備,其特征在于計(jì)算差值計(jì)算包括計(jì)算絕對(duì)差值計(jì)算。
21.一設(shè)備,其特征在于并行地計(jì)算差值的裝置,所述差值是要編碼的視頻塊的多個(gè)象素相對(duì)于搜索空間內(nèi)一個(gè)或多個(gè)候選視頻塊的象素的差值;生成差值的裝置,所述差值至少部分基于計(jì)算的差值計(jì)算定義了要被編碼的視頻塊和候選視頻塊間的類似程度;標(biāo)識(shí)產(chǎn)生可接受差值的特定候選的裝置;以及使用特定候選的運(yùn)動(dòng)向量對(duì)要編碼的視頻塊編碼的裝置。
22.如權(quán)利要求21所述的設(shè)備,其特征在于還包括用于從候選存儲(chǔ)器內(nèi)多個(gè)輸出組檢取每個(gè)候選視頻塊內(nèi)多個(gè)象素的裝置。
23.如權(quán)利要求22所述的設(shè)備,其特征在于還包括用于接收標(biāo)識(shí)一個(gè)候選視頻塊的象素索引的裝置;將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)物理地址的裝置;以及基于物理地址從多個(gè)輸出組檢取候選視頻塊內(nèi)的多個(gè)象素的裝置。
24.如權(quán)利要求23所述的設(shè)備,其特征在于還包括將象素索引轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的邏輯地址的裝置;以及將邏輯地址轉(zhuǎn)換成候選存儲(chǔ)器內(nèi)的物理地址的裝置。
25.如權(quán)利要求23所述的設(shè)備,其特征在于要編碼的視頻塊和每個(gè)候選視頻塊定義了符合MPEG-4標(biāo)準(zhǔn)的一個(gè)16乘16象素宏塊陣列。
26.如權(quán)利要求21所述的設(shè)備,其特征在于還包括用于并行計(jì)算少于要編碼的視頻塊行內(nèi)所有象素和搜索空間內(nèi)候選視頻塊間的差值。
27.如權(quán)利要求21所述的設(shè)備,其特征在于所述搜索空間定義了按列安排的多個(gè)候選視頻塊的一個(gè)陣列。
28.如權(quán)利要求27所述的設(shè)備,其特征在于還包括用于將搜索空間內(nèi)的候選視頻塊加載候選存儲(chǔ)器的裝置;用于并行地計(jì)算要被編碼的第一視頻塊內(nèi)的多個(gè)象素以及候選存儲(chǔ)器內(nèi)的候選視頻塊間的差值計(jì)算的裝置;用所述候選視頻塊重新加載候選存儲(chǔ)器子集的裝置,所述候選視頻塊對(duì)應(yīng)于搜索空間內(nèi)的新列;以及并行地計(jì)算要被編碼的第二視頻塊內(nèi)多個(gè)象素以及候選存儲(chǔ)器內(nèi)候選視頻塊間的差值的裝置。
29.如權(quán)利要求21所述的設(shè)備,其特征在于還包括根據(jù)MPEG標(biāo)準(zhǔn)的一個(gè)對(duì)要被編碼的視頻塊進(jìn)行編碼的裝置。
30.如權(quán)利要求21所述的設(shè)備,其特征在于還包括生成差值的裝置,所述差值至少部分基于計(jì)算的差值計(jì)算定義了要被編碼的視頻塊子集和候選視頻塊子集間的類似程度。
31.一無(wú)線通信設(shè)備,其特征在于包括視頻捕獲設(shè)備,以捕獲包括視頻塊的視頻幀;視頻編碼器,并行地計(jì)算差值,所述差值是要編碼的視頻塊的多個(gè)象素相對(duì)搜索空間內(nèi)的一個(gè)或多個(gè)候選視頻塊的象素間的差值;并生成差值,所述差值至少部分基于計(jì)算的差值計(jì)算定義了要被編碼的視頻塊和候選視頻塊間的類似程度,標(biāo)識(shí)產(chǎn)生可接受差值的特定候選,并使用特定候選的運(yùn)動(dòng)向量對(duì)要編碼的視頻塊編碼;以及無(wú)線發(fā)射機(jī),將編碼后的視頻塊發(fā)送到另一設(shè)備。
全文摘要
該揭示描述了一些視頻編碼技術(shù),所述技術(shù)減少了對(duì)視頻序列編碼需要的處理周期和存儲(chǔ)器轉(zhuǎn)移數(shù)目。這樣,揭示的視頻編碼技術(shù)可以增加視頻編碼速度并減少功耗??傮w而言,視頻編碼技術(shù)可以使用候選存儲(chǔ)器,所述存儲(chǔ)器按列存儲(chǔ)對(duì)應(yīng)于運(yùn)動(dòng)估計(jì)例程的搜索空間。存儲(chǔ)器控制單元可以定址候選存儲(chǔ)器以并行方式檢取多個(gè)象素,用于與要編碼的視頻塊象素的同時(shí)比較,例如使用絕對(duì)差值求和(SAD)或平方差值求和(SSD)技術(shù)。差值處理器可以并行地實(shí)現(xiàn)計(jì)算。另外,對(duì)于要編碼的相繼視頻塊,候選存儲(chǔ)器可以通過(guò)載入新的視頻塊列而遞增地經(jīng)更新,而不是重新載入整個(gè)搜索空間。
文檔編號(hào)H04N7/26GK1675933SQ03819330
公開日2005年9月28日 申請(qǐng)日期2003年6月18日 優(yōu)先權(quán)日2002年6月18日
發(fā)明者K·C·賴, G·C·西, C·常, A·P·馬羅二世 申請(qǐng)人:高通股份有限公司