專利名稱:用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼存儲需求的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及視頻數(shù)據(jù)的代碼轉(zhuǎn)換,尤其是涉及用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼存儲需求的系統(tǒng)和方法。
背景技術(shù):
現(xiàn)有編碼-解碼器系統(tǒng)使用熵代碼轉(zhuǎn)換來減少復(fù)雜度和進(jìn)行實時編碼-解碼,必須使用相當(dāng)大的代碼轉(zhuǎn)換緩沖區(qū),而且還必須在輸入緩沖區(qū)中提供額外的緩沖區(qū)空間。需要這種額外數(shù)據(jù)存儲的根本原因是現(xiàn)有系統(tǒng)代碼轉(zhuǎn)換引擎必須在完全的網(wǎng)絡(luò)抽象層(NAL)單元(也就是在附圖上maxTranscodeUnit=max NAL size,在附圖上最大代碼轉(zhuǎn)換單元=最大NAL尺寸)上完成操作,因此在當(dāng)前NAL處理完成前不能用來執(zhí)行任何其它操作。如果代碼轉(zhuǎn)換引擎有效運行沒有被停止,用于代碼轉(zhuǎn)換引擎的輸入緩沖區(qū)必須能夠包括至少除了用于建立下一個完整的NAL單元以外的一個完整的NAL單元,所以直到對一個特定數(shù)據(jù)流形成一個完整的NAL之前,代碼轉(zhuǎn)換引擎也可以做其它事(例如,處理另一個數(shù)據(jù)流)。當(dāng)在以前的NAL單元上操作代碼轉(zhuǎn)換引擎時,這個數(shù)據(jù)存儲器允許將有效緩沖區(qū)空間提供給代碼轉(zhuǎn)換引擎來填充/形成下一個NAL單元的過程,其以額外的緩沖區(qū)數(shù)據(jù)存儲器為代價,使得代碼轉(zhuǎn)換器停止的風(fēng)險最小。精確的存儲器大小是可變得,但對于這些額外的存儲器需要幾個典型的最大NAL尺寸。甚至可能需要較大的代碼轉(zhuǎn)換緩沖器,來解決從上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)到上下文自適應(yīng)變長編碼(CAVLC)的擴展。額外的數(shù)據(jù)存儲器需求數(shù)量和需要存儲2.5非壓縮圖像的數(shù)量一樣多。代碼轉(zhuǎn)換引擎可以是一個用來執(zhí)行多個同步編碼和解碼操作的單獨硬件單元。典型的,在許多家電用品中可以發(fā)現(xiàn)一個高密度(HD)電視解碼器和一個標(biāo)準(zhǔn)密度(SD)電視編碼器,或者兩個解碼器(SD或者HD)和一個編碼器(SD或者HD)。在現(xiàn)有技術(shù)中,代碼轉(zhuǎn)換操作不能在處理NAL單元時被打斷。由于每個NAL單元可以被獨立的熵解碼/代碼轉(zhuǎn)換,這樣的優(yōu)勢是當(dāng)在兩個不同的數(shù)據(jù)流處理過程之間切換時不需要存儲狀態(tài)信息。劣勢是需要巨大的緩沖區(qū)存儲器。相反,由于CAVLC解碼通常是在主機處理器上執(zhí)行,那么在一個宏模塊的行的(例如)基礎(chǔ)上可能被中斷/存儲和重新開始/恢復(fù),解碼代碼轉(zhuǎn)換緩沖區(qū)尺寸僅僅由解碼代碼轉(zhuǎn)換引擎可以處理的最小單元(一個擴展的最大NAL尺寸)規(guī)定,并且不需要提供較大的尺寸來容納不能在宏模塊行中存儲/恢復(fù)的它的狀態(tài)(由于一個壓縮的宏模塊行的最大尺寸遠(yuǎn)遠(yuǎn)小于一個壓縮圖像的最大尺寸)。
發(fā)明概述因此,需要一種用于減少CABAC代碼轉(zhuǎn)換器的數(shù)據(jù)存儲需求的方法。在一個典型實施例中,提供了一種減少CABAC存儲需求的系統(tǒng)。該系統(tǒng)包括一個用來在視頻數(shù)據(jù)流上執(zhí)行CABAC的代碼轉(zhuǎn)換引擎。代碼轉(zhuǎn)換引擎接收保存數(shù)據(jù),停止CABAC,并轉(zhuǎn)換視頻數(shù)據(jù)流到子網(wǎng)絡(luò)抽象層(NAL)單元狀態(tài)數(shù)據(jù)。一個熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng)接收子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)和存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)。代碼轉(zhuǎn)換引擎隨后接收恢復(fù)數(shù)據(jù),從熵狀態(tài)數(shù)據(jù)存儲系統(tǒng)中抽取子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù),并且在視頻數(shù)據(jù)流上重新開始CABAC。本領(lǐng)域技術(shù)人員通過結(jié)合附圖的詳細(xì)描述所理解的其它重要方面,可以進(jìn)一步意識到本發(fā)明的優(yōu)勢和好處。
附圖的概括說明
圖1是根據(jù)本發(fā)明的一個典型實施例,用于減少CABAC存儲需求的系統(tǒng)框圖;圖2是根據(jù)本發(fā)明的一個典型實施例,用于執(zhí)行視頻編碼的系統(tǒng)框圖;圖3是根據(jù)本發(fā)明的一個典型實施例,用于編碼或解碼視頻數(shù)據(jù)流的方法流程圖,以便執(zhí)行具有減少的數(shù)據(jù)緩存需求的從CABAC到CAVLC的編碼或者從CAVLC到CABAC的編碼,以允許CABAC編碼在一個子網(wǎng)絡(luò)抽象層(sub-NAL)基礎(chǔ)上停止。
發(fā)明的詳細(xì)描述在下面的描述中,分別對說明書和附圖中的相同部分使用相同的附圖標(biāo)記。為了清楚和簡明,附圖所顯示的只是通常的或者示意性的構(gòu)造,不能依比例決定和確定部件,需要通過商品名稱來確定。圖1是根據(jù)本發(fā)明的一個典型實施例,用于減少CABAC存儲需求的系統(tǒng)100的框圖。系統(tǒng)100可以在硬件,軟件,或者一個適當(dāng)?shù)能浻布M合中執(zhí)行,也可以是在數(shù)字信號處理器平臺或者其它適當(dāng)?shù)挠布蛘哕浖到y(tǒng)上執(zhí)行的一個或者多個軟件系統(tǒng)。系統(tǒng)100從視頻輸入或者存儲器114接收視頻數(shù)據(jù),產(chǎn)生傳輸流輸出110。將視頻數(shù)據(jù)提供給視頻輸入116,視頻輸入提供視頻數(shù)據(jù)給H.264編碼器/預(yù)處理器118。視頻輸入數(shù)據(jù)也可以在視頻數(shù)據(jù)緩沖區(qū)(DPB)126中緩沖。作為傳輸流輸出發(fā)生器的一部分,H.264編碼/預(yù)處理器118提供數(shù)據(jù)到H.264命令發(fā)生器120,它產(chǎn)生主機/SP命令122。將從H.264編碼/預(yù)處理器118輸出的數(shù)據(jù),提供給H.264單獨的CAVLC ES緩沖區(qū)112,緩沖區(qū)112存儲從H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 only transcode to CABAC(Ep))的熵處理器所使用的狀態(tài)信息。系統(tǒng)100包括視頻PES緩沖區(qū)(CPB)102,用來接收視頻打包基本碼流(PES)數(shù)據(jù)和緩沖用來處理的視頻PES數(shù)據(jù)。視頻PES緩沖器(CPB)102提供數(shù)據(jù)給編程多路復(fù)用器108,其產(chǎn)生傳輸流輸出110。從H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 only transcode to CABAC(Ep))中接收數(shù)據(jù),其執(zhí)行CABAC代碼轉(zhuǎn)換和其它合適的處理。在一個典型實施例中,H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 only transcode to CABAC(Ep))可以在一個解碼操作中執(zhí)行從CABAC到CAVLC的譯碼,以及在一個編碼操作中執(zhí)行從CAVLC到CABAC的編碼。在附圖1所示的典型實施例中,正在執(zhí)行解碼。在一個典型實施例中,編程多路復(fù)用器108和H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 only transcode to CABAC(Ep))可以作為系統(tǒng)處理器的任務(wù)104來執(zhí)行。在這個典型實施例中,系統(tǒng)處理器通常從一個攜帶了H.264視頻數(shù)據(jù)或者其它合適數(shù)據(jù)的MPEG傳輸流的輸出中解析比特流,來分離出原始的壓縮視頻和音頻比特流,然而同時也可以用來執(zhí)行代碼轉(zhuǎn)換。因此,代碼轉(zhuǎn)換可能被中斷,其以前需要整個NAL單元存儲器。本發(fā)明通過允許代碼轉(zhuǎn)換中斷而不需要整個NAL單元存儲器,來減少存儲器需求。H.264單獨的CAVLC ES緩沖器112提供緩沖的狀態(tài)數(shù)據(jù)或者上下文自適應(yīng)變長編碼數(shù)據(jù)到H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 onlytranscode to CABAC(Ep))。在一個典型實施例中,H.264單獨的CAVLC ES緩沖器112緩沖子網(wǎng)絡(luò)抽象層(NAL)單元的狀態(tài)數(shù)據(jù),因此H.264單獨的CAVLCES緩沖區(qū)112的尺寸明顯小于現(xiàn)有技術(shù)需要的尺寸。在這個典型實施例中,現(xiàn)有技術(shù)的緩沖器和編碼器相連,比如H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264only transcode to CABAC(Ep)),編碼器不需要存儲狀態(tài)數(shù)據(jù)而僅僅在一個NAL單元上執(zhí)行CABAC編碼或者解碼直到結(jié)束,現(xiàn)有技術(shù)的緩沖器的大小范圍通常達(dá)到非壓縮圖像尺寸的2.5倍,反之利用本發(fā)明,H.264單獨的CAVLCES緩沖區(qū)112可以小于一個圖像尺寸。本發(fā)明允許H.264僅僅代碼轉(zhuǎn)換到CABAC(EP)106(H.264 only transcode to CABAC(Ep))停止對H.264數(shù)據(jù)的NAL單元的處理,并對那個NAL單元重新開始CABAC譯碼,例如其中的代碼轉(zhuǎn)換引擎必須執(zhí)行其它任務(wù)。因而,不需要在緩沖區(qū)中存儲整個NAL數(shù)據(jù)集合的裝置。H.264單獨的CAVLC ES緩沖區(qū)112接收來自于H.264編碼器/預(yù)處理器118的數(shù)據(jù)。將來自于視頻輸入或者存儲器114的數(shù)據(jù)提供給視頻輸入116,其中視頻輸入存儲視頻數(shù)據(jù)緩沖區(qū)(DPB)126。將來自于視頻輸入116或者視頻數(shù)據(jù)緩沖區(qū)(DPB)126的數(shù)據(jù)提供給H.264編碼器/預(yù)處理器118。除了提供視頻輸出或者存儲器數(shù)據(jù)到H.264單獨的CAVLC ES緩沖區(qū)112外,H.264編碼器/預(yù)處理器118還提供視頻數(shù)據(jù)到H.264命令發(fā)生器120。由H.264命令發(fā)生器120產(chǎn)生的命令被作為主機/SP命令122輸出。此外,視頻輸出116,H.264編碼/預(yù)處理器118,和H.264命令發(fā)生器120可以作為視頻處理器的任務(wù)124來執(zhí)行,視頻處理器執(zhí)行視頻解碼任務(wù)獲得原始的壓縮視頻比特流,并將它恢復(fù)到視頻數(shù)據(jù)。在運行時,系統(tǒng)100在一個小于NAL單元的單元上存儲和恢復(fù)所有熵狀態(tài)信息,例如分別在一個宏模塊行或者每個宏模塊基礎(chǔ)上,分別的,這里的(最大代碼轉(zhuǎn)換單元)=(最大壓縮宏模塊行)或者(最大壓縮宏模塊尺寸)。同樣的,在主機處理器上的CAVLC解碼使用一個相似尺寸單元以用于它自己的存儲和恢復(fù)容量,其使得在系統(tǒng)中的所有緩沖區(qū)尺寸需求和容量相匹配,而不論(最大解碼單元)=(最大代碼轉(zhuǎn)換單元)是否成立。系統(tǒng)100允許大量的減少緩沖區(qū)尺寸,來替代非壓縮圖像尺寸2.5倍的尺寸,可以使用宏模塊所基于的單元的緩存區(qū)尺寸,其尺寸遠(yuǎn)遠(yuǎn)小于非壓縮圖像尺寸,也就是說,根據(jù)整個系統(tǒng)所使用的存儲器根本就可以忽略(不同于對所有存儲器使用需求的數(shù)量的排序)。系統(tǒng)100在大量潛在的熵譯碼狀態(tài)之間有存儲/恢復(fù)能力,其中最重要的是熵譯碼上下文狀態(tài)和引擎狀態(tài)寄存器。在一個典型實施例中,系統(tǒng)100可以在任何時間存儲至少兩個完整的狀態(tài),其中的一個狀態(tài)可以被恢復(fù)并且可以重新開始代碼轉(zhuǎn)換,當(dāng)同時恢復(fù)一個先前存儲的狀態(tài)和在與所存儲狀態(tài)相關(guān)的數(shù)據(jù)流上重新開始代碼轉(zhuǎn)換時存儲第三狀態(tài)。在這種條件下,可能需要系統(tǒng)進(jìn)行切換,以對代碼轉(zhuǎn)換引擎的利用需求最大化,并且對緩沖區(qū)存儲器的需求最小化,例如在單個宏模塊的結(jié)束時、在每個宏模塊行結(jié)束時進(jìn)行切換,或者用其它合適的方式進(jìn)行切換。在這種方式下的代碼轉(zhuǎn)換允許系統(tǒng)中兩個或者多個視頻數(shù)據(jù)流中的一個通過代碼轉(zhuǎn)換器進(jìn)行處理,例如在一個兩位解碼器,一個編碼器的系統(tǒng)中。由于沒有用于CABAC的宏模塊行的編碼/解碼復(fù)雜度的標(biāo)準(zhǔn),對于用于代碼轉(zhuǎn)換引擎的存儲/恢復(fù)體系結(jié)構(gòu),使用現(xiàn)有技術(shù)的系統(tǒng)來配置是困難的。雖然根據(jù)H.264中每個宏模塊不能被擴展這種限制,在宏模塊行中的比特數(shù)受到限制,二進(jìn)制的比特速率(二進(jìn)制計算作為CABAC復(fù)雜度的一個指示器)僅僅被限制在一個圖像層(通常單元選擇一個NAL),而不是在宏模塊層上。最差情況下,比特流請求CABAC來代碼轉(zhuǎn)換一個宏模塊行,并且可能需要有很多循環(huán),這就需要很大量的代碼轉(zhuǎn)換緩沖區(qū)。然而實際上,復(fù)雜度可以被限制。最差情況下CABAC復(fù)雜度的基準(zhǔn)比特流的改進(jìn)允許代碼轉(zhuǎn)換緩沖區(qū)的尺寸可以在解碼最差情況數(shù)據(jù)流時實時的決定。由于緩沖區(qū)尺寸小于解碼基準(zhǔn)比特流所必需的大小,通常(非安全的/恢復(fù)代碼轉(zhuǎn)換體系結(jié)構(gòu))對于基準(zhǔn)比特流沒有設(shè)計值?,F(xiàn)有技術(shù)通常被束縛在通過代碼轉(zhuǎn)換器在一個NAL上不能被中斷上,而并不關(guān)注最差情況下CABAC代碼轉(zhuǎn)換/解碼編碼復(fù)雜度。圖2是根據(jù)本發(fā)明的一個典型實施例,用于執(zhí)行視頻編碼的系統(tǒng)200的框圖。系統(tǒng)200包括傳輸流輸入208,其由編程解復(fù)用器206接收。編程解復(fù)用器206提供傳輸流輸入208到視頻PES緩沖器(CPB)102,接著視頻PES緩沖器(CPB)102提供緩沖區(qū)數(shù)據(jù)到H.264僅僅代碼轉(zhuǎn)換到CAVLC(EP)204(H.264 only transcode to CAVLC(EP))。編程解復(fù)用器206和H.264僅僅代碼轉(zhuǎn)換到CAVLC(EP)204(H.264only transcode to CAVLC(EP))都可以作為系統(tǒng)處理的任務(wù)202或者其他合適的結(jié)構(gòu)來執(zhí)行。H.264僅僅代碼轉(zhuǎn)換到CAVLC(EP)204(H.264only transcode toCAVLC(EP))執(zhí)行CABAC到CAVLC的代碼轉(zhuǎn)換。在一個典型實施例中,H.264僅僅代碼轉(zhuǎn)換到CAVLC(EP)204(H.264only transcode to CAVLC(EP))提供數(shù)據(jù)到H.264單獨的CAVLC ES緩沖區(qū)112,它定義了傳輸流輸入208的一個或多個狀態(tài)變量。在這個典型實施例中,傳輸流輸入208的處理可以在一個NAL單元中被停止,這樣H.264單獨的CAVLC ES緩沖區(qū)112可以明顯小于系統(tǒng)需要完成的整個NAL單元完全處理所需的緩沖區(qū)。系統(tǒng)200同樣包括H.264命令解析216,H.264編碼器/通知處理器214,和視頻輸出212,每一個都可以作為視頻處理的任務(wù)218或者以其他合適的方式來執(zhí)行。H.264命令解析216接收主機/SP命令122,使用其來控制H.264編碼器/通知處理器214處理從H.264單獨的CAVLC ES緩沖區(qū)112中接收的數(shù)據(jù)。H.264編碼器/通知處理器214提供輸出到視頻數(shù)據(jù)緩沖區(qū)(DPB)126和視頻輸出212。視頻輸出212產(chǎn)生的視頻數(shù)據(jù)通過視頻輸出或者存儲器210提供。在運行中,系統(tǒng)200允許解碼傳輸流輸入,以為了傳輸?shù)揭曨l輸出或者存儲器,并且大量減少所需緩沖區(qū)尺寸,這樣子網(wǎng)絡(luò)抽象層單元可以在一個NAL單元處理期間被存儲。在這個典型實施例中,系統(tǒng)200允許宏模塊行或者單個宏模塊的狀態(tài)信息被存儲在H.264單獨的CAVLC ES緩沖區(qū)112中。圖3是根據(jù)本發(fā)明的一個典型實施例,用于編碼或者解碼視頻數(shù)據(jù)流的方法流程圖,以便執(zhí)行具有減少的數(shù)據(jù)緩存需求的從CABAC到CAVLC編碼或者CAVLC到CABAC的編碼,以允許CABAC編碼在一個子網(wǎng)絡(luò)抽象層基礎(chǔ)上停止。方法300從接收視頻數(shù)據(jù)流302開始。在一個典型實施例中,視頻數(shù)據(jù)流可以是一個傳輸流,例如傳輸流被用來解碼。同樣的,視頻數(shù)據(jù)流可以是一個從視頻輸入或者存儲器接收的原始視頻輸送,并且可以被轉(zhuǎn)換成傳輸流,例如在視頻數(shù)據(jù)被用來編碼的地方。方法然后繼續(xù)到304。在304上,方法繼續(xù)到306還是308依賴于視頻數(shù)據(jù)是用于編碼還是解碼。視頻數(shù)據(jù)是用于編碼還是解碼的判斷由處理器處理,可以根據(jù)輸入的視頻數(shù)據(jù)流是從哪里接收的,或者其它合適的方式。如果視頻數(shù)據(jù)流正在被解碼,方法繼續(xù)到306,其中熵處理器或者其它適合的處理器執(zhí)行CABAC到CAVLC的編碼。否則,如果視頻數(shù)據(jù)流正在被編碼,方法繼續(xù)到308,其中熵處理器或者其它適合的處理器執(zhí)行CAVLC到CABAC的編碼。也可以執(zhí)行其它合適的變化或者選擇性的執(zhí)行。方法然后繼續(xù)到310。在310處,決定是否需要保存當(dāng)前狀態(tài)信息。例如熵處理器或者其它合適的系統(tǒng)可能需要執(zhí)行其它數(shù)據(jù)流的處理,或者用于其它任務(wù),例如在一個兩位解碼/一個編碼系統(tǒng)中。如果它決定保存所需要的數(shù)據(jù),例如用于在H.264中的單獨宏模塊或者宏模塊列中的子網(wǎng)絡(luò)抽象層單元狀態(tài)數(shù)據(jù),或者其它合適的數(shù)據(jù),方法繼續(xù)到312,否則方法跳轉(zhuǎn)到302,在302處繼續(xù)接收視頻數(shù)據(jù)流。在312上,存儲子網(wǎng)絡(luò)抽象層單元狀態(tài)數(shù)據(jù)。在一個典型實施例中,子網(wǎng)絡(luò)抽象層單元狀態(tài)數(shù)據(jù)可以包括熵譯碼上下文狀態(tài),引擎狀態(tài)寄存器,或者其它合適的數(shù)據(jù)。方法然后繼續(xù)到314,其中用來執(zhí)行編碼或者解碼操作的處理器還能夠執(zhí)行其它任務(wù),例如其它數(shù)據(jù)流的代碼轉(zhuǎn)換。在316處決定處理的任務(wù)是否已經(jīng)完成,例如收到來自于系統(tǒng)命令處理器的命令或者其它合適的數(shù)據(jù)。如果在316中判斷任務(wù)沒有完成,方法返回到314,否則方法繼續(xù)到318。在318處,從緩沖器或者存儲器中重新恢復(fù)子網(wǎng)絡(luò)抽象層單元狀態(tài)數(shù)據(jù)。然后在320中恢復(fù)CAVLC到CABAC或者CABAC到CAVLC的編碼,例如通過繼續(xù)對視頻數(shù)據(jù)流進(jìn)行處理,視頻數(shù)據(jù)流可以例如是傳輸流或者原始的視頻流,和其它方式所需求的存儲器數(shù)量相比,使用存儲的狀態(tài)數(shù)據(jù)來減少對存儲器數(shù)量的需求。在操作中,方法300通過允許存儲用于數(shù)據(jù)的子網(wǎng)絡(luò)抽象層單元的狀態(tài)信息,來減少用來處理視頻數(shù)據(jù)所需的存儲器,數(shù)據(jù)的子網(wǎng)絡(luò)抽象層單元例如是宏模塊行或者單獨的宏模塊。在這個典型實施例中,代碼轉(zhuǎn)換處理器可以停止代碼轉(zhuǎn)換處理,和執(zhí)行其它任務(wù),例如需要允許實時傳遞的視頻數(shù)據(jù)或者執(zhí)行視頻數(shù)據(jù)的代碼轉(zhuǎn)換。在另一個典型實施例中,提供了一個常用目的的視頻碼格式代碼轉(zhuǎn)換系統(tǒng)。提供一個中央計算/代碼轉(zhuǎn)換資源,例如一個常用目的計算平臺,其具有帶寬和處理能力來代碼轉(zhuǎn)換多個視頻數(shù)據(jù)流,同時在每個數(shù)據(jù)流上維持獨立實時的約束。通常,代碼轉(zhuǎn)換在一個預(yù)先確定單元上執(zhí)行,例如GOPs(圖像群),圖像,或者片段。由于這樣的預(yù)先確定單元的尺寸可以有很大的變化范圍,需要存儲器緩沖器來充分的緩沖數(shù)據(jù)流,以便不會出現(xiàn)中央資源停止等待輸入數(shù)據(jù)或者輸出數(shù)據(jù)存儲器的情況。使用本發(fā)明的優(yōu)勢是中央處理/代碼轉(zhuǎn)換資源允許對給定數(shù)據(jù)流的代碼轉(zhuǎn)換可以在任意點被中斷,其中可以存儲代碼轉(zhuǎn)換狀態(tài)變量,以便這樣的代碼轉(zhuǎn)換處理可以在以后恢復(fù)。代碼轉(zhuǎn)換然后可以被切換到不同的數(shù)據(jù)流,以便允許緩沖區(qū)存儲器的明顯減少。在這個典型實施例中,不需要緩沖當(dāng)前不活動的數(shù)據(jù)流,這樣可以減少所需緩沖區(qū)存儲器。在另一個典型實施例中,提供一個常用目的的實時視頻碼,其用來編碼/解碼視頻數(shù)據(jù)。在現(xiàn)有技術(shù)的實施例中,在編碼或者解碼之間進(jìn)行切換前是工作在幀,片段或者宏模塊行上。為了維持或者提高效率和減少存儲器緩沖,編碼/解碼操作可以在任何較高清晰度處被中斷。雖然系統(tǒng)的典型實施例和本發(fā)明的方法已經(jīng)在這里進(jìn)行了詳細(xì)的描述,本領(lǐng)域技術(shù)人員可以在不背離附加的權(quán)利要求的范圍和實質(zhì)內(nèi),對系統(tǒng)和方法進(jìn)行各種替代和修改,
權(quán)利要求
1.一種用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)存儲需求的系統(tǒng),包括代碼轉(zhuǎn)換引擎,其適用于在視頻數(shù)據(jù)流上執(zhí)行CABAC,接收保存的數(shù)據(jù),停止CABAC,以及轉(zhuǎn)換視頻數(shù)據(jù)流到子網(wǎng)絡(luò)抽象層(NAL)單元狀態(tài)數(shù)據(jù);熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng),其適用于接收子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)和存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù);以及代碼轉(zhuǎn)換引擎接收恢復(fù)數(shù)據(jù),從熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng)中抽取子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù),以及在視頻數(shù)據(jù)流上重新開始CABAC。
2.如權(quán)利要求1所述系統(tǒng),其中子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)包括熵譯碼上下文狀態(tài)。
3.如權(quán)利要求1所述系統(tǒng),其中子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)包括引擎狀態(tài)寄存器數(shù)據(jù)。
4.如權(quán)利要求1所述系統(tǒng),其中熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng)包括一代碼轉(zhuǎn)換緩沖區(qū),其大小小于一張未壓縮圖像的大小。
5.如權(quán)利要求1所述系統(tǒng),其中代碼轉(zhuǎn)換引擎包括一個熵處理器。
6.如權(quán)利要求1所述系統(tǒng),其中代碼轉(zhuǎn)換引擎包括一個系統(tǒng)處理器任務(wù)。
7.如權(quán)利要求1所述系統(tǒng),其中代碼轉(zhuǎn)換引擎執(zhí)行上下文自適應(yīng)變長編碼(CAVLC)到CABAC的代碼轉(zhuǎn)換。
8.如權(quán)利要求1所述系統(tǒng),其中代碼轉(zhuǎn)換引擎執(zhí)行CABAC到CAVLC的代碼轉(zhuǎn)換。
9.如權(quán)利要求1所述系統(tǒng),其中每次當(dāng)基于至少以下一個原因沒有輸入數(shù)據(jù)可以獲得,以及沒有輸出存儲器可以獲得,而不能進(jìn)一步進(jìn)行處理時就停止CABAC。
10.如權(quán)利要求9所述系統(tǒng),其中CABAC狀態(tài)分辨率小于一個比特。
11.如權(quán)利要求1所述系統(tǒng),其中在一個特定點停止對第一數(shù)據(jù)流的CABAC,熵狀態(tài)數(shù)據(jù)存儲系統(tǒng)保存一個相應(yīng)的代碼轉(zhuǎn)換狀態(tài),以及代碼轉(zhuǎn)換引擎切換代碼轉(zhuǎn)換到不同的數(shù)據(jù)流。
12.如權(quán)利要求1所述系統(tǒng),其中在一個預(yù)定時間停止CABAC。
13.一種用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)存儲需求的方法,其包括在一個視頻數(shù)據(jù)流上執(zhí)行CABAC;接收保存的數(shù)據(jù);在一個視頻數(shù)據(jù)流上停止CABAC;將視頻數(shù)據(jù)流轉(zhuǎn)換成子網(wǎng)絡(luò)抽象層(NAL)單元狀態(tài)數(shù)據(jù);存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù);接收恢復(fù)的數(shù)據(jù);從存儲器中抽取子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù);以及在視頻數(shù)據(jù)流上重新開始CABAC。
14.如權(quán)利要求13所述方法,其中存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)包括存儲熵編碼上下文狀態(tài)。
15.如權(quán)利要求13所述方法,其中存儲子網(wǎng)絡(luò)抽象層單元狀態(tài)數(shù)據(jù)包括存儲的引擎狀態(tài)寄存器數(shù)據(jù)。
16.如權(quán)利要求13所述方法,其中在一個視頻數(shù)據(jù)流上執(zhí)行CABAC包括在一個視頻數(shù)據(jù)流上使用熵處理器執(zhí)行CABAC。
17.如權(quán)利要求13所述方法,其中在一個視頻數(shù)據(jù)流上執(zhí)行CABAC包括在一個視頻數(shù)據(jù)流上使用系統(tǒng)處理器任務(wù)執(zhí)行CABAC。
18.如權(quán)利要求13所述方法,其中執(zhí)行CABAC進(jìn)一步包括執(zhí)行CAVLC到CABAC。
19.如權(quán)利要求13所述方法,其中執(zhí)行CABAC進(jìn)一步包括執(zhí)行CABAC到CAVLC。
20.如權(quán)利要求13所述方法,其中每次當(dāng)基于至少以下一個原因沒有輸入數(shù)據(jù)可以獲得,以及沒有輸出存儲器可以獲得,而不能進(jìn)一步進(jìn)行處理時就停止CABAC。
21.如權(quán)利要求20所述方法,其中CABAC狀態(tài)分辨率小于一個比特。
22.如權(quán)利要求13所述方法,其中在一個特定點停止對第一數(shù)據(jù)流的CABAC,熵狀態(tài)數(shù)據(jù)存儲系統(tǒng)保存一個相應(yīng)的代碼轉(zhuǎn)換狀態(tài),以及代碼轉(zhuǎn)換引擎切換代碼轉(zhuǎn)換到不同的數(shù)據(jù)流。
23.如權(quán)利要求13所述方法,其中在一個預(yù)定時間停止CABAC。
24.一種用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)存儲需求的系統(tǒng),包括代碼轉(zhuǎn)換引擎裝置,用于在視頻數(shù)據(jù)流上執(zhí)行CABAC,接收保存的數(shù)據(jù),停止CABAC,以及將視頻數(shù)據(jù)流轉(zhuǎn)換成子網(wǎng)絡(luò)抽象層(NAL)單元狀態(tài)數(shù)據(jù);數(shù)據(jù)存儲裝置,用于接收子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)和存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù);以及代碼轉(zhuǎn)換引擎裝置,用于接收恢復(fù)數(shù)據(jù),從熵狀態(tài)數(shù)據(jù)存儲裝置中抽取子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù),以及在視頻數(shù)據(jù)流上重新開始CABAC。
全文摘要
提供一種用于減少上下文自適應(yīng)二進(jìn)制算術(shù)編碼(CABAC)存儲需求的系統(tǒng)。系統(tǒng)包括一個代碼轉(zhuǎn)換引擎,其在視頻數(shù)據(jù)流上執(zhí)行CABAC。代碼轉(zhuǎn)換引擎接收保存的數(shù)據(jù),停止CABAC,以及將視頻數(shù)據(jù)流轉(zhuǎn)換成子網(wǎng)絡(luò)抽象層(NAL)單元狀態(tài)數(shù)據(jù)。熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng)接收子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)和存儲子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù)。代碼轉(zhuǎn)換引擎隨后接收恢復(fù)數(shù)據(jù),從熵狀態(tài)數(shù)據(jù)存儲器系統(tǒng)中抽取子網(wǎng)絡(luò)抽象層單元(sub-NAL)狀態(tài)數(shù)據(jù),以及在視頻數(shù)據(jù)流上重新開始CABAC。
文檔編號G06T9/00GK101014124SQ20061006412
公開日2007年8月8日 申請日期2006年10月26日 優(yōu)先權(quán)日2005年10月26日
發(fā)明者L·L·溫格, E·C·皮爾森 申請人:Lsi羅吉克公司