專利名稱::Jpeg頭碼流分析的硬件實現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于數(shù)字圖像處理領(lǐng)域,涉及一種能用硬件來實現(xiàn)JPEG頭碼流分析的方法。
背景技術(shù):
:JPEG圖像格式是當(dāng)今Internet以及數(shù)碼相機(jī)所采用的最為流行的圖像格式,其優(yōu)點是壓縮比大,圖像質(zhì)量損失小。JPEG碼流包括兩部分內(nèi)容頭碼流部分和負(fù)載數(shù)據(jù)部分。頭碼流包含解碼所必需的反量化表,哈夫曼碼表,幀頭,條帶頭,重啟間隔等內(nèi)容;負(fù)載數(shù)據(jù)是經(jīng)過DCT變換、量化、哈夫曼編碼后的圖像數(shù)據(jù)。JPEG頭碼流的結(jié)構(gòu)特點是其包含多個MARK標(biāo)記位,由該些所述的MARK標(biāo)記位來區(qū)分其后跟隨的不同成分碼表和相關(guān)參數(shù)信息;所述的MARK標(biāo)記位由兩個字節(jié)組成,結(jié)構(gòu)為FF**,其中FF是統(tǒng)一的標(biāo)記,**則由具體的碼流來區(qū)分之后跟隨的碼表的不同內(nèi)容。在FF"之后跟隨的兩個字節(jié)表示本成分碼表內(nèi)容的字節(jié)總數(shù)(包括所述的用來記載字節(jié)總數(shù)的這2個字節(jié))。其中,JPEG頭碼流的開始MARK標(biāo)記位"FFD8"例外,該標(biāo)記位后沒有表示字節(jié)總數(shù)的碼符,更沒有相關(guān)的碼表內(nèi)容,該MARK標(biāo)記位"FFD8"后直接跟隨下一個成分碼流的MARK標(biāo)記。MARK標(biāo)記位"FFDB"A^量化表的開始標(biāo)記位,即該MARK標(biāo)記位"FFDB"之后的2個字節(jié)表示整個反量化表字節(jié)總數(shù),再之后的碼流即為反量化表的碼流信息。哈夫曼碼表的開始MARK標(biāo)記位是"FFC4",即其之后的2個字節(jié)表示整個哈夫曼碼表的字節(jié)總數(shù),再之后的碼流即為哈夫曼碼表的碼流信息。幀頭的開始MARK標(biāo)記位是"FFCO",即其之后的2個字節(jié)表示整個幀頭的字節(jié)總數(shù),再之后的碼流即為幀頭的碼流信息。條帶頭的開始MARK標(biāo)記位是"FFDA",即其之后的2個字節(jié)表示整個條帶頭的字節(jié)總數(shù),再之后的碼流即為條帶頭的碼流信息。JPEG頭碼流分析結(jié)果的正確與否直接影響最終的解碼結(jié)果,所以對碼流的分析要絕對準(zhǔn)確,由于頭碼流字節(jié)相對較少,所以在分析時間上要求不高。在片上系統(tǒng)(SOC)設(shè)計中,JPEG頭碼流一般采用軟件解碼,其特點是實現(xiàn)靈活,缺點是對系統(tǒng)配置要求較高,實現(xiàn)成本較高。而在專用集成電路設(shè)計中,JPEG頭碼流部分則必須由硬件實現(xiàn)。由于頭碼流的內(nèi)容變化多樣,因而在用硬件分析實現(xiàn)時,具有一定的復(fù)雜度,綜上原因,本發(fā)明提出一種JPEG頭碼流分析的硬件實現(xiàn)方法。
發(fā)明內(nèi)容本發(fā)明的主要目的在于提供一種JPEG頭碼流分析的硬件實現(xiàn)方法,其通過對每次輸入的32比特數(shù)據(jù)的分析,構(gòu)建四種狀態(tài)轉(zhuǎn)換的狀態(tài)機(jī),得到碼流中各個MARK標(biāo)記位的所在位置,隨后由對各個標(biāo)記位的預(yù)處理過渡到對各碼流成分的詳細(xì)處理,準(zhǔn)確地對頭碼流各成分?jǐn)?shù)據(jù)進(jìn)行分析;本方法實現(xiàn)思路清晰,實現(xiàn)過程簡單,適合于硬件電路實現(xiàn)。為達(dá)上述目的,本發(fā)明提供一種JPEG頭碼流分析的硬件實現(xiàn)方法,其包含以下步驟步驟1、JPEG頭碼流以每節(jié)拍32比特位寬,即4個字節(jié)的頻率向頭碼流分析模塊輸入數(shù)據(jù);步驟2、基于各個MARK標(biāo)記位中統(tǒng)一的"FF,,標(biāo)記會以相同的概率出現(xiàn)在32比特位寬的碼流中的第1,2,3或4字節(jié)位置上,構(gòu)建MARK標(biāo)記位的基于4種狀態(tài)相互轉(zhuǎn)換的狀態(tài)機(jī),以將當(dāng)前MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置作為當(dāng)前狀態(tài),將當(dāng)前碼流成分的字節(jié)總數(shù)作為轉(zhuǎn)換條件,確定轉(zhuǎn)換后的下一狀態(tài),即下一個碼流成分的MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置;步驟3、對于不同狀態(tài)下出現(xiàn)的各種不同碼流成分標(biāo)記進(jìn)行預(yù)處理,具體包括步驟3.1、置位輸入計數(shù)器根據(jù)當(dāng)前成分碼流所處的狀態(tài)以及字節(jié)總數(shù),置位輸入計數(shù)器將要處理的本成分碼流的32位比特數(shù)據(jù)的次數(shù),隨后每處理完32比特位數(shù)據(jù),計數(shù)器減l,直到計數(shù)器為0;步驟3.2、MARK標(biāo)記位處理進(jìn)程入口預(yù)處理才艮據(jù)當(dāng)前MARK標(biāo)記位所在的位置和狀態(tài),判斷當(dāng)前的碼流成分類型,并置位相應(yīng)成分處理標(biāo)志位和數(shù)據(jù)請求標(biāo)記;步驟4、對于不同成分碼流標(biāo)記進(jìn)行各自的處理進(jìn)程,分別包括步驟4.1、對碼流進(jìn)行丟棄處理進(jìn)程;步驟4.2、對反量化碼表進(jìn)行處理進(jìn)程;步驟4.3、對哈夫曼碼表進(jìn)行處理進(jìn)程;步驟4.4、對幀頭進(jìn)行處理進(jìn)程;步驟4.5、對條帶流進(jìn)行處理進(jìn)程。步驟2中,所迷的MARK標(biāo)記位的4種轉(zhuǎn)換狀態(tài)具體為0狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第l字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的前8位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的后16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);1狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第2字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的高位,而下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的低位,由此得到本碼流成分的字節(jié)總數(shù)值;2狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第3字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的前16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);3狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第4字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的中間第9-24位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)。步驟2中,所迷的MARK標(biāo)記位的4種狀態(tài)的轉(zhuǎn)換條件和過程具體為將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取才莫操作,若得到結(jié)果為1時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值減1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為0,則下個MARK標(biāo)記位的狀態(tài)值為3;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取模操作,若得到結(jié)果為2時,下個MARK標(biāo)記位的狀態(tài)值不變,即為當(dāng)前MARK標(biāo)記位的狀態(tài)值;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行^^莫操作,若得到結(jié)果為3時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為0;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取模操作,若得到結(jié)果為0時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加2;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為2,則下個MARK標(biāo)記位的狀態(tài)值為0;若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為1。所述的狀態(tài)機(jī)的初始狀態(tài)是0,由于JPEG輸入頭碼流的最前兩個字節(jié)必須是JPEG頭碼流的開始MARK標(biāo)記位"FFD8",且其隨后直接緊跟下一個成分碼流的MARK標(biāo)記,故其下一個狀態(tài)強(qiáng)制為2。步驟3.2中,判斷當(dāng)前的碼流成分類型的具體步驟為當(dāng)前碼流成分的MARK標(biāo)記位為0狀態(tài),則判斷當(dāng)前MARK標(biāo)記位中的后一字節(jié)數(shù)據(jù),即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位凄史據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為1狀態(tài),則判斷當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為2狀態(tài),則判斷當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為3狀態(tài),則判斷下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程。步驟3.2中,對步驟4中進(jìn)行的不同進(jìn)程的標(biāo)記,具體為依據(jù)上述判斷成分碼流類型的數(shù)據(jù),即MARK標(biāo)記位中的FF之后的字節(jié)數(shù)據(jù),若該數(shù)據(jù)為EO-EF,或者F0-FE,則標(biāo)記步驟4中進(jìn)行步驟4.1所述的碼流丟棄處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DB,則標(biāo)記步驟4中進(jìn)行步驟4.2所述的反量化碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為C4,則標(biāo)記步驟4中進(jìn)行步驟4.3所述的哈夫曼碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為C0,則標(biāo)記步驟4中進(jìn)行步驟4.4所述的幀頭處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DA,則標(biāo)記步驟4中進(jìn)行步驟4.5所述的條帶頭處理進(jìn)程。步驟4.1中,對當(dāng)前MARK標(biāo)記位后的內(nèi)容作丟棄處理,即對輸入的32比特位數(shù)據(jù)不做任何處理,丟棄的字節(jié)數(shù)根據(jù)當(dāng)前MARK標(biāo)記后的字節(jié)總數(shù)決定;在丟棄進(jìn)程處理中,置位丟棄字節(jié)計數(shù)器,對輸入數(shù)據(jù)作遞減操作,直到丟棄字節(jié)計數(shù)器為1。步驟4,2中,對不同的JPEG圖像分量會使用不同的量化表,對反量化碼表的處理包含兩種情況,一種是MARK標(biāo)記位FFDB后只跟隨一個圖像分量的量化表,即分離碼表;一種是MARK標(biāo)記位FFDB后跟隨圖像的所有量化表的集合,即組合碼表,中間有標(biāo)志位區(qū)分。步驟4.2中,對反量化表的分離碼表和組合碼表采用統(tǒng)一的方法處理進(jìn)程,由于每一張圖像分量的量化表共有64個數(shù)值,故當(dāng)量化表碼表字節(jié)計數(shù)器在計數(shù)到64時,對碼表作長度判斷,并變換碼表類型;然后通過判斷已處理的字節(jié)數(shù)是否與該量化表總共包含的數(shù)據(jù)字節(jié)數(shù)相同,來判斷當(dāng)前量化表是分離式量化表或組合式量化表,對于分離式量化表,變化碼表類型后結(jié)束該步驟;對于組合式量化表,則繼續(xù)同樣處理下一個圖像分量的量化表,直至整個量化表處理完成。步驟4.3、對哈夫曼碼表進(jìn)行處理進(jìn)程(如圖5所示)由于哈夫曼碼表根據(jù)圖像分量區(qū)分,同一圖像分量又分為DC和AC分量,故對哈夫曼碼表的處理包含兩種情況,一種是MARK標(biāo)記位FFC4后只跟一個圖像分量的DC或AC表,即分離式碼表;一種是MARK標(biāo)記位FFC4后是所有哈夫曼碼表的集合,即組合式碼表,中間有標(biāo)志位區(qū)分。步驟4.3中,對哈夫曼碼表處理進(jìn)程將采用統(tǒng)一的方法處理這兩種情況,其處理過程與量化表的處理過程類似,但由于哈夫曼碼表的長度是由碼表內(nèi)容決定的,不是固定值,故需要通過設(shè)定多個計數(shù)參數(shù)并進(jìn)行比較判斷,以確保對分離式碼表和組合式碼表進(jìn)行正確的處理;其設(shè)定有計算處理的字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表個數(shù)的計數(shù)器,和計算當(dāng)前碼表前16字節(jié)所表示的數(shù)值累加值的計數(shù)器;通過判斷該些計數(shù)器的計數(shù)值,得到當(dāng)前哈夫曼碼表為分離式碼表還是組合式碼表,如果為分離式碼表,將相關(guān)碼表信息存入指定存儲單元,結(jié)束該步驟;如果為組合式碼表,則繼續(xù)處理該哈夫曼碼表中的第一個碼表,直至全部處理完畢。步驟4.4中,對幀頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收幀頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。步驟4.5中,對條帶頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收條帶頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,是一種基于32比特位寬的碼流分析方法,即JPEG碼流以每節(jié)拍32比特位寬向頭碼流分析模塊輸入數(shù)據(jù),頭碼流分析后的結(jié)果存入到相應(yīng)的存儲單元中。當(dāng)前32比特位寬的數(shù)據(jù)處理完成后,頭碼流分析模塊向前端模塊請求發(fā)送新的32比特位寬數(shù)據(jù)。本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,通過對輸入32比特位寬的數(shù)據(jù)進(jìn)行分析,構(gòu)建了四種狀態(tài)轉(zhuǎn)換的狀態(tài)機(jī),得到碼流中各個MARK標(biāo)記位的所在位置,隨后由對各個標(biāo)記位的預(yù)處理過渡到對各碼流成分的詳細(xì)處理,準(zhǔn)確地對頭碼流各成分?jǐn)?shù)據(jù)進(jìn)行分析;本方法實現(xiàn)思路清晰,實現(xiàn)過程簡單,適合于硬件電路實現(xiàn)。圖1是本發(fā)明中的JPEG頭碼流分析方法的流程圖;圖2是本發(fā)明中的4種狀態(tài)的狀態(tài)轉(zhuǎn)換示意圖;圖3是本發(fā)明中的丟棄進(jìn)程的流程圖;圖4是本發(fā)明中的反量化碼表處理進(jìn)程的流程圖5是本發(fā)明中的哈夫曼碼表處理進(jìn)程的流程圖6是本發(fā)明中的幀頭處理進(jìn)程流程圖7是本發(fā)明中的條帶頭處理進(jìn)程流程圖8是本發(fā)明實施例中提供的JPEG頭碼流的實例圖。具體實施例方式以下結(jié)合圖1~圖8,詳細(xì)說明本發(fā)明的較佳實施方式如圖l所示,是本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,其包含以下步驟步驟1、JPEG頭碼流以每節(jié)拍32比特位寬,即4個字節(jié)的頻率向頭碼流分析模塊輸入數(shù)據(jù);步驟2、基于各個MARK標(biāo)記位中統(tǒng)一的"FF,標(biāo)記會以相同的概率出現(xiàn)在32比特位寬的碼流中的第1,2,3或4字節(jié)位置上,構(gòu)建MARK標(biāo)記位的基于4種狀態(tài)相互轉(zhuǎn)換的狀態(tài)機(jī)byte—left,以當(dāng)前MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置作為當(dāng)前狀態(tài),將當(dāng)前碼流成分的字節(jié)總數(shù)作為轉(zhuǎn)換條件,確定轉(zhuǎn)換后的下一狀態(tài),即下一個碼流成分的MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置;步驟2中,所述的MARK標(biāo)記位的4種轉(zhuǎn)換狀態(tài)byte_left具體為0狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第l字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的前8位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的后16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);1狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第2字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的高位,而下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的低位,由此得到本碼流成分的字節(jié)總數(shù)值;2狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第3字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的前16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);3狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第4字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的中間第9-24位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)。如圖2和表1所示,步驟2中,所述的MARK標(biāo)記位的4種狀態(tài)的轉(zhuǎn)換條件和過程具體為將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取才莫操作,若得到結(jié)果為1時,下個MARK標(biāo)記位的狀態(tài)^直為當(dāng)前MARK標(biāo)記位的狀態(tài)值減1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為0,則下個MARK標(biāo)記位的狀態(tài)值為3;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取模操作,若得到結(jié)果為2時,下個MARK標(biāo)記位的狀態(tài)值不變,即為當(dāng)前MARK標(biāo)記位的狀態(tài)值;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取模操作,若得到結(jié)果為3時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為0;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行^uf莫操作,若得到結(jié)果為0時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加2;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為2,則下個MARK標(biāo)記位的狀態(tài)值為0;若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為1。<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>表1、MARK標(biāo)記位的4種狀態(tài)的轉(zhuǎn)換條件所述的狀態(tài)^/L的初始狀態(tài)是0,由于JPEG輸入頭碼流的最前兩個字節(jié)必須是JPEG頭碼流的開始MARK標(biāo)記位"FFD8",且其隨后直接緊跟下一個成分碼流的MARK標(biāo)記,故其下一個狀態(tài)強(qiáng)制為2。步驟3、對于不同狀態(tài)下出現(xiàn)的各種不同碼流成分標(biāo)記進(jìn)行預(yù)處理,具體包括步驟3.1、置位輸入計數(shù)器根據(jù)當(dāng)前成分碼流所處的狀態(tài)以及字節(jié)總數(shù),置位輸入計數(shù)器將要處理的本成分碼流的32位比特數(shù)據(jù)的次數(shù),隨后每處理完32比特位數(shù)據(jù),計數(shù)器減l,直到計數(shù)器為O;步驟3.2、MARK標(biāo)記位處理進(jìn)程入口預(yù)處理根據(jù)當(dāng)前MARK標(biāo)記位所在的位置和狀態(tài),判斷當(dāng)前的碼流成分類型,并置位相應(yīng)成分處理標(biāo)志位和數(shù)據(jù)請求標(biāo)記;步驟3.2中,判斷當(dāng)前的碼流成分類型的具體步驟為當(dāng)前碼流成分的MARK標(biāo)記位的狀態(tài)byte一left為0,則判斷當(dāng)前MARK標(biāo)記位中的后一字節(jié)數(shù)據(jù),即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位的狀態(tài)byteJeft為1,則判斷當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位的狀態(tài)byte—left為2,則判斷當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位的狀態(tài)bytejeft為3,則判斷下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程。步驟3,2中,對步驟4中進(jìn)行的不同進(jìn)程的標(biāo)記,具體為依據(jù)上述判斷成分碼流類型的數(shù)據(jù),即MARK標(biāo)記位中的FF之后的字節(jié)數(shù)據(jù),若該數(shù)據(jù)為EO-EF,或者FO-FE,則標(biāo)記步驟4中進(jìn)行步驟4.1所述的碼流丟棄處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DB,則標(biāo)記步驟4中進(jìn)行步驟4.2所述的反量化碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為C4,則標(biāo)記步驟4中進(jìn)行步驟4.3所述的哈夫曼碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為CO,則標(biāo)記步驟4中進(jìn)行步驟4.4所述的幀頭處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DA,則標(biāo)記步驟4中進(jìn)行步驟4.5所述的條帶頭處理進(jìn)程。步驟4、對于不同成分碼流標(biāo)記進(jìn)行各自的處理進(jìn)程,分別包括步驟4.1、對碼流進(jìn)行丟棄處理進(jìn)程(如圖3所示)對當(dāng)前MARK標(biāo)記位后的內(nèi)容作丟棄處理,即對輸入的32比特位數(shù)據(jù)不做任何處理,丟棄的字節(jié)數(shù)根據(jù)當(dāng)前MARK標(biāo)記后的字節(jié)總數(shù)決定;在丟棄進(jìn)程處理中,置位丟棄字節(jié)計數(shù)器,對輸入數(shù)據(jù)作遞減操作,直到丟棄字節(jié)計數(shù)器為1。步驟4.2、對反量化碼表進(jìn)行處理進(jìn)程(如圖4所示)對不同的JPEG圖像分量會使用不同的量化表,對反量化碼表的處理包含兩種情況,一種是MARK標(biāo)記位FFDB后只跟隨一個圖像分量的量化表,即分離碼表;一種是MARK標(biāo)記位FFDB后跟隨圖像的所有量化表的集合,即組合碼表,中間有標(biāo)志位區(qū)分。步驟4.2中,對反量化表的分離碼表和組合碼表采用統(tǒng)一的方法處理進(jìn)程,由于每一張圖像分量的量化表共有64個數(shù)值,故當(dāng)量化表碼表字節(jié)計數(shù)器在計數(shù)到64時,對碼表作長度判斷,并變換碼表類型;然后通過判斷已處理的字節(jié)數(shù)是否與該量化表總共包含的數(shù)據(jù)字節(jié)數(shù)相同,來判斷當(dāng)前量化表是分離式量化表或組合式量化表,對于分離式量化表,變化碼表類型后結(jié)束該步驟;對于組合式量化表,則繼續(xù)同樣處理下一個圖像分量的量化表,直至整個量化表處理完成。步驟4.3、對哈夫曼碼表進(jìn)行處理進(jìn)程(如圖5所示)由于哈夫曼碼表根據(jù)圖像分量區(qū)分,同一圖像分量又分為DC和AC分量,故對p合夫曼碼表的處理包含兩種情況,一種是MARK標(biāo)記位FFC4后只跟一個圖像分量的DC或AC表,即分離式碼表;一種是MARK標(biāo)記位FFC4后是所有哈夫曼碼表的集合,即組合式碼表,中間有標(biāo)志位區(qū)分。步驟4.3中,對哈夫曼碼表處理進(jìn)程將采用統(tǒng)一的方法處理這兩種情況,其處理過程與量化表的處理過程類似,但由于哈夫曼碼表的長度是由碼表內(nèi)容決定的,不是固定值,故需要通過設(shè)定多個計數(shù)參數(shù)并進(jìn)行比較判斷,以確保對分離式碼表和組合式碼表進(jìn)行正確的處理;其設(shè)定有計算處理的字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表個數(shù)的計數(shù)器,和計算當(dāng)前碼表前16字節(jié)所表示的數(shù)值累加值的計數(shù)器;通過判斷該些計數(shù)器的計數(shù)值,得到當(dāng)前哈夫曼碼表為分離式碼表還是組合式碼表,如果為分離式碼表,將相關(guān)碼表信息存入指定存儲單元,結(jié)束該步驟;如果為組合式碼表,則繼續(xù)處理該p合夫曼碼表中的第一個碼表,直至全部處理完畢。步驟4.4中,對幀頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收幀頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。步驟4.5中,對條帶頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收條帶頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。以下通過一優(yōu)選實施例,即給出一JPEG頭碼流數(shù)據(jù)(如圖8所示)的實例,來具體介紹本發(fā)明方法的分析步驟。第一個MARK標(biāo)記位FFD8的標(biāo)記處理如圖1所示,reset之后,MARK標(biāo)記位是否出現(xiàn)的判斷標(biāo)志MARK置為0,初始狀態(tài)值byte—left為0,判斷輸入32位數(shù)據(jù)的前16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型為FFD8,進(jìn)入進(jìn)程casel,由于FFD8是開始標(biāo)志,只有兩個字節(jié)組成,處理結(jié)束。下一個狀態(tài)值bytejeft強(qiáng)制置為2,MARK置為0。第二個MARK標(biāo)記位FFE0標(biāo)記處理MARK為0,狀態(tài)值byte一left為2,判斷輸入32位數(shù)據(jù)的后16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型為FFEO,進(jìn)入進(jìn)程case18,進(jìn)行丟棄處理,此時設(shè)置丟棄處理的參數(shù)值,DropSign—RH置為1,MARK置為1,下一時鐘進(jìn)入dropprocess丟棄處理的預(yù)處理部分;由于當(dāng)前狀態(tài)值byte一left為2,下一個32位數(shù)據(jù)的前16位數(shù)據(jù)0010為字節(jié)總數(shù),即當(dāng)前標(biāo)記成分碼流共有16個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte一left為0,置位輸入計數(shù)器的值count置為3,進(jìn)入到dropprocess丟棄處理進(jìn)程,如圖3所示,在以下的三個時鐘周期內(nèi),共丟棄3x4個字節(jié)。圖2中,JPEGDATAVALID—IH表示當(dāng)前外部輸入的32位數(shù)據(jù)是否有效。第三個MARK標(biāo)記位FFEC標(biāo)記處理MARK為0,狀態(tài)值byte—left為0,判斷輸入32位數(shù)據(jù)的前16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型為FFEC,進(jìn)入進(jìn)程case6,進(jìn)行丟棄處理,此時設(shè)置丟棄處理的參數(shù)值,DropSign—RH置為1,MARK置為1,下一時鐘進(jìn)入dropprocess丟棄處理的預(yù)處理部分;由于當(dāng)前狀態(tài)值byte—left為0,則當(dāng)前32位數(shù)據(jù)的后16位數(shù)據(jù)0011為字節(jié)總數(shù),即當(dāng)前標(biāo)記成分碼流共有17個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte一left為3,置位輸入計數(shù)器的值count置為3,進(jìn)入到dropprocess丟棄處理進(jìn)程,如圖3所示,在以下的三個時鐘周期內(nèi),共丟棄3x4個字節(jié)。第四個MARK標(biāo)記位FFEE標(biāo)記處理MARK為O,狀態(tài)值byte一left為3,如圖1所示,丟棄當(dāng)前輸入的32位數(shù)據(jù)的前24位數(shù)據(jù),判斷后8位數(shù)據(jù),進(jìn)入進(jìn)程case20,請求新的32位輸入數(shù)據(jù),判斷新輸入32位數(shù)據(jù)的前8位,由此判斷得到當(dāng)前成分碼流的類型為FFEC,進(jìn)入進(jìn)程case25,進(jìn)行丟棄處理,此時設(shè)置丟棄處理的參數(shù)值,DropSign—RH置為1,MARK置為1;由于當(dāng)前狀態(tài)值byte—left為3,之前新輸入的當(dāng)前32位數(shù)據(jù)的中間16位數(shù)據(jù)000e為字節(jié)總數(shù),即當(dāng)前標(biāo)記成分碼流共有14個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte—left為3;置位輸入計數(shù)器的值count置為2,進(jìn)入到dropprocess丟棄處理進(jìn)程,如圖3所示,在以下的兩個時鐘周期內(nèi),共丟棄2x4個字節(jié)。萬-ATV/TADy;t::;乂;VT7PTVR4;^..々1、碟MARK為0,狀態(tài)值byte—left為3,丟棄輸入32位數(shù)據(jù)的前24位數(shù)據(jù),判斷后8位數(shù)據(jù),進(jìn)入進(jìn)程case20,請求新的32位輸入數(shù)據(jù),判斷新輸入32位數(shù)據(jù)的前8位,由此判斷得到當(dāng)前成分碼流的類型,進(jìn)入進(jìn)程case21,進(jìn)行反量化碼表處理,此時設(shè)置反量化碼表處理的參數(shù)值,DqTabSign_RH置1,MARK置為1;由于當(dāng)前狀態(tài)值byte—left為3,之前新輸入的當(dāng)前32位數(shù)據(jù)的中間16位數(shù)據(jù)0084為字節(jié)總數(shù),即當(dāng)前標(biāo)記反量化碼表共有132個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)bytejeft為1;如圖4所示,進(jìn)行反量化碼表處理進(jìn)程圖4中,ByteNun^R表示當(dāng)前成分碼流的總字節(jié)數(shù),其值先減3的原因是,ByteNum_R中已經(jīng)包含了表示字節(jié)總數(shù)本身的兩個字節(jié);由于每一張量化表共有64個數(shù)值,依次處理每一個值,計數(shù)器StageLength一R遞增,當(dāng)StageLength_R=63,判斷其是否小于ByteNum_R-3的值,如果兩者正好相等,則表示當(dāng)前量化表為分離式量化表,變化碼表類型后本次處理結(jié)束;如果其小于ByteNum一R-3的值,則判斷當(dāng)前量化表以多表組合方式出現(xiàn),依次判斷下一張量化表的類型,并作相應(yīng)處理,其中TotolNum—R表示處理過的總字節(jié)數(shù),StageNum—R表示處理過的量化表的個數(shù)。第六個MARK標(biāo)記位FFC0標(biāo)記處理MARK為0,狀態(tài)值byte—left為1,丟棄輸入32位數(shù)據(jù)的前8位數(shù)據(jù),判斷輸入32位數(shù)據(jù)的中間16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型,進(jìn)入進(jìn)程case9,進(jìn)行幀頭處理,此時設(shè)置幀頭處理的參數(shù)值,ProfileSign一RH置為1,MARK置為1;由于當(dāng)前狀態(tài)值byte—left為1,存儲當(dāng)前32位數(shù)據(jù)的最后8位數(shù)據(jù)00作為當(dāng)前成分碼流的字節(jié)總數(shù)的高8位,請求新的32位輸入數(shù)據(jù),進(jìn)入幀頭進(jìn)程預(yù)處理部分,存儲新輸入數(shù)據(jù)的前8位數(shù)據(jù)11作為當(dāng)前成分碼流的字節(jié)總數(shù)的低8位,故字節(jié)總數(shù)為0011,即當(dāng)前幀頭碼流共17個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte—left為0;如圖6所示,進(jìn)行幀頭處理進(jìn)程圖6中ProfileSign_RH為幀頭處理標(biāo)記,Bytelndex—R為字節(jié)處理計數(shù)器,ByteNum一R表示當(dāng)前成分碼流的總字節(jié)數(shù),其值先減3的原因是,ByteNum—R中已經(jīng)包含了表示字節(jié)總數(shù)本身的兩個字節(jié);當(dāng)ProfileSign—RH<ByteNum一R-3時,將當(dāng)前處理的參數(shù)存入緩沖區(qū),當(dāng)ProfileSign—RH=ByteNum—R-3時,則將緩沖區(qū)內(nèi)的參數(shù)放入相關(guān)寄存器。第七個MARK標(biāo)記位FFC4標(biāo)記處理MARK為0,狀態(tài)值byte—left為0,判斷輸入32位數(shù)據(jù)的前16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型,進(jìn)入進(jìn)程case4,進(jìn)行哈夫曼碼表處理,此時設(shè)置哈夫曼碼表處理的參數(shù)值,HufTabSign—RH置為1,MARK置為1;由于當(dāng)前狀態(tài)值bytejeft為0,則當(dāng)前32位數(shù)據(jù)的后16位數(shù)據(jù)00CB為字節(jié)總數(shù),即當(dāng)前標(biāo)記哈夫曼碼表共有203個字節(jié),根據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte—left為1;如圖5所示,進(jìn)行哈夫曼碼表處理進(jìn)程,該過程與前述的反量化表處理過程類似,但由于哈夫曼碼表的長度是由碼表內(nèi)容決定的,不是固定值,故需要通過設(shè)定多個計數(shù)參數(shù)來進(jìn)行比較判斷,以確保分離式碼表和組合式碼表的正確處理。圖5中HufTabSign_RH=l表示哈夫曼碼表處理開始,TotolNum—R表示處理的字節(jié)計數(shù),StageLength—R表示上一次哈夫曼碼表處理的總字節(jié)數(shù),初始值為零,HufferNum_R表示當(dāng)前碼表前16字節(jié)所表示的數(shù)值累加值;StageLength—R和HufferNum一R決定了單個哈夫曼碼表處理的兩個階段;ByteNum—R表示當(dāng)前成分碼流的總字節(jié)數(shù),StageNum一R表示處理過的p合夫曼表的個數(shù)。當(dāng)TotolNum—R=ByteNum—R-4-StageNum—R時,表示當(dāng)前哈夫曼表為分離式碼表,將相關(guān)碼表信息存入指定存儲單元;否則判斷為組合式碼表,則調(diào)整相關(guān)參數(shù)并返回流程的頂端,開始處理第二個碼表。第八個MARK標(biāo)記位FFDA標(biāo)記處理MARK為O,狀態(tài)值byte一left為1,判斷輸入32位數(shù)據(jù)的中間16位數(shù)據(jù),由此判斷得到當(dāng)前成分碼流的類型,進(jìn)入進(jìn)程casel3,進(jìn)行條帶頭處理,此時設(shè)置條帶頭處理的參數(shù)值,SoSSign一RH置為1,MARK置為1;由于當(dāng)前狀態(tài)值byte一left為1,則存儲當(dāng)前32位數(shù)據(jù)的最后8位數(shù)據(jù)00作為條帶頭碼流的字節(jié)總數(shù)的高8位,請求新的32位輸入數(shù)據(jù),進(jìn)入條帶頭進(jìn)程預(yù)處理部分,存儲新輸入32位數(shù)據(jù)的前8位數(shù)據(jù)0C作為條帶頭碼流的字節(jié)總數(shù)的低8位,故字節(jié)總數(shù)為000C,即當(dāng)前條帶頭碼流共12個字節(jié),才艮據(jù)圖2和前述的表1所示的狀態(tài)機(jī)轉(zhuǎn)換方向和條件,得到下一狀態(tài)byte一left為3;如圖7所示,進(jìn)行條帶頭處理進(jìn)程圖7中參數(shù)SosSigiLRH為條帶頭處理標(biāo)記,Bytelndex一R為字節(jié)處理計數(shù)器,ByteNum一R表示當(dāng)前成分碼流的總字節(jié)數(shù),其先減3的原因是,ByteNum_R中包含了表示字節(jié)總數(shù)本身的兩個字節(jié);當(dāng)ProfileSign一RH<ByteNum—R-3時,將當(dāng)前處理的參數(shù)存入緩沖區(qū),當(dāng)ProfileSign_RH=ByteNum_R-3時,則將緩沖區(qū)內(nèi)的參#^丈入相關(guān)寄存器內(nèi)。需要說明的是,雖然上述實施例詳盡地描述了本發(fā)明的方法,但由于給定的碼流不能體現(xiàn)所有的碼流數(shù)據(jù)格式,所以本發(fā)明不限于上文的優(yōu)選實例,本發(fā)明僅受權(quán)利要求書的精髓和范圍限制。本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,是一種基于32比特位寬的碼流分析方法,即JPEG碼流以每節(jié)拍32比特位寬向頭碼流分析模塊輸入數(shù)據(jù),頭碼流分析后的結(jié)果存入到相應(yīng)的存儲單元中。當(dāng)前32比特位寬的數(shù)據(jù)處理完成后,頭碼流分析模塊向前端模塊請求發(fā)送新的32比特位寬數(shù)據(jù)。本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,通過對輸入32比特位寬的數(shù)據(jù)進(jìn)行分析,構(gòu)建了四種狀態(tài)轉(zhuǎn)換的狀態(tài)機(jī),得到碼流中各個MARK標(biāo)記位的所在位置,隨后由對各個標(biāo)記位的預(yù)處理過渡到對各碼流成分的詳細(xì)處理,準(zhǔn)確地對頭碼流各成分?jǐn)?shù)據(jù)進(jìn)行分析;本方法實現(xiàn)思路清晰,實現(xiàn)過程筒單,適合于硬件電路實現(xiàn)。權(quán)利要求1.一種JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,包含以下步驟步驟1、JPEG頭碼流以每節(jié)拍32比特位寬,即4個字節(jié)的頻率向頭碼流分析模塊輸入數(shù)據(jù);步驟2、構(gòu)建MARK標(biāo)記位的基于4種狀態(tài)相互轉(zhuǎn)換的狀態(tài)機(jī);步驟3、對于不同狀態(tài)下出現(xiàn)的各種不同碼流成分標(biāo)記進(jìn)行預(yù)處理;步驟4、對于不同成分碼流標(biāo)記進(jìn)行各自的處理進(jìn)程,分別包括。2.如權(quán)利要求1所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟2中,所述的狀態(tài)機(jī)的構(gòu)建方法為以將當(dāng)前MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置作為當(dāng)前狀態(tài),將當(dāng)前碼流成分的字節(jié)總數(shù)作為轉(zhuǎn)換條件,確定轉(zhuǎn)換后的下一狀態(tài),即下一個碼流成分的MARK標(biāo)記位中FF在32比特位寬中所處的字節(jié)位置。3.如權(quán)利要求2所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟2中,所述的MARK標(biāo)記位的4種轉(zhuǎn)換狀態(tài)具體為0狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第1字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的前8位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的后16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);1狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第2字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位數(shù)據(jù)為FF;此時32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的高位,而下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)的低位,由此得到本碼流成分的字節(jié)總數(shù)值;2狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第3字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的前16位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù);3狀態(tài)當(dāng)前碼流成分的MARK標(biāo)記位中FF在32比特位寬中處于第4字節(jié)位置,即當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)為FF;此時下一個輸入的32位比特數(shù)據(jù)的中間第9-24位數(shù)據(jù)為本碼流成分的字節(jié)總數(shù)。4.如權(quán)利要求3所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟2中,所述的MARK標(biāo)記位的4種狀態(tài)的轉(zhuǎn)換條件和過程具體為將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取才莫操作,若得到結(jié)果為1時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值減1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為0,則下個MARK標(biāo)記位的狀態(tài)值為3;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取才莫4喿作,若得到結(jié)果為2時,下個MARK標(biāo)記位的狀態(tài)值不變,即為當(dāng)前MARK標(biāo)記位的狀態(tài)值;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)4亍取才莫操作,若得到結(jié)果為3時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加1;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為0;將當(dāng)前成分碼流的字節(jié)總數(shù)對4進(jìn)行取才莫^喿作,若得到結(jié)果為0時,下個MARK標(biāo)記位的狀態(tài)值為當(dāng)前MARK標(biāo)記位的狀態(tài)值加2;其中,若當(dāng)前MARK標(biāo)記位的狀態(tài)值為2,則下個MARK標(biāo)記位的狀態(tài)值為0;若當(dāng)前MARK標(biāo)記位的狀態(tài)值為3,則下個MARK標(biāo)記位的狀態(tài)值為1。5.如權(quán)利要求4所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,所述的狀態(tài)機(jī)的初始狀態(tài)是O,下一個狀態(tài)強(qiáng)制為2。6.如權(quán)利要求1所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟3中,具體包含以下步驟步驟3.1、置位輸入計數(shù)器根據(jù)當(dāng)前成分碼流所處的狀態(tài)以及字節(jié)總數(shù),置位輸入計數(shù)器將要處理的本成分碼流的32位比特數(shù)據(jù)的次數(shù),隨后每處理完32比特位數(shù)據(jù),計數(shù)器減l,直到計數(shù)器為0;步驟3.2、MARK標(biāo)記位處理進(jìn)程入口預(yù)處理一艮據(jù)當(dāng)前MARK標(biāo)記位所在的位置和狀態(tài),判斷當(dāng)前的碼流成分類型,并置位相應(yīng)成分處理標(biāo)志位和數(shù)據(jù)請求標(biāo)記。7.如權(quán)利要求6所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟3.2中,判斷當(dāng)前的碼流成分類型的具體步驟為當(dāng)前碼流成分的MARK標(biāo)記位為0狀態(tài),則判斷當(dāng)前MARK標(biāo)記位中的后一字節(jié)數(shù)據(jù),即當(dāng)前32位比特輸入數(shù)據(jù)的第9-16位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為1狀態(tài),則判斷當(dāng)前32位比特輸入數(shù)據(jù)的第17-24位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為2狀態(tài),則判斷當(dāng)前32位比特輸入數(shù)據(jù)的最后8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程;當(dāng)前碼流成分的MARK標(biāo)記位為3狀態(tài),則判斷下一個輸入的32位比特數(shù)據(jù)的前8位數(shù)據(jù)值,由此判斷本成分碼流的類型,并標(biāo)記步驟4中將要進(jìn)行的進(jìn)程。8.如權(quán)利要求7所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟3.2中,對步驟4中進(jìn)行的不同進(jìn)程的標(biāo)記,具體為依據(jù)上述判斷成分碼流類型的數(shù)據(jù),即MARK標(biāo)記位中的FF之后的字節(jié)數(shù)據(jù),若該數(shù)據(jù)為EO-EF,或者F0-FE,則標(biāo)記步驟4中進(jìn)行步驟4.1所述的碼流丟棄處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DB,則標(biāo)記步驟4中進(jìn)行步驟4,2所述的反量化碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為C4,則標(biāo)記步驟4中進(jìn)行步驟4.3所述的哈夫曼碼表處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為C0,則標(biāo)記步驟4中進(jìn)行步驟4.4所述的幀頭處理進(jìn)程;若MARK標(biāo)記位中FF之后字節(jié)的數(shù)據(jù)為DA,則標(biāo)記步驟4中進(jìn)行步驟4.5所述的條帶頭處理進(jìn)程。9.如權(quán)利要求1所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4中,具體包含以下步驟步驟4.1、對碼流進(jìn)行丟棄處理進(jìn)程;步驟4.2、對反量化碼表進(jìn)行處理進(jìn)程;步驟4.3、對哈夫曼碼表進(jìn)行處理進(jìn)程;步驟4.4、對幀頭進(jìn)行處理進(jìn)程;步驟4.5、對條帶流進(jìn)行處理進(jìn)程。10.如權(quán)利要求9所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.1中,對當(dāng)前MARK標(biāo)記位后的內(nèi)容作丟棄處理,即對輸入的32比特位數(shù)據(jù)不做任何處理;丟棄的字節(jié)數(shù)根據(jù)當(dāng)前MARK標(biāo)記后的字節(jié)總數(shù)決定。11.如權(quán)利要求10所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,在丟棄進(jìn)程處理中,置位丟棄字節(jié)計數(shù)器,對輸入數(shù)據(jù)作遞減操作,直到丟棄字節(jié)計數(shù)器為1。12.如權(quán)利要求9所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.2中,對反量化碼表的處理包含兩種情況一種是MARK標(biāo)記位FFDB后只跟隨一個圖像分量的量化表,即分離碼表;一種是MARK標(biāo)記位FFDB后跟隨圖像的所有量化表的集合,即組合碼表,中間有標(biāo)志位區(qū)分。13.如權(quán)利要求12所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.2中,對反量化碼表的處理過程具體為由于每一張圖像分量的量化表共有64個數(shù)偉,故當(dāng)量化表碼表字節(jié)計數(shù)器在計數(shù)到64時,對碼表作長度判斷,并變換碼表類型;然后通過判斷已處理的字節(jié)數(shù)是否與該量化表總共包含的數(shù)據(jù)字節(jié)數(shù)相同,來判斷當(dāng)前量化表是分離式量化表或組合式量化表,對于分離式量化表,變化碼表類型后結(jié)束該步驟;對于組合式量化表,則繼續(xù)同樣處理下一個圖^f象分量的量化表,直至整個量化表處理完成。14.如權(quán)利要求9所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.3中,由于哈夫曼碼表根據(jù)圖像分量區(qū)分,同一圖像分量又分為DC和AC分量,故對哈夫曼碼表的處理包含兩種情況一種是MARK標(biāo)記位FFC4后只跟一個圖像分量的DC或AC表,即分離式碼表;一種是MARK標(biāo)記位FFC4后是所有哈夫曼碼表的集合,即組合式碼表,中間有標(biāo)志位區(qū)分。15.如權(quán)利要求14所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.3中,設(shè)定有計算處理的字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表字節(jié)數(shù)的計數(shù)器,計算當(dāng)前已處理碼表個數(shù)的計數(shù)器,和計算當(dāng)前碼表前16字節(jié)所表示的數(shù)值累加值的計數(shù)器;通過判斷該些計數(shù)器的計數(shù)值,得到當(dāng)前哈夫曼碼表為分離式碼表還是組合式碼表,如果為分離式碼表,將相關(guān)碼表信息存入指定存儲單元,結(jié)束該步驟;如果為組合式碼表,則繼續(xù)處理該哈夫曼碼表中的第一個碼表,直至全部處理完畢。16.如權(quán)利要求9所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.4中,對幀頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收幀頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。17.如權(quán)利要求9所述的JPEG頭碼流分析的硬件實現(xiàn)方法,其特征在于,步驟4.5中,對條帶頭處理進(jìn)程是對圖像格式參數(shù)的處理,具體為按時鐘節(jié)拍逐次接收條帶頭碼流的32比特位寬的數(shù)據(jù),依次接收碼流字節(jié)并計數(shù),將結(jié)果存于緩沖區(qū)內(nèi),當(dāng)計數(shù)值達(dá)到預(yù)設(shè)值時,將緩沖區(qū)的數(shù)據(jù)按順序存入寄存器內(nèi)。全文摘要一種JPEG頭碼流分析的硬件實現(xiàn)方法,包含以下步驟JPEG頭碼流以每節(jié)拍32比特位寬的頻率向頭碼流分析模塊輸入數(shù)據(jù);構(gòu)建MARK標(biāo)記位的基于4種狀態(tài)相互轉(zhuǎn)換的狀態(tài)機(jī);對于不同狀態(tài)下出現(xiàn)的各種不同碼流成分標(biāo)記進(jìn)行預(yù)處理;對于不同成分碼流標(biāo)記進(jìn)行各自的處理進(jìn)程。本發(fā)明提供的JPEG頭碼流分析的硬件實現(xiàn)方法,通過對每次輸入的32比特數(shù)據(jù)的分析,構(gòu)建四種狀態(tài)轉(zhuǎn)換的狀態(tài)機(jī),得到碼流中各個MARK標(biāo)記位的所在位置,隨后由對各個標(biāo)記位的預(yù)處理過渡到對各碼流成分的詳細(xì)處理,準(zhǔn)確地對頭碼流各成分?jǐn)?shù)據(jù)進(jìn)行分析;本方法實現(xiàn)思路清晰,實現(xiàn)過程簡單,適合于硬件電路實現(xiàn)。文檔編號H04N7/26GK101198060SQ20071017293公開日2008年6月11日申請日期2007年12月25日優(yōu)先權(quán)日2007年12月25日發(fā)明者彪?yún)巧暾埲?上海廣電集成電路有限公司