亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于編碼的視頻壓縮的方法和系統(tǒng)的制作方法

文檔序號:7722834閱讀:217來源:國知局
專利名稱:用于編碼的視頻壓縮的方法和系統(tǒng)的制作方法
用于編碼的視頻壓縮的方法和系統(tǒng)
背景技術(shù)
數(shù)據(jù)壓縮是一種用于減少包括文件或?qū)ο蟮臄?shù)據(jù)量(如位數(shù))的眾所周知的技
術(shù)。數(shù)據(jù)壓縮的應(yīng)用常用于傳輸和儲存的目的。在典型的實(shí)現(xiàn)方式中,數(shù)據(jù)壓縮是使用算 法來實(shí)現(xiàn)的,這些算法通過將用于表示數(shù)據(jù)的信息編碼為更小并且更高效的數(shù)據(jù)量來減少 或消除不必要的數(shù)據(jù)重復(fù)。 如可變長度編碼(VLC)或前后自適應(yīng)可變長度編碼(CAVLC)的算法可用來減少需 要用來表示圖像的位數(shù)。在典型的數(shù)據(jù)壓縮方案中,前綴碼用于整數(shù),其將正整數(shù)映射為二 進(jìn)制碼字。 一般來說,用于整數(shù)的大多數(shù)前綴碼分配較長的碼字給較大的整數(shù)。這種編碼 可以通過簡單地按照降低概率將消息集合進(jìn)行排序,然后發(fā)送預(yù)期信息的索引,從而用于 有效地傳送從可能的消息集合中獲取的消息。 指數(shù)哥倫布(E鄧-Golomb)編碼是 一 個前后自適應(yīng)可變長度編碼的例子。 E鄧-Golomb碼是可變長度碼,并廣泛應(yīng)用于高級視頻編碼(AVC)(如H. 264)。然而,與其 他可變長度碼(例如霍夫曼碼) 一樣,因?yàn)檩斎霐?shù)據(jù)長度是變化的和不可預(yù)測的,因此對 Exp-Golomb碼進(jìn)行解碼可能有些困難。 在典型的E鄧-Golomb編碼算法中,給定E鄧-Golomb碼集合的所有單獨(dú)碼字是唯 一的。另外,給定碼字的n個最高有效位(MSB)總是不同于具有長度n的任何其他碼字。 進(jìn)一步,E鄧-Golomb碼字包括多個"引導(dǎo)位",該引導(dǎo)位后面跟著另外多個值位用來幫助指 定特定碼字的值。該值位的數(shù)目(通常)比引導(dǎo)位的數(shù)目少l。碼字的引導(dǎo)位包括多個引 導(dǎo)0位,后面跟著一個1位。引導(dǎo)O位的數(shù)目和碼字的值位的數(shù)目是相同的。對較短的碼 字(例如,單個數(shù)字的碼字),如果引導(dǎo)位的長度是l,就沒有引導(dǎo)O位和該碼字的值位。
對E鄧-Golomb碼進(jìn)行編碼的常規(guī)技術(shù)通常包括使用表映射以查找對應(yīng)于給定碼 字的碼號。以這樣的技術(shù),解碼查找表中項(xiàng)的數(shù)目可以等于2'(最長可能的碼長)。例如, 如果最大碼長是8,那么該表可以有28(256)個項(xiàng),而更長的碼長通常需要呈指數(shù)變化的更 大存儲器大小來用于該表。由于碼長是可變的并且長度達(dá)16位甚至32位是典型的,因此所 需用于查找表的存儲器大小可能是巨大的,為了在硬件中實(shí)現(xiàn),則需要大的硅面積。另外, 串行遍歷大型查找表所需要的時間也是相當(dāng)大的,并導(dǎo)致不必要的轉(zhuǎn)換延時。
此外,這些技術(shù)一般僅適用于無符號輸入并產(chǎn)生無符號E鄧-Golomb碼作為輸出。 因此,有符號(例如負(fù))輸入的編碼通常在轉(zhuǎn)換到E鄧-Golomb碼之前,需要從有符號輸入 到正輸入的額外轉(zhuǎn)換。自然地,這樣的中間轉(zhuǎn)換可能需要附加部件或者消耗掉附加處理時 間來執(zhí)行。

發(fā)明內(nèi)容
本發(fā)明的實(shí)施例涉及一種不使用大型查找表而通過將輸入編碼成E鄧-Golomb 碼來執(zhí)行數(shù)據(jù)壓縮的方法和系統(tǒng)。提供了一種允許將無符號數(shù)據(jù)輸入編碼成無符號 Exp-Golomb碼的方法。 —種新的方法通過編碼為無符號E鄧-Golomb碼實(shí)現(xiàn)無符號數(shù)據(jù)輸入的數(shù)據(jù)壓縮。該方法是通過結(jié)合相對小的查找表和一系列這里描述的算術(shù)運(yùn)算來實(shí)現(xiàn)的。另一個新 的方法提供了壓縮有符號數(shù)據(jù)的能力。該方法的實(shí)現(xiàn)無需最初轉(zhuǎn)換到無符號句法值,并且 同樣地通過結(jié)合相對小的查找表和一系列這里描述的算術(shù)運(yùn)算來實(shí)現(xiàn)。 這里描述的實(shí)施例有利地允許使用相對小的硅面積進(jìn)行快速數(shù)據(jù)轉(zhuǎn)換。電路設(shè)計(jì) 也使用可以容易進(jìn)行合成的部件,例如增量器、加法器/減法器、桶式移位器等。對無符號 和有符號的輸入值轉(zhuǎn)換進(jìn)行描述。


并入本說明書并形成本說明書一部分的附圖示出了本發(fā)明的實(shí)施例,并和本描述 一起用來解釋本發(fā)明的原理 圖1描述了根據(jù)本發(fā)明實(shí)施例的無符號輸入的示例性E鄧-Golomb編碼過程的流 程圖。 圖2描述了根據(jù)本發(fā)明的實(shí)施例的包括對無符號E鄧-Golomb碼進(jìn)行編碼的硬件 實(shí)現(xiàn)的邏輯部件的示例性配置框圖。 圖3描述了根據(jù)本發(fā)明的實(shí)施例的有符號輸入的示例性E鄧-Golomb編碼過程的 流程圖。 圖4描述了根據(jù)本發(fā)明的實(shí)施例的包括對有符號E鄧-Golomb碼進(jìn)行編碼的硬件 實(shí)現(xiàn)的邏輯部件的示例性配置框圖。
具體實(shí)施例方式
現(xiàn)在將詳細(xì)地給出一些實(shí)施例的參考。雖然結(jié)合可替代的實(shí)施例描述該主題,但 應(yīng)該理解它們不是旨在將要求的主題限制于這些實(shí)施例。相反,該要求的主題旨在覆蓋可 以包括在由附加的權(quán)利要求限定的要求的主題的精神和范圍內(nèi)的替代物、修改和等同物。
此外,在下面的詳細(xì)描述中,為了提供要求的主題的充分理解,闡述了許多特定細(xì) 節(jié)。但是,本領(lǐng)域技術(shù)人員應(yīng)該理解,缺少這些特定細(xì)節(jié)或具有其等同物的情況下,也可以 實(shí)施這些實(shí)施例。在其他示例中,為了避免不必要地使主題的方面和特征不明確,沒有詳細(xì) 地描述眾所周知的過程、程序、部件和電路。 下面詳細(xì)描述的部分以過程的方式表示與討論。盡管在此處的描述該過程的操作 的圖中(例如圖1、3)公開了步驟和其順序,但是這樣的步驟和順序是示例性的。實(shí)施例很 好地適合于執(zhí)行多種其他步驟或者在此處的流程圖中引用的步驟的改型,以及以與此處描 述和說明的不同的順序執(zhí)行。 詳細(xì)描述的一些部分以程序,步驟,邏輯框圖,處理和可在計(jì)算機(jī)存儲器上執(zhí)行的 數(shù)據(jù)位上操作的其他符號表示而介紹。這些描述和表示是數(shù)據(jù)處理領(lǐng)域中普通技術(shù)人員使 用的手段,以最有效地將他們工作的內(nèi)容傳達(dá)給本領(lǐng)域中的其他技術(shù)人員。這里的程序、計(jì) 算機(jī)執(zhí)行步驟、邏輯框圖、過程等通常地構(gòu)思為達(dá)到預(yù)期結(jié)果的步驟或指令的自相一致的 順序。步驟是那些需要物理量的物理操控。通常,但不是必須地,這些量采用能在計(jì)算機(jī)系 統(tǒng)中存儲、傳送、組合、比較和其他操控的電或磁信號的形式。主要出于常用的原因,將這些 信號稱為位、值、元素、符號、字符、項(xiàng)、數(shù)目等有時證明是方便的。 然而應(yīng)當(dāng)記住的是,所有這些和類似術(shù)語與合適的物理量相關(guān)并且僅是應(yīng)用到這
5些量的方便的標(biāo)識。除非與如下討論所明顯的內(nèi)容不同地特別說明,應(yīng)該理解全部的利用
諸如"訪問","寫入","包括","存儲","發(fā)射","遍歷","相關(guān)","識別"等術(shù)語的討論都涉及
到計(jì)算機(jī)系統(tǒng)或類似電子計(jì)算裝置的動作和過程,該類似電子計(jì)算裝置將在計(jì)算機(jī)系統(tǒng)寄
存器和存儲器內(nèi)表示為物理(電子)量的數(shù)據(jù)操控和轉(zhuǎn)換成在計(jì)算機(jī)系統(tǒng)存儲器或寄存器
或其他這樣的信息存儲、傳輸或顯示裝置中類似地表示為物理量的其他數(shù)據(jù)。 雖然下面的示例性配置顯示成合并特定的枚舉特征和要素,應(yīng)該理解這種描述是
示例性的。因此,實(shí)施例很好地適合于包括不同的、附加的或更少的元素,特征或布置的應(yīng)用。 示例性的無符號E鄧-Golomb編碼過程 參考圖1,依照本發(fā)明不同的實(shí)施例描述編碼無符號輸入為無符號E鄧-Golomb碼 的示例性過程100的流程圖。過程100可以例如通過在如視頻處理裝置的處理系統(tǒng)中的處 理器執(zhí)行。步驟101-109也可以通過在此處描述的專用邏輯執(zhí)行,見圖2。
在圖1的步驟101,接收無符號輸入數(shù)據(jù)。輸入可以包括例如要編碼成E鄧-Golomb 碼的無符號整數(shù)。在一個實(shí)施例中,輸入以二進(jìn)制方式接收并且對應(yīng)于來自各種數(shù)據(jù)塊的 句法元素。在進(jìn)一步實(shí)施例中,輸入可以是具有1到16位之間(和包括l和16位)長度 的二進(jìn)制值,例如通過使用16位總線接收的。 在步驟103,步驟101接收的輸入轉(zhuǎn)換成移位輸入。轉(zhuǎn)換接收的輸入包括例如將值 加到輸入且邏輯上通過向量移位這個和。在一個實(shí)施例中,加到輸入的值等于1 (算術(shù)上)。 加值到輸入可以例如由增量器執(zhí)行。在進(jìn)一步實(shí)施例中,在右方向上,移位向量的量值是1。 例如,轉(zhuǎn)換輸入可以包括加l到輸入和右移此結(jié)果的和(以二進(jìn)制) 一位,使得去除(例如, 放棄)最低有效位(例如,輸入與值的和的最右邊的位)。在典型的實(shí)施例中,放棄最低有 效位不需要附加邏輯門。 在步驟105,確定具有非零(例如,l)值的移位輸入的最高有效位的位置。確定最 高有效非零位的位置("MSB位置")可以包括例如串行掃描通過移位數(shù)據(jù)的位,從最高有 效位開始并且進(jìn)展到最低有效位,并檢測第一個(最高有效)"1"值。
在步驟107,從如在步驟105中確定的移位輸入的最高有效非零位的位置獲得信 息。在一個實(shí)施例中,通過參考最高有效非零位的位置值的查找表獲得信息。在進(jìn)一步實(shí) 施例中,查找表包括不多于32項(xiàng)(對于16位輸入)。 在一個實(shí)施例中,在步驟107獲得的信息包括前綴,該前綴包括對應(yīng)于最高有效 非零位的位置的具有預(yù)定數(shù)目的位的值。在進(jìn)一步實(shí)施例中,前綴是33位的值,其中除了 設(shè)置為值1的第n位,該值的全部位為O,其中n是值33-MSB位置(針對具有16位最大可 能大小的輸入)。例如,在步驟103轉(zhuǎn)換的移位輸入中,如果具有非零值的最高有效位是從 右邊的第3位,則MSB位置具有值3, n具有值30,并且前綴是33位值,其中除了設(shè)置為1的 第30位外,該值的每一位都是0。 在一些實(shí)施例中,在步驟107獲得的信息也包括為具有可變數(shù)目的位的二進(jìn)制值 的前綴值。在一個實(shí)施例中,前綴值包括l左移相當(dāng)于最高有效非零位的值的量值。接著 前面的例子,具有值為3的MSB位置的前綴值等于1000 (1左移3位)。
在一些實(shí)施例中,在步驟107獲得的信息也包括碼長,該碼長包括了通過過程100 產(chǎn)生的E鄧-Golomb編碼位串的長度。在一個實(shí)施例中,碼長通過MSB位置值乘以2且加1到結(jié)果的積而得到。 還在進(jìn)一步實(shí)施例中,在步驟107獲得的信息也可以包括后綴移位值。在一個實(shí) 施例中,后綴移位值可以從數(shù)目33減去碼長而得到。 最后,在步驟109,在步驟107獲得的信息算術(shù)編碼以產(chǎn)生無符號輸出。在一個實(shí) 施例中,該信息通過獲得后綴(包括有預(yù)定數(shù)目位的值),并且在后綴值與步驟107獲得的 前綴值上執(zhí)行按位OR而算術(shù)上進(jìn)行編碼。在一個實(shí)施例中,通過從在步驟101接收的輸入 與在步驟103添加的值(例如1)的和減去在步驟107獲得的前綴值而獲得后綴。在進(jìn)一 步實(shí)施例中,在執(zhí)行與步驟107獲得的前綴的值的按位OR之前,通過將后綴桶式左移步驟 107獲得的后綴移位值將后綴首先轉(zhuǎn)換成最終后綴值。 數(shù)據(jù)的結(jié)果串(例如,33位串)輸出,并與在步驟107獲得的碼長結(jié)合對應(yīng)于在步 驟101接收輸入的無符號E鄧-Golomb編碼。在一個實(shí)施例中,位串輸出的最初m位可以與 包括壓縮文件或?qū)ο蟮腅鄧-Golomb編碼的位流結(jié)合(例如,附加),其中m等于碼長。因 而,使用E鄧-Golomb編碼的數(shù)據(jù)壓縮可以由具有大大地減小尺寸的用于參考的查找表實(shí) 現(xiàn),從而導(dǎo)致節(jié)約材料成本,并且減少串行遍歷用于參考的查找表需要的延時,允許在其中 可以執(zhí)行編碼的更小硬件平臺。 在以下的表I中給出過程100的示例性的偽碼 復(fù)I assign data_in_plusl = data_in+l; assign data_in_plusl_div2 = data_in_plusl>>l; always@(data_in_plusl_div2)begin if(data_in_plusl_div2[15])begin size_Iz = 16; prefix = 000000000000000010000000000000000; prefix_value= (1<<16); end else if(data_in_plusl_div2[14])begin size_Iz = 15; prefix = 000000000000000100000000000000000; prefix_value= (1<<15); end else if(data_in_plusl_div2[13])begin size_Iz = 14; prefix = 000000000000001000000000000000000; prefix_value= (1<<14); end else if(data_in_plusl_div2[12])begin size_Iz = 13; prefix = 000000000000010000000000000000000; prefix_value= (1<<13); end else if(data_in_plusl_div2[11])begin size_Iz = 12; prefix = 000000000000100000000000000000000; prefix_value= (1<<12);end
end
end
end
end
end
end
end
end
end
Lf (data_in_plusl_div2 [10]) begin size_Iz = 11^
prefix=000000000001000000000000000000000;
prefix_value= (1<<11);
Lf (data_in_plusl_div2 [9]) begin size_Iz = 10;
prefix=000000000010000000000000000000000; prefix_value= (1<<10);
Lf (data_in_plusl_div2 [8]) begin size_Iz = 9;
prefix=000000000100000000000000000000000;
prefix_value= (1<<9);
Lf (data_in_plusl_div2 [7]) begin size_Iz = 8;
prefix=000000001000000000000000000000000;
prefix_value= (1<<8);
Lf (data_in_plusl_div2 [6]) begin size_Iz = 7;
prefix=000000010000000000000000000000000;
prefix_value= (1<<7);
Lf (data_in_plusl_div2 [5]) begin size_Iz = 6;
prefix=000000100000000000000000000000000;
prefix_value= (1<<6);
Lf (data_in_plusl_div2 [4]) begin size_Iz = 5;
prefix=000001000000000000000000000000000;
prefix_value= (1<<5);
Lf (data_in_plusl_div2 [3]) begin size_Iz = 4;
prefix=000010000000000000000000000000000;
prefix_value= (1<<4);
Lf (data_in_plusl_div2 [2]) begin size_Iz = 3;
prefix=000100000000000000000000000000000;
prefix_value= (1<<3);
Lf (data_in_plusl_div2 [1]) begin size_Iz = 2;0110] pref ix = 001000000000000000000000000000000;
O川] prefix_value= (1<<2);
0112] end
0113] else if(data_in_plusl_div2
)begin 0114] size_Iz = l;
0115] prefix = 010000000000000000000000000000000;
0116] prefix_value= (1<<1);
0117] end
0118] else begin
0119] size_lz = 0;
0120] prefix=100000000000000000000000000000000;
0121] prefix_value = l<<0);
0122] end 0123] end
0124] assign suffix = data_in_plusl_prefix_value;
0125] assign size_Iz_m2= (size_Iz<< 1);
0126] assign codelength= (size_Iz_m2+l);
0127] assign suffix_shift= (6-codelength);
0128] assign suffix_shifted = suffix<<suffix_shift;
0129] assign code_n_rev = pref ix | suff ix_shifted;
0130] assign code = code_n_rev;
0131] 示例性的無符號E鄧-Golomb編碼硬件配置
0132] 參考圖2,依照本發(fā)明的實(shí)施例,描述了包括將無符號E鄧-Golomb碼編碼的硬件 實(shí)現(xiàn)的邏輯電路部件的示例性硬件配置200的框圖。配置200可以例如包括圖1的過程 00的示例性硬件實(shí)現(xiàn)。
0133] 在一個典型的布置中,圖2的配置200包括增量器電路201、查找表存儲器205、減 法器電路207、桶式移位器電路209和邏輯門211。輸入和輸出總線的位大小應(yīng)當(dāng)理解成只 為示例性的目的。在一個實(shí)施例中,編碼輸入為E鄧-Golomb碼的過程包括修改輸入,如參 考圖1的步驟101所描述的。在該例子中,輸入是16位的值。修改輸入可以包括例如加預(yù) 定值到輸入并執(zhí)行輸入和該值的和的右移。在一個實(shí)施例中,預(yù)定值是l,并且通過增量器 201來執(zhí)行加值1到輸入。增量器201可以實(shí)施為例如數(shù)字電路(例如,加法器)。在狀態(tài) 203,輸入的增量值右移1位,因此去除增量值的最低有效位。在一些實(shí)施例中,可以算術(shù)上 執(zhí)行最低有效位的去除(例如,通過算術(shù)邏輯單元)并且不需要專用邏輯電路來執(zhí)行。
在過程100中,對應(yīng)于移位輸入的MSB位置的信息可以通過參考在查找表存儲器 205中的MSB位置獲得。在一個實(shí)施例中,查找表205對應(yīng)于輸入的最大長度。例如,具有 最大長度為16位的輸入的查找表205可以包括不超過32個項(xiàng),且每個項(xiàng)包括有足夠獲得 前綴的信息,(例如,prefix—value,等),如關(guān)于步驟107中所描述的。
從查找表205獲得的信息可以通過執(zhí)行一系列的算術(shù)與邏輯運(yùn)算用于算術(shù)上 將輸入編碼成無符號E鄧-Golomb碼。在一個實(shí)施例中,算術(shù)上將輸入編碼成無符號 E鄧-Golomb碼包括獲得后綴,桶式移位后綴和在桶式移位后綴與從查找表205獲得的前綴 上執(zhí)行按位OR。在進(jìn)一步實(shí)施例中,通過增量器201中增量的輸入減去從查找表205獲得 的前綴值來獲得后綴。減輸入可以由例如減法器207執(zhí)行。在一個實(shí)施例中,減法器207 是數(shù)字電路。
9
在一個實(shí)施例中,后綴桶式位移等于后綴移位值(從查找表205獲得)的位數(shù)目。 將該后綴桶式移位后綴移位值可以在例如桶式移位器209執(zhí)行。在一個實(shí)施例中,桶式移 位器209可以實(shí)施為包括多個多路復(fù)用器的數(shù)字電路。然后在從桶式移位器209獲得的結(jié) 果的最終后綴和從查找表205獲得的前綴上執(zhí)行按位0R。該按位OR可以例如在數(shù)字電路 的邏輯門上執(zhí)行。結(jié)果的輸出包括具有對應(yīng)輸入的長度的達(dá)到33位的無符號E鄧-Golomb 碼。產(chǎn)生于查找表205的5位輸出總線上的碼長值區(qū)別在無符號E鄧-Golomb碼中相關(guān)位。
示例性的有符號E鄧-Golomb編碼過程 參考圖3,依照不同的實(shí)施例,描述了編碼有符號輸入為有符號E鄧-Golomb碼的 示例性過程300的流程圖。過程300可以例如通過諸如視頻處理裝置的處理系統(tǒng)中的處理 器,或通過諸如圖4的專用硬件執(zhí)行。 在步驟301中,接收有符號輸入值。該輸入可以包括例如要編碼成E鄧-Golomb碼 的有符號整數(shù)。在一個實(shí)施例中,輸入接收有符號整數(shù)且對應(yīng)于來自各種數(shù)據(jù)塊的句法元 素。在進(jìn)一步實(shí)施例中,輸入可以具有在1到16位之間(和包括1和16位)的長度。
在步驟303中,在步驟301接收的輸入轉(zhuǎn)換成輸入的絕對值。將接收的輸入轉(zhuǎn)換 成絕對值可以包括例如將輸入轉(zhuǎn)換成輸入的二進(jìn)制值的二的補(bǔ)碼。通過反轉(zhuǎn)二進(jìn)制值(由 按位NOT操作),和加值1到這個結(jié)果值來執(zhí)行將輸入轉(zhuǎn)換成輸入的二進(jìn)制值的二的補(bǔ)碼。 加值1可以在例如增量器上執(zhí)行。 在步驟305中,確定具有非零(例如,l)值的輸入的絕對值(例如二的補(bǔ)碼)的最 高有效位的位置。確定最高有效非零位的位置("MSB位置")可以包括例如串行掃描通過 移位數(shù)據(jù)的位、從最高有效位開始且進(jìn)展到最低有效位,并且檢測第一個(最高有效)"1" 值。 在步驟307中,從如在步驟305中確定的輸入的絕對值的最高有效非零位的位置 獲得信息。在一個實(shí)施例中,通過參考最高有效非零位的位置值的查找表獲得信息。在進(jìn) 一步實(shí)施例中,查找表包括不多于32個項(xiàng)(對16位輸入)。通過要求具有不多于32項(xiàng)的 查找表,相對于通常包括具有216(65, 536)或232 (4, 294, 967, 296)項(xiàng)的查找表的常規(guī)技術(shù), 大大減少了在硬件中實(shí)現(xiàn)查找表而需要的一個或更多硅面積的尺寸。 在一個實(shí)施例中,在步驟307獲得的信息包括前綴,該前綴包含對應(yīng)于最高有效 非零位的位置的具有預(yù)定數(shù)目的位的值。在進(jìn)一步實(shí)施例中,前綴是33位值,在其中除了 設(shè)置為值1的第n位,該值的全部位都是0,其中n是值33-MSB位置(針對具有16位的最 大可能大小的輸入)。例如,在步驟303轉(zhuǎn)換的移位輸入中,如果具有非零值的最高有效位 是從右邊的第3位,則MSB位置具有值3, n具有值30,并且前綴是33位的值,其中除設(shè)置 成l的第30位外,該值的每一位都是0。 在一些實(shí)施例中,在步驟307獲得的信息也包括前綴值,該前綴值是具有可變數(shù) 目的位的二進(jìn)制值。在一個實(shí)施例中,前綴值包括l左移等于最高有效非零位的值的量值。 在接著之前的例子中,具有值3的MSB位置的前綴值等于1000 (1左移3位)。還在進(jìn)一步 實(shí)施例中,前綴值可以進(jìn)一步修改以獲得修正的前綴值。在一個實(shí)施例中,獲得修正的前綴 值包括將前綴值加到輸入的第16位的值上,并且邏輯上OR結(jié)果的和與在步驟301接收的 輸入的反轉(zhuǎn)(例如,執(zhí)行NOT操作之后的結(jié)果值)。換句話說,如果第15位等于l,或data— in中的全部位是O,那么將1加到前綴值上。否則,該修正的前綴值具有與前綴值相同的值。
在一些實(shí)施例中,在步驟307獲得的信息也包括碼長,該碼長包括通過過程300產(chǎn) 生的E鄧-Golomb編碼位串的長度。在一個實(shí)施例中,通過MSB位置值乘以2,并且加1到結(jié) 果的積獲得碼長。 在進(jìn)一步實(shí)施例中,在步驟307獲得的信息也可以包括后綴移位值。在一個實(shí)施 例中,該后綴移位值可以通過從數(shù)目33減去碼長獲得。 最后,在步驟309,將在步驟307獲得的信息算術(shù)上編碼以產(chǎn)生有符號輸出。在一 個實(shí)施例中,通過獲得后綴(包括具有預(yù)定數(shù)目位的值),并且在后綴值與步驟307獲得的 前綴值上執(zhí)行按位0R,將信息算術(shù)上編碼。在一個實(shí)施例中,通過從在步驟301接收的輸入 的絕對值與在步驟303加的值(例如,l)的和減去在步驟307獲得的修正前綴值,獲得后 綴。在進(jìn)一步實(shí)施例中,在執(zhí)行與在步驟307獲得的前綴值的按位0R之前,通過將后綴桶 式左移步驟307獲得的后綴移位值將后綴首先轉(zhuǎn)換成最終后綴值。 數(shù)據(jù)的結(jié)果串(例如,33位串)輸出,并且一旦與在步驟307獲得的碼長結(jié)合起 來,則對應(yīng)在步驟301接收的輸入的有符號E鄧-Golomb編碼。在一個實(shí)施例中,位串輸出 的最初m位可以與包括壓縮文件或目標(biāo)的E鄧-Golomb編碼的位流結(jié)合(例如,附加),其中 m等于碼長。除了上面描述的減少成本和延時的好處,由E鄧-Golomb碼實(shí)現(xiàn)的數(shù)據(jù)壓縮可 以執(zhí)行直接用于有符號輸入,而無需可能需要附加的部件或消耗額外的處理時間來執(zhí)行的 中間轉(zhuǎn)換為無符號句法值。
:0149] 在以下的表II中給出了過程300的示例性的偽碼
:0150] 表ii
:0151] assign data_abs = data_in [15] 7 (( data_in)+1) : data—in;
.0152] always@ (data_abs) begin
:0153] if (data_abs[15])begin
:0154] size_Iz = 16;
:0156] prefix_value= (1<<16);
:0157] end
:0158] else if (data_abs[14])begin
:0159] size_Iz = 15;
!0160] prefix = 000000000000000300000000000000000;
:0161] prefix_value= (1<<15);
:0162] end
:0163] else if (data_abs[13])begin
:0164] size_Iz = 14;
:0166] prefix_value= (1<<14);
:0167] end
:0168] else if (data_abs[12])begin
:0169] size_Iz = 13;
!0170] pref ix = 000000000000030000000000000000000;
:0171] prefix_value= (1<<13);
:0172] end
:0173] else if (data_abs[11])begin
:0174] size_Iz = 12;0176,
0177: 0178: 0179:
0180: 0181:
0182: 0183: ■0184 :0185 :0186 :0187 :0188 :0189
0190
0191 0192: 0193: 0194: 0195: 0196: 0197: 0198: 0199: 0200. ■0201 :0202 :0203 :0204 :0205 :0206
0207
0208 0209: 0210:
02":
0212:
0213:
0214:
0215:
0216:
:0217
:0218
:0219
:0220
:0221
:0222
:0223
end 6ls6
end ols6
end 6ls6
end 6ls6
end 6ls6
end 6ls6
end 6ls6
end 6ls6
end 6ls6
end 6ls6
prefix—value= (1<<12);
Lf(data一abs[30])begin size_Iz = 11;
prefix = 000000000003000000000000000000000;
prefix—value=
Lf (data一abs[9])begin size—Iz = 30; prefix1 prefix—value
Lf (data一abs[8])begin size_Iz = 95
prefix = 000000000300000000000000000000000;
prefix—value:
tf (data—abs[7])begin size_Iz = 85 prefix=
pref ix—value= (1<<8)
tf(data一abs[6])begin size_Iz = 7; pref ix =(
pref ix—value= (1<<7)
Lf(data—abs[5])begin size_Iz = 65 pref ix =( pref ix—value= (1<<6);
Lf(data一abs[4])begin size—Iz = 5;
prefix = 000003000000000000000000000000000;
prefix—value:
Lf(data一abs[3])begin size_Iz = 4; pref ix = prefix—value
Lf(data—abs[2])begin size—Iz = 3j
prefix = 000300000000000000000000000000000;
prefix—value=
:f(data一abs[1])begin
12
size_Iz = 2; prefix_value= (1<<2); end else if(data_abs
)begin size_Iz = l; prefix = 030000000000000000000000000000000; prefix_value= (1<<1); end else begin size_lz = 0; prefix = 300000000000000000000000000000000; prefix_value = l<<0); end end assign suffix= (data_abs<< 1)-prefix_value+(data_in[15] | | (! (Idata_in))); assign codelength= (size_Iz * 2+1); assign suffix_shift= (6-codelength); assign suffix_shifted = suffix<<suffix_shift; assign code_n_rev = pref ix | suff ix_shifted; assign code = code_n_rev; 示例性的有符號E鄧-Golomb編碼硬件配置 參考圖4,依照本發(fā)明的實(shí)施例,描述包括將有符號E鄧-Golomb碼編碼的硬件實(shí) 現(xiàn)的邏輯部件的示例性硬件配置400的框圖。配置400可以例如包括過程300的示例性硬 件實(shí)現(xiàn)。 在一個典型布置中,配置400包括增量器電路401、查找表存儲器405、減法器電路 407、桶式移位器電路409和邏輯門211。在一個實(shí)施例中,編碼輸入為E鄧-Golomb碼的過 程包括獲得輸入的絕對值作為2的補(bǔ)碼,如參考圖3的步驟301所描述的。輸入和輸出總 線的位大小是示例性的。獲得16位輸入值的絕對值可以包括例如邏輯上反轉(zhuǎn)輸入的值并 將預(yù)定值加到輸入。在一個實(shí)施例中,預(yù)定值為1,并且通過增量器401執(zhí)行將值1加到輸 入。增量器401可以例如實(shí)現(xiàn)為數(shù)字電路(如,加法器)。在狀態(tài)403,輸入的絕對值左移 1位,因而去除增量值的最低有效位。在一些實(shí)施例中,左移輸入的絕對值可以例如在數(shù)字 電路執(zhí)行。 在過程300中,對應(yīng)移位輸入的MSB位置的信息可以通過參考在查找表405的MSB 位置獲得。在一個實(shí)施例中,查找表405對應(yīng)于查找表存儲器205,如參考圖2所描述的。
從查找表405獲得的信息可以通過執(zhí)行一系列算術(shù)和邏輯運(yùn)算用于算術(shù)上編碼 輸入為有符號E鄧-Golomb碼。在一個實(shí)施例中,算術(shù)上編碼輸入為有符號E鄧-Golomb碼 包括獲得后綴,桶式移位該后綴并且在桶式移位后綴和從查找表405獲得的前綴上執(zhí)行按 位0R。在進(jìn)一步實(shí)施例中,通過增量器401中增量的輸入減去從查找表405獲得的修正前 綴值而獲得后綴。在一個實(shí)施例中,由等式從來自查找表405的前綴值和輸入數(shù)據(jù)(data_ in)獲得修正的前綴值 prefix_value+(data_in[15]I I ( ! (|data_in)))。
減輸入可以例如通過減法器407執(zhí)行。在一個實(shí)施例中,減法器407為數(shù)字電路。
在一個實(shí)施例中,后綴桶式移位等于后綴移位值(從查找表405得到)的位數(shù)目。 將該后綴桶式移位后綴移位值可以在例如桶式移位器409執(zhí)行。在一個實(shí)施例中,桶式移 位器409可以實(shí)現(xiàn)為包括多個多路復(fù)用器的數(shù)字電路。然后在從桶式移位器409獲得的結(jié) 果的最終后綴和從查找表405獲得的前綴上執(zhí)行按位0R。按位OR可以在例如數(shù)字電路的 邏輯門上執(zhí)行。結(jié)果的輸出包括具有對應(yīng)輸入的長度的達(dá)到33位的有符號E鄧-Golomb碼。 從查找表405產(chǎn)生的5位碼長區(qū)別在有符號Exp-Golomb碼中的相關(guān)位。
雖然已經(jīng)以對結(jié)構(gòu)特征和/或過程邏輯動作特殊的語言描述了主題,但是應(yīng)該理 解的是隨附的權(quán)利要求限定的主題不必局限于上面描述的具體特征或動作。而是,上面描 述的具體特征和動作公開為實(shí)現(xiàn)權(quán)利要求的示例形式。
權(quán)利要求
一種用于將數(shù)據(jù)的無符號輸入壓縮為無符號Exp-Golomb碼的方法,所述方法包括接收包括二進(jìn)制數(shù)據(jù)的輸入,所述輸入具有第一長度;將所述輸入轉(zhuǎn)換成移位輸入;確定所述移位輸入的最高有效位(MSB)位置;從所述MSB位置獲得對應(yīng)于所述輸入的多個信息;以及將所述多個信息算術(shù)上編碼以獲得壓縮輸出,所述壓縮輸出具有等于或者少于所述第一長度的碼長。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述的將所述輸入轉(zhuǎn)換成移位輸入包括 將值加到所述輸入以創(chuàng)建增量輸入;以及 放棄所述增量輸入的最低有效位以包括移位輸入。
3. 根據(jù)權(quán)利要求l所述的方法,其中所述確定最高有效位(MSB)位置包括確定對應(yīng)于 在所述移位輸入中具有非零值的最高有效數(shù)字的位置的值。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述獲得多個信息包括參考針對對應(yīng)于所述移位 輸入的所述MSB位置的多個值的數(shù)據(jù)查找表。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述輸入是16位二進(jìn)制值,且其中所述查找表包 括32個項(xiàng)。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述輸入是16位二進(jìn)制值,且其中所述獲得所述 多個信息包括獲得所述碼長,所述碼長對應(yīng)于所述MSB位置; 獲得前綴,所述前綴包括對應(yīng)于所述MSB位置的33位串; 獲得前綴值,所述前綴值包括對應(yīng)于所述MSB位置的可變數(shù)字值;以及 獲得后綴移位值,所述后綴移位值包括等于從預(yù)定值減去所述碼長的值。
7. 根據(jù)權(quán)利要求6所述的方法,其中將所述多個信息進(jìn)行所述算術(shù)上編碼包括 從所述后綴移位值、所述增量輸入和所述前綴值獲得最終后綴;以及 從所述最終后綴值和所述前綴產(chǎn)生表示所述輸入的所述壓縮輸出。
8. 根據(jù)權(quán)利要求7所述的方法,其中所述獲得所述最終后綴包括 從所述前綴值和所述增量輸入獲得后綴,所述后綴包括位串;以及 將所述后綴桶式移位所述后綴移位值。
9. 根據(jù)權(quán)利要求8所述的方法,其中產(chǎn)生所述壓縮輸出包括在所述最終后綴和所述前 綴上執(zhí)行按位0R。
10. 根據(jù)權(quán)利要求l所述的方法,其中所述壓縮輸出是前后自適應(yīng)可變長度碼 (CAVLC)。
11. 根據(jù)權(quán)利要求10所述的方法,其中所述CAVLC是Exp-Golomb碼。
12. —種用于壓縮數(shù)據(jù)的有符號輸入的方法,所述方法包括 接收包括二進(jìn)制數(shù)據(jù)的輸入,所述輸入具有第一長度; 將所述輸入轉(zhuǎn)換成所述輸入的絕對值; 參考查找表中的所述輸入的所述絕對值;從所述查找表獲得對應(yīng)于所述輸入的所述絕對值的多個信息;以及 將所述多個信息算術(shù)上編碼以獲得壓縮輸出,所述壓縮輸出具有等于或者少于所述第一長度的碼長。
13. 根據(jù)權(quán)利要求12所述的方法,其中所述輸入是16位值,且其中所述查找表包括32 個項(xiàng)。
14. 根據(jù)權(quán)利要求12所述的方法,其中所述獲得所述多個信息包括 獲得所述碼長,所述碼長對應(yīng)于與所述輸入的所述絕對值中具有非零值的MSB位置對應(yīng)的值;獲得前綴,所述前綴包括對應(yīng)于所述MSB位置的位串; 獲得對應(yīng)于所述輸入的數(shù)字的修正前綴值;以及獲得后綴移位值,所述后綴移位值包括等于從預(yù)定值減去所述碼長的值。
15. 根據(jù)權(quán)利要求14所述的方法,其中將所述多個信息進(jìn)行所述算術(shù)上編碼包括 從所述輸入的所述絕對值和所述后綴移位獲得后綴,所述后綴包括位串; 從所述后綴和所述后綴移位值獲得最終后綴;以及 從所述最終后綴值和所述前綴產(chǎn)生表示所述輸入的所述的壓縮輸出。
16. 根據(jù)權(quán)利要求15所述的方法,其中所述的獲得所述后綴包括 通過將所述輸入的所述絕對值左移位預(yù)先確定量而獲得移位輸入; 從所述移位輸入減去所述修正前綴值。
17. —種用于轉(zhuǎn)換數(shù)據(jù)的電路,所述電路包括 增量器,其耦合以接收輸入二進(jìn)制值并且加到其; 移位器,其耦合到所述增量器的輸出以將其移位;查找表,其耦合到所述移位器的輸出,以產(chǎn)生碼長輸出和第二輸出及第三輸出與第四 輸出;減法器、桶式移位器和0R門,其耦合到所述增量器的所述輸出和所述查找表的所述第 二、第三和第四輸出,以產(chǎn)生碼輸出值,其中所述碼長輸出對應(yīng)于所述碼輸出值。
18. 根據(jù)權(quán)利要求17所述的電路,其中 所述輸入是無符號二進(jìn)制數(shù)據(jù),以及 所述碼輸出值編碼為無符號E鄧-Golomb碼。
19. 根據(jù)權(quán)利要求17所述的電路,其中 所述輸入是有符號二進(jìn)制數(shù)據(jù);以及 所述碼輸出值編碼為有符號E鄧-Golomb碼。
20. 根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述輸入是16位值,且其中所述查找表包括32 個或者更少的項(xiàng)。
全文摘要
用于編碼的視頻壓縮的方法和系統(tǒng)。要求的主題的實(shí)施例提供一種通過將輸入編碼成Exp-Golomb碼而執(zhí)行數(shù)據(jù)壓縮的方法和系統(tǒng)。在一個實(shí)施例中,通過編碼為無符號Exp-Golomb碼實(shí)現(xiàn)數(shù)據(jù)輸入的數(shù)據(jù)壓縮。通過轉(zhuǎn)換輸入、確定具有非零值的轉(zhuǎn)換輸入中的最高有效位(MSB)的位置、從MSB的位置獲得信息并且將信息算術(shù)編碼以獲得壓縮輸出而實(shí)現(xiàn)該方法。
文檔編號H04N7/26GK101754020SQ200910260318
公開日2010年6月23日 申請日期2009年12月15日 優(yōu)先權(quán)日2008年12月15日
發(fā)明者翟智特·K.·拉達(dá)克里希南 申請人:輝達(dá)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1