專利名稱:生成數(shù)據(jù)流并識(shí)別在數(shù)據(jù)流內(nèi)的位置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法和裝置,包括計(jì)算機(jī)程序產(chǎn)品,以及一種用于識(shí)別碼字在可變長(zhǎng)度碼流內(nèi)的位置的方法。
背景技術(shù):
現(xiàn)在通常在任何具有顯示器的電子設(shè)備中觀看諸如照片、靜止圖片、圖形等等的圖像。然而,使圖像能夠在顯示器上觀看是不夠的;隨著所捕獲圖像的尺寸的增大,能夠在合理的時(shí)間內(nèi)顯示圖像也很關(guān)鍵。在顯示器上顯示圖像的電子設(shè)備的用戶在大多數(shù)情況下對(duì)能夠改變圖像的視野(view)感興趣。用戶所要求的一些常用操作是放大圖像以觀看該圖像的細(xì)節(jié)、搖動(dòng)縮放的圖像得到全景(pan in)以便跟蹤特征或僅僅是得到對(duì)細(xì)節(jié)的縱覽、旋轉(zhuǎn)圖像以便方便在顯示器上觀看等等。而且,由這種電子設(shè)備的用戶處理的圖像的分辨率日益增加,即用于限定圖像的像素的數(shù)目變得越來(lái)越大。
所述電子設(shè)備可以例如是移動(dòng)電話、個(gè)人數(shù)字助理、掌上電腦或就待處理的圖像看來(lái)具有有限的處理能力的其它設(shè)備。例如,許多具有用于觀看圖像的顯示器的所述電子設(shè)備并不包括足夠的處理能力以施行諸如縮放、搖全景等等的操作,也不會(huì)呈現(xiàn)出連續(xù)呈現(xiàn)的視圖之間的頻繁發(fā)生且令人煩惱的延遲。這可能導(dǎo)致圖像的持續(xù)放大或縮小可能被體驗(yàn)為呈現(xiàn)具有長(zhǎng)的圖像間延遲的多個(gè)圖像。因此,持續(xù)縮放的體驗(yàn)沒(méi)有被獲得,這可能使該用戶不愉快。這還可能導(dǎo)致用戶的錯(cuò)誤處理或輸入。
處理該問(wèn)題的一種常見方式是要么增加該設(shè)備的處理能力,要么避免其中用戶期望持續(xù)流暢的體驗(yàn)的操作。
發(fā)明內(nèi)容
本發(fā)明的目的是改進(jìn)對(duì)可變長(zhǎng)度編碼流和或圖像的操作,并改善對(duì)這種流和/或圖像進(jìn)行持續(xù)操作的用戶的體驗(yàn),以及改善將捕獲的圖像解碼至屏幕的時(shí)間。
根據(jù)本發(fā)明的一個(gè)方面,上述目的通過(guò)一種用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法來(lái)實(shí)現(xiàn)。該方法包括根據(jù)可變長(zhǎng)度編碼方案對(duì)包含多個(gè)碼字的數(shù)據(jù)流的碼字進(jìn)行編碼,并且在所述數(shù)據(jù)流中的編碼碼字之間插入分隔標(biāo)志。
通過(guò)提出分隔標(biāo)志,方便了對(duì)可變長(zhǎng)度碼數(shù)據(jù)流的局部訪問(wèn)。例如,加速對(duì)通過(guò)可變長(zhǎng)度編碼被編碼的表示任意區(qū)域的圖像的圖像數(shù)據(jù)的訪問(wèn)變得可能。而且該標(biāo)志使得無(wú)需對(duì)設(shè)置在待訪問(wèn)的數(shù)據(jù)之前的每個(gè)單一碼進(jìn)行解碼就訪問(wèn)形成可變長(zhǎng)度碼數(shù)據(jù)流中的數(shù)據(jù)的一部分的數(shù)據(jù)成為可能。因此,可以節(jié)省時(shí)間和處理能力。相同的優(yōu)點(diǎn)適用于為了指示共享相同傳輸和存儲(chǔ)介質(zhì)的分離數(shù)據(jù)流,例如被復(fù)用的數(shù)據(jù)流而對(duì)這些標(biāo)志的使用。
在一個(gè)實(shí)施例中,分隔標(biāo)志的所述插入通過(guò)在特定碼字之后插入至少16個(gè)連續(xù)的二進(jìn)制一被施行。在另一個(gè)實(shí)施例中,分隔標(biāo)志的所述插入通過(guò)插入16個(gè)連續(xù)的二進(jìn)制零而非16b個(gè)連續(xù)的一被施行。通過(guò)使用包含16個(gè)連續(xù)的二進(jìn)制一或零的標(biāo)志,可以快速而有效地施行對(duì)該標(biāo)志的搜索。其原因在于在字節(jié)級(jí)上即8比特上檢測(cè)該標(biāo)志變得可能。字節(jié)級(jí)的檢測(cè)是可能的,因?yàn)樵诳勺冮L(zhǎng)度碼數(shù)據(jù)流中的該標(biāo)志的一部分,16個(gè)連續(xù)二進(jìn)制一或零,將總是由僅包含二進(jìn)制一或僅包含二進(jìn)制零的字節(jié)表示。
根據(jù)另一實(shí)施例,特定碼字是數(shù)據(jù)塊的末尾碼字。通過(guò)使該標(biāo)志識(shí)別一的末尾以及另一個(gè)數(shù)據(jù)塊的開始,可以方便且明顯更快地施行對(duì)單獨(dú)數(shù)據(jù)塊的訪問(wèn)。
根據(jù)又一實(shí)施例,分隔標(biāo)志的所述插入通過(guò)在兩個(gè)或者更多特定碼字之間插入至少16個(gè)連續(xù)的二進(jìn)制一被施行。
在一個(gè)實(shí)施例中,用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法包括根據(jù)可變長(zhǎng)度編碼方案對(duì)包含多個(gè)數(shù)據(jù)塊的數(shù)據(jù)流的數(shù)據(jù)塊進(jìn)行編碼,并且在該數(shù)據(jù)流中的編碼數(shù)據(jù)塊之間插入分隔標(biāo)志。
如上關(guān)于上述實(shí)施例中的一個(gè)所提及的,提出分隔標(biāo)志方便了對(duì)可變長(zhǎng)度碼數(shù)據(jù)流的局部訪問(wèn)。例如,加速對(duì)通過(guò)可變長(zhǎng)度編碼被編碼的表示任意區(qū)域的圖像的圖像數(shù)據(jù)的訪問(wèn)變得可能。而且該標(biāo)志使得無(wú)需對(duì)設(shè)置在待訪問(wèn)的數(shù)據(jù)之前的每個(gè)單一碼進(jìn)行解碼就訪問(wèn)形成可變長(zhǎng)度碼數(shù)據(jù)流中的數(shù)據(jù)的一部分的數(shù)據(jù)成為可能。因此,可以節(jié)省時(shí)間和處理能力。相同的優(yōu)點(diǎn)可以適用于為了指示共享相同傳輸和存儲(chǔ)介質(zhì)的分離數(shù)據(jù)流,例如被復(fù)用的數(shù)據(jù)流而對(duì)這些標(biāo)志的使用。而且通過(guò)使該標(biāo)志識(shí)別數(shù)據(jù)塊,可以方便且明顯更快地施行對(duì)單獨(dú)數(shù)據(jù)塊的訪問(wèn)。
根據(jù)一個(gè)實(shí)施例,插入分隔標(biāo)志的動(dòng)作進(jìn)一步包括在晚于先前的塊被編碼且早于下一個(gè)編碼數(shù)據(jù)塊被添加到該先前的數(shù)據(jù)塊的時(shí)刻插入該分隔標(biāo)志。
在另一個(gè)實(shí)施例中,所述編碼和分隔標(biāo)志的插入由硬件施行,從而加速對(duì)該標(biāo)志的插入。
在一個(gè)實(shí)施例中,標(biāo)志在該數(shù)據(jù)流中的所述插入連同通過(guò)所述可變長(zhǎng)度編碼方案對(duì)該數(shù)據(jù)流的編碼一起被施行。通過(guò)插入該標(biāo)志連同將該數(shù)據(jù)流編碼成可變長(zhǎng)度碼,該編碼與如果要通過(guò)對(duì)整個(gè)流進(jìn)行解碼來(lái)將這些標(biāo)志插入該數(shù)據(jù)流中相比,可以明顯更快地被施行。
根據(jù)另一實(shí)施例,數(shù)據(jù)塊的編碼根據(jù)JPEG標(biāo)準(zhǔn)被施行,并且其中根據(jù)JPEG標(biāo)準(zhǔn),每個(gè)數(shù)據(jù)塊對(duì)應(yīng)于一數(shù)據(jù)單元。通過(guò)在包含JPEG數(shù)據(jù)塊的數(shù)據(jù)流中插入所述標(biāo)志,對(duì)由編碼數(shù)據(jù)流表示的圖像的特定部分的訪問(wèn)變得更快并且需要更小的處理能力。相應(yīng)地,可以方便對(duì)圖像的部分的操作。
根據(jù)另一實(shí)施例,該方法包括如果該分隔標(biāo)志包括二進(jìn)制一,則在該分隔標(biāo)志之前插入八個(gè)二進(jìn)制零,或者如果該分隔標(biāo)志包括二進(jìn)制零,則在該分隔標(biāo)志之前插入八個(gè)二進(jìn)制一。在分隔標(biāo)志之前插入這些序列中的任何一個(gè)或者任何其它已知序列,方便了識(shí)別該分隔標(biāo)志在該數(shù)據(jù)流中的精確起始點(diǎn)。可替代地,在該分隔標(biāo)志之前插入的序列是八比特組,其中所述八比特組包括至少一比特的二進(jìn)制零值,并且所述至少一比特的二進(jìn)制零值被設(shè)置在所述八比特組中的預(yù)定位置。而且,所述至少一比特的二進(jìn)制零值的預(yù)定位置可以是該八比特組中作為最低有效比特的位置。
根據(jù)本發(fā)明的另一方面,上述目的通過(guò)一種用于檢索與可變長(zhǎng)度碼流內(nèi)的特別感興趣的碼字相關(guān)的數(shù)據(jù)的方法來(lái)實(shí)現(xiàn)。該方法包括識(shí)別預(yù)定義的標(biāo)志在該可變長(zhǎng)度碼流內(nèi)的位置,計(jì)算該特別感興趣的碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置,并且檢索與該特別感興趣的碼字相關(guān)的數(shù)據(jù)。
通過(guò)在可變長(zhǎng)度碼流內(nèi)使用預(yù)定義的標(biāo)志以識(shí)別在該數(shù)據(jù)流中感興趣的位置,對(duì)該位置的訪問(wèn)與如果對(duì)整個(gè)數(shù)據(jù)流進(jìn)行解碼來(lái)找到該位置相比,可能需要更少的時(shí)間和處理能力。例如,加速對(duì)通過(guò)可變長(zhǎng)度編碼被編碼的表示圖像任意區(qū)域的圖像數(shù)據(jù)的訪問(wèn)變得可能。
該標(biāo)志還使得無(wú)需對(duì)設(shè)置在待訪問(wèn)的數(shù)據(jù)之前的每個(gè)單一碼進(jìn)行解碼就對(duì)置于可變長(zhǎng)度碼數(shù)據(jù)流內(nèi)的數(shù)據(jù)進(jìn)行訪問(wèn)成為可能。
相同的優(yōu)點(diǎn)可以適用于為了指示共享相同傳輸和存儲(chǔ)介質(zhì)的分離數(shù)據(jù)流,例如,被復(fù)用的數(shù)據(jù)流而對(duì)這些標(biāo)志的使用。
根據(jù)該方法的具體實(shí)施例,該方法進(jìn)一步包括識(shí)別至少一個(gè)附加預(yù)定義的標(biāo)志在該可變長(zhǎng)度碼流內(nèi)的位置,計(jì)算特別感興趣的至少一個(gè)附加碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置,并且檢索與該特別感興趣的至少一個(gè)附加碼字相關(guān)的數(shù)據(jù)。因?yàn)槎鄠€(gè)標(biāo)志被識(shí)別并且被用于對(duì)該數(shù)據(jù)流解碼,所以該過(guò)程可能需要更少的時(shí)間和處理能力。
在另一實(shí)施例中,檢索與該特別感興趣的碼字相關(guān)的數(shù)據(jù)包括檢索所計(jì)算出的該特別感興趣的碼字在所述碼流內(nèi)的起始位置,并將該起始位置插入該述可變長(zhǎng)度碼流的特征列表中。通過(guò)檢索該特別感興趣的碼字的位置并且保存該位置,可以映射該數(shù)據(jù)流,從而使得對(duì)所述數(shù)據(jù)流的部分進(jìn)行更快的將來(lái)訪問(wèn)成為可能。
根據(jù)又一實(shí)施例,檢索與該特別感興趣的碼字相關(guān)的數(shù)據(jù)包括檢索由該特定碼字表示的值。該實(shí)施例加速對(duì)更少使用的特定值的訪問(wèn),例如,當(dāng)對(duì)沒(méi)有假定要保存的圖像施行操作時(shí)。
在一個(gè)實(shí)施例中,該可變長(zhǎng)度碼流是圖像的壓縮表示,并且該特別感興趣的碼字是可變長(zhǎng)度碼流中的數(shù)據(jù)單元的DC系數(shù),因此方便了快速生成所捕獲圖像的縮小版本。
在某些其它實(shí)施例中,當(dāng)根據(jù)本發(fā)明的第二方面的方法時(shí),與關(guān)于本發(fā)明的第一方面所提到的標(biāo)志相對(duì)應(yīng)的標(biāo)志和關(guān)于本發(fā)明的第一方面所提到的標(biāo)志之前的碼的排列呈現(xiàn)大致相同的優(yōu)點(diǎn)。
在又一實(shí)施例中,所述識(shí)別該預(yù)定義的標(biāo)志的位置進(jìn)一步包括識(shí)別設(shè)置在該可變長(zhǎng)度碼流中與該標(biāo)志相鄰的預(yù)定符號(hào),并且其中從該預(yù)定符號(hào)到該預(yù)定義的標(biāo)志或從該預(yù)定義的標(biāo)志到該預(yù)定符號(hào)之間的轉(zhuǎn)變被識(shí)別為該標(biāo)志的位置。通過(guò)實(shí)施該實(shí)施例,方便了對(duì)預(yù)定義的標(biāo)志的位置的確定。
根據(jù)另一實(shí)施例,該預(yù)定符號(hào)是塊結(jié)束符號(hào)EOB。
在又一實(shí)施例中,對(duì)該特定碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置的計(jì)算是基于該預(yù)定義的標(biāo)志的位置和該標(biāo)志的已知長(zhǎng)度。
根據(jù)另一方法,該可變長(zhǎng)度碼流包括包含多個(gè)碼字的數(shù)據(jù)塊,其中該特別感興趣的碼字是數(shù)據(jù)塊的首個(gè)碼字,因此計(jì)算該特別感興趣的碼字的起始位置對(duì)應(yīng)于計(jì)算所述數(shù)據(jù)塊的起始位置。通過(guò)使該標(biāo)志識(shí)別一的末尾以及另一數(shù)據(jù)塊的開始,可以方便且明顯更快地施行對(duì)單獨(dú)數(shù)據(jù)塊的訪問(wèn)。
具體實(shí)施例方式 本發(fā)明涉及一種方便對(duì)已經(jīng)通過(guò)可變長(zhǎng)度編碼方案(VLC)或熵編碼方案被編碼的數(shù)據(jù)塊流快速編制索引的方法、裝置以及計(jì)算機(jī)程序產(chǎn)品。根據(jù)本發(fā)明的一個(gè)實(shí)施例,快速編制索引是通過(guò)在數(shù)據(jù)流中連續(xù)設(shè)置的數(shù)據(jù)塊之間插入數(shù)據(jù)塊分隔標(biāo)志來(lái)實(shí)現(xiàn)的。在本申請(qǐng)中,數(shù)據(jù)流應(yīng)該被理解為由于作為同一數(shù)據(jù)文件的部分、由于作為經(jīng)由網(wǎng)絡(luò)發(fā)送的同一數(shù)據(jù)消息的部分(根據(jù)網(wǎng)絡(luò)可以將這種消息分成不同的包或者在一個(gè)持續(xù)流中發(fā)送)、由于作為同一信息流的部分(例如,流音頻或流視頻或它們的組合)而彼此相關(guān)的數(shù)據(jù)。
本發(fā)明的實(shí)施例可應(yīng)用于任何類型的數(shù)據(jù)流,在這些數(shù)據(jù)流中,數(shù)據(jù)塊通過(guò)VLC方案或諸如哈夫曼編碼、算術(shù)編碼等等的熵編碼方案被編碼。這些編碼方案被設(shè)計(jì)為對(duì)信息進(jìn)行壓縮,并且使用這些編碼方案的一個(gè)效果在于并非編碼數(shù)據(jù)流中的所有符號(hào)(也稱為碼字)都具有相同的碼長(zhǎng)。
然而,這些編碼的方案是為了知道一個(gè)符號(hào)在哪里結(jié)束,另一個(gè)符號(hào)在哪里開始,必須處理流中所有先前的符號(hào)。
在本申請(qǐng)的上下文中,符號(hào)應(yīng)該被理解為來(lái)自一組單元的一個(gè)單元,其中每個(gè)單元具有分配給它們的單獨(dú)比特碼。在本申請(qǐng)中,數(shù)據(jù)塊應(yīng)該被理解為表示較大數(shù)據(jù)流的一部分的一些數(shù)據(jù),例如,圖像數(shù)據(jù)的一部分、音頻流的一部分、圖像流的矩形圖像塊等等。
在一個(gè)實(shí)施例中,可能期望根據(jù)更多的特定規(guī)則,例如通過(guò)交替來(lái)自第一信號(hào)的n個(gè)符號(hào)和來(lái)自第二信號(hào)的m個(gè)符號(hào)以及來(lái)自第三信號(hào)的k個(gè)符號(hào),來(lái)對(duì)兩個(gè)或者更多可變長(zhǎng)度編碼流進(jìn)行混合。
這對(duì)在接收端分離這些信號(hào)造成很大的困難,因?yàn)楸仨殞?duì)所有符號(hào)進(jìn)行處理以便找到不同信號(hào)之間的邊界。
在另一實(shí)施例中,還可能期望快速找到特定的符號(hào),或者例如在可變長(zhǎng)度編碼流中每隔n-1個(gè)符號(hào)得到的符號(hào)。這通常也要求所有符號(hào)被處理以便找到期望符號(hào)的位置。
在又一實(shí)施例中,期望能夠通過(guò)單條通信信道發(fā)送兩個(gè)或更多信號(hào)。這通常通過(guò)交替這兩個(gè)或更多信號(hào)來(lái)實(shí)現(xiàn),使得第一信號(hào)的n個(gè)比特首先被發(fā)送,之后第二信號(hào)的m個(gè)比特被發(fā)送,之后第一信號(hào)的b個(gè)比特被發(fā)送,等等。
本發(fā)明通過(guò)提出特定標(biāo)志來(lái)處理以上使用可變長(zhǎng)度編碼流中的問(wèn)題,這些特定標(biāo)志能夠被插入在可變長(zhǎng)度編碼過(guò)程中生成的流。這些標(biāo)志可以用于加速尋找數(shù)據(jù)流中的特定符號(hào)的過(guò)程。另外,本發(fā)明提出一種以有效方式去除所述標(biāo)志以便創(chuàng)建或再現(xiàn)一個(gè)或多個(gè)原始流的方法。
所述標(biāo)志的實(shí)例用法 可變長(zhǎng)度編碼流由具有不同比特長(zhǎng)度的符號(hào)構(gòu)成。例如,下列符號(hào)可以由下列碼字表示 A=10 B=110 C=111 D=0000 E=0001 下列符號(hào)“CBCDBEDCABCBECB”的比特流將變成 11111011 10000110 00010000 11110110 11111000 01111110 為了將該比特流解碼成原始符號(hào),必須從左邊對(duì)該比特流進(jìn)行編碼并且讀取這些比特直到產(chǎn)生有效符號(hào)為止。通過(guò)對(duì)整個(gè)比特流進(jìn)行解碼,可以獲知這些符號(hào)之間的邊界位于哪里
這種辦法的問(wèn)題在于用軟件施行相對(duì)來(lái)說(shuō)是耗時(shí)的,特別當(dāng)許多符號(hào)必須被處理時(shí)。
用十六進(jìn)制數(shù)書寫的同一比特流為 FB 86 10 F6 F8 7E 根據(jù)本發(fā)明的各種實(shí)施例,提出比特標(biāo)志或符號(hào)分隔標(biāo)志以允許快速尋找特定的標(biāo)志。
這些比特標(biāo)志可以由一連串長(zhǎng)度為八的倍數(shù)并且至少16比特長(zhǎng)的二進(jìn)制一構(gòu)成。最引入關(guān)注的標(biāo)志由16個(gè)二進(jìn)制一,即11111111 11111111構(gòu)成。
如果我們想在該流中的符號(hào)A之后標(biāo)記該邊界,該標(biāo)記將通過(guò)在該流中的符號(hào)A之后插入16個(gè)二進(jìn)制一來(lái)完成
因此,結(jié)果得到的比特流變成 1111101110000110000100001111011111111111111111101111100001111110 用二進(jìn)制數(shù)書寫的同一比特流為 FB 86 10 F7 FF FE F8 7E 現(xiàn)在,因?yàn)槲覀円呀?jīng)將十六個(gè)二進(jìn)制一寫入該流中,我們的標(biāo)志將總是得到至少一個(gè)從不被“00”跟隨的“FF”字節(jié);意味著自然出現(xiàn)的FF碼能夠用“FF00”來(lái)標(biāo)記以指示非標(biāo)志;根據(jù)本發(fā)明的各個(gè)實(shí)施例,所有其它FF的出現(xiàn)被保證為標(biāo)志。
這意味著我們能夠容易地在被看作連續(xù)字節(jié)的比特流中定位字節(jié)FF,而后我們能夠通過(guò)使用簡(jiǎn)單的算術(shù)邏輯去除該標(biāo)志并恢復(fù)原始流。
直到該標(biāo)志之前的字節(jié)的那些字節(jié)以及直到該標(biāo)志之后一個(gè)字節(jié)的那些字節(jié)能夠被直接復(fù)制。剩下的任務(wù)是恢復(fù)用括號(hào)標(biāo)記的通過(guò)插入二進(jìn)制一而被分離的字節(jié)。
FB 86 10(F7 FF FE)F8 7E 用二進(jìn)制數(shù)書寫F7 FF FE看起來(lái)如下
去除所插入的比特的操作變得很簡(jiǎn)單,因?yàn)楫?dāng)將它們連在一起時(shí),可以將所插入的二進(jìn)制一看作比特掩碼 原始字節(jié)=B1&B3=abcde111&11111fgh=abcdefgh 結(jié)果得到的流將變成 FB 86 10(F7&FE)F8 7E=FB 86 10 F6 F8 7E 如果知道了這十六個(gè)一之前或之后的符號(hào)并且它包含至少一個(gè)零,則找出所標(biāo)記的符號(hào)之間的邊界的比特位置,即該標(biāo)志的位置,是不費(fèi)吹灰之力的。當(dāng)該標(biāo)志已經(jīng)被去除時(shí),該標(biāo)志的位置是下一個(gè)符號(hào)的位置。
這可以通過(guò)尋找“FF”左邊的第一個(gè)零并且通過(guò)知道包含該零的符號(hào)的外觀和/或編碼,而后計(jì)算該符號(hào)在哪里結(jié)束來(lái)實(shí)現(xiàn)。
另一種實(shí)現(xiàn)方式是通過(guò)使用256個(gè)條目的查找表來(lái)尋找“FF”之前的字節(jié),該查找表輸入了具有已知符號(hào)的所有可能條目,比特位置(p)是該表中的值。
下面的實(shí)例示出查找表技術(shù) 假定十六個(gè)一之前的已知符號(hào)是10,則字節(jié)1僅有的可能性如下,其中x是二進(jìn)制一和二進(jìn)制零的所有排列,并且p指示16個(gè)一中的首個(gè)比特。
字節(jié)1字節(jié)2 xxxxxx10 p1111111,64排列,pos=8 xxxxx10p 11111111,32排列,pos=7 xxxx10p1 11111111,16排列,pos=6 xxx10p11 11111111,8排列,pos=5 xx10p111 11111111,4排列,pos=4 x10p1111 11111111,2排列,pos=3 10p11111 11111111,1排列,pos=2 0p111111 11111111,1排列,pos=1 在上述實(shí)例中,查找F7(11110111)會(huì)得到pos=6,(111101p11==111101111)。
如果不知道該符號(hào),則可能例如總是插入優(yōu)選具有8比特長(zhǎng)度的總長(zhǎng)度的已知碼(K),這允許我們?nèi)菀椎貙⑺コ瑫r(shí)知道定位所標(biāo)記的符號(hào)之間的邊界所需的符號(hào)。
用于該目的的很好的碼是“00000000”,因?yàn)楫?dāng)去除該標(biāo)志時(shí),它能夠被用作比特掩碼,即 K=0000 0000 這樣修改后的流將具有如下外觀
如果設(shè)置成字節(jié),修改后的流將具有如下外觀 1111101 110000110 00010000 11110000 00000111 11111111 11111110 11111000 01111110 并且如果用十六進(jìn)數(shù)書寫,就變成 FB 86 10(F0 07 FF FE)F8 7E 根據(jù)以上所述,可以找到FF,并且通過(guò)查看FF之前的表示已知符號(hào)K的字節(jié),可以獲知符號(hào)K在哪里結(jié)束,從而反向計(jì)算以找到K之前的符號(hào)在哪里結(jié)束,該結(jié)束位置表示所標(biāo)記的符號(hào)之間的邊界。
符號(hào)K在從右邊數(shù)第一個(gè)位置處具有其首個(gè)二進(jìn)制零,因此符號(hào)K之前的符號(hào)在所找到的二進(jìn)制零的左邊七個(gè)位置處結(jié)束。
F0 07 FF FE=11110000 00000111 11111111 11111110 然后,能夠通過(guò)尋找以下用x標(biāo)記的FF左邊的二進(jìn)制零的第一次出現(xiàn)來(lái)施行去除 11110000 0000x111 11111111 11111110 并且在找到該出現(xiàn)之后,去除從所找到的二進(jìn)制零的左邊7比特開始的接下來(lái)的24比特,用r標(biāo)記 11110rrr rrrrrrrr rrrrrrrr rrrrr110 現(xiàn)在可以將四個(gè)字節(jié)連成一個(gè),結(jié)果得到 1111110=F6 結(jié)果得到的總字節(jié)數(shù)組因此變成原始流 FB 86 10 F6 F8 7E。
由于為零的K能夠充當(dāng)掩碼,因此通過(guò)一些簡(jiǎn)單的算術(shù)邏輯很容易完成上述對(duì)該標(biāo)志的去除
B=(B1|B2)&B4=(F0|07)&FE=F7&FE=F6 下面給出當(dāng)通過(guò)同一信道發(fā)送兩個(gè)或更多信號(hào)時(shí)使用所述標(biāo)記方法的實(shí)例。
下面考慮將要通過(guò)僅一個(gè)信道發(fā)送的兩個(gè)比特流。
如果用十六進(jìn)制數(shù)書寫,則變成
如果用十六進(jìn)制數(shù)書寫,則變成 B0 87 1D 6B 85 82 在這個(gè)實(shí)例中,交替這兩個(gè)流,以便發(fā)送流A的五個(gè)碼字,之后發(fā)送流B的八個(gè)碼字,之后發(fā)送流A的五個(gè)碼字,等等
得到二進(jìn)制流 101101110000110101100001000011100011101000010000 101111101101011100001011000001000001100001111110 用十六進(jìn)制書寫 B7 0D 61 0E 3A 10 BE D7 0B 04 18 7E 現(xiàn)在接收機(jī)必須處理所有VLC符號(hào)以便再現(xiàn)這兩個(gè)原始流。
本發(fā)明的實(shí)施例引入特殊標(biāo)志以便能夠以更有效的方式分隔這兩個(gè)流,注意與下列實(shí)例相比,通常插入標(biāo)志的方案更加難得發(fā)生,因此不需要很多的開銷
B7 0C 01 FF FE 21 7C 01 FF FE 18 7E
B0 87 1D 00 7F FF EB 85 82 00 FF FF 現(xiàn)在通過(guò)輸出第一流直到FF為止,然后繼續(xù)輸出第二流直到FF為止,而后繼續(xù)輸出第一流直到下一個(gè)FF等等,能夠在這些FF標(biāo)志處交替這兩個(gè)流,從而得到下列傳輸流 B7 0C 01 FF B0 87 1D 00 7F FF FE 21 7C 01 FF EB 85 82 00 FF FFFE 18 7E 現(xiàn)在輪到接收機(jī)分隔這兩個(gè)流,它根據(jù)FF分隔這兩個(gè)流,顛倒上述過(guò)程 流AB7 0C 01 FF FE 21 7C 01 FF FE 18 7E 流B B0 87 1D 00 7F FFEB 85 82 00 FF FF 現(xiàn)在能夠通過(guò)簡(jiǎn)單的算術(shù)邏輯處理每個(gè)流以去除這些標(biāo)志 B=(b1|b2)&b4, 流AB7 0C 01 FF FE 21 7C 01 FF FE 18 7E 流BB0 87 1D 00 7F FF EB 85 82 00 FF FF 變成 流AB7(0C|01)&FE 21(7C|01)&FE 18 7E=B7 0C 21 7C 18 7E 流BB0 87 1D(00|7F)&EB 85(82|00)&FF=B0 87 1D 6B 85 82 這是原始流。在接收側(cè)上的分離操作在完全沒(méi)有任何比特操作或者可變長(zhǎng)度編碼的情況下完成。
根據(jù)另外的實(shí)施例,符號(hào)K可以是任何在預(yù)定義比特位置具有預(yù)定義的零的7比特?cái)?shù)。可以將上述描述推廣到通過(guò)知道預(yù)定義的零的位置來(lái)尋找該標(biāo)志的起點(diǎn)。根據(jù)這些實(shí)施例中的一個(gè),該零為最低有效比特,而最高有效7比特能夠用于其它數(shù)據(jù),例如從0增加到127的數(shù)。那樣,僅通過(guò)查看字節(jié)流來(lái)跳過(guò)多達(dá)128個(gè)標(biāo)記的碼字將是容易的。
根據(jù)本發(fā)明的一個(gè)方面,上述的通用方法可以被實(shí)現(xiàn)以用于處理JPEG流。以下描述對(duì)現(xiàn)有JPEG編碼器進(jìn)行微小變化的修改,以便創(chuàng)建不兼容的JPEG數(shù)據(jù)的包括指示DU的結(jié)束的特定標(biāo)志的可替換流的方式。然后,該不兼容的JPEG數(shù)據(jù)能夠被分析以映射每個(gè)DU的開始,并且當(dāng)將該不兼容的JPEG數(shù)據(jù)存儲(chǔ)到非易失性存儲(chǔ)器中時(shí),能夠去除這些不兼容標(biāo)志。
此外,應(yīng)該注意的是,碼字意在被理解為能夠被解碼以產(chǎn)生先前被編碼的單元的一連串比特。并非所有碼字都具有相同的長(zhǎng)度。盡管存在這個(gè)事實(shí),但是并不嚴(yán)格地意味著它們被當(dāng)作單一符號(hào)的可變長(zhǎng)度表示。這種更為復(fù)雜的碼字的實(shí)例是在jpeg流中使用的碼字。這里定義的JPEG碼字將被一非零數(shù)跟隨的一連串零基于該非零數(shù)的量級(jí)編碼成被該數(shù)的最低有效比特跟隨的零行程的符號(hào)連同該非零數(shù)的量級(jí)的組合。
因此根據(jù)我們的定義,針對(duì)被非零數(shù)或它們的任意子集跟隨的一連串零產(chǎn)生的整串零能夠被當(dāng)作碼字。
其它被當(dāng)作碼字的子集將是該零行程的符號(hào)連同該非零數(shù)的長(zhǎng)度的組合,或者表示最低有效比特的比特。
JPEG流由多個(gè)64個(gè)系數(shù)的數(shù)據(jù)單元(DU)組成。這些系數(shù)由可變長(zhǎng)度的哈夫曼編碼符號(hào)表示,通常最末尾的系數(shù)為零,并且塊結(jié)束(EOB)符號(hào)用于終止在末端具有零的數(shù)據(jù)單元(DU)。
對(duì)于一些應(yīng)用,知道DU的比特位置是很有用的 1)大的JPEG圖像在小屏幕上的即時(shí)顯示。如果已知DU位置,那么僅僅對(duì)塊的第一系數(shù)解碼從而創(chuàng)建原始圖像的按比例縮小的版本是很快的。
2)如果已知DU位置,則可以隨機(jī)訪問(wèn)任何DU。如果也知道絕對(duì)DC系數(shù),那么可以對(duì)某區(qū)域的JPEG進(jìn)行解碼而無(wú)需對(duì)先前的塊進(jìn)行解碼。
該方法允許修改可以存在于硬件中的編碼器部件,以便創(chuàng)建指示塊結(jié)束的標(biāo)志,接收SW部件可以用該標(biāo)志來(lái)尋找DU位置,而后容易地去除這些標(biāo)志,從而允許快速創(chuàng)建DU位置數(shù)據(jù)庫(kù),和/或編碼圖像的按比例縮小的版本。由于速度問(wèn)題,可以在HW中進(jìn)行編碼。這是一種簡(jiǎn)單的辦法,其允許標(biāo)準(zhǔn)JPEG HW被修改而無(wú)需用于存儲(chǔ)JPEG數(shù)據(jù)流的數(shù)據(jù)單元的起始位置的額外存儲(chǔ)器。額外的存儲(chǔ)器將需要2*數(shù)據(jù)單元數(shù)(16比特)=>2mpix=60000個(gè)DU=>120kb的存儲(chǔ)器,該存儲(chǔ)器非常昂貴,因?yàn)樗鼉?yōu)選地是占用大片硅區(qū)域的零等待狀態(tài)存儲(chǔ)器。
下列描述覆蓋了對(duì)這種JPEG數(shù)據(jù)的編碼和解碼。
編碼器 1)修改HW以便EOB總是被創(chuàng)建??商娲兀褂渺`巧的Q表來(lái)保證HW總是將EOB放在末尾。如果零總是插在量化系數(shù)nr 64中,則該硬件將需要插入EOB。
2)確保針對(duì)在原始哈夫曼編碼流中出現(xiàn)的每個(gè)FF,后綴“00”都被插入。這在有效JPEG流中已經(jīng)完成。
3)在每個(gè)DU(或EOB)之后添加多個(gè)八的倍數(shù)個(gè)但是至少是16個(gè)二進(jìn)制一。
這還能夠通過(guò)下列操作來(lái)完成修改哈夫曼表,使得EOB符號(hào)被修改成包含具有12個(gè)后綴二進(jìn)制一的通常的2-4字節(jié)的符號(hào),并且DC表被修改成在真正的DC符號(hào)之前包含四個(gè)一。然后,編碼器被強(qiáng)制總是對(duì)比特流中的EOB進(jìn)行編碼。這意味著在EOB和DC之間將總存在16個(gè)二進(jìn)制一的標(biāo)志。
作為本實(shí)施例的實(shí)例,就以上討論的對(duì)給定的正常EOB進(jìn)行的調(diào)整看來(lái),正常EOB和新EOB可以如下 正常EOB1010 新EOB1010111111111111 而且,正常DC和新DC可以如下表所述地那樣彼此相關(guān) 這個(gè)方案導(dǎo)致,利用上面的EOB的實(shí)例和在以上表中作為第三DC的新DC的實(shí)例,與第三DC相結(jié)合的EOB對(duì)應(yīng)于“1010 1111111111111111010”。因此,該結(jié)果與在EOB之后添加16個(gè)二進(jìn)制一時(shí)一樣。
以下給出通過(guò)該方法的一個(gè)實(shí)施例添加16個(gè)二進(jìn)制一的實(shí)例,以下實(shí)例被概括為通用哈夫曼編碼流。
該實(shí)例使用下列哈夫曼表 A=10(EOB) B=110 C=111 D=0000 E=0001 在硬件中編碼的符號(hào)“CBCDBEDCABCBECB”的哈夫曼編碼串得到以下比特流 11111011 1000011000010000 11110110 11111000 01111110... FB 86 10 F6 F8 7E 下劃線部分指示EOB。
然后,16個(gè)二進(jìn)制一被插在EOB之后 11111011 10000110 00010000 11110111 11111111 1111111011111000 01111110... FB 86 10 F7 FF FE F8 7E 現(xiàn)在給出解碼的實(shí)例,可以用軟件進(jìn)行解碼。
步驟1。尋找沒(méi)有后綴“00”的FF。在JPEG流中,僅“FF00”被允許,但是在這些規(guī)則下這不可能出現(xiàn)。意味著100%地確定找到的FF是我們的標(biāo)志。(假設(shè)重新開始的標(biāo)志不用于JPEG流) 現(xiàn)在,朝著EOB符號(hào)(這個(gè)實(shí)例中為10)向下查找,并且正好在EOB之后找到下一個(gè)DU的起點(diǎn)。
去除十六個(gè)一,并且記住下一個(gè)DU的比特地址。
11111011 10000110 00010000 11110110 11111000 01111110... FB 86 10 F7 FF FE F8 7E FB 86 10 F6 F8 7E 正如所看到的,僅一個(gè)字節(jié)必須被修改,兩個(gè)字節(jié)必須被去除,并且其余字節(jié)已經(jīng)被正確地字對(duì)齊 FB 86 10 F7 FF FE F8 7E FB 86 10 F6 F8 7E 更好地,如果插入的一的數(shù)目是32,那么其余的將被長(zhǎng)字對(duì)齊,允許32比特的內(nèi)存拷貝(memcpy)。這可能并不總是期望的,因?yàn)樵黾釉俣鄡蓚€(gè)字節(jié)就增加了文件的大小,從而增加了當(dāng)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)中的總線進(jìn)行轉(zhuǎn)移時(shí)的帶寬需求。
FB 86 10 F7 FF FF FF FE F8 7E FB 86 10 F6 F8 7E 將這兩個(gè)字節(jié)連成一個(gè)的過(guò)程也是不費(fèi)吹灰之力的 FB 86 10 F7 FF FE F8 7E FB 86 10 F6 F8 7E 連接F7和FE的操作很簡(jiǎn)單,僅僅是對(duì)它們進(jìn)行邏輯“與”操作,因?yàn)樗迦氲?6個(gè)一充當(dāng)比特掩碼。
字節(jié)1=F7 字節(jié)2=FE 連接的字節(jié)=字節(jié)1&字節(jié)2 當(dāng)考慮以下實(shí)例時(shí),就更容易明白上述內(nèi)容 abcde111 11111111 11111fgh 字節(jié)1=abcde111 字節(jié)2=11111fgh 連接的字節(jié)=abcde111&11111fgh=abcdefgh 上述實(shí)例描述了快速尋找流中所有DU的比特地址的過(guò)程,以及快速去除標(biāo)志以便再現(xiàn)原始流的過(guò)程。
該算法可以被修改以用于尋找每個(gè)DU的DC系數(shù)。然后,通過(guò)對(duì)DC系數(shù)進(jìn)行解碼,每個(gè)DC的數(shù)據(jù)可以用于再現(xiàn)大小是該圖像的八分之一的版本。如果需要大小是原來(lái)的四分之一的表示,也能夠完成,其中DC系數(shù)和若干個(gè)隨后的AC系數(shù)被解碼以便能夠?qū)@些系數(shù)施行2×2的IDCT。通過(guò)使這些標(biāo)志指示DC系數(shù)的位置,跳過(guò)對(duì)其它系數(shù)的哈夫曼解碼變得可能,從而允許在捕獲的瞬間快得多地將圖像縮放到小屏幕。該實(shí)施方式可以在任何應(yīng)用中使用以便加速顯示尺寸縮小的圖像的過(guò)程。
這種應(yīng)用的一個(gè)實(shí)例是使用顯示器作為取景器的圖像采集應(yīng)用。這些應(yīng)用中的一個(gè)普遍問(wèn)題是表示圖像視野的圖像呈現(xiàn)的延遲。換句話說(shuō),當(dāng)用戶在顯示器上看到期望的視野時(shí),時(shí)間已經(jīng)過(guò)去很久。在與此相似的應(yīng)用中,通過(guò)提供包含指示DC系數(shù)的位置的標(biāo)志的數(shù)據(jù)流,并實(shí)施查找這些標(biāo)志、在這些標(biāo)志處檢索與DC系數(shù)相關(guān)的信息并且根據(jù)這種信息生成即將在顯示器上呈現(xiàn)的尺寸縮小的圖像的顯示過(guò)程,可以顯著減小這種延遲。
此外,根據(jù)本發(fā)明的一個(gè)方面,提出一種對(duì)JPEG編碼器進(jìn)行微小變化的修改以便創(chuàng)建不兼容的JPEG數(shù)據(jù)的包括用于指示DU的結(jié)束的特殊標(biāo)志的可替代流的方式。然后,能夠?qū)Σ患嫒莸腏PEG數(shù)據(jù)進(jìn)行分析以映射每個(gè)DU的開始,并且在將該不兼容的JPEG數(shù)據(jù)存儲(chǔ)到非易失性存儲(chǔ)器時(shí)能夠去除這些不兼容標(biāo)志。
在上述實(shí)例中,該標(biāo)志被設(shè)置成在至少16個(gè)二進(jìn)制一處。該標(biāo)志還可以被設(shè)置成16個(gè)二進(jìn)制零,即0000000000000000。如果該標(biāo)志被設(shè)置成16個(gè)二進(jìn)制零,則在該標(biāo)志之前插入的已知碼可以是“11111111”。因此,碼“000000001111111111111111”被反轉(zhuǎn)為“111111110000000000000000”。
本發(fā)明能夠在數(shù)字電子電路中或者在計(jì)算機(jī)硬件、固件、軟件中或者在它們的組合中被實(shí)施。本發(fā)明的裝置能夠以有形地包含在機(jī)器可讀存儲(chǔ)設(shè)備中供可編程處理器執(zhí)行的計(jì)算機(jī)程序產(chǎn)品的方式實(shí)現(xiàn);本發(fā)明的方法步驟可以由執(zhí)行指令程序的可編程處理器通過(guò)對(duì)輸入數(shù)據(jù)進(jìn)行操作并生成輸出施行本發(fā)明的功能來(lái)施行。本發(fā)明可以有利地以一個(gè)或者更多計(jì)算機(jī)程序的方式實(shí)現(xiàn),這些計(jì)算機(jī)程序可在包括被連接為從數(shù)據(jù)存儲(chǔ)系統(tǒng)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備接收數(shù)據(jù)和指令并且將數(shù)據(jù)和指令發(fā)送至數(shù)據(jù)存儲(chǔ)系統(tǒng)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備的至少一個(gè)可編程處理器的可編程系統(tǒng)上執(zhí)行。每個(gè)計(jì)算機(jī)程序可以用高級(jí)程序化編程語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言實(shí)現(xiàn),或者如需要,用匯編語(yǔ)言或機(jī)器語(yǔ)言實(shí)現(xiàn);并且在任何情況下,該語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。合適的處理器包括,舉例來(lái)說(shuō),通用和專用微處理器。一般而言,處理器將從只讀存儲(chǔ)器和/或隨機(jī)存取存儲(chǔ)器接收指令和數(shù)據(jù)。一般而言,計(jì)算機(jī)將包括一個(gè)或更多用于存儲(chǔ)數(shù)據(jù)文件的大容量存儲(chǔ)器;這種設(shè)備包括諸如內(nèi)部硬盤和可移動(dòng)盤之類的磁盤;磁光盤;以及光盤。適合有形地包含計(jì)算機(jī)程序指令和數(shù)據(jù)的存儲(chǔ)設(shè)備包括所有形式的非易失性存儲(chǔ)器,舉例來(lái)說(shuō),包括諸如EPROM、EEPROM和閃存設(shè)備之類的半導(dǎo)體存儲(chǔ)器設(shè)備;諸如內(nèi)部硬盤和可移動(dòng)盤之類的磁盤;磁光盤;CD-ROM盤。以上任意一個(gè)能夠被ASIC(特定用途集成電路)增補(bǔ)或被并入ASIC中。
為了提供與用戶的交互,本發(fā)明可以在具有諸如用于向用戶顯示信息的顯示器或LCD屏幕之類的顯示設(shè)備的計(jì)算機(jī)系統(tǒng)上實(shí)施。用戶能夠通過(guò)各種輸入設(shè)備向計(jì)算機(jī)系統(tǒng)提供輸入,所述輸入設(shè)備例如鍵盤和諸如鼠標(biāo)之類的定點(diǎn)設(shè)備、軌跡球、麥克風(fēng)、觸控式顯示器、換能器讀卡器、磁帶或紙帶讀出器、書寫板、指示筆、語(yǔ)音或手寫識(shí)別器之類的輸入設(shè)備,或者任何其它已知輸入設(shè)備,當(dāng)然,還例如其它計(jì)算機(jī)。計(jì)算機(jī)系統(tǒng)能夠被編程為提供圖形用戶界面,計(jì)算機(jī)程序通過(guò)該圖形用戶界面與用戶交互。
最后,可選地,處理器能夠利用網(wǎng)絡(luò)連接連接至計(jì)算機(jī)或電信網(wǎng)絡(luò),例如,因特網(wǎng)或企業(yè)內(nèi)部互聯(lián)網(wǎng),在施行上述方法步驟過(guò)程中,處理器能夠通過(guò)該網(wǎng)絡(luò)連接從該網(wǎng)絡(luò)接收信息,或者可以將信息輸出到網(wǎng)絡(luò)。這種信息經(jīng)常用待利用處理器執(zhí)行的指令序列表示,可以例如以包含在載波中的計(jì)算機(jī)數(shù)據(jù)信號(hào)的形式從該網(wǎng)絡(luò)接收并輸出到該網(wǎng)絡(luò)。上述設(shè)備和材料對(duì)計(jì)算機(jī)硬件和軟件領(lǐng)域的技術(shù)人員來(lái)說(shuō)將是熟悉的。
應(yīng)該注意的是,本發(fā)明使用各種計(jì)算機(jī)實(shí)現(xiàn)的操作,這些計(jì)算機(jī)實(shí)現(xiàn)的操作涉及存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)。這些操作包括但不限于要求對(duì)物理量進(jìn)行物理操縱的操作。通常,雖然不是必要地,這些量采用能夠被存儲(chǔ)、被傳遞、組合、比較、以及以其它方式操縱的電信號(hào)或磁信號(hào)的形式。這里描述的形成本發(fā)明的部分的操作是有用的機(jī)器操作。所施行的操縱用術(shù)語(yǔ)來(lái)表示經(jīng)常是指,例如,產(chǎn)生、識(shí)別、運(yùn)行、確定、比較、執(zhí)行、下載或檢測(cè)。有時(shí)候,主要是為了通用的原因,把這些電信號(hào)或磁信號(hào)稱為比特、值、元素、變量、字符、數(shù)據(jù)等是方便的。然而,應(yīng)該記住的是,所有這些術(shù)語(yǔ)或類似的術(shù)語(yǔ)都與合適的物理量相關(guān)聯(lián),并且僅僅是應(yīng)用于這些量的方便標(biāo)簽。
本發(fā)明還涉及用于施行以上提及的操作的設(shè)備、系統(tǒng)或裝置。該系統(tǒng)可以為了所需目的而專門構(gòu)造,它也可以是由存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性激活或配置的通用計(jì)算機(jī)。上面所展現(xiàn)的過(guò)程并不固有地與任何特定計(jì)算機(jī)或其它計(jì)算裝置相關(guān)。特別地,各種通用計(jì)算機(jī)可以與根據(jù)這里的教導(dǎo)所寫的程序一起使用,或者可替代地,可以更方便地構(gòu)造更專用的計(jì)算機(jī)系統(tǒng)以施行所需操作。
已經(jīng)描述了本發(fā)明的若干種實(shí)施方式。然而,將理解的是,可以進(jìn)行不偏離本發(fā)明的精神和范圍的各種修改。
權(quán)利要求
1、一種用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法,所述方法包括
根據(jù)可變長(zhǎng)度編碼方案對(duì)包含多個(gè)碼字的數(shù)據(jù)流的碼字進(jìn)行編碼,以及
在該數(shù)據(jù)流中的編碼碼字之間插入分隔標(biāo)志。
2、根據(jù)權(quán)利要求1所述的方法,其中分隔標(biāo)志的所述插入通過(guò)在特定碼字之后插入至少16個(gè)連續(xù)的二進(jìn)制一被施行。
3、根據(jù)權(quán)利要求1所述的方法,其中分隔標(biāo)志的所述插入通過(guò)在特定碼字之后插入至少16個(gè)連續(xù)的二進(jìn)制零被施行。
4、根據(jù)權(quán)利要求2-3中的任一項(xiàng)所述的方法,其中該特定碼字是數(shù)據(jù)塊的末尾碼字。
5、根據(jù)權(quán)利要求1-2中的任一項(xiàng)所述的方法,其中分隔標(biāo)志的所述插入通過(guò)在兩個(gè)或者更多特定碼字之間插入至少16個(gè)連續(xù)的二進(jìn)制一被施行。
6、一種用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法,所述方法包括
根據(jù)可變長(zhǎng)度編碼方案對(duì)包含多個(gè)數(shù)據(jù)塊的數(shù)據(jù)流的數(shù)據(jù)塊進(jìn)行編碼,以及
在該數(shù)據(jù)流中的編碼數(shù)據(jù)塊之間插入分隔標(biāo)志。
7、根據(jù)權(quán)利要求6所述的方法,其中插入分隔標(biāo)志的動(dòng)作進(jìn)一步包括在晚于先前的塊被編碼且早于下一個(gè)編碼數(shù)據(jù)塊被添加到該先前的數(shù)據(jù)塊的時(shí)刻插入該分隔標(biāo)志。
8、根據(jù)權(quán)利要求1-7中的任一項(xiàng)所述的方法,其中所述編碼和分隔標(biāo)志的插入由硬件施行。
9、根據(jù)權(quán)利要求1-8中的任一項(xiàng)所述的方法,其中標(biāo)志在該數(shù)據(jù)流中的所述插入連同通過(guò)該可變長(zhǎng)度編碼方案對(duì)該數(shù)據(jù)流的編碼一起被施行。
10、根據(jù)權(quán)利要求6-8中的任一項(xiàng)所述的方法,其中對(duì)數(shù)據(jù)塊的編碼根據(jù)JPEG標(biāo)準(zhǔn)被施行,并且其中根據(jù)JPEG標(biāo)準(zhǔn),每個(gè)數(shù)據(jù)塊對(duì)應(yīng)于一數(shù)據(jù)單元。
11、根據(jù)權(quán)利要求6-10中的任一項(xiàng)所述的方法,其中該分隔標(biāo)志是至少16個(gè)連續(xù)的二進(jìn)制一的二進(jìn)制序列。
12、根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括在該分隔標(biāo)志之前插入八個(gè)二進(jìn)制零。
13、根據(jù)權(quán)利要求11所述的方法,進(jìn)一步包括在該分隔標(biāo)志之前插入八比特組,所述八比特組包括至少一比特的二進(jìn)制零值,并且所述至少一比特的二進(jìn)制零值被設(shè)置在所述八比特組中的預(yù)定位置。
14、根據(jù)權(quán)利要求13所述的方法,其中所述至少一比特的二進(jìn)制零值的預(yù)定位置是所述八比特組中作為最低有效比特的位置。
15、根據(jù)權(quán)利要求6-10中的任一項(xiàng)所述的方法,其中該分隔標(biāo)志是至少16個(gè)連續(xù)的二進(jìn)制零的二進(jìn)制序列。
16、根據(jù)權(quán)利要求15的所述方法,進(jìn)一步包括在該分隔標(biāo)志之前插入八個(gè)二進(jìn)制一。
17、根據(jù)權(quán)利要求1-10中的任一項(xiàng)所述的方法,其中所述分隔標(biāo)志是是被至少16個(gè)二進(jìn)制一跟隨的八個(gè)零的二進(jìn)制序列。
18、一種用于檢索與可變長(zhǎng)度碼流內(nèi)特別感興趣的碼字相關(guān)的數(shù)據(jù)的方法,所述方法包括
識(shí)別預(yù)定義的標(biāo)志在該可變長(zhǎng)度碼流內(nèi)的位置,
計(jì)算該特別感興趣的碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置,以及
檢索與該特別感興趣的碼字相關(guān)的數(shù)據(jù)。
19、根據(jù)權(quán)利要求18所述的方法,進(jìn)一步包括
識(shí)別至少一個(gè)附加預(yù)定義的標(biāo)志在該可變長(zhǎng)度碼流內(nèi)的位置,
計(jì)算特別感興趣的所述至少一個(gè)附加碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置,并檢索與特別感興趣的至少一個(gè)附加碼字相關(guān)的數(shù)據(jù)。
20、根據(jù)權(quán)利要求18-19中的任一項(xiàng)所述的方法,其中檢索與特別感興趣的碼字相關(guān)的數(shù)據(jù)包括檢索計(jì)算出的該特別感興趣的碼字在該數(shù)據(jù)流內(nèi)的起始位置,并將該起始位置插入該可變長(zhǎng)度碼流的特征列表中。
21、根據(jù)權(quán)利要求18-19中的任一項(xiàng)所述的方法,其中檢索與該特別感興趣的碼字相關(guān)的數(shù)據(jù)包括檢索由該特定碼字表示的值。
22、根據(jù)權(quán)利要求21所述的方法,其中該可變長(zhǎng)度碼流是圖像的壓縮表示,并且該特別感興趣的碼字是可變長(zhǎng)度碼流中的數(shù)據(jù)單元的DC系數(shù)。
23、根據(jù)權(quán)利要求18-22中的任一項(xiàng)所述的方法,進(jìn)一步包括從該可變長(zhǎng)度碼流中去除所述預(yù)定義的標(biāo)志。
24、根據(jù)權(quán)利要求18-24中的任一項(xiàng)所述的方法,其中該標(biāo)志是至少16個(gè)連續(xù)的二進(jìn)制一的二進(jìn)制序列。
25、根據(jù)權(quán)利要求18-24中的任一項(xiàng)所述的方法,其中識(shí)別預(yù)定義的標(biāo)志的位置進(jìn)一步包括識(shí)別與該標(biāo)志相鄰地設(shè)置在該可變長(zhǎng)度碼流中的預(yù)定符號(hào),并且其中從該預(yù)定符號(hào)到該預(yù)定義的標(biāo)志或從該預(yù)定義的標(biāo)志到該預(yù)定符號(hào)的轉(zhuǎn)變被識(shí)別為該標(biāo)志的位置。
26、根據(jù)權(quán)利要求25所述的方法,其中該預(yù)定符號(hào)是塊結(jié)束符號(hào)EOB。
27、根據(jù)權(quán)利要求25-26中的任一項(xiàng)所述的方法,其中對(duì)該特定碼字在該可變長(zhǎng)度碼流內(nèi)的起始位置的計(jì)算基于該預(yù)定義的標(biāo)志的位置和該標(biāo)志的已知長(zhǎng)度。
28、根據(jù)權(quán)利要求18-27中的任一項(xiàng)所述的方法,其中該可變長(zhǎng)度碼流包括包含多個(gè)碼字的數(shù)據(jù)塊,其中該特別感興趣的碼字是數(shù)據(jù)塊的首個(gè)碼字,因此計(jì)算該特別感興趣的碼字的起始位置對(duì)應(yīng)于計(jì)算所述數(shù)據(jù)塊的起始位置。
全文摘要
一種用于生成通過(guò)可變長(zhǎng)度編碼方案被編碼的數(shù)據(jù)流的方法和包括計(jì)算機(jī)程序產(chǎn)品的裝置。包含多個(gè)碼字的數(shù)據(jù)流的碼字根據(jù)可變長(zhǎng)度編碼方案被編碼。分隔標(biāo)志被插在該數(shù)據(jù)流中的編碼數(shù)據(jù)塊之間。
文檔編號(hào)H04N7/50GK101647288SQ200880005052
公開日2010年2月10日 申請(qǐng)日期2008年2月15日 優(yōu)先權(quán)日2007年2月16日
發(fā)明者薩米·尼爾米, 喬安·斯滕 申請(qǐng)人:斯卡拉多Ab公司