两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

視頻編碼器與解碼器的流水線體系結構的制作方法

文檔序號:6655638閱讀:285來源:國知局
專利名稱:視頻編碼器與解碼器的流水線體系結構的制作方法
技術領域
本發(fā)明涉及圖像數(shù)據(jù)處理裝置,更具體地,涉及用來通過流水線處理以實現(xiàn)圖像數(shù)據(jù)的高速高效編碼與解碼的圖像數(shù)據(jù)處理裝置與方法。
背景技術
由MPEG(運動圖像專家組)標準代表的圖像數(shù)據(jù)的編碼與解碼包含一系列編碼與解碼過程。例如,MPEG系統(tǒng)解碼過程包含變長解碼處理、逆量化處理、逆DCT(離散余弦逆變換)處理、以及運動補償處理,而MPEG系統(tǒng)編碼過程包含變長編碼處理、DCT處理、量化處理、運動檢測處理、運動補償處理、逆量化處理、以及逆DCT處理。
在如引證的專利文獻1所公開的圖像數(shù)據(jù)處理裝置中,融入了用來通過這一連串過程實現(xiàn)圖像數(shù)據(jù)的高速編碼與解碼的現(xiàn)有技術。
圖17為顯示引證的專利文獻1(日本專利申請公開號HEI 7-240844)所公開的現(xiàn)有技術圖像數(shù)據(jù)處理裝置1的方框圖。圖17的圖像數(shù)據(jù)處理裝置1包含多個獨立的處理單元(例如像素處理單元2,負責DCT與量化處理;運動預測單元3,用于運動預測處理;以及變長處理器6,用于變長編碼),以及總體控制處理器5,用來控制以上各處理單元,以并行地按照流水線階段來操作它們。更具體地,圖像數(shù)據(jù)處理單元1執(zhí)行對多個獨立操作的處理單元的流水線控制,由此實現(xiàn)圖像數(shù)據(jù)的高速編碼與解碼。
然而,剛才討論的、被設計來編碼與解碼的現(xiàn)有技術圖像數(shù)據(jù)處理裝置不適用于在以下情況下使用的裝置其中在所傳送的編碼數(shù)據(jù)中可能經(jīng)常發(fā)生數(shù)據(jù)錯誤,如在經(jīng)常使用無線環(huán)境作為傳送信道的手機中所遇到的情況。這是因為當在數(shù)據(jù)傳送期間發(fā)生數(shù)據(jù)錯誤時,現(xiàn)有技術圖像數(shù)據(jù)處理裝置不可能滿足以下需求——將引起已解碼圖像退化的數(shù)據(jù)錯誤抑制到最小程度,以維持高品質(zhì)圖像。
更具體地,現(xiàn)有技術圖像數(shù)據(jù)處理裝置不是被構造來處理以下情況的其中,當在解碼過程中、由于編碼數(shù)據(jù)中的數(shù)據(jù)錯誤而發(fā)生解碼錯誤時,或者當發(fā)生了解碼錯誤之后、接續(xù)解碼過程時,打亂了對流水線處理的控制。作為結果,當在解碼過程中發(fā)生解碼錯誤時,現(xiàn)有技術圖像數(shù)據(jù)處理裝置只能拋棄流水線處理中的所有數(shù)據(jù),以利用緊接先前的已解碼圖像隱藏錯誤。因此,已解碼圖像大大退化。

發(fā)明內(nèi)容
考慮到以上,本發(fā)明的目的在于提供一種圖像數(shù)據(jù)處理裝置與方法,用來實現(xiàn)得力于流水線處理的、圖像數(shù)據(jù)的高速編碼與解碼,并且避免在解碼過程期間、由發(fā)生解碼錯誤而引起的流水線控制干擾,由此將已解碼圖像的退化抑制到最小程度,從而提供高品質(zhì)圖像。
本發(fā)明的第一方面提供了一種圖像數(shù)據(jù)處理裝置,包含圖像數(shù)據(jù)解碼單元,用來允許將送入圖像數(shù)據(jù)處理裝置的輸入編碼數(shù)據(jù)通過流水線處理解碼,由此提供已解碼圖像數(shù)據(jù);流水線控制器,用來控制圖像數(shù)據(jù)解碼單元中的流水線處理;以及存儲器,用來存儲輸入編碼數(shù)據(jù)與已解碼圖像數(shù)據(jù)。
根據(jù)上述配置,提供了一種專門用于解碼編碼數(shù)據(jù)、并且用來通過流水線處理以高速運行的圖像數(shù)據(jù)處理裝置。
本發(fā)明的第二方面提供了一種圖像數(shù)據(jù)處理裝置,其中圖像數(shù)據(jù)解碼單元包含多階段數(shù)據(jù)處理單元,用來實現(xiàn)流水線處理。在該圖像數(shù)據(jù)處理裝置中,多階段數(shù)據(jù)處理單元包含以下中的至少兩個變長解碼處理單元,用來實現(xiàn)輸入編碼數(shù)據(jù)的變長解碼,由此提供量化DCT系數(shù)與運動向量;逆量化處理單元,用來對來自變長解碼處理單元的量化DCT系數(shù)進行逆量化,由此提供經(jīng)逆量化的DCT系數(shù);逆DCT處理單元,用來實現(xiàn)對來自逆量化處理單元的經(jīng)逆量化的DCT系數(shù)的逆DCT處理,由此提供DCT系數(shù);以及運動補償處理單元,用來利用來自逆DCT處理單元的DCT系數(shù)、來自變長解碼處理單元的運動向量、以及存儲在存儲器中先前幀的已解碼圖像數(shù)據(jù),生成當前幀的已解碼圖像數(shù)據(jù)。
根據(jù)上述配置,可以得到一種用來通過流水線處理以高速解碼MPEG標準編碼數(shù)據(jù)的圖像數(shù)據(jù)處理裝置。
本發(fā)明的第三方面提供了一種圖像數(shù)據(jù)處理裝置,其中流水線控制器包含啟動表存儲單元,用來包含流水線啟動表,在該表中注冊關于對圖像數(shù)據(jù)解碼單元中流水線處理的控制的啟動信息;偏移確定單元,用來確定用于引用啟動表存儲單元中流水線啟動表的偏移值;啟動階段確定單元,用來根據(jù)由偏移確定單元確定的偏移值、從啟動表存儲單元中的流水線啟動表讀取啟動信息,由此確定圖像數(shù)據(jù)解碼單元中流水線處理的啟動方法;以及流水線控制單元,用來控制偏移確定單元與啟動階段確定單元,由此根據(jù)由啟動階段確定單元確定的流水線處理啟動方法、控制圖像數(shù)據(jù)解碼單元中的流水線處理。
根據(jù)以上配置,當圖像數(shù)據(jù)解碼單元中的流水線處理由于在解碼處理期間發(fā)生了解碼錯誤而得到干擾時,根據(jù)偏移值引用流水線啟動表,由此立即將被干擾的流水線處理帶入正常操作。作為結果,圖像品質(zhì)退化被抑制到最小程度,這在其他情況下由于已解碼數(shù)據(jù)中的解碼錯誤而會較顯著。
本發(fā)明的第四方面提供了一種圖像數(shù)據(jù)處理裝置,進一步包含錯誤隱藏處理單元。在該圖像數(shù)據(jù)處理裝置中,變長解碼處理單元進一步包含代碼錯誤檢測單元,用來檢測來自輸入編碼數(shù)據(jù)的代碼錯誤。在該圖像數(shù)據(jù)處理裝置中,當代碼錯誤檢測單元從輸入編碼數(shù)據(jù)中檢測到其宏塊上的代碼錯誤時,錯誤隱藏處理單元將來自存儲器的先前解碼的圖像數(shù)據(jù)施加到其上檢測到錯誤的宏塊、以及隨后的宏塊上,由此隱藏已解碼圖像顯示中的干擾。該干擾由輸入編碼數(shù)據(jù)中代碼錯誤造成。
本發(fā)明的第五方面提供了一種圖像數(shù)據(jù)處理裝置,其中當代碼錯誤檢測單元檢測到輸入編碼數(shù)據(jù)宏塊上的代碼錯誤時,錯誤隱藏處理單元從其上要隱藏已解碼圖像顯示中的干擾的目標中、排除先前處理的宏塊。該先前處理的宏塊比其上檢測到錯誤的宏塊早一流水線處理階段數(shù)目而得到處理。
上述兩種不同的配置都消除了以下需要當圖像數(shù)據(jù)解碼單元中的流水線處理由于在解碼過程中發(fā)生了解碼錯誤而得到干擾時,拋棄解碼處理中的所有數(shù)據(jù)。相反,直接使用完全解碼的宏塊上的已解碼圖像數(shù)據(jù),同時將在存儲器中存儲的先前解碼的圖像數(shù)據(jù)施加到由于發(fā)生了解碼錯誤而仍然要解碼的其他宏塊上,結果是可以隱藏已解碼圖像顯示中的干擾。更具體地,對于每個宏塊,可以隱藏解碼錯誤,并且由于解碼錯誤所導致的已解碼圖像圖像質(zhì)量退化可以被抑制到最小程度。
本發(fā)明的第六方面提供了一種圖像數(shù)據(jù)處理裝置,包含圖像數(shù)據(jù)編碼單元,用來允許將送入圖像數(shù)據(jù)處理裝置的輸入圖像數(shù)據(jù)通過流水線處理編碼,由此提供編碼數(shù)據(jù);流水線控制器,用來控制圖像數(shù)據(jù)編碼單元中的流水線處理;以及存儲器,用來存儲相應于輸入圖像數(shù)據(jù)的重新配置的圖像數(shù)據(jù)、以及編碼數(shù)據(jù)。
根據(jù)上述配置,提供了一種專門用于編碼圖像數(shù)據(jù)、并且用來根據(jù)流水線處理以高速運行的圖像數(shù)據(jù)處理裝置。
本發(fā)明的第七方面提供了一種圖像數(shù)據(jù)處理裝置,其中圖像數(shù)據(jù)編碼單元包含多階段數(shù)據(jù)處理單元,用來實現(xiàn)流水線處理。該多階段數(shù)據(jù)處理單元包含以下中的至少兩個運動檢測處理單元,用來使用為當前幀輸入圖像數(shù)據(jù)的輸入圖像數(shù)據(jù)、以及存儲在存儲器中的先前幀的重新配置圖像數(shù)據(jù),檢測當前幀的運動向量;運動補償處理單元,用來使用由運動檢測處理單元檢測的運動向量、以及存儲器中的先前幀的重新配置圖像數(shù)據(jù),生成當前幀的預測圖像數(shù)據(jù);DCT處理單元,用來對由運動補償處理單元生成的預測圖像數(shù)據(jù)與輸入圖像數(shù)據(jù)之間的差異進行DCT處理,由此提供DCT系數(shù);量化處理單元,用來量化來自DCT處理單元的DCT系數(shù),由此提供量化DCT系數(shù);逆量化處理單元,用來對來自量化處理單元的量化DCT系數(shù)進行逆量化,由此提供逆量化DCT系數(shù);逆DCT處理單元,用來對來自逆量化處理單元的逆量化DCT系數(shù)進行逆DCT處理,由此提供用于獲取重新配置圖像數(shù)據(jù)的DCT系數(shù);以及變長編碼處理單元,用來對來自量化處理單元的量化DCT系數(shù)、以及由運動檢測處理單元檢測的運動向量進行變長編碼,由此提供編碼數(shù)據(jù)。
根據(jù)以上配置,提供了一種圖像數(shù)據(jù)處理裝置,能夠通過流水線處理將圖像數(shù)據(jù)迅速編碼為MPEG標準編碼數(shù)據(jù)。
本發(fā)明的第八方面提供了一種圖像數(shù)據(jù)處理裝置,其中流水線控制器包含啟動表存儲單元,用來包含流水線啟動表,在該表中注冊關于對圖像數(shù)據(jù)編碼單元中流水線處理的控制的啟動信息;偏移確定單元,用來確定用于引用啟動表存儲單元中的流水線啟動表的偏移值;啟動階段確定單元,用來根據(jù)由偏移確定單元確定的偏移值、從啟動表存儲單元中的流水線啟動表讀取啟動信息,由此確定圖像數(shù)據(jù)編碼單元中流水線處理的啟動方法;以及流水線控制單元,用來控制偏移確定單元與啟動階段確定單元,由此根據(jù)由啟動階段確定單元確定的流水線處理啟動方法、控制圖像數(shù)據(jù)編碼單元中的流水線處理。
根據(jù)以上配置,根據(jù)任意偏移值,引用流水線啟動表,由此使之容易啟動進行流水線處理的處理單元。
通過結合附圖閱讀以下說明書,本發(fā)明的以上以及其他目的、特征、優(yōu)點將變得明顯,其中相同的附圖標記表示相同的元件。


圖1為顯示根據(jù)本發(fā)明第一實施例的圖像數(shù)據(jù)處理裝置的方框圖;圖2(a)為顯示根據(jù)第一實施例的圖像解碼處理的圖示;圖2(b)為顯示根據(jù)第一實施例的已解碼圖像的圖;圖3為顯示根據(jù)第一實施例的流水線處理的時間圖;圖4為顯示根據(jù)第一實施例的流水線控制前半部分的流程圖;圖5為顯示根據(jù)第一實施例的流水線控制后半部分的流程圖;圖6為顯示根據(jù)第一實施例的流水線啟動表引用適配的偏移確定過程前半部分的流程圖;圖7為顯示根據(jù)第一實施例的流水線啟動表引用適配的偏移確定過程后半部分的流程圖;圖8為顯示根據(jù)第一實施例的流水線啟動階段確定過程的流程圖;圖9(a)為顯示根據(jù)第一實施例的流水線引導表的方框圖;圖9(b)為顯示根據(jù)第一實施例的流水線中斷表的方框圖;圖10為顯示根據(jù)本發(fā)明第二實施例的圖像數(shù)據(jù)處理裝置的方框圖;圖11為顯示根據(jù)第二實施例的流水線處理的時間圖;圖12為顯示根據(jù)第二實施例的流水線控制前半部分的流程圖;圖13為顯示根據(jù)第二實施例的流水線控制后半部分的流程圖;圖14為顯示根據(jù)第二實施例的錯誤隱藏處理的流程圖;圖15為顯示根據(jù)第三實施例的圖像數(shù)據(jù)處理裝置的方框圖;圖16為顯示根據(jù)第三實施例的流水線處理的時間圖;圖17為顯示現(xiàn)有技術圖像數(shù)據(jù)處理裝置的方框圖具體實施方式
現(xiàn)在參照附圖描述本發(fā)明的實施例。
第一實施例圖1為顯示根據(jù)第一實施例的圖像數(shù)據(jù)處理裝置100的方框圖。根據(jù)本實施例的圖像數(shù)據(jù)處理裝置100用來實現(xiàn)對符合由MPEG標準代表的任意運動圖像處理標準的編碼數(shù)據(jù)的、得力于流水線處理的快速解碼。
如圖1所示,根據(jù)本實施例的圖像數(shù)據(jù)處理裝置100包含圖像數(shù)據(jù)解碼單元10、流水線控制器20、存儲器30、以及輸入/輸出接口40。圖像數(shù)據(jù)解碼單元10包含變長解碼處理單元11、逆量化處理單元12、逆DCT處理單元13、以及運動補償處理單元14。流水線控制器20包括流水線控制單元21、啟動階段確定單元22、啟動表存儲單元23、以及偏移確定單元24。
變長解碼處理單元11、逆量化處理單元12、逆DCT處理單元13、運動補償處理單元14、存儲器30、以及輸入/輸出接口40連接到數(shù)據(jù)總線80。變長解碼處理單元11、逆量化處理單元12、逆DCT處理單元13、以及運動補償處理單元14通過控制線81連接到流水線控制單元21。
變長解碼處理單元11、逆量化處理單元12、以及逆DCT處理單元13形成流水線階段,并且提供所謂的流水線處理。流水線處理由流水線控制單元21通過控制線81控制。以后將討論流水線處理及其控制的細節(jié)。
輸入編碼數(shù)據(jù)(或者根據(jù)本實施例、編碼為變長代碼的輸入編碼數(shù)據(jù))在通過輸入/輸出端口90輸入到輸入/輸出接口40之后、首先由存儲器30存儲。
變長解碼處理單元11用來實現(xiàn)對來自存儲器30的所存儲的輸入編碼數(shù)據(jù)的變長解碼,由此提供量化DCT系數(shù)與運動向量。
逆量化處理單元12用來對來自變長解碼處理單元11的量化DCT系數(shù)進行逆量化,由此提供經(jīng)逆量化的DCT系數(shù)。
逆DCT處理單元13用來實現(xiàn)對來自逆量化處理單元12的經(jīng)逆量化的DCT系數(shù)的逆DCT處理,由此提供DCT系數(shù)。
運動補償處理單元14用來利用來自變長解碼處理單元11的運動向量、來自逆DCT處理單元13的DCT系數(shù)、以及來自存儲器30的先前幀的所存儲的已解碼圖像數(shù)據(jù),生成當前幀的已解碼圖像數(shù)據(jù)。所得到的當前幀的已解碼圖像數(shù)據(jù)被存儲在存儲器30中。
圖2(a)為顯示根據(jù)本實施例的圖像解碼處理的圖示。更具體地,圖2(a)顯示由根據(jù)本實施例的圖像數(shù)據(jù)處理裝置100執(zhí)行的圖像解碼處理流。
從存儲器30讀取的編碼數(shù)據(jù)“D10”由變長解碼處理單元11經(jīng)過變長解碼處理“P11”,由此提供量化DCT系數(shù)“D11”。
量化DCT系數(shù)“D11”由逆量化處理單元12經(jīng)過逆量化處理“P12”,由此提供經(jīng)逆量化的DCT系數(shù)“D12”。
經(jīng)逆量化的DCT系數(shù)“D12”由逆DCT處理單元13經(jīng)過逆DCT處理“P13”,由此提供DCT系數(shù)“D13”。
DCT系數(shù)“D13”由運動補償處理單元14經(jīng)過運動補償處理“P14”,由此提供當前幀的已解碼圖像數(shù)據(jù)“D14”。運動補償處理“P14”利用來自變長解碼處理“P11”的運動向量、以及來自存儲器30的先前幀的所存儲的已解碼圖像數(shù)據(jù)。
圖2(b)為顯示根據(jù)本實施例的已解碼圖像400的圖。對圖2(b)的每個部分圖像或宏塊401(其包括MB0、MB1、MB2、MB3至MB7),執(zhí)行圖2(a)的圖像解碼過程。一般地,圖像解碼過程開始于已解碼圖像左上角處的宏塊“MB0”,并且隨后依次應用于右邊的宏塊(MB0->MB1->MB2...->MB47)。
圖3為顯示根據(jù)本實施例的流水線處理的時間圖。根據(jù)本實施例,根據(jù)本實施例的流水線處理只適用于圖2(a)的圖像解碼過程中的變長解碼處理“P11”,逆量化處理“P12”,以及逆DCT處理“P13”。圖3的水平軸與垂直軸分別表示經(jīng)過時間和與圖像解碼相關的流水線處理階段。在圖像解碼過程中,圖3的流水線處理階段包含三個階段變長解碼處理“P11”的第一階段(S1),逆量化處理“P12”的第二階段(S2),以及逆DCT處理“P13”的第三階段(S3)。
此處不討論處理“P11”、“P12”,“P13”以及“P14”的進一步的細節(jié),因為其在本發(fā)明的范圍之外。
以下討論根據(jù)本實施例的圖3的流水線處理。
當開始圖像解碼過程時,在初始周期“TP0”,幀頭部信息“VOP”經(jīng)過第一階段變長解碼處理“P11”。以變長編碼數(shù)據(jù)插入到每個幀頭部中的幀頭部信息“VOP”包含諸如幀內(nèi)宏塊數(shù)目等信息。
在隨后的周期“TM0”,第一宏塊“MB0”經(jīng)過第一階段變長解碼處理“P11”。
在周期“TM0”中完成處理“P11”之后,在周期“TM1”,第二宏塊“MB1”與宏塊“MB0”并行地分別經(jīng)過第一階段變長解碼處理“P11”與第二階段逆量化處理“P12”。
在下一周期“TV0”,分組頭部信息“VP”經(jīng)過第一階段變長解碼處理“P11”。分組頭部信息“VP”包含關于適當插入到宏塊數(shù)據(jù)之間的分組頭部的信息,更具體地,其包含隨后每個宏塊的宏塊號碼、以及用于逆量化處理的、每個宏塊的量化值。
在周期“TV0”完成處理“P11”之后,在下一周期“TM2”,第三宏塊“MB2”、宏塊“MB1”與宏塊“MB0”并行地分別經(jīng)過第一階段變長解碼處理“P11”、第二階段逆量化處理“P12”、與第三階段逆DCT處理“P13”。
在周期“TM2”完成處理之后,在周期“TM3”,第四宏塊“MB3”、宏塊“MB2”、與宏塊“MB1”并行地分別經(jīng)過第一階段變長解碼處理“P11”、第二階段逆量化處理“P12”、與第三階段逆DCT處理“P13”。
隨后對于每個待處理的宏塊,重復類似的處理,直到達到周期“TM47”,此時已解碼圖像的最終宏塊“MB47”經(jīng)過第一階段變長解碼處理“P11”。已解碼圖像的最終宏塊的號碼可以根據(jù)幀內(nèi)宏塊的數(shù)目確定,其在周期“TP0”通過解碼幀頭部信息“VOP”而獲得。
在周期“TM47”完成處理之后,在周期“TM48”,宏塊“MB47”與“MB46”并行地分別經(jīng)過第二階段逆量化處理“P12”、與第三階段逆DCT處理“P13”。
在周期“TM48”完成處理之后,在周期“TM49”,宏塊“MB47”經(jīng)過第三階段逆DCT處理“P13”。通過這種方式,完成解碼當前幀的流水線處理。
以下參照圖4至8的流程圖討論當在根據(jù)本實施例的圖1的圖像數(shù)據(jù)處理裝置100中執(zhí)行圖3的流水線處理時,如何實現(xiàn)流水線控制。該流水線控制由圖1的流水線控制器20實現(xiàn)。
圖4為顯示根據(jù)本實施例的流水線控制前半部分的流程圖。圖5為顯示根據(jù)本實施例的流水線控制后半部分的流程圖。在圖4中,諸如“A”、“B”、“C”等加圈標記分別鏈接到圖5中的加圈標記。
以下討論根據(jù)本實施例的、對于圖3所示每個周期的、符合圖4的流程圖的流水線控制。
周期“TP0”參照圖4,當開始圖像解碼過程時,啟動圖1流水線控制器20中的流水線控制單元21。
在步驟“S11”,流水線控制單元21操作變長解碼處理單元11,以實現(xiàn)對變長編碼數(shù)據(jù)中的幀頭部信息“VOP”(其插入到每個幀頭部處)的變長解碼(VLD)過程,由此獲得幀內(nèi)宏塊的數(shù)目(MB_IN_VOP)。在本周期,假定所獲得的幀內(nèi)宏塊的數(shù)目(MB_IN_VOP)等于48,如下MB_IN_VOP=48。
在步驟“S12”,流水線控制單元21初始化宏塊計數(shù)器(MBA),由此將其設置等于零,如下MBA=0。
在步驟“S13”,為了確定是否已經(jīng)完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP,其中符號“>=”表示左邊等于或大于右邊。目前,MBA=0;并且MB_IN_VOP=48。
因此,步驟“S13”的確定結果為“否”,這意味著還有剩余宏塊要處理。該例程前進到步驟“S14”。
周期“TM0”在步驟“S14”,流水線控制單元21初始化流水線中斷標志(PIPE_END),由此如下地設置它PIPE_END=0。
在步驟“S15”,流水線控制單元21初始化“OFFSET1”(偏移1),由此如下地設置它OFFSET1=0。
OFFSET1用來引用以后討論的流水線引導表。
在步驟“S16”,流水線控制單元21初始化宏塊處理標志(MB_PROC),由此如下地設置它MB_PROC=1.
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?,其中,符號“==”表示“相等”。OFFSET1當前等于零(OFFSET1=0),并且步驟“S17的確定結果為“是”,這以為著流水線處理為流水線的第一處理。該例程前進到步驟“S19”。
在步驟“S19”,啟動圖1的偏移確定單元24,以實現(xiàn)流水線啟動表引用適配的偏移確定過程。偏移確定單元24確定用于引用流水線啟動表(流水線引導表與流水線中斷表)的偏移值(OFFSET1、OFFSET2、與OFFSET3)。以后討論流水線啟動表。
為了啟動偏移確定單元24,從流水線控制單元21向偏移確定單元24傳送流水線中斷標志(PIPE_END)、宏塊處理標志(MB_PROC)、以及OFFSET1,用于以后討論的流水線引導表。當前從流水線控制單元21向偏移確定單元24傳送的參數(shù)為PIPE_END=0,MB_PROC=1,以及OFFSET1=0。
圖6與7的流程圖更具體地顯示了步驟“S19”中的流水線啟動表引用適配的偏移確定過程。具體地,圖6為顯示根據(jù)本實施例的流水線啟動表引用適配的偏移確定過程前半部分的流程圖,圖7為顯示其后半部分的流程圖。在圖6中,加圈標記“D”鏈接到圖7中的加圈標記。
當開始流水線啟動表引用適配的偏移確定過程時,在圖6的步驟“S41”,啟動圖1的啟動表存儲單元23,并且偏移確定單元24確定是否開始了流水線處理中的中斷。更具體地,偏移確定單元24確定PIPE_END是否不等于零,如下PIPE_END!=0?,其中符號“!=”表示“不等于”。
PIPE_END當前等于零(PIPE_END=0),并且步驟“S41”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到步驟“S42”。
在步驟“S42”,偏移確定單元24初始化流水線引導表適配的偏移OFFSET1,由此如下地設置它OFFSET1=0。
在步驟“S43”,偏移確定單元24初始化流水線中斷表適配的偏移OFFSET2,由此如下地設置它OFFSET2=0。
在步驟“S44”,偏移確定單元24初始化流水線中斷表適配的偏移OFFSET3,由此如下地設置它OFFSET3=-32768。
如上所述,在步驟“S42”、“S43”與“S44”中,偏移確定單元24進行初始化,由此終止圖4步驟“S19”中的流水線啟動表引用適配的偏移確定過程。
此時,從偏移確定單元24向流水線控制單元21返回以下參數(shù)OFFSET1=0;OFFSET2=0;OFFSET3=-32768;以及PIPE_END=0。
在完成了圖4步驟“S19”中的流水線啟動表引用適配的偏移確定過程之后,該例程前進到步驟“S20”。
在步驟“S20”,為了確定流水線處理是否不被中斷,流水線控制單元21確定OFFSET2是否等于-32768,OFFSET2==-32768?流水線中斷表適配的偏移OFFSET2當前具有值零(OFFSET2=0),并且步驟“S20”的確定結果為“否”,這意味著流水線處理要被中斷。該例程前進到圖5的步驟“S21”。
在圖5的步驟“S21”,啟動圖1的啟動階段確定單元22,以實現(xiàn)流水線啟動階段確定過程。更具體地,在步驟“S21”的流水線啟動階段確定過程中,啟動階段確定單元22確定流水線階段啟動參數(shù)(PIPEKICK),以用于啟動以下流水線階段由變長解碼處理單元11實現(xiàn)的變長解碼處理“P11”、由逆量化處理單元12實現(xiàn)的逆量化處理“P12”、以及由逆DCT處理單元13實現(xiàn)的逆DCT處理“P13”。
為了啟動該啟動階段確定單元22,從流水線控制單元21向啟動階段確定單元22傳送流水線引導表適配的OFFSET1、流水線中斷表適配的OFFSET2、以及流水線中斷表適配的OFFSET3。當前從流水線控制單元21向啟動階段確定單元22傳送的參數(shù)為OFFSET1=0;OFFSET2=0;OFFSET3=-32768。
圖8的流程圖更具體地顯示了步驟“S21”中的流水線啟動階段確定過程。更具體地,圖8為顯示根據(jù)本實施例的流水線啟動階段確定過程的流程圖。以下參照圖8討論流水線啟動階段確定過程。
當開始流水線啟動階段確定過程時,啟動圖1的啟動階段確定單元22。在步驟“S61”,為了確定流水線是否在引導中,啟動階段確定單元22確定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1當前等于0(OFFSET1=0),并且步驟“S61”的確定結果為“是”,這意味著流水線正在引導。該例程前進到步驟“S62”。
在步驟“S62”,啟動階段確定單元22從流水線引導表(TABLE1)獲得流水線階段啟動參數(shù)(PIPEKICK)。更具體地,啟動階段確定單元22利用流水線引導表適配的OFFSET1,引用流水線引導表(TABLE1),由此計算如下PIPEKICK=TABLE1[OFFSET1]。
置于啟動表存儲單元23中的流水線引導表(TABLE1)包含關于變長解碼處理單元11、逆量化處理單元12、與逆DCT處理單元13的相應啟動信息。
圖9(a)為顯示根據(jù)本實施例的流水線引導表(TABLE1)420的框圖。圖9(b)為顯示根據(jù)本實施例的流水線中斷表(TABLE2)421的框圖。
流水線引導表(TABLE1)420包含兩個不同的元素“_S1”與“-S1|_S2”。元素“_S1”表示流水線處理中第一階段(S1)變長解碼處理“P11”的啟動。同時,元素“_S1|_S2”表示第一階段(S1)變長解碼處理“P11”與第二階段(S2)逆量化處理“P12”的并行啟動。
在圖8的步驟“S62”,OFFSET1等于零(OFFSET1=0),并且啟動階段確定單元22從流水線引導表420獲得流水線階段啟動參數(shù)(PIPEKICK),如下PIPEKICK=_S1。
在下一步驟“S63”,為了增加流水線引導表適配的OFFSET1,啟動階段確定單元22如下執(zhí)行OFFSET1++,其中符號“++”表示對左側變量增加值1,由此如下地設置OFFSET1OFFSET=1。
由此終止流水線啟動階段確定過程。
當終止啟動階段確定單元22中的流水線啟動階段確定過程時,流水線引導表適配的OFFSET1、流水線中斷表適配的OFFSET2、流水線中斷表適配的OFFSET3、以及流水線階段啟動參數(shù)(PIPEKICK)從啟動階段確定單元22返回流水線控制單元21。從啟動階段確定單元22返回到流水線控制單元21的參數(shù)為
OFFSET1=1;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1。
現(xiàn)在終止圖5步驟“S21”中的流水線啟動階段確定過程。該例程前進到圖5的步驟“S22”。
在步驟“S22”,流水線控制單元21啟動流水線處理。根據(jù)步驟“S21”中確定的流水線階段啟動參數(shù)(PIPEKICK),啟動步驟“S22”中的流水線處理。更具體地,流水線控制單元21啟動對應于在流水線階段啟動參數(shù)(PIPEKICK)中設置的每個流水線階段的處理單元。流水線階段啟動參數(shù)(PIPEKICK)當前等于“_S1”(PIPEKICK=_S1),由此只啟動為第一階段(S1)變長解碼處理“P11”設計的變長解碼處理單元11。
在步驟“S23”,流水線控制單元21等待在步驟“S22”中啟動的變長解碼處理“P11”結束。當該處理終止時,該例程前進到步驟“S24”。
在步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?32768?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S24”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S25”。
在步驟“S25”,為了增加宏塊計數(shù)器(MBA),流水線控制單元21進行如下計算MBA++,由此如下設置MBAMBA=1。
在下一步驟“S26”,流水線控制單元21確定是否存在頭部。
變長編碼數(shù)據(jù)在插入宏塊數(shù)據(jù)之間的分組頭部信息“VP”的頭部包含同步字。該同步字包含特定比特串,例如“Ox000001”,其中字符“x”表示值“0”或“1”。對同步字的檢測確定是否存在頭部。
步驟“S26”的確定結果為“否”,這意味著不存在頭部。該例程前進到步驟“S29”。
在步驟“S29”,為了確定是否完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA與MB_IN_VOP如下定義MBA=1;并且MB_IN_VOP=48。
因此,步驟“S29”的確定結果為“否”,這意味著仍然剩余有宏塊要處理。該例程直接返回到圖4的步驟“S16”,以開始在下一周期的處理。
現(xiàn)在,終止周期“TM0”期間的處理。
周期TM1、TV0本周期的處理開始于圖4的步驟“S16”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=1;PIPE_END=0;MB_PROC=1;OFFSET1=1;OFFSET2=0;以及OFFSET3=-32768。
在步驟“S16”,流水線控制單元21初始化宏塊處理標志(MB_PROC),如下MB_PROC=1。
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于一(OFFSET1=1),并且步驟“S17”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理,該例程前進到步驟“S18”。
在步驟“S18”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END?。?。
PIPE_END當前等于零(PIPE_END=0),并且步驟“S18”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到圖5的步驟“S21”。
在圖5的步驟“S21”,啟動該啟動階段確定單元22。此時,從流水線控制單元21向啟動階段確定單元22傳送如下給定的參數(shù),由此執(zhí)行圖8的流水線啟動階段確定過程。
OFFSET1=1;OFFSET2=0;以及OFFSET3=-32768。
在圖8的步驟“S61”,為了確定流水線是否在引導中,啟動階段確定單元22確定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1當前等于一(OFFSET1=1),并且步驟“S61”的確定結果為“是”,這意味著流水線正在引導。該例程前進到步驟“S62”。
在步驟“S62”,啟動階段確定單元22利用“OFFSET1=1”,引用流水線引導表420,并且計算如下PIPEKICK=TABLE1[OFFSET1],由此獲得流水線階段啟動參數(shù)(PIPEKICK),如下PIPEKICK=_S1|_S2。
在步驟“S63”,啟動階段確定單元22計算如下OFFSET1++,由此設置OFFSET1如下OFFSET=2。
現(xiàn)在終止流水線啟動階段確定過程。
作為結果,在流水線啟動階段確定過程的結束處,從啟動階段確定單元22返回到流水線控制單元21的參數(shù)為如下OFFSET1=2;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2。
在圖5的下一步驟“S22”,流水線控制單元21啟動流水線處理。在步驟“S22”啟動流水線處理時,根據(jù)在流水線階段啟動參數(shù)(PIPEKICK)中設置的元素“_S1|_S2”,并行地啟動兩個流水線處理階段第一階段(S1)變長解碼處理“P11”與第二階段(S2)逆量化處理“P12”。
在步驟“S23”,流水線控制單元21等待并行啟動的變長解碼處理“P11”與逆量化處理“P12”結束。
在步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?31768?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S24”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S25”。
在步驟“S25”,流水線控制單元21如下計算MBAMBA++,由此如下設置MBAMBA=2。
在步驟“S26”,確定是否存在頭部。假定步驟“S26”的確定結果為“是”,這意味著存在頭部。該例程前進到步驟“S27”。
在步驟“S27”,為了重置宏塊處理標志(MB_PROC),流水線控制單元21如下設置MB_PROCMB_PROC=0。
在步驟“S28”,處理頭部。
現(xiàn)在,終止周期“TM1”與“TV0”期間的處理。該例程返回到圖4的步驟“S16”。
周期“TM2”本周期的處理開始于圖4的步驟“S16”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=2;PIPE_END=0;MB_PROC=1;OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在步驟“S16”,流水線控制單元21初始化宏塊處理標志(MB_PROC),由此將其設置如下MB_PROC=1。
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于二(OFFSET1=2),并且步驟“S17”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理,該例程前進到步驟“S18”。
在步驟“S18”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END?。??。
PIPE_END當前等于零(PIPE_END=0),并且步驟“S18”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到圖5的步驟“S21”。
在圖5的步驟“S21”,啟動該啟動階段確定單元22。此時,從流水線控制單元21向啟動階段確定單元22傳送如下給定的參數(shù),由此執(zhí)行圖8的流水線啟動階段確定過程。
OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在圖8的步驟“S61”,為了確定流水線是否在引導中,確定OFFSET1是否小于二,從而OFFSET1<2?OFFSET1當前等于二(OFFSET1=2),并且步驟“S61”的確定結果為“否”,這意味著流水線沒有正在被引導。該例程前進到步驟“S64”。
在步驟“S64”,為了確定流水線處理是否正在被中斷,啟動階段確定單元22確定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S64”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S67”。
在步驟“S67”,為了啟動所有流水線階段,啟動階段確定單元22設置流水線階段啟動參數(shù)(PIPEKICK),從而PIPEKICK=_S1|_S2|_S3。
在流水線處理中,元素“_S1|_S2|_S3”表示并行啟動第一階段(S1)變長解碼處理“P11”、第二階段(S2)逆量化處理“P12”、以及第三階段(S3)逆DCT處理“P13”。
在步驟“S68”,啟動階段確定單元22將流水線引導表適配的OFFSET1設置為最大正值,如下OFFSET1=32767。
現(xiàn)在終止流水線啟動階段確定過程。
在流水線啟動階段確定過程結束處,從啟動階段確定單元22返回到流水線控制單元21如下給定的參數(shù)OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
現(xiàn)在回去參照圖5,在步驟“S22”,流水線控制單元21啟動流水線處理。在步驟“S22”啟動流水線處理時,根據(jù)在流水線階段啟動參數(shù)(PIPEKICK)中設置的元素“_S1|_S2|_S3”,并行地啟動所有流水線處理階段,即第一階段(S1)變長解碼處理“P11”、第二階段(S2)逆量化處理“P12”、以及第三階段(S3)逆DCT處理“P13”。
在步驟“S23”,流水線控制單元21等待并行啟動的變長解碼處理“P11”、逆量化處理“P12”、以及逆DCT處理“P13”結束。
在下一步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?32768?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S24”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S25”。
在步驟“S25”,流水線控制單元21如下計算MBAMBA++,由此如下設置MBAMBA=3。
在下一步驟“S26”,確定是否存在頭部。假定步驟“S26”的確定結果為“否”,這意味著不存在頭部。該例程前進到步驟“S29”。
在步驟“S29”,為了確定是否完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_TN_VOP?
目前,MBA與MB_IN_VOP如下定義MBA=3;并且MB_IN_VOP=48,因此,步驟“S29”的確定結果為“否”,這意味著仍然剩余有宏塊要處理?,F(xiàn)在,終止周期“TM2”期間的處理。該例程返回步驟“S16”,以開始在下一周期的處理。
周期“TM3”到“TM46”這些周期期間的處理基本與上述的“TM2”周期期間的處理相同,這里省略其相關描述。
周期“TM47”本周期的處理開始于圖4的步驟“S16”。
在本周期開始處,主要參數(shù)如下地設置MBA=47;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在步驟“S16”,流水線控制單元21初始化宏塊處理標志(MB_PROC),如下MB_PROC=1。
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S17”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理,該例程前進到步驟“S18”。
在步驟“S18”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END?。??。
PIPE_END當前等于零(PIPE_END=0),并且步驟“S18”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到圖5的步驟“S21”。
在圖5的步驟“S21”,啟動該啟動階段確定單元22。此時,從流水線控制單元21向啟動階段確定單元22傳送下述討論的參數(shù),由此執(zhí)行圖8的流水線啟動階段確定過程。
OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在圖8的步驟“S61”,為了確定流水線是否在引導中,確定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S61”的確定結果為“否”,這意味著流水線沒有正在被引導。該例程前進到步驟“S64”。
在步驟“S64”,為了確定流水線處理是否正在被中斷,啟動階段如下確定單元22確定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S64”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S67”。
在步驟“S67”,為了啟動所有流水線階段,啟動階段確定單元22設置流水線階段啟動參數(shù)(PIPEKICK),從而PIPEKICK=_S1|_S2|_S3。
在步驟“S68”,啟動階段確定單元22將流水線引導表適配的OFFSET1設置為最大正值,如下OFFSET1=32767。
現(xiàn)在終止流水線啟動階段確定過程。
在流水線啟動階段確定過程結束處,從啟動階段確定單元22返回到流水線控制單元21下述討論的參數(shù)OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
在圖5的步驟“S22”,流水線控制單元21啟動流水線處理。在步驟“S22”啟動流水線處理時,根據(jù)在流水線階段啟動參數(shù)(PIPEKICK)中設置的元素“_S1|_S2|_S3”,并行地啟動所有流水線處理階段,即第一階段(S1)變長解碼處理“P11”、第二階段(S2)逆量化處理“P12”、以及第三階段(S3)逆DCT處理“P13”。
在步驟“S23”,流水線控制單元21等待并行啟動的變長解碼處理“P11”、逆量化處理“P12”、以及逆DCT處理“P13”結束。
在下一步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,從而OFFSET3?。?32768?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S24”的確定結果為“否”,這意味著流水線處理沒有被正在中斷。該例程前進到步驟“S25”。
在步驟“S25”,流水線控制單元21進行如下計算MBA++,由此如下設置MBAMBA=48。
在下一步驟“S26”,確定是否存在頭部。假定步驟“S26”的確定結果為“否”,這意味著不存在頭部。該例程前進到步驟“S29”。
在步驟“S29”,為了確定是否完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA與MB_IN_VOP如下定義MBA=48;并且MB_IN_VOP=48,因此,步驟“S29”的確定結果為“是”,這意味著完全處理了所有幀內(nèi)宏塊。該例程前進到步驟“S30”。
在步驟“S30”,流水線控制單元21設置流水線中斷標志(PIPE_END)如下PIPE_END=1。
現(xiàn)在,終止本周期“TM47”期間的處理,該例程返回步驟“S16”,以開始在下一周期的處理。
周期“TM48”
本周期的處理開始于圖4的步驟“S16”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=48;PIPE_END=1;MB_PROC=1;OFFSET1=32767;OFFSET2=0;以及OFFSET3=-32768。
在步驟“S16”,為了初始化宏塊處理標志(MB_PROC),流水線控制單元21將其設置如下MB_PROC=1。
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S17”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理,該例程前進到步驟“S18”。
在步驟“S18”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END?。??。
PIPE_END當前等于一(PIPE_END=1),并且步驟“S18”的確定結果為“是”,這意味著開始了流水線處理中的中斷。該例程前進到步驟“S19”。
在步驟“S19”,執(zhí)行流水線啟動表引用適配的偏移確定過程。更具體地,執(zhí)行根據(jù)圖6與7流程圖的處理,圖6與7分別顯示了流水線啟動表引用適配的偏移確定過程的前半部分與后半部分。
此時,從流水線控制單元21向偏移確定單元24傳送下述參數(shù)PIPE_END=1,MB_PROC=1,并且OFFSET1=32767。
當開始圖6的流水線啟動表引用適配的偏移確定過程時,在步驟“S41”,確定是否開始了流水線處理中的中斷。更具體地,偏移確定單元24確定PIPE_END是否不等于零,如下PIPE_END?。??,PIPE_END當前等于一(PIPE_END=1),并且步驟“S41”的確定結果為“是”,這意味著開始了流水線處理中的中斷。該例程前進到步驟“S45”。
在步驟“S45”,為了確定流水線處理是否為流水線的第一處理,偏移確定單元24確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S45”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理。該例程前進到步驟“S46”。
在步驟“S46”,為了確定流水線處理是否為流水線的第二處理,偏移確定單元24確定OFFSET1是否等于一,如下OFFSET1==1?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S46”的確定結果為“否”,這意味著流水線處理不是流水線的第二處理。該例程前進到步驟“S49”。
在步驟“S49”,為了設置流水線中斷表適配的OFFSET2,偏移確定單元24進行如下計算OFFSET2=MIN(OFFSET1,1)。
在以上公式中,函數(shù)MIN(x,y)指將變量“x”與“y”之間的較小變量值用做函數(shù)值。
OFFSET1當前等于32767(OFFSET1=32767),并且計算結果為“OFFSET2=1”。
在下一步驟“S50”,為了確定是否正在處理宏塊,偏移確定單元24確定MB_PROC是否不等于零,如下MB_PROC?。??。
MB_PROC當前等于一(MB_PROC=1),并且步驟“S50”的確定結果為“是”,這意味著正在處理宏塊。該例程前進到圖7的步驟“S52”。
在圖7的步驟“S52”,為了設置流水線中斷表適配的OFFSET3,偏移確定單元24設置OFFSET3如下OFFSET3=1,
該例程前進到步驟“S53”。
在步驟“S53”,為了確定是否正在處理宏塊,偏移確定單元24確定MB_PROC是否不等于零,如下MB_PROC?。??。
MB_PROC當前等于一(MB_PROC=1),并且步驟“S53”的確定結果為“是”,這意味著正在處理宏塊。該例程前進到步驟“S55”。
在步驟“S55”,為了設置流水線引導表適配的OFFSET1,偏移確定單元24設置OFFSET1等于32767,如下OFFSET1=32767,然后,該例程前進到步驟“S56”。
在步驟“S56”,為了重置流水線中斷標志,偏移確定單元24設置PIPE_END如下PIPE_END=0。
在以上設置結束之后,偏移確定單元24終止圖4步驟“S19”中的流水線啟動表引用適配的偏移確定過程。此時,從偏移確定單元24返回到流水線控制單元21下述參數(shù)OFFSET1=32767;OFFSET2=1;OFFSET3=1;以及PIPE_END=0。
該例程前進到圖4的步驟“S20”。為了確定流水線處理是否不被中斷,流水線控制單元21確定OFFSET2是否等于-32768,如下OFFSET2==-32768?OFFSET2當前等于一(OFFSET2=1),并且步驟“S20”的確定結果為“否”,這意味著要中斷流水線處理。該例程前進到圖5的步驟“S21”。
在步驟“S21”,啟動該啟動階段確定單元22。此時,從流水線控制單元21向啟動階段確定單元22傳送下述參數(shù),由此執(zhí)行圖8的流水線啟動階段確定過程。
OFFSET1=32767;OFFSET2=1;以及OFFSET3=1。
在圖8的步驟“S61”,為了確定流水線是否在引導中,啟動階段確定單元22確定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S61”的確定結果為“否”。這意味著流水線沒有正在被引導。該例程前進到步驟“S64”。
在步驟“S64”,為了確定流水線處理是否正在被中斷,啟動階段確定單元22確定OFFSET3是否等于或大于零,如下OFFSET3>=0?OFFSET3當前等于一(OFFSET3=1),并且步驟“S64”的確定結果為“是”,這意味著流水線處理正在被中斷。該例程前進到步驟“S65”。
在步驟“S65”,啟動階段確定單元22計算流水線階段啟動參數(shù)(PIPEKICK),如下PIPEKICK=TABLE2[OFFSET2][OFFSET3],由此從流水線中斷表420獲得參數(shù),如下PIPEKICK=_S2|_S3。
該例程前進到步驟“S66”。
在步驟“S66”,為了減少流水線中斷表適配的OFFSET3,啟動階段確定單元22進行如下計算OFFSET3--其中,符號“--”表示將左側變量值只減少1,由此設置OFFSET3,如下OFFSET3=0。
現(xiàn)在終止流水線啟動階段確定過程。此時從啟動階段確定單元22返回到流水線控制單元21下述參數(shù)OFFSET1=32767;OFFSET2=1;OFFSET3=0;以及PIPEKICK=_S2|_S3。
該例程前進到圖5的步驟“S22”,以啟動流水線處理。根據(jù)在步驟“S21”中確定的流水線階段啟動參數(shù)“PIPEKICK=_S2|_S3”,啟動步驟“S22”的流水線處理。作為結果,并行地啟動第二階段(S2)逆量化處理“P12”、以及第三階段(S3)逆DCT處理“P13”。
在下一步驟“S23”,流水線控制單元21等待逆量化處理“P12”、以及逆DCT處理“P13”結束。在步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?32768?OFFSET3當前等于零(OFFSET3=0),并且步驟“S24”的確定結果為“是”,這意味著流水線處理正在被中斷。該例程前進到步驟“S31”。
在步驟“S31”,為了確定是否終止了流水線處理中的中斷,流水線控制單元21確定OFFSET3是否等于-1,如下OFFSET3?。剑?1?OFFSET3當前等于零(OFFSET3=0),并且步驟“S24”的確定結果為“否”,這意味著流水線處理中的中斷仍然在進行中。現(xiàn)在終止本周期“TM48”期間的處理,并且該例程返回圖4的步驟“S16”。
周期“TM49”本周期的處理開始于圖4的步驟“S16”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=48;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=1;以及OFFSET3=0。
在步驟“S16”,為了初始化宏塊處理標志(MB_PROC),流水線控制單元21將其設置如下MB_PROC=1。
在步驟“S17”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S17”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理,該例程前進到步驟“S18”。
在步驟“S18”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END!=0?。
PIPE_END當前等于零(PIPE_END=0),并且步驟“S18”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到圖5中的步驟“S21”。
在圖5中的步驟“S21”,啟動該啟動階段確定單元22。此時,從流水線控制單元21向啟動階段確定單元22傳送下述參數(shù),由此執(zhí)行圖8的流水線啟動階段確定過程。
OFFSET1=32767;OFFSET2=1;以及OFFSET3=0。
在圖8的步驟“S61”,為了確定流水線是否在引導中,啟動階段確定單元22確定OFFSET1是否小于二,如下OFFSET1<2?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S61”的確定結果為“否”,這意味著流水線沒有正在被引導。該例程前進到步驟“S64”。
在步驟“S64”,為了確定流水線處理是否正在被中斷,啟動階段確定單元22確定OFFSET3是否等于或大于零,即OFFSET3>=0?OFFSET3當前等于零(OFFSET3=0),并且步驟“S64”的確定結果為“是”,這意味著流水線處理正在被中斷。該例程前進到步驟“S65”。
在步驟“S65”,啟動階段確定單元22計算流水線階段啟動參數(shù)(PIPEKICK),如下PIPEKICK=TABLE2[OFFSET2][OFFSET3],由此從流水線中斷表420獲得如下參數(shù)PIPEKICK=_S3,然后,該例程前進到步驟“S66”。
在步驟“S66”,為了減少流水線中斷表適配的OFFSET3,啟動階段確定單元22進行如下計算OFFSET3--,由此設置OFFSET3,如下OFFSET3=-1。
現(xiàn)在終止流水線啟動階段確定過程。此時從啟動階段確定單元22返回到流水線控制單元21下述參數(shù)OFFSET1=32767;OFFSET2=1;OFFSET3=-1;以及PIPEKICK=-S3。
該例程前進到圖5的步驟“S22”,以啟動流水線處理。根據(jù)在步驟“S21”中確定的流水線階段啟動參數(shù)“PIPEKICK=_S3”,啟動步驟“S22”的流水線處理。相應地,啟動第三階段(S3)逆DCT處理“P13”。
在下一步驟“S23”,流水線控制單元21等待逆DCT處理“P13”結束。
在步驟“S24”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?32768?OFFSET3當前等于負一(OFFSET3=-1),并且步驟“S24”的確定結果為“是”,這意味著流水線處理正在被中斷。該例程前進到步驟“S31”。
在步驟“S31”,為了確定是否已經(jīng)終止流水線處理中的中斷,流水線控制單元21確定OFFSET3是否等于負一,如下OFFSET3==-1?OFFSET3當前等于負一(OFFSET3=-1),并且步驟“S31”的確定結果為“是”,這意味著終止了流水線處理中的中斷。該例程前進到圖4的步驟“S13”。
在步驟“S13”,為了確定是否已經(jīng)完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA與MB_TN_VOP定義如下MBA=48;并且MB_IN_VOP=48。
因此,步驟“S13”的確定結果為“是”,這意味著已經(jīng)完全處理了所有幀內(nèi)宏塊?,F(xiàn)在終止解碼處理。
根據(jù)本實施例,提供變長解碼處理單元11、逆量化處理單元12、以及逆DCT處理單元13作為圖像解碼處理中的處理單元??商鎿Q地,可以提供任意其他處理單元。作為另一個替換方案,可以將多個處理單元集成到單個處理單元中。這些替換方案提供了與本實施例類似的優(yōu)點,雖然在流水線處理階段的數(shù)目上有些變化。
第二實施例圖10為顯示根據(jù)第二實施例的圖像數(shù)據(jù)處理裝置200的方框圖。與根據(jù)先前實施例的圖像數(shù)據(jù)處理裝置100類似,根據(jù)本實施例的圖像數(shù)據(jù)處理裝置200提供了對符合由MPEG標準代表的任意運動圖像處理標準的編碼數(shù)據(jù)的、得力于流水線處理的高速解碼。另外,根據(jù)本實施例的圖像數(shù)據(jù)處理裝置200提供了對已解碼圖像顯示中的干擾的高效隱藏,在存在輸入編碼數(shù)據(jù)代碼錯誤的情況下,該干擾在其他情況下會顯著。
在圖10中,對于與圖1中類似的元件,給于相同的附圖標記,并且此處省略與其相關的描述。
圖10的根據(jù)本實施例的圖像數(shù)據(jù)處理裝置200包含圖像數(shù)據(jù)解碼單元10、流水線控制器20、存儲器30、輸入/輸出接口40、以及錯誤隱藏處理單元50。
圖像數(shù)據(jù)解碼單元10包含變長解碼處理單元11、逆量化處理單元12、逆DCT處理單元13、以及運動補償處理單元14。變長解碼處理單元11包含代碼錯誤檢測單元15。
流水線控制器20包括流水線控制單元21、啟動階段確定單元22、啟動表存儲單元23、以及偏移確定單元24。
連接到數(shù)據(jù)總線80的錯誤隱藏處理單元50通過控制線81連接到流水線控制器20。
其他元件與根據(jù)先前實施例的圖像數(shù)據(jù)處理裝置100中的類似,并且此處省略與其相關的描述。
圖11為顯示根據(jù)本實施例的流水線處理的時間圖。
如圖11所示,根據(jù)本實施例的流水線處理包含變長解碼處理“P11”、逆量化處理“P12”、以及逆DCT處理“P13”。圖11的水平軸與垂直軸分別表示經(jīng)過時間和與圖像解碼相關的流水線處理階段。該流水線處理階段包含三個階段變長解碼處理“P11”的第一階段(S1)、逆量化處理“P12”的第二階段(S2)、以及逆DCT處理“P13”的第三階段(S3)。
此處省略處理“P11”、“P12”,以及“P13”的進一步的細節(jié),因為其在本發(fā)明的范圍之外。
參照圖11的流水線處理時間圖,顯示響應于周期“TM2”期間、在宏塊“MB2”經(jīng)歷變長解碼處理“P11”的過程中發(fā)生解碼錯誤,而執(zhí)行錯誤隱藏處理。
周期“TP0”到“TV0”與根據(jù)先前實施例的圖3的流水線處理時間圖中的類似,此處省略與其相關的進一步的細節(jié)。
在周期“TV0”中對分組頭部信息(VP)的變長解碼處理“P11”結束之后的周期“TM2”,宏塊“MB2”、宏塊“MB1”、與宏塊“MB0”并行地分別經(jīng)過變長解碼處理“P11”、逆量化處理“P12”、與逆DCT處理“P13”。
本實施例假定代碼錯誤檢測單元15在宏塊“MB2”經(jīng)歷變長解碼處理“P11”的過程中、從來自宏塊“MB2”的變長代碼數(shù)據(jù)中檢測到錯誤,由此使之不可能正常地解碼當前宏塊“MB2”以及隨后直至“MB47”的宏塊。此后執(zhí)行錯誤隱藏處理,以抑制數(shù)據(jù)錯誤引起的已解碼圖像中的干擾。在錯誤隱藏處理之前,流水線控制器20允許流水線處理中的所有宏塊“MB0”至“MB2”完全經(jīng)過三階段處理直至第三階段逆DCT處理“P13”。然而,宏塊“MB2”不需要經(jīng)過第二階段逆量化處理“P12”以及第三階段逆DCT處理“P13”兩者,這是因為在宏塊“MB2”經(jīng)歷第一階段變長解碼處理“P11”的過程中發(fā)生的數(shù)據(jù)錯誤使宏塊“MB2”不需要經(jīng)歷隨后階段的進一步處理。
相應地,在周期“TM2”,流水線控制器20終止施加到宏塊“MB2”的變長解碼處理“P11”(但是,在檢測到錯誤以及所伴隨的解決錯誤之后終止處理“P11”)、施加到宏塊“MB1”的逆量化處理“P12”、以及施加到宏塊“MB0”的逆DCT處理“P13”的并行處理。
在周期“TM3”,宏塊“MB2”只經(jīng)歷逆DCT處理“P13”。
在周期“TM3”的處理結束之后的周期“TC0”,宏塊“MB2”至“MB47”經(jīng)過錯誤隱藏處理。
根據(jù)錯誤隱藏處理的一種方法,通過以下隱藏錯誤用在存儲器30中存儲的、相應的先前幀(例如緊接先前的幀)的已解碼圖像,替換出錯的宏塊以及隨后的宏塊。在根據(jù)本實施例的圖像數(shù)據(jù)處理裝置200中,不能被正常解碼的宏塊“MB2”至“MB47”可以由以下替換緊接先前幀的相同位置上的已解碼圖像的相應宏塊。作為結果,提供了完整的已解碼圖像幀。
考慮到在圖10根據(jù)本實施例的圖像數(shù)據(jù)處理裝置200中可能會發(fā)生圖11的解碼錯誤,以下參照根據(jù)先前實施例的圖6至9以及根據(jù)本實施例的圖12至13討論流水線控制方法。
圖12為顯示根據(jù)本實施例的流水線控制方法前半部分的流程圖,圖13為顯示其后半部分的流程圖。在圖12中,加圈標記“E”、“F”、“G”分別鏈接到圖13中的加圈標記。
周期“TP0”、“TM0””到“TM1”、以及“TV0”本實施例假設在當前周期期間沒有發(fā)生解碼錯誤,并且在圖12的步驟“S78”的錯誤標志初始化過程中,如下設置錯誤標志(ERR),使其等于零ERR=0。
相應地,在確定存在錯誤的、圖12的步驟“S73”與“S79”,每個確定結果都為“否”。作為結果,本周期期間實際執(zhí)行的流水線控制流與根據(jù)先前實施例的周期“TP0”、“TM0”到“TM1”、以及“TV0”期間的類似,并且此處省略其相關描述。
周期“TM2”根據(jù)上述假設,在本周期,檢測到流水線處理中發(fā)生了解碼錯誤。本周期期間的處理開始于圖12的步驟“S79”。
在本周期的開始處,主要參數(shù)設置如下。
MBA=2;PIPE_END=0;MB_PROC=0;OFFSET1=2;OFFSET2=0;OFFSET3=-32768;以及ERR=0。
在步驟“S79”,為了確定是否存在錯誤,流水線控制單元21確定ERR是否不等于0,如下ERR?。??當在變長解碼處理“P11”期間、從變長代碼數(shù)據(jù)中檢測到數(shù)據(jù)錯誤時,用于確定錯誤存在的錯誤標志(ERR)由代碼錯誤檢測單元15設置等于一(ERR=1)。
錯誤標志(ERR)當前等于零(ERR=0),并且步驟“S79”確定的結果為“否”,這意味著不存在錯誤。該例程前進到步驟“S81”。
在步驟“S81”,流水線控制單元21初始化宏塊處理標志(MB_PROC),如下MB_PROC=1。
該例程前進到圖13的步驟“S82”。
在圖13的步驟“S82”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于二(OFFSET1=2),并且步驟“S82”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理。該例程前進到步驟“S83”。
在步驟“S83”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下PIPE_END?。??。
因為PIPE_END當前等于零(PIPE_END=0),所以步驟“S83”的確定結果為“否”,這意味著沒有開始流水線處理中的中斷。該例程前進到步驟“S86”。
在步驟“S86”,開始流水線啟動階段確定過程。此時,從圖10的流水線控制單元21向圖10的啟動階段確定單元22傳送下述參數(shù)。
OFFSET1=2;OFFSET2=0;以及OFFSET3=-32768。
在步驟“S86”,開始流水線啟動階段確定過程,以執(zhí)行根據(jù)圖6與7流程圖的處理。根據(jù)本實施例的流水線啟動階段確定過程與根據(jù)先前實施例的類似,并且此處省略其相關描述。
在步驟“S86”流水線啟動階段確定過程的結束處,從啟動階段確定單元22返回到流水線控制單元21下述參數(shù)。
OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及PIPEKICK=_S1|_S2|_S3。
在步驟“S87”,流水線控制單元21啟動流水線處理。在步驟“S87”啟動流水線處理時,根據(jù)步驟“S86”中確定的、在流水線階段啟動參數(shù)(PIPEKICK)中設置的元素“_S1|_S2|_S3”,并行地啟動所有流水線處理階段,即第一階段(S1)變長解碼處理“P11”、第二階段(S2)逆量化處理“P12”、以及第三階段(S3)逆DCT處理“P13”。
在步驟“S88”,流水線控制單元21等待并行啟動的處理階段的結束。在該步驟,檢測到圖11時間圖所假定的、在宏塊“MB2”處變長編碼數(shù)據(jù)中發(fā)生數(shù)據(jù)錯誤。更具體地,在該步驟“S88”,當圖10的變長解碼處理單元11對宏塊“MB2”進行變長解碼處理“P11”時,代碼錯誤檢測單元15從變長編碼數(shù)據(jù)中,檢測到數(shù)據(jù)錯誤,結果使錯誤標志(ERR)設置等于一,即ERR=1。
在變長解碼處理單元11參照變長編碼表對變長編碼數(shù)據(jù)進行解碼的同時,當(例如)在變長編碼表中不存在所輸入的變長編碼數(shù)據(jù)時,代碼錯誤檢測單元15從變長編碼數(shù)據(jù)中檢測到代碼錯誤。
在步驟“S89”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3!=-32768?OFFSET3當前等于-32768(OFFSET3=-32768),并且步驟“S89”的確定結果為“否”,這意味著流水線處理沒有正在被中斷。該例程前進到步驟“S91”。
在步驟“S91”,為了增加宏塊計數(shù)器(MBA),流水線控制單元21進行如下計算MBA++,由此如下設置MBAMBA=3。
該例程前進到步驟“S92”。
在下一步驟“S92”,確定是否存在頭部。假定該步驟的確定結果為“否”,這意味著不存在頭部。該例程前進到步驟“S95”。
在步驟“S95”,為了確定是否完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA與MB_IN_VOP如下定義MBA=3;并且MB_IN_VOP=48。
因此,步驟“S95”的確定結果為“否”,這意味著仍然剩余有宏塊要處理。
現(xiàn)在,本周期“TM2”期間的處理完成,該例程返回圖12的步驟“S79”。
周期“TM3”在本周期,執(zhí)行發(fā)生解碼誤差之后的流水線處理,并且開始于圖12的步驟“S79”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=3;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;OFFSET3=-32768;以及ERR=1。
在步驟“S79”,為了確定是否存在錯誤,流水線控制單元21確定ERR是否不等于零,如下ERR!=0?錯誤標志(ERR)當前等于一(ERR=1),并且步驟“S79”的確定結果為“是”,這意味著存在錯誤。該例程前進到步驟“S80”。
在步驟“S80”,為了設置流水線中斷標志(PIPE_END),流水線控制單元21將其如下設置PIPE_END=1。
該例程前進到圖13的步驟“S82”。
在圖13的步驟“S82”,為了確定流水線處理是否為流水線的第一處理,流水線控制單元21確定OFFSET1是否等于零,如下OFFSET1==0?OFFSET1當前等于32767(OFFSET1=32767),并且步驟“S82”的確定結果為“否”,這意味著流水線處理不是流水線的第一處理。該例程前進到步驟“S83”。
在步驟“S83”,為了確定是否開始了流水線處理中的中斷,流水線控制單元21確定PIPE_END是否不等于零,如下
PIPE_END?。??。
因為PIPE_END當前等于一(PIPE_END=1),所以步驟“S83”的確定結果為“是”,這意味著開始了流水線處理中的中斷。該例程前進到步驟“S84”。
在步驟“S84”,從圖10的流水線控制單元21向圖10的偏移確定單元24傳送下述參數(shù),由此啟動流水線啟動表引用適配的偏移確定過程。
PIPE_END=1,MB_PROC=1,并且OFFSET1=32767。
作為結果,確定偏移值(OFFSET1、OFFSET2、OFFEST3),其被用來引用在圖10的啟動表存儲單元23中存儲的流水線啟動表。所存儲的流水線啟動表包含流水線引導表與流水線中斷表。
作為流水線啟動表引用適配的偏移確定過程的結果,從偏移確定單元24返回到流水線控制單元21下述參數(shù)OFFSET1=32767;OFFSET2=0;OFFSET3=0;以及PIPE_END=0。
該例程前進到步驟“S85”。
在步驟“S85”,為了確定流水線處理是否不被中斷,流水線控制單元21確定OFFSET2是否等于-32768,如下OFFSET2==-32768?OFFSET2當前等于零(OFFSET2=0),并且步驟“S85”的確定結果為“否”,這意味著要中斷流水線處理。該例程前進到步驟“S86”。
在步驟“S86”,開始流水線啟動階段確定過程。此時,從圖10的流水線控制單元21向圖10的啟動階段確定單元22傳送下述參數(shù)。
OFFSET1=32767;OFFSET2=0;以及OFFSET3=0。
在流水線啟動階段確定過程的結束處,從啟動階段確定單元22返回到流水線控制單元21下述參數(shù)。
OFFSET1=32767;
OFFSET2=0;OFFSET3=-1;以及PIPEKICK=_S3。
在下一步驟“S87”,流水線控制單元21啟動流水線處理。在該步驟“S87”,根據(jù)流水線階段啟動參數(shù)(PIPEKICK)的元素“_S3”,啟動第三階段(S3)逆DCT處理“P13”。
在步驟“S88”,流水線控制單元21等待逆DCT處理“P13”結束。
在步驟“S89”,為了確定流水線處理是否正在被中斷,流水線控制單元21確定OFFSET3是否不等于-32768,如下OFFSET3?。?32768?OFFSET3當前等于-1(OFFSET3=-1),并且步驟“S89”的確定結果為“是”,這意味著流水線處理正在被中斷。該例程前進到步驟“S90”。
在步驟“S90”,為了確定是否終止了流水線處理中的中斷,流水線控制單元21確定OFFSET3是否等于-1,如下OFFSET3==-1?OFFSET3當前等于-1(OFFSET3=-1),并且步驟“S90”的確定結果為“是”,這意味著終止了流水線處理中的中斷。
現(xiàn)在終止本周期“TM3”期間的處理。該例程前進到圖12的步驟“S73”。
周期“TC0”在本周期,執(zhí)行錯誤隱藏處理,并且開始于圖12的步驟“S73”。
在本周期開始處,主要參數(shù)如下地設置。
MBA=3;PIPE_END=0;MB_PROC=1;OFFSET1=32767;OFFSET2=0;OFFSET3=-1;以及ERR=1。
在步驟“S73”,為了確定是否存在錯誤,流水線控制單元21確定ERR是否不等于零,如下ERR?。??
錯誤標志(ERR)當前等于一(ERR=1),并且步驟“S73”的確定結果為“是”,這意味著存在錯誤。該例程前進到步驟“S74”。
在步驟“S74”,開始錯誤隱藏處理,以啟動圖10的錯誤隱藏處理單元50。此時從流水線控制單元21向錯誤隱藏處理單元50傳送下述參數(shù)。
MBA=3;以及MB_IN_VOP=48。
以下參照圖14討論根據(jù)本實施例的錯誤隱藏處理。
圖14為顯示根據(jù)本實施例的錯誤隱藏處理的流程圖。
當響應于圖12的步驟“S74”開始錯誤隱藏處理、啟動圖10的錯誤隱藏處理單元50時,根據(jù)圖14的錯誤隱藏處理流程圖開始錯誤隱藏處理。
在圖14的步驟“S97”,為了匹配宏塊計數(shù)器“MBA”與發(fā)生了解碼錯誤的宏塊,錯誤隱藏處理單元50進行如下計算,以減少宏塊計數(shù)器MBA--,該減少結果為“MBA=2”(“MBA=2”表示發(fā)生了解碼錯誤的宏塊號)。
在步驟“S98”,為了確定是否完成了錯誤隱藏處理,錯誤隱藏處理單元50確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?,MBA當前等于二(MBA=2),并且步驟“S98”的確定結果為“否”,這意味著錯誤隱藏處理仍然在進行中。該例程前進到步驟“S99”。
在步驟“S99”,為了隱藏錯誤,在圖10存儲器30中存儲的緊接先前幀已解碼圖像中、其中相應已解碼圖像位于相應于宏塊“MB2”位置的位置上的已解碼圖像,由錯誤隱藏處理單元50再生到宏塊“MB2”上,該宏塊“MB2”為其中要隱藏的當前幀相應已解碼圖像中錯誤的對象。該例程前進到步驟“S100”。
在步驟“S100”,為了增加宏塊計數(shù)器MBA,錯誤隱藏處理單元50執(zhí)行以下計算MBA++,由此將MBA設置為新值,如下MBA=3。
該例程返回到步驟“S98”。
隨后,重復從步驟“S98”到“S100”的處理,直至宏塊計數(shù)器“MBA”達到48,并且如下設置MBA=48。
在步驟“S98”,為了確定是否完成了錯誤隱藏處理,錯誤隱藏處理單元50確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?,MBA當前等于48(MBA=48),并且步驟“S98”的確定結果為“是”,這意味終止了錯誤隱藏處理?,F(xiàn)在終止錯誤隱藏處理。
通過這種方式,終止錯誤隱藏處理,該處理從發(fā)生解碼錯誤的宏塊“MB2”覆蓋到最后一個宏塊“MB47”。此時,從錯誤隱藏處理單元50返回到流水線控制單元21下述參數(shù)。
MBA=48;以及MB_IN_VOP=48。
隨后,該例程前進到圖12的步驟“S75”,該步驟“S75”,為了確定是否完全處理了所有幀內(nèi)宏塊,流水線控制單元21確定MBA是否等于或大于MB_IN_VOP,如下MBA>=MB_IN_VOP?目前,MBA等于48(MBA=48)、并且MB_IN_VOP等于48(MB_IN_VOP=48),并且步驟“S75”的確定結果為“是”,這意味著完全處理了所有幀內(nèi)宏塊?,F(xiàn)在終止伴隨錯誤隱藏處理的一系列解碼過程。
根據(jù)本實施例,提供變長解碼處理單元11、逆量化處理單元12、以及逆DCT處理單元13作為圖像解碼處理中使用的處理單元??商鎿Q地,可以采用任意其他處理單元。作為另一個替換方案,可以將多個處理單元組合為單個處理單元。這些替換方案提供了與本實施例類似的優(yōu)點,雖然在流水線處理階段的數(shù)目上有些變化。
第三實施例圖15為顯示根據(jù)第三實施例的圖像數(shù)據(jù)處理裝置300的方框圖。根據(jù)本實施例的圖像數(shù)據(jù)處理裝置300提供了得力于流水線處理的、將每個宏塊的圖像數(shù)據(jù)高速編碼為符合由MPEG標準代表的任意運動圖像處理標準的編碼數(shù)據(jù)。
在圖15中,對于與圖1中類似的元件,給于相同的附圖標記,并且此處省略與其相關的描述。
圖15的根據(jù)本實施例的圖像數(shù)據(jù)處理裝置300包含圖像數(shù)據(jù)編碼單元60、流水線控制器20、存儲器30、以及輸入/輸出接口40。
圖像數(shù)據(jù)編碼單元60包含變長編碼處理單元61、DCT處理單元62、量化處理單元63、運動檢測處理單元64、運動補償處理單元65、逆量化處理單元66、以及逆DCT處理單元67。
流水線控制器20包括流水線控制單元21、啟動階段確定單元22、啟動表存儲單元23以及偏移確定單元24。
圖像數(shù)據(jù)編碼單元60的元件61至67、存儲器30、以及輸入/輸出接口40連接到數(shù)據(jù)總線80。元件61至67通過控制線81連接到流水線控制單元21。
運動檢測處理單元64用來根據(jù)輸入圖像數(shù)據(jù)(即當前幀的輸入圖像數(shù)據(jù))以及先前幀的重新配置的圖像數(shù)據(jù)、檢測當前幀的運動向量。先前幀的重新配置的圖像數(shù)據(jù)存儲在存儲器30中。
運動補償處理單元65用來根據(jù)來自運動檢測處理單元64的所檢測的運動向量以及來自存儲器30的先前幀的重新配置的圖像數(shù)據(jù)、生成當前幀的預測圖像數(shù)據(jù)。
DCT處理單元62用來對來自運動補償處理單元65的預測圖像數(shù)據(jù)與輸入圖像數(shù)據(jù)之間的差異進行DCT處理,由此提供DCT系數(shù)。
量化處理單元63用來量化來自DCT處理單元62的DCT系數(shù),由此提供經(jīng)量化的DCT系數(shù)。
逆量化處理單元66用來對來自量化處理單元63的經(jīng)量化的DCT系數(shù)進行逆量化,由此提供經(jīng)逆量化的DCT系數(shù)。
逆DCT處理單元67用來對來自逆量化處理單元66的經(jīng)逆量化的DCT系數(shù)進行逆DCT處理,由此提供DCT系數(shù),用于獲得重新配置的圖像數(shù)據(jù)。
變長編碼處理單元61用來對來自量化處理單元63的經(jīng)量化的DCT系數(shù)、以及來自運動檢測處理單元64的所檢測的運動向量進行變長編碼,由此提供編碼數(shù)據(jù)。
上述元件61至67在本發(fā)明范圍之外,此處省略其相關詳細描述。
在根據(jù)本實施例的圖像數(shù)據(jù)處理裝置300中,流水線控制器20執(zhí)行對圖像數(shù)據(jù)編碼單元60中的得力于流水線處理的圖像編碼處理過程的流水線控制。
圖16為顯示根據(jù)本實施例的流水線處理的時間圖。圖16顯示得力于流水線處理的并行過程的例子由圖像數(shù)據(jù)編碼單元60進行的一系列處理中的運動檢測處理“P21”、運動補償處理“P22”、DCT處理“P23”、量化處理“P24,,的并行過程的例子。以下概述了以上并行過程。
在周期“TM0”,宏塊“MB0”經(jīng)過運動檢測處理“P21”。
在周期“TM1”,宏塊“MB1”、與宏塊“MB0”分別并行地經(jīng)過運動檢測處理“P21”、與運動補償處理“P22”。
在周期“TM2”,宏塊“MB2”、宏塊“MB1”、與宏塊“MB0”分別并行地經(jīng)過運動檢測處理“P21”、運動補償處理“P22”、與DCT處理“P23”。
在周期“TM3”,宏塊“MB3”、宏塊“MB2”、宏塊“MB1”、與宏塊“MB0,,分別并行經(jīng)過運動檢測處理“P21”、運動補償處理“P22”、DCT處理“P23”、與量化處理“P24”。
在隨后直至周期“TM47”的周期,宏塊“MB1”至“MB47”重復經(jīng)過類似的并行處理。
在周期“TM48”,宏塊“MB47”、宏塊“MB46”、與宏塊“MB45,,分別并行經(jīng)過運動補償處理“P22”、DCT處理“P23”、與量化處理“P24”。
在周期“TM49”,宏塊“MB47”、宏塊“MB46”分別并行經(jīng)過DCT處理“P23”、與量化處理“P24”。
在周期“TM50”,宏塊“MB47”經(jīng)過量化處理“P24”。
以上流水線處理由圖15的流水線控制器20控制。
啟動表存儲單元23配備有流水線啟動表,用于啟動并行處理“P21,,至“P24”,如上所述。流水線啟動表包含流水線引導表與流水線中斷表。這些表以類似于圖9(a)與9(b)中的方式配置,并且省略其相關詳細描述。
偏移確定單元24用來確定用于引用在啟動表存儲單元23中的流水線引導表與流水線中斷表的偏移值。
啟動階段確定單元22用來根據(jù)來自偏移確定單元24的所確定的偏移值、確定流水線階段啟動方法。
流水線控制單元21用來根據(jù)來自啟動階段確定單元22的所確定的流水線階段啟動方法、啟動圖像數(shù)據(jù)編碼單元60的相應流水線階段元件。
根據(jù)第一實施例的流水線控制流程圖,可以容易地類推根據(jù)本實施例的流水線控制流程圖,并且此處省略其相關的具體描述。
以上討論根據(jù)本實施例的圖像數(shù)據(jù)處理裝置300中流水線階段的并行過程,即運動檢測處理“P21”、運動補償處理“P22”、DCT處理“P23”、量化處理“P24”的并行過程。其他流水線階段的替換并行過程也是可以接受的。例如,如果在運動檢測處理單元64與存儲器30之間傳送數(shù)據(jù)需要大量時間,則可以進行數(shù)據(jù)傳送的并行處理。
本發(fā)明提供了圖像數(shù)據(jù)處理裝置與方法,通過其可以根據(jù)流水線處理得到對圖像數(shù)據(jù)的快速高效的編碼與解碼。
如上所述,本發(fā)明的目的在于提供一種圖像數(shù)據(jù)處理裝置,用來提供得力于流水線處理的、對圖像數(shù)據(jù)的快速高效的編碼與解碼。因此,在不脫離本發(fā)明的精神與范圍的前提下,本發(fā)明具有各種用途。
以上參照附圖描述了本發(fā)明的優(yōu)選實施例,應該理解本發(fā)明不限于這些確切的實施例,在不脫離權利要求限定的本發(fā)明的精神與范圍的前提下,本領域技術人員可以在其中進行各種變化與修改。
工業(yè)實用性根據(jù)本發(fā)明的圖像數(shù)據(jù)處理裝置可用于需要圖像處理的電子裝置,例如備有內(nèi)置相機的手機、及其各種用途領域。
權利要求
1.一種圖像數(shù)據(jù)處理裝置,包含圖像數(shù)據(jù)解碼單元,用來允許將送入所述圖像數(shù)據(jù)處理裝置的輸入編碼數(shù)據(jù)通過流水線處理解碼,由此提供已解碼圖像數(shù)據(jù);流水線控制器,用來控制所述圖像數(shù)據(jù)解碼單元中的流水線處理;以及存儲器,用來存儲輸入編碼數(shù)據(jù)與已解碼圖像數(shù)據(jù)。
2.如權利要求1所述的圖像數(shù)據(jù)處理裝置,其中所述圖像數(shù)據(jù)解碼單元包含多階段數(shù)據(jù)處理單元,用來實現(xiàn)流水線處理,并且其中所述多階段數(shù)據(jù)處理單元包含以下中的至少兩個變長解碼處理單元,用來實現(xiàn)輸入編碼數(shù)據(jù)的變長解碼,由此提供量化DCT系數(shù)與運動向量;逆量化處理單元,用來對來自所述變長解碼處理單元的量化DCT系數(shù)進行逆量化,由此提供經(jīng)逆量化的DCT系數(shù);逆DCT處理單元,用來實現(xiàn)對來自所述逆量化處理單元的經(jīng)逆量化的DCT系數(shù)的逆DCT處理,由此提供DCT系數(shù);以及運動補償處理單元,用來利用來自所述逆DCT處理單元的DCT系數(shù)、來自所述變長解碼處理單元的運動向量、以及存儲在所述存儲器中先前幀的已解碼圖像數(shù)據(jù),生成當前幀的已解碼圖像數(shù)據(jù)。
3.如權利要求1所述的圖像數(shù)據(jù)處理裝置,其中所述流水線控制器包含啟動表存儲單元,用來包含流水線啟動表,在該表中注冊關于對所述圖像數(shù)據(jù)解碼單元中流水線處理的控制的啟動信息;偏移確定單元,用來確定用于引用所述啟動表存儲單元中的流水線啟動表的偏移值;啟動階段確定單元,用來根據(jù)由所述偏移確定單元確定的偏移值、從所述啟動表存儲單元中的流水線啟動表讀取啟動信息,由此確定所述圖像數(shù)據(jù)解碼單元中流水線處理的啟動方法;以及流水線控制單元,用來控制所述偏移確定單元與所述啟動階段確定單元,由此根據(jù)由所述啟動階段確定單元確定的流水線處理啟動方法、控制所述圖像數(shù)據(jù)解碼單元中的流水線處理。
4.如權利要求2所述的圖像數(shù)據(jù)處理裝置,進一步包含錯誤隱藏處理單元,其中所述變長解碼處理單元進一步包含代碼錯誤檢測單元,用來檢測來自輸入編碼數(shù)據(jù)的代碼錯誤,以及其中當所述代碼錯誤檢測單元檢測輸入編碼數(shù)據(jù)宏塊上的代碼錯誤時,所述錯誤隱藏處理單元將來自所述存儲器的先前解碼的圖像數(shù)據(jù)施加到其上檢測到錯誤的宏塊、以及隨后的宏塊上,由此隱藏已解碼圖像顯示中的干擾,該干擾由輸入編碼數(shù)據(jù)中代碼錯誤造成。
5.如權利要求4所述的圖像數(shù)據(jù)處理裝置,其中當所述代碼錯誤檢測單元檢測到輸入編碼數(shù)據(jù)宏塊上的代碼錯誤時,所述錯誤隱藏處理單元從其上要隱藏已解碼圖像顯示中的干擾的目標中、排除先前處理的宏塊,該先前處理的宏塊比其上檢測到錯誤的宏塊早一流水線處理階段數(shù)目而得到處理。
6.一種圖像數(shù)據(jù)處理裝置,包含圖像數(shù)據(jù)編碼單元,用來允許將送入所述圖像數(shù)據(jù)處理裝置的輸入圖像數(shù)據(jù)通過流水線處理編碼,由此提供編碼數(shù)據(jù);流水線控制器,用來控制所述圖像數(shù)據(jù)編碼單元中的流水線處理;以及存儲器,用來存儲相應于輸入圖像數(shù)據(jù)的重新配置的圖像數(shù)據(jù)、以及編碼數(shù)據(jù)。
7.如權利要求6所述的圖像數(shù)據(jù)處理裝置,其中所述圖像數(shù)據(jù)編碼單元包含多階段數(shù)據(jù)處理單元,用來實現(xiàn)流水線處理,并且其中所述多階段數(shù)據(jù)處理單元包含以下中的至少兩個運動檢測處理單元,用來使用為當前幀輸入圖像數(shù)據(jù)的輸入圖像數(shù)據(jù)、以及存儲在所述存儲器中的先前幀的重新配置圖像數(shù)據(jù),檢測當前幀的運動向量;運動補償處理單元,用來使用由所述運動檢測處理單元檢測的運動向量、以及所述存儲器中的先前幀的重新配置圖像數(shù)據(jù),生成當前幀的預測圖像數(shù)據(jù);DCT處理單元,用來對由所述運動補償處理單元生成的預測圖像數(shù)據(jù)與輸入圖像數(shù)據(jù)之間的差異進行DCT處理,由此提供DCT系數(shù);量化處理單元,用來量化來自所述DCT處理單元的DCT系數(shù),由此提供量化DCT系數(shù);逆量化處理單元,用來對來自所述量化處理單元的量化DCT系數(shù)進行逆量化,由此提供逆量化DCT系數(shù);逆DCT處理單元,用來對來自所述逆量化處理單元的逆量化DCT系數(shù)進行逆DCT處理,由此提供用于獲取重新配置圖像數(shù)據(jù)的DCT系數(shù);以及變長編碼處理單元,用來對來自所述量化處理單元的量化DCT系數(shù)、以及由所述運動檢測處理單元檢測的運動向量進行變長編碼,由此提供編碼數(shù)據(jù)。
8.如權利要求6所述的圖像數(shù)據(jù)處理裝置,其中所述流水線控制器包含啟動表存儲單元,用來包含流水線啟動表,在該表中注冊關于對所述圖像數(shù)據(jù)編碼單元中流水線處理的控制的啟動信息;偏移確定單元,用來確定用于引用所述啟動表存儲單元中的流水線啟動表的偏移值;啟動階段確定單元,用來根據(jù)由所述偏移確定單元確定的偏移值、從所述啟動表存儲單元中的流水線啟動表讀取啟動信息,由此確定所述圖像數(shù)據(jù)編碼單元中流水線處理的啟動方法;以及流水線控制單元,用來控制所述偏移確定單元與所述啟動階段確定單元,由此根據(jù)由所述啟動階段確定單元確定的流水線處理啟動方法、控制所述圖像數(shù)據(jù)編碼單元中的流水線處理。
9.一種圖像數(shù)據(jù)處理方法,包含通過多階段流水線處理圖像數(shù)據(jù);存儲所處理的圖像數(shù)據(jù);以及控制多階段流水線。
10.如權利要求9所述的圖像數(shù)據(jù)處理方法,其中所述控制多階段流水線包含存儲流水線啟動表,在該表中注冊關于對多階段流水線啟動的控制的啟動信息;確定用于引用流水線啟動表的偏移值;根據(jù)所確定的偏移值,從流水線啟動表獲得啟動信息,由此確定多階段流水線的啟動方法;以及根據(jù)所確定的多階段流水線的啟動方法,控制多階段流水線。
11.如權利要求9所述的圖像數(shù)據(jù)處理方法,其中所述通過多階段流水線處理圖像數(shù)據(jù)包含解碼每個宏塊的編碼數(shù)據(jù);檢測來自編碼數(shù)據(jù)的代碼錯誤;以及進行錯誤隱藏處理,其中當在所述檢測代碼錯誤期間在宏塊上檢測到代碼錯誤時,所述控制多階段流水線包含中斷對于其上檢測到代碼錯誤的宏塊之后的宏塊的解碼處理,由此實現(xiàn)錯誤隱藏處理。
12.如權利要求11所述的圖像數(shù)據(jù)處理方法,其中所述進行錯誤隱藏處理包含施加由所述存儲所處理的圖像數(shù)據(jù)存儲的先前處理的圖像數(shù)據(jù),由此實現(xiàn)錯誤隱藏處理。
全文摘要
圖像數(shù)據(jù)處理裝置(100)包含圖像數(shù)據(jù)解碼單元(10),用來執(zhí)行得力于流水線處理的解碼處理;流水線控制器(20),用來控制圖像數(shù)據(jù)解碼單元(10)中的流水線處理;存儲器30;以及輸入/輸出接口40。流水線控制器(20)根據(jù)關于流水線階段啟動的信息,控制流水線處理。該信息存儲在啟動表存儲單元(23)中。本配置使之能提供一種用來當在解碼處理期間發(fā)生解碼錯誤而使流水線控制被干擾時、將已解碼圖像退化抑制到最小程度、由此實現(xiàn)高品質(zhì)圖像的圖像數(shù)據(jù)處理裝置。
文檔編號G06F11/07GK1947425SQ200580013180
公開日2007年4月11日 申請日期2005年9月30日 優(yōu)先權日2004年10月13日
發(fā)明者近藤孝宏 申請人:松下電器產(chǎn)業(yè)株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
集贤县| 潍坊市| 商河县| 靖江市| 柘荣县| 长顺县| 福海县| 峨山| 长丰县| 永德县| 肥乡县| 叙永县| 女性| 宁陕县| 松桃| 威海市| 石首市| 右玉县| 榆林市| 济阳县| 泸定县| 岚皋县| 榆树市| 英吉沙县| 双峰县| 全州县| 西藏| 贵州省| 富民县| 舟曲县| 铜梁县| 安达市| 新巴尔虎右旗| 涞源县| 民县| 松江区| 杭州市| 增城市| 平武县| 林甸县| 治多县|