TWI583180B - 具有上下文切換之視訊編碼器 - Google Patents

具有上下文切換之視訊編碼器 Download PDF

Info

Publication number
TWI583180B
TWI583180B TW104128531A TW104128531A TWI583180B TW I583180 B TWI583180 B TW I583180B TW 104128531 A TW104128531 A TW 104128531A TW 104128531 A TW104128531 A TW 104128531A TW I583180 B TWI583180 B TW I583180B
Authority
TW
Taiwan
Prior art keywords
block
frame
pipeline
memory
blocks
Prior art date
Application number
TW104128531A
Other languages
English (en)
Other versions
TW201630423A (zh
Inventor
主恩 鄭
提摩西J 麥利特
聖偉 句
蓋 柯特
Original Assignee
蘋果公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 蘋果公司 filed Critical 蘋果公司
Publication of TW201630423A publication Critical patent/TW201630423A/zh
Application granted granted Critical
Publication of TWI583180B publication Critical patent/TWI583180B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

具有上下文切換之視訊編碼器
本發明大體上係關於視訊或影像處理,且更具體言之,係關於用於處理區塊處理管線中之數位視訊圖框之方法及裝置。
包括(但不限於)個人電腦系統、桌上型電腦系統、膝上型電腦及筆記型電腦、平板電腦或墊器件、數位攝影機、數位視訊記錄器及行動電話或智慧型手機之各種器件可包括可實施視訊處理方法之軟體及/或硬體。舉例而言,器件可包括可自一或多個源接收數位視訊輸入且處理該數位視訊輸入且根據一或多個視訊處理方法而輸出經處理視訊圖框的裝置(例如,積體電路(IC)(諸如,晶片上系統(SOC)),或IC之子系統)。如另一實例,軟體程式可實施於可自一或多個源接收數位視訊輸入且處理該數位視訊輸入且根據一或多個視訊處理方法而輸出經處理視訊圖框的器件上。作為一實例,如圖1所示之視訊編碼器10表示根據視訊編碼方法將數位視訊輸入(輸入圖框90)編碼或轉換成另一格式(輸出圖框92)(例如,諸如H.264/進階視訊編碼(AVC)格式(亦被稱作MPEG 4標準的第10部份)或H.265高效視訊編碼(HEVC)格式之壓縮視訊格式)之裝置或替代地軟體程式。諸如視訊編碼器10之裝置或軟體程式可包括多個功能組件或單元,以及至(例如)視訊輸入源及外部記憶體之外部介面。
在一些視訊處理方法中,為了執行處理,將每一輸入視訊圖框 90劃分成若干列及行之像素區塊(例如,16×16像素區塊),例如如圖2中所說明,圖2展示劃分成144個16×16像素區塊的實例192×192像素圖框。分離地處理輸入視訊圖框90之每一區塊,且當進行處理時,經處理區塊經組合以形成輸出視訊圖框92。此可被稱作區塊處理方法。通常,區塊係藉由區塊處理方法以掃描次序予以處理(如圖2所展示),從而在第一列圖框之第一區塊(被展示為區塊0)處開始,橫越該列而順次地處理區塊,且當完成一列時在下一列之第一區塊處繼續。
區塊處理方法可包括順次地應用於視訊圖框中之每一區塊之多個處理步驟或操作。為了實施此區塊處理方法,諸如視訊編碼器10之裝置或軟體程式可包括或實施區塊處理管線40。區塊處理管線40可包括兩個或兩個以上階,其中每一階實施區塊處理方法之步驟或操作中之一或多者。圖1展示實例視訊編碼器10,該實例視訊編碼器實施包括至少階42A至42C之實例區塊處理管線40。將區塊輸入至管線40之階42A,根據由階42A實施之操作來處理該區塊,且將結果輸出至下一階42B(或作為由最後階42進行之最終輸出)。下一階42B處理該區塊,同時下一區塊被輸入至先前階42A以供處理。因此,區塊沿著管線在階間移動,其中每一階每次處理一個區塊,且多個階同時地處理不同區塊。通常,將區塊輸入至區塊處理管線40且藉由該區塊處理管線以如圖2所展示之掃描次序來處理該等區塊。舉例而言,在圖1中,圖2中所示之第一列圖框之第一區塊(區塊0)係在階42C處,第二區塊(區塊1)係在階42B處,且第三區塊(區塊2)係在階42A處。待輸入至區塊處理管線40之下一區塊將為第一列中之第四區塊。
H.264/進階視訊寫碼(AVC)
H.264/AVC(正式地被稱作ITU-T建議H.264,且亦被稱作MPEG-4第10部分)為由ITU-T(國際電信聯盟遠距離通信標準化部門)視訊寫碼專家組(VCEG)連同ISO/IEC JTC1動畫專家組(MPEG)開發的區塊定向 式以運動補償為基礎之編解碼器標準。H.264/AVC標準係由ITU-T在名為「ITU-T Recommendation H.264:Advanced video coding for generic audiovisual services」之文件中發佈。此文件亦可被稱作H.264建議。
描述方法及裝置之實施例,其中可藉由實施一區塊處理管線之一視訊編碼器同時處理多個視訊串流。本發明描述一種用於視訊編碼器之上下文切換方法,其使得較高優先權視訊串流能夠中斷正藉由該視訊編碼器處理之較低優先權視訊串流。來自一較高優先源之視訊圖框可經來自一較高優先源之一視訊圖框可經接收以供由該視訊編碼器處理,同時來自一較低優先源之一視訊圖框正由該管線處理。該管線可經發信號以對該當前圖框執行一上下文終止。作為回應,該管線在一適當位置處終止處理該當前圖框(例如,在一列群組之末端)。該上下文終止可經由該管線之階傳播,使得所有階正確地終止該上下文,且經由一DMA串流傳播至一轉碼器引擎,使得該轉碼器得知已出現一上下文終止。記錄該停止位置。在一些實施例中,可保存包括最後一列經處理區塊之一緩衝器。該管線可接著處理該較高優先權圖框。當該管線結束處理該較高優先權圖框時,執行一上下文重新啟動,且該管線在半途通過該圖框之該所記錄位置處開始恢復處理該較低優先權圖框。在一些實施例中,經保存用於該上下文終止之該較低優先權圖框的該最後一列經處理區塊可復原為用作該管線之一或多個階處的「上方」相鄰者。該轉碼器引擎可繼續處理自該被中斷之圖框之DMA讀取的該串流,同時該較高優先權圖框正於該管線中進行處理,且類似的,該管線可開始處理該被中斷之圖框,同時該轉碼器完成處理該較高優先權圖框。
10‧‧‧視訊編碼器
40‧‧‧區塊處理管線
42A‧‧‧階
42B‧‧‧階
42C‧‧‧階
90‧‧‧輸入圖框
92‧‧‧輸出圖框
200‧‧‧系統
210‧‧‧視訊編碼器
220‧‧‧處理器
240‧‧‧區塊處理管線
250‧‧‧轉碼器
260A‧‧‧視訊源
260B‧‧‧視訊源
262‧‧‧圖框
262A‧‧‧圖框
262B‧‧‧圖框
290‧‧‧記憶體
292‧‧‧圖框緩衝器
292A‧‧‧圖框緩衝器
292B‧‧‧圖框緩衝器
294A‧‧‧經編碼圖框
294B‧‧‧經編碼圖框
5000A‧‧‧管線單元
5000B‧‧‧管線單元
5010‧‧‧記憶體
5020‧‧‧單元核心
5030‧‧‧處理器
6000‧‧‧區塊處理方法
6002‧‧‧巨集區塊輸入
7000‧‧‧視訊編碼器裝置
7010‧‧‧處理器
7020‧‧‧記憶體管理單元(MMU)
7030‧‧‧直接記憶體存取(DMA)
7040‧‧‧區塊處理管線
7050‧‧‧轉碼器
7080‧‧‧互連件
8000‧‧‧系統單晶片(SOC)
8010‧‧‧通信網狀架構
8020‧‧‧中央處理單元(CPU)複合體
8022‧‧‧二階(L2)快取記憶體
8024‧‧‧處理器
8030‧‧‧記憶體控制器(MC)
8040A‧‧‧晶片上周邊組件
8040B‧‧‧晶片上周邊組件/周邊裝置
8800‧‧‧外部記憶體
8900‧‧‧外部介面
9000‧‧‧系統
9010‧‧‧功率管理單元(PMU)
9020‧‧‧周邊裝置
圖1說明實例視訊編碼器,其包括以掃描次序處理來自輸入圖框之區塊之習知區塊處理管線。
圖2說明來自視訊圖框之區塊之習知掃描次序處理。
圖3為根據至少一些實施例的用於在圖框內執行上下文終止及重新啟動,以處理視訊編碼器中之低延時圖框之方法的高階流程圖。
圖4A至圖4H根據至少一些實施例,以圖形方式說明執行上下文切換以處理視訊編碼器中之較低優先權圖框內的較高優先權圖框。
圖5為根據至少一些實施例的用於執行圖框內之上下文終止及重新啟動,以在視訊編碼器中處理低延時圖框之方法的較詳細流程圖。
圖6為根據至少一些實施例的用於在按列群組處理圖框時於區塊處理管線中執行上下文切換之方法的流程圖。
圖7A至圖7E根據至少一些實施例,以圖形方式說明在上下文之間的列群組邊界上重新排序區塊。
圖8根據至少一些實施例展示圖框中之當前區塊之相鄰區塊,且進一步展示用於該等區塊之奈特次序處理方法。
圖9A及圖9B根據至少一些實施例以圖形方式說明奈特次序處理方法,其包括用於判定下一區塊之演算法。
圖10A及圖10B為根據至少一些實施例的用於區塊處理管線之奈特次序處理方法的高階流程圖。
圖11A及圖11B為根據至少一些實施例的實例管線處理單元之方塊圖,該等實例管線處理單元可用在實施如本文所描述之區塊處理方法及裝置中之一或多者之區塊處理管線的階處。
圖11C展示單一處理器可與兩個或兩個以上管線單元之群組相關聯。
圖12為根據至少一些實施例的在一實例區塊處理方法中之一般操作的高階方塊圖,該實例區塊處理方法可藉由實施本文所描述之區 塊處理方法及裝置中之一或多者之區塊處理管線來實施。
圖13為根據至少一些實施例的實例視訊編碼器裝置之方塊圖。
圖14為系統單晶片(SOC)之一個實施例之方塊圖。
圖15為系統之一個實施例的方塊圖。
儘管本發明中所描述之實施例可容易具有各種修改及替代性形式,但在圖式中藉由實例來展示其特定實施例且將在本文中詳細描述。然而,應理解,圖式及其實施方式並不意欲將該等實施例限制於所揭示之特定形式,且相反,意欲涵蓋屬於隨附申請專利範圍內之所有修改、等效物及替代物。如遍及本申請案所使用,詞「可」以許可之意義(亦即,意謂有可能)而非強制性之意義(亦即,意謂必須)來使用。類似地,詞「包括」意謂包括但不限於。
各種單元、電路或其他組件可描述為「經組態以」執行一或多項任務。在此等上下文中,「經組態以」為一般意謂「具有電路,該電路」在操作期間執行該或該等任務的結構之寬泛陳述。因而,單元/電路/組件可經組態以甚至在該單元/電路/組件當前未接通時執行該任務。一般而言,形成對應於「經組態以」之結構之電路可包括硬體電路。類似地,為便於描述,可將各種單元/電路/組件描述為執行一或多項任務。此等描述應解釋為包括詞組「經組態以」。敍述經組態以執行一或多項任務之單元/電路/組件明確地意欲不調用35 U.S.C.§ 112(f)之對彼單元/電路/組件之解釋。
描述用於處理區塊處理管線中之數位視訊圖框之方法及裝置的各種實施例。區塊處理方法及裝置之實施例通常在本文中在視訊處理之上下文中予以描述,其中根據元素區塊(例如,16×16、32×32或64×64像素區塊)來再分並處理輸入視訊圖框。本文中描述包括區塊處理管線且可實施區塊處理方法及裝置中之一或多者的實例H.264視訊 編碼器之實施例。H.264視訊編碼器將輸入視訊圖框自輸入格式轉換成如H.264/AVC標準(H.264建議)中描述之H.264/進階視訊寫碼(AVC)格式。圖12說明實例H.264視訊編碼器之實例區塊處理管線,且圖13說明包括區塊處理管線之實例H.264視訊編碼器。然而,區塊處理方法及裝置之實施例可用於其他視訊編碼格式之編碼器中,例如,用於將輸入視訊圖框自輸入格式轉換成如HEVC(高效率視訊編碼)標準中所描述的HEVC格式之HEVC視訊編碼器之區塊處理管線中。HEVC標準係由ITU-T在名為「ITU-T Recommendation H.265:High Efficiency Video Encoding」之文件中發佈。可使用區塊處理方法及裝置之實施例的其他視訊編碼器可包括(但不限於)H.263、MPEG-2、MPEG-4及JPEG-2000視訊編碼器。然而,應注意,區塊處理方法及裝置之實施例可用於任何區塊處理管線中,包括(但不限於)經實施於各種其他視訊編碼器及/或解碼器(其可被稱作編解碼器)中之區塊處理管線,其中以一格式輸入之數位視訊圖框被編碼或轉換成另一格式。應進一步注意,區塊處理方法及裝置可用於視訊編碼器之軟體及/或硬體實施中。除了視訊編碼器/解碼器以外,本文所描述之區塊處理方法及裝置亦可用於各種其他應用中,其中(例如)在各種影像處理應用中處理靜態數位影像之管線中處理來自視訊圖框或靜態數位影像之區塊。因此,應理解,亦可採取如本文所使用之術語圖框或視訊圖框以指任何數位影像。
如本文所描述之區塊處理方法及裝置之實施例可實施於兩個或兩個以上並行區塊處理管線中。舉例而言,2個、4個、8個或更多管線可經組態以並行地執行,其中每一管線(例如)在根據奈特次序進行區塊輸入的情況下處理來自輸入視訊圖框之四重列。
區塊處理方法及裝置之實施例通常在本文中在視訊處理之上下文中予以描述,其中根據圖像元素(被稱作像素)之區塊來再分並處理 輸入圖框,具體言之,被稱作巨集區塊之16×16像素區塊用於(例如)H.264編碼中。然而,實施例可應用於其中處理其他大小及幾何形狀或其他元素之區塊的管線中。舉例而言,HEVC編碼使用被稱作寫碼樹型單元(CTU)之區塊,該等區塊可在16×16像素至64×64像素之範圍內變化。在諸如H.264編碼器之一些實施中,輸入至管線之區塊可被稱作巨集區塊,每一巨集區塊包括可在管線之階處分離地處理之兩個或兩個以上區塊或分割區。舉例而言,對於經編碼於YUV(例如,YUV420格式)或YCbCr(例如,YCbCr 4:2:0、4:2:2或4:4:4格式)色彩空間中之輸入視訊圖框,巨集區塊可由可在管線中之階處分離地處理之色度元素及明度元素之分離區塊構成。除了根據元素區塊(例如,像素區塊)處理管線中之圖框之應用以外,區塊處理方法及裝置亦可應用於數位影像(例如,視訊圖框或靜態影像)由單元素(例如,單像素)處理之應用中。
具有上下文切換之視訊編碼器
本發明描述方法及裝置之實施例,其中可藉由實施一區塊處理管線之一視訊編碼器同時處理多個視訊串流。描述一種上下文切換方法,該方法使得較高優先權視訊串流能夠中斷正藉由該視訊編碼器處理之較低優先權視訊串流。在使用該上下文切換方法的情況下,視訊編碼器可在圖框之中間終止較低優先權串流之管線處理,經由管線處理來自較高優先權串流之圖框,且隨後重新啟動較低優先權圖框之管線處理。參看圖13及圖14,實施區塊處理管線7040之視訊編碼器7000可自兩個或兩個以上視訊源接收視訊串流,以供處理(例如)來自影像信號處理器(ISP)及來自顯示器控制器之視訊串流。在一些情況中,此等視訊串流中之兩者或兩者以上可重疊。舉例而言,顯示器控制器可在ISP正接收且處理藉由器件上之攝影機俘獲之視訊的同時處理無線視訊串流以供顯示。因此,在某些狀況下,視訊編碼器7000可在來 自一視訊源之視訊圖框準備好有待處理時處理來自另一視訊源之視訊圖框。一些視訊源(諸如正經由無線連接而由器件接收以供顯示之視訊)可相比其他視訊源為較高優先權,諸如經由器件上之攝影機及ISP進行俘獲、處理,且儲存之視訊。此等較高優先權視訊源可被稱作低延時視訊源,因為來自此等源之視訊圖框通常需要儘可能快地進行處理(例如)以維持視訊顯示比率及品質。然而,在習知視訊編碼器中,當自低延時視訊源接收視訊圖框以供處理時,視訊編碼器在開始處理低延時圖框之前完成當前圖框之處理(即使正經處理之該當前圖框來自較低優先權視訊源)。
描述視訊編碼器之實施例,其中編碼器可關於在當前圖框之處理期間編碼較高優先權、低延時圖框。作為回應,視訊編碼器可引導區塊處理管線以終止且重新啟動當前圖框內的處理,以允許低延時圖框之編碼。在此等實施例中,當需要處理低延時圖框時,視訊編碼器可暫時中止當前圖框內的處理以為該低延時圖框提供服務,且可接著在暫時中止處理處恢復該當前圖框內的處理。啟動區塊處理管線中之圖框之處理可被稱作上下文啟動。在圖框內之一位置處終止管線處理可被稱作上下文終止。在圖框內之一位置處恢復管線處理可被稱作上下文重新啟動。結束管線中之上下文且開始另一上下文之程序可被稱作上下文切換。舉例而言,當終止當前圖框之處理以處理低延時圖框時,執行一上下文切換,且當在處理該低延時圖框之後恢復該當前圖框之處理時,執行另一上下文切換。
實例視訊編碼器裝置7000於圖13中予以說明。包括視訊編碼器裝置7000之實例系統單晶片(SOC)8000於圖14中予以說明。可由視訊編碼器裝置7000實施之實例區塊處理方法6000及區塊處理管線7040於圖12中予以說明。可用於區塊處理管線7040之階處的實例管線單元於圖11A至圖11C中予以說明。如圖8至圖10B中所說明,在一些實施例 中,視訊編碼器裝置7000可經組態以根據奈特次序處理方法處理來自輸入圖框之像素區塊,且可經組態以根據列群組(例如,在各含有四列區塊之列群組中,其被稱作四重列)處理該等區塊。
圖3為根據至少一些實施例的用於在圖框內執行上下文終止及重新啟動以處理視訊編碼器中之較高優先權、低延時圖框之方法的高階流程圖。如圖3之100處所指示,視訊編碼器可接收一指示:需要在來自較低優先權視訊源之當前圖框正於視訊編碼器之區塊處理管線中進行處理時處理低延時圖框。舉例而言,參看圖14,在一些實施例中,具有待將處理之高優先權視訊的周邊裝置8040(諸如顯示器控制器或ISP)可用信號通知視訊編碼器7000(例如,經由中斷)需要處理一高優先權圖框。
如圖3之110處所指示,回應於接收需要處理高優先權圖框之指示,視訊編碼器可對當前圖框執行上下文終止。為執行上下文終止,視訊編碼器可引導區塊處理管線終止處理當前圖框。在至少一些實施例中,區塊處理管線可僅僅在某些位置處終止圖框內的處理。舉例而言,在一些實施例中,視訊編碼器可經組態以根據列群組處理來自輸入圖框之像素區塊(例如,在各含有四列區塊之列群組中,其被稱作四重列),且管線可經組態以僅僅在列群組之末端處終止上下文的處理。在一些實施例中,視訊編碼器可引導區塊處理管線在指定位置處(例如,在指定列群組之末端處)終止處理當前圖框。或者,在一些實施例中,視訊編碼器可引導區塊處理管線在如由管線所判定之下一可用位置處(例如,在當前列群組之末端處)終止處理當前圖框。在任一狀況下,可記錄當前圖框中執行上下文終止的位置。此位置經偏移至圖框中,其中將在處理低延時圖框之後於此處開始當前圖框之下一上下文。
在一些實施例中,區塊處理管線可經組態以僅僅在當前圖框中 剩餘足夠列以處理為分離上下文時執行上下文終止。舉例而言,可指定上下文之N列的臨限值,且若圖框中將剩餘至少N列以處理為分離上下文,則區塊處理管線可僅僅在請求時對當前圖框執行上下文終止。
如圖3之120處所指示,在對當前圖框執行上下文終止之後,低延時圖框可藉由視訊編碼器處理。在至少一些實施例中,管線完成來自當前上下文之區塊的處理,且用信號通知視訊編碼器已完成上下文終止。在至少一些實施例中,在區塊處理管線完成來自當前上下文之區塊的處理之後,視訊編碼器可組態區塊處理管線以供處理低延時圖框,且管線接著開始自低延時圖框讀取區塊且處理該等區塊。
如圖3之130處所指示,在區塊處理管線完成低延時圖框之處理之後,視訊編碼器對當前圖框執行上下文重新啟動。在至少一些實施例中,視訊編碼器可組態區塊處理管線以供在所記錄之位置處開始處理當前圖框,其中上下文終止於該所記錄之位置處執行。管線隨後開始自當前圖框中所記錄之位置處(例如,在下一列群組之開始處)讀取區塊且將其處理為下一上下文。
在至少一些實施例中,用以處理低延時圖框的當前圖框之上下文終止及管線組態清空管線之記憶體中的關於當前圖框之內容,例如來自視訊串流中之先前經處理圖框的可用於運動估計、運動補償及重建構的經快取之明度及色度參考資料、在管線階處緩衝之區塊資料(例如,如圖11A及圖11B中所說明之記憶體5010中)等。當執行上下文重新啟動時,管線開始如同其開始新圖框之處理一般用下一上下文來新鮮,但開始於上下文終止位置所指示之偏移處。
然而,在一些實施例中,可存留來自當前圖框之先前上下文的至少一些資料且將其用於下一上下文。舉例而言,在區塊處理管線之階處執行之一或多個操作可取決於來自區塊之先前(或上方)列之相鄰 區塊中之一或多者,諸如,頂部相鄰區塊、左上方相鄰區塊、右上方相鄰區塊,及右右上方相鄰區塊,如圖3所展示。在一些實施例中,當處理列群組時,用於列群組之底部列上之每一區塊的資訊(例如)由管線之最後階寫入至外部記憶體中的相鄰資料結構。在一些實施例中,此相鄰資料結構存留於上下文終止處。在上下文重新啟動處,當處理來自新上下文中之第一列群組之頂部列的區塊時,(例如)由管線之第一階自外部記憶體中讀取用於先前上下文之底部列中之相鄰區塊的資訊,且沿管線將其與頂部列區塊一起傳遞至其他階。
在一些實施例中,(例如)如圖12至圖14中所示,視訊編碼器7000可實施區塊處理方法6000,其中區塊處理管線7040將來自當前圖框之經處理巨集區塊輸出至外部記憶體(例如,經由圖13中所示之DMA 7030)中的圖框緩衝器。轉碼器7050經由DMA 7030自圖框緩衝器讀取資料,從而對該資料執行轉碼操作,且輸出經轉碼資料。舉例而言,轉碼器7050可執行藉由管線7040輸出的CAVLC(上下文自適應性可變長度寫碼)經編碼之串流至CABAC(上下文自適應性二進位算術寫碼)經編碼之串流的記憶體至記憶體轉碼或轉換。在此等實施例中,可(例如)藉由插入具有資料串流中之上下文末端之指示的標記,經由DMA 7030將上下文終止指示至轉碼器7050。在一些實施例中,由於藉由外部記憶體中之圖框緩衝器自管線7040緩衝轉碼器7050,因此管線7040可開始處理下一上下文,同時轉碼器7050仍藉由針對兩個上下文使用不同圖框緩衝器來處理來自先前上下文的經緩衝資料。換言之,管線7040及轉碼器7050處理可於上下文之間重疊。
在一些實施例中,可於上下文之間重設轉碼器7050之CABAC上下文。舉例而言,在一些實施例中,轉碼器7050可經組態以在圖塊邊界處重設CABAC上下文。當組態管線7040以供下一上下文時,視訊編碼器可插入圖塊標頭(例如,藉由H.264標準定義之圖塊標頭)以啟 動新圖塊。當轉碼器7050遇到圖塊標頭時,CABAC上下文重設。然而,在一些實施例中,轉碼器7050可(例如)實施雙緩衝機構,使得用於先前上下文之CABAC上下文可橫跨上下文切換存留。
圖4A至圖4H根據至少一些實施例,以圖形方式說明執行上下文切換,以處理視訊編碼器中之較低優先權圖框內的較高優先權圖框。圖5為根據至少一些實施例的用於執行圖框內之上下文終止及重新啟動,以在視訊編碼器中處理低延時圖框之方法的較詳細流程圖。圖5之元素300至314係參看圖4A至圖4H進行解釋。
圖4A至圖4H展示實例系統200,該系統包括記憶體290、實例視訊編碼器210及至少兩個視訊源260A及260B。視訊編碼器210包括至少一處理器220、區塊處理管線240及轉碼器250。處理器220可執行管線240及轉碼器250組態,且可將介面提供至用於視訊編碼器210組態及控制之外部軟體及/或硬體。區塊處理管線240可包括多個階,其中每一階經組態以對來自通過該管線之輸入圖框之像素區塊執行一或多個操作。區塊處理管線240及轉碼器250可經組態以(例如)經由直接記憶體存取(DMA)經由視訊編碼器210之記憶體管理單元(MMU)(圖中未示)存取位於視訊編碼器210外部之記憶體290,(例如)以自輸入圖框讀取區塊;以自視訊串流中之先前經處理之圖框存取明度及色度參考資料且自儲存於記憶體290中的當前圖框中之先前經處理之列存取相鄰資料;且以將經編碼資料串流至記憶體290及自該記憶體串流該經編碼資料。在至少一些實施例中,轉碼器250經由DMA自記憶體290中之圖框緩衝器292讀取資料,對該資料執行轉碼操作,且輸出經轉碼資料。舉例而言,在一些實施例中,轉碼器250可執行藉由管線240輸出的CAVLC(上下文自適應性可變長度寫碼)經編碼之串流至CABAC(上下文自適應性二進位算術寫碼)經編碼之串流的記憶體至記憶體轉碼或轉換。在一些實施例中,轉碼器250亦可自用於管線中之處理次 序(例如,奈特次序)重新排序區塊,以產生按掃描次序輸出之串流。
在至少一些實施例中,視訊編碼器210可經組態以根據列群組(例如,在各含有四列區塊之列群組中,其被稱作四重列),經由區塊處理管線240及轉碼器250輸入且處理來自輸入圖框262之像素區塊。在一些實施例中,視訊編碼器210可經組態以根據如本文中所描述之奈特次序處理列群組中之區塊。然而,可使用其他區塊處理方法及次序。
如圖5之300處所指示,區塊處理管線開始處理圖框。參看圖4A,已自視訊源260A接收圖框262A以供處理。處理器220組態管線240及轉碼器250以處理圖框262A。管線240開始自圖框262A讀取區塊且處理該等區塊。當處理區塊時,管線240之一或多個階可經由DMA存取記憶體290,(例如)以在執行框間估計、運動補償及重建構時存取來自視訊串流中之一或多個先前經處理之圖框的參考資料。另外,在一些實施例中,管線240可在處理下一列群組之頂部列上的區塊時將來自列群組之底部列的經處理區塊寫入至記憶體290中之相鄰資料結構中以供存取。在至少一些實施例中,管線240可經由DMA將經CAVLC編碼之串流輸出至記憶體290中之圖框緩衝器292A。轉碼器250經由DMA自記憶體290中之圖框緩衝器292A讀取資料;對該資料執行轉碼操作(例如,CAVLC至CABAC編碼),且經由DMA將經轉碼資料輸出至記憶體290中之經編碼圖框294A。
如圖5之302處所指示,由視訊編碼器接收較高優先權圖框之指示。然而,如圖4B中所示,視訊編碼器210可仍處理來自視訊源260A之圖框262A。另一視訊源260B可(例如)經由至處理器220之一中斷通知視訊編碼器210需要處理較高優先權、低延時圖框。
如圖5之304處所指示,視訊編碼器引導管線終止用於當前正經處理之圖框的當前上下文。如圖5之306處所指示,視訊編碼器等待管 線終止上下文。再次參看圖4B,回應於來自視訊源260B之通知,處理器220向區塊處理管線240發出用於圖框262A的上下文終止。在至少一些實施例中,區塊處理管線240可僅僅在某些位置處(例如,在列群組之末端處)終止圖框內的處理以供上下文切換。因此,管線240可繼續處理來自圖框262A之區塊,直至達到有效的終止位置為止。
在至少一些實施例中,上下文終止經發出至管線240之第一階。當第一階判定達到有效終止位置時,例如,在讀取列群組之最後一列中之最後一區塊時,可用上下文中之最後一區塊經由管線之階傳遞上下文終止,以通知其他階上下文終止正於圖框262A中之此位置處予以執行。將用於圖框262A的經CAVLC編碼之串流輸出至圖框緩衝器292A的管線240之下游階可在上下文中之最後一區塊處或其之後將標記嵌入於串流中,(例如)上下文終止及/或圖塊標頭,以將上下文終止發信號至轉碼器250。
如圖4C中所示,區塊處理管線240已達到圖框262A中之有效的終止位置(例如,列群組之最後一列中的最後一區塊),處理來自圖框262A之區塊達至終止位置,且將經處理區塊輸出至圖框緩衝器292A。管線240可發信號至處理器220:已在管線240中執行上下文終止,且已在管線240中完成當前上下文。
如圖5之308處所指示,可保存用於圖框之上下文重新啟動的資訊。舉例而言,參看圖4C,可傳遞當前上下文之圖框262A中的終止位置且由處理器220保存該終止位置。另外,將來自經處理區塊之資訊儲存於當前上下文之最後一列上的記憶體290中之相鄰資料結構可存留於記憶體290中。
在一些實施例中,轉碼器250可繼續自圖框緩衝器292A讀取用於圖框262A之經處理資料且轉碼該資料,直至偵測到上下文之末端為止。
如圖5之310處所指示,視訊編碼器可組態管線以供處理較高優先權圖框,且如圖5之312處所指示,該較高優先權圖框係於視訊編碼器中處理。參看圖4D,處理器220組態管線240以處理來自視訊源260B之圖框262B。管線240開始自圖框262B讀取區塊且處理該等區塊。當處理來自圖框262B之區塊時,管線240可經由DMA存取記憶體290以存取用於圖框262B的參考資料、相鄰資料等。在至少一些實施例中,管線240可經由DMA將用於圖框262B的經CAVLC編碼之串流輸出至記憶體290中之圖框緩衝器292B。應注意,轉碼器250可繼續自圖框緩衝器292A讀取用於圖框262A之經處理資料且轉碼該資料,直至偵測到上下文之末端為止。
在圖4E中,轉碼器250已偵測到用於圖框262A的上下文之末端,例如正自圖框緩衝器292A讀取之串流中的上下文標記或圖塊標頭之末端。在一些實施例中,轉碼器250之CABAC上下文可回應於串流中之圖塊標記而得以重設。轉碼器250可用信號通知處理器220已完成上下文,且處理器220可接著組態轉碼器250以處理圖框262B。轉碼器250開始經由DMA自記憶體290中之圖框緩衝器292B讀取資料,對該資料執行轉碼操作(例如,CAVLC至CABAC編碼),且經由DMA將經轉碼資料輸出至記憶體290中之經編碼圖框294B。應注意,經編碼圖框294A之內容可存留於記憶體290中。
如圖5之314處所指示,視訊編碼器執行藉由較高優先權圖框中斷的用於圖框之上下文重新啟動。參看圖4F,區塊處理管線240已完成處理圖框262B,且已將經處理區塊輸出至圖框緩衝器292B。管線240可用信號通知處理器220已經由管線240處理圖框262。應注意,轉碼器250可繼續自圖框緩衝器292B讀取用於圖框262B之經處理資料且轉碼該資料,直至達到圖框之末端為止。在圖4G中,處理器220可執行管線240中之圖框262A的上下文重新啟動。圖框262A中用於先前上 下文的終止位置可被用作至圖框262A中之偏移,以供新上下文之啟動。另外,存留於記憶體290中之相鄰資料結構中的來自先前上下文之最後一列上之經處理區塊的資訊可被讀取至管線240中。亦可執行管線240之其他組態以處理圖框262A。管線240自新上下文之啟動位置開始自圖框262A讀取區塊且處理該等區塊。在至少一些實施例中,管線240可經由DMA將圖框262A中的用於新上下文之經CAVLC編碼之串流輸出至記憶體290中之圖框緩衝器292A。應注意,轉碼器250可繼續自圖框緩衝器292B讀取用於圖框262B之經處理資料且轉碼該資料,直至達到圖框之末端為止。在圖4H中,轉碼器250已偵測到圖框緩衝器292B中之圖框262B之末端。在一些實施例中,轉碼器250之CABAC上下文可回應於圖框之末端而得以重設。轉碼器250可用信號通知處理器220已完成圖框262B,且處理器220可接著組態轉碼器250以處理來自圖框262A之新上下文。轉碼器250開始經由DMA自記憶體290中之圖框緩衝器292A讀取用於上下文之資料,對該資料執行轉碼操作(例如,CAVLC至CABAC編碼),且經由DMA將用於上下文之經轉碼資料附加至記憶體290中之經編碼圖框294A。
雖然圖3至圖5大體上描述執行圖框之上下文終止及重新啟動以允許經由視訊編碼器處理較高優先權、低延時圖框,但應注意,可出於其他原因在視訊編碼器中執行如本文中所描述之上下文切換。另外,雖然圖3至圖5大體上描述執行圖框內的單一上下文終止及上下文重新啟動,但可在單一圖框內執行兩個或兩個以上上下文終止及重新開始。另外,雖然圖3至圖5大體上描述在視訊編碼器中執行上下文切換以同時處理來自兩個視訊源之視訊串流,但上下文切換可用以同時處理來自兩個以上視訊源之視訊串流。
圖6為根據至少一些實施例的用於在按列群組處理圖框時於區塊處理管線中執行上下文切換之方法的流程圖。圖6亦說明多個上下文 切換可於圖框內執行。如圖8至圖10B中所繪示,在一些實施例中,視訊編碼器可經組態以根據列群組(例如,各含有四列區塊之列群組中,其被稱作四重列)處理來自輸入圖框之像素區塊,且可經組態以根據奈特次序處理方法處理列群組中之區塊。在一些實施例中,管線可經組態以僅僅在列群組之末端處為當前上下文終止處理。
如圖6之400處所指示,視訊編碼器區塊處理管線根據如圖8至圖10B中所繪示奈特次序處理方法開始按列群組(例如按四重列)處理來自圖框之區塊。在當前圖框之處理期間的任何時間處,視訊編碼器可接收請求上下文切換之一指示(例如來自較高優先權視訊源之中斷)以處理低延時圖框。如上所述,管線可經組態以僅僅在列群組之末端處為當前上下文終止處理。在列群組之末端處,若在410處並非為圖框之末端,且在412處尚未請求上下文切換,則管線返回至400且開始處理來自圖框之下一列群組。然而,在412處,若已請求上下文切換,則如420處所指示的對當前圖框執行上下文終止,如422處所指示的在管線中處理另一上下文(例如,較高優先權圖框),且在其他上下文已完成之後,如424處所指示的對當前圖框執行上下文重新啟動,以重新啟動在下一列群組之第一列處開始的當前圖框之管線處理。
在區塊處理管線之一些實施例中,如圖6之430處所指示,在完成圖框之後,若已在圖框內執行上下文終止及重新啟動,則可需要在上下文之間的列群組邊界上重新排序經處理區塊,使得區塊以如其他組件或程序所預期之交錯方式排序。圖7A至圖7E根據至少一些實施例,以圖形方式說明在上下文之間的列群組邊界上重新排序區塊。如先前所提及,在一些實施例中,視訊編碼器可經組態以根據奈特次序處理方法處理列群組中之區塊,(例如)如圖8至圖10B中所說明。如圖9A及圖9B中所示,使用列群組(例如,四重列)邊界之奈特次序處理方法可處理圖框中之列群組,好像該等列群組端對端地配置。因此,位 於列群組之末端的若干區塊與來自下一列群組之開端的區塊交錯。圖7A展示根據至少一些實施例的位於列群組邊界處之區塊的處理次序。圖7B展示來自圖7A之經處理區塊將如何於記憶體中交錯。然而,當在列群組邊界上執行上下文終止及上下文啟動時,處理次序如圖7C中所示,且經處理區塊將如圖7D中所示進行配置。因此,在一些實施例中,如圖7D中所示之記憶體中的經處理區塊可如圖7E中所示重新排序,使得區塊呈預期之交錯次序。
奈特次序處理
描述如下區塊處理方法及裝置之實施例:其中根據在本文中被稱作「奈特次序」之次序而將區塊輸入至管線中且處理管線中之該等區塊,而非根據習知方法中之掃描次序來處理管線中之區塊。奈特次序係參考西洋棋奈特件之移動,其中奈特向下移動一列且向左移動兩行。然而,應注意,如本文所使用之「奈特次序」更通常涵蓋一個列向下之移動及p個行向左之移動,其中p可為2但未必為2。
奈特次序處理方法可提供管線中之鄰近區塊之間的間隔(一或多個階),此(例如)促進資料自處理第一區塊之管線之下游階反饋至處理第二區塊(其取決於來自第一區塊之資料)之管線之上游階。區塊處理管線之一或多個階可在處理給定區塊時需要來自一或多個其他相鄰區塊之資訊。圖3展示可需要資訊的當前區塊(m,n)之相鄰者--左側(m-1,n);上方(m,n-1);左上方(m-1,n-1);右上方(m+1,n-1);及右右上方(m+2,n-1)。對來自相鄰區塊之資訊之此等要求可被稱作相依性。舉例而言,參看圖3,可需要來自區塊(m,n)之左側相鄰者之資訊以對區塊執行特定操作。在奈特次序處理方法中,輸入至管線之下一區塊為區塊(m-2,n+1),而非緊跟在區塊(m,n)之後將區塊(m+1,n)輸入至管線中。以奈特次序而非掃描次序將區塊輸入至管線中會提供該管線中之一列上之鄰近區塊之間的間隔(例如,一或多個階)。
在奈特次序處理方法之至少一些實施例中,可將輸入圖框中之區塊的列劃分成四個列之集合,其在本文中被稱作四重列,其中奈特次序處理方法受四重列邊界約束。參看圖3,當使用運用奈特次序處理之四重列邊界的情況下,區塊(m-1,n)將在將區塊(m,n)輸入至管線時下游四個階,且區塊(m,n)將在將區塊(m+1,n)輸入至管線時下游四個階。因此,在一列上鄰近之區塊將在管線中隔開四個階。因此,在對取決於左側相鄰資訊之區塊執行操作之階,更有可能易於以比在以掃描次序處理區塊將具有的延時少的延時可得到用於左側相鄰者之資訊。除了取決於左側相鄰者,區塊處理方法中之一或多個操作可取決於來自先前(或上方)列之相鄰區塊,諸如如圖3所展示之頂部相鄰者、左上方相鄰者、右上方相鄰者,及右右上方相鄰者。具有四重列約束之奈特次序處理方法提供相鄰資訊之位置,其可被利用以提供在相對小緩衝器中在每一階處之此相鄰資料之本端快取。
在至少一些實施例中,用於在使用四重列約束的情況下根據奈特次序處理方法來判定供輸入至管線之下一區塊之基本演算法係如下:若不在四重列之底部列上:下一區塊為向左兩行,向下一列(-2,+1)。
否則,在四重列之底部列處:下一區塊為向右七行,向上三列(+7,-3)。
然而,亦可用除了向左兩個區塊、向下一個區塊(-2,+1)以外的其他間隔來實施奈特次序處理方法。舉例而言,代替向左兩個區塊及向下一個區塊,該方法可經實施以向左三個區塊且向下一個區塊以獲得下一區塊。作為另一實例,該方法可經實施以向左一個區塊且向下一個區塊(-1,+1)以獲得下一區塊。另外,可用除了四重列(四列)約束以外的其他約束來實施奈特次序處理方法。換言之,可在實施例中使用 至少兩個列之列群組以約束奈特次序處理方法。在假定r作為用以約束奈特次序處理方法之列之數目的情況下,可將演算法一般化為:如不在列群組之底部列上:則下一區塊為向左p行,向下一列(-p,+1)。
否則,在列群組之底部列處:下一區塊向右q行,向上(r-1)列(+q,-(r-1))。
改變p之值將影響q之值,將不影響來自管線中之列之鄰近區塊之間的間隔,但將影響給定區塊與其其他相鄰區塊(例如,其左上相鄰者、上方相鄰者及右上方相鄰者)之間的間隔。詳言之,應注意,使用間隔(-1,+1)將引起在管線之鄰近階處同時地處理一區塊及其對角(右上方)相鄰區塊。因此,可使用向左至少兩個區塊之間隔使得並不在區塊處理管線之鄰近階處同時地處理對角鄰近區塊。改變r之值將影響q之值,將影響來自管線中之一列之鄰近區塊之間的間隔,且將影響區塊與其其他相鄰區塊(例如,其左上相鄰者、上方相鄰者及右上方相鄰者)之間的間隔。
用於判定下一區塊之上述演算法可在初始區塊處開始。在達到一四重列之末端(其繼之以另一四重列)時,演算法跳至下一四重列之第一區塊且接著在該四重列與該下一四重列之間交越歷時幾個循環,從而引起來自該四重列之末端的一些區塊與來自該下一四重列之開始之一些區塊交錯。換言之,奈特次序處理方法將四重列視為好像其端對端地配置。為避免演算法之複雜化並維持管線中之區塊之一致間隔,至少一些實施例可用無效區塊填補第一四重列之開端及最後一四重列之末端。無效區塊可被定義為在圖框之邊界之外部且經輸入至管線但不含有有效圖框資料且因此在階處不被處理的區塊。因此,用於判定下一區塊之演算法可在初始區塊處開始,初始區塊可為第一四重列之頂部列中之第一區塊或第一四重列之頂部列中之第一區塊左側的 無效區塊;進行通過所有四重列;且在最後四重列之末端繼續直至最後一四重列之最後區塊已經輸入至管線為止。在圖框之開端及末端處在管線中將存在氣泡,但來自管線中之圖框之有效區塊之間隔將始終保持一致。在一些實施例中,作為對用無效區塊填補視訊圖框之最後一四重列之末端之替代例,可使視訊圖框之最後一四重列與區塊處理管線中之待處理之下一視訊圖框之第一列重疊。
圖9A及圖9B以圖形方式說明根據至少一些實施例的奈特次序處理方法。為簡單起見,此等圖式使用劃分成144個16×16像素區塊之實例192×192像素圖框,其具有12個列之區塊及12個行之區塊。然而,應注意,奈特次序處理方法可應用於任何尺寸之輸入視訊圖框。在圖9A中,實例圖框劃分成若干列區塊及若干行區塊。該等區塊列分割成三個四重列,每一四重列包括四個列。在左側上用無效區塊填補第一四重列之最後三個列,且在右側上用無效區塊填補最後(第三)四重列之前三個列。在此實例中,區塊中之數字表示根據奈特次序處理方法將區塊輸入至區塊處理管線之次序,其以區塊0(第一四重列之頂部列中之第一區塊)開始。區塊0被輸入至管線之第一階,且當第一階對於另一區塊就緒時,該方法藉由向左兩行、向下一列以獲得供輸入之下一區塊(圖9A中之區塊1)而繼續進行。重複此型樣直至達到四重列之底部為止。在四重列之底部處,該方法向右七行、向上三列以獲得下一區塊。此情形繼續直至圖框中之所有區塊(以及圖9A中所示之所有無效區塊)皆被輸入至管線中為止。當到達四重列之末端時,若在該四重列之後存在另一四重列,則輸入演算法進行至下一四重列之開端。在此實例中,在輸入區塊47之後,方法繼續進行至區塊48(第二四重列之頂部列中之第一區塊)。如由自區塊47至區塊44右側之被標記為48的虛線矩形之虛線箭頭所示,第二四重列之頂部列之第一區塊(區塊48)被視為緊接在第一四重列之頂部列之最後區塊(區塊44)右 側,且因此自區塊47藉由向右七行、向上三行而達到。換言之,奈特次序處理方法將四重列視為好像其端對端地配置,其中在每一末端處具有無效區塊,如圖9B所展示。因此,用於判定下一區塊之演算法橫越整個圖框保持相同。
在一些實施例中,第一四重列之每一列可用額外無線區塊填補,例如,用額外兩個無效區塊填補。代替以第一四重列之頂部列中之第一區塊開始(如圖9A中所示),至管線之輸入可以第一四重列之頂部列中之第一區塊左側的第一無效區塊開始。
圖10A及圖10B為根據至少一些實施例的用於區塊處理管線之奈特次序處理方法的高階流程圖。在圖10A中,如3100處所指示,根據用於判定藉由奈特次序處理方法而實施的下一輸入區塊之演算法來判定下一區塊。如3102處所指示,將區塊(例如)自記憶體經由直接記憶體存取(DMA)而輸入至管線。如由3104所示,只要存在待處理之區塊,就繼續元素3100及3102之輸入程序。在管線中處理藉由元素3100及3102而輸入至管線之每一區塊,如3106處所指示。最初將每一區塊輸入至管線之第一階,處理該等區塊,將該等區塊輸出至第二階、處理該等區塊,等等。當一區塊自管線之一階移動至下一階時,該階可開始處理管線中之下一區塊。因此,輸入區塊移動通過管線之該等階,其中每一階每次處理一個區塊。如3108處所指示,一旦一區塊已藉由管線之最後一階處理,就將該經處理區塊(例如)經由直接記憶體存取(DMA)而輸出至記憶體。
圖10B為用於判定可藉由奈特次序處理方法而實施的下一輸入區塊之實例演算法的流程圖,且對圖10A之元素3100擴展。圖10B假定圖框劃分成四重列,且用以判定下一圖框之演算法在不處於四重列之底部列上的情況下為向左兩行向下一列(-2,+1),在處於底部列上的情況下為向右七行向上三列(+7,-3)。然而,可使用其他列分組及/或間 隔演算法。在3150處,若在圖框之開始處,則方法獲得初始區塊,如3152處所指示。若此並非圖框之開始,則在3154處,若此為四重列之最後一列,則下一區塊為向右七行向上三列,如3156處所指示。若此並非四重列之該最後一列,則下一區塊為向左兩行向下一列,如3158處所指示。
快取相鄰資料
在區塊處理管線之階處執行之一或多個操作可取決於來自區塊之先前(或上方)列之相鄰區塊中之一或多者,諸如,頂部相鄰區塊、左上方相鄰區塊、右上方相鄰區塊,及右右上方相鄰區塊,以及左側相鄰區塊,如圖3中所示。在實施奈特次序處理方法之區塊處理管線之至少一些實施例中,快取當前列群組(例如,四重列)上之C最近經處理區塊的具有充足大小之緩衝器可實施於管線之一或多個階中之每一者處。此緩衝器可被稱作當前四重列緩衝器,且可(例如)被實施為圓形FIFO緩衝器。在至少一些實施例中,根據用於判定用以約束奈特次序方法之下一區塊及列群組大小之演算法,C可經判定成使得緩衝器包括對應於階處之當前區塊之左上方相鄰者之輸入項。緩衝器亦可包括根據演算法之對應於當前區塊之右右上方、左側、右上方及頂部相鄰者之輸入項。
然而,對於列群組(例如,四重列)之頂部列中的區塊,用於上方列中之相鄰者的資訊並非位於當前四重列緩衝器中。在至少一些實施例中,為得到用於當前四重列之頂部列上之區塊的相鄰資訊(例如,左上、上部、右上、右右上相鄰資訊),先前四重列緩衝器可實施於管線之一或多個階中之每一者處。當處理四重列時,(例如)藉由管線之最後階將用於該四重列之底部列上之每一區塊之資訊寫入至外部記憶體中之相鄰資料結構。當處理來自下一四重列之頂部列之區塊時,(例如)藉由管線之第一階而自外部記憶體讀取用於先前四重列之底部 列中之相鄰區塊之資訊,且將該資訊沿著該管線傳遞至具有頂部列區塊之其他階。在至少一些實施例中,自外部記憶體讀取用於頂部列中之區塊之右右上方相鄰區塊之資訊。在至少一些實施例中,先前四重列緩衝器為循環緩衝器,且用自外部記憶體讀取的相鄰資訊來替換先前四重列緩衝器中之最早輸入項。在各種實施例中,底部列中之區塊被寫入至且供讀取相鄰區塊資訊所來自的外部記憶體可為在最後階外部之管線組件之記憶體、實施管線之視訊編碼器之記憶體,或視訊編碼器外部之記憶體。然而,在一些實施例中,記憶體可為管線之最後階之本端記憶體。至少一些實施例可包括用以控制至列之間的外部記憶體之讀取及寫入以避免將資料覆寫於外部記憶體中之連鎖機構。
實例管線單元
圖11A至圖11C為根據至少一些實施例之實例管線處理單元之方塊圖,該等實例管線處理單元可用於實施如本文所描述之區塊處理方法及裝置中之一或多者之區塊處理管線的階處。舉例而言,如圖11A及圖11B中所示之管線單元5000A及/或5000B中之一或多者可用於圖12中所示之實例區塊處理管線之每一階處。應注意,圖11A至圖11C並不意欲為限制性的;管線處理單元可包括比該等圖中所示之組件及特徵更多或更少的組件及特徵。
如圖11A中所示,管線單元5000A可包括至少一記憶體5010及一單元核心5020。單元核心5020可為經組態以在區塊處理管線之特定階處對或對於一區塊或一區塊之一部分執行特定操作的組件(例如,電路)。記憶體5010可(例如)為如下雙緩衝式記憶體:允許單元核心5020自記憶體5010讀取用於一區塊之資料並處理該資料,同時用於下一區塊之資料正自先前管線單元寫入至記憶體5010。
如圖11B中所示,除了包括如圖11A中所展示之記憶體5010及單元核心5020以外,管線單元5000B亦可包括一處理器5030。舉例而 言,處理器5030可為行動或M類處理器。區塊處理管線之管線單元5000B中之處理器5030可(例如)用以控制區塊邊界處之區塊處理管線。管線單元5000B中之處理器5030可(例如)用低階韌體微碼可組態,以允許針對各種應用由區塊處理管線實施的演算法之靈活性。在至少一些實施例中,管線中之管線單元5000B之處理器5030可經組態以自先前(上游)管線單元5000B之處理器5030接收資料且將資料發送至一後續(下游)管線單元5000B之處理器5030。另外,管線之最後一階處之管線單元5000B之處理器5030可經組態以將反饋資料發送至管線之第一階處之管線單元5000B的處理器5030。
如圖11A及圖11B中所示,管線單元5000A或5000B可經組態以(例如)根據直接記憶體存取(DMA)而存取外部記憶體。另外,管線單元5000A或5000B可經組態以將資訊傳遞回至管線之一或多個先前(上游)階及/或接收自管線之一或多個後續(下游)階傳遞回之資訊。另外,管線單元5000A或5000B可經組態以將資訊前向傳遞至管線之一或多個後續(下游)階及/或接收自管線之一或多個先前(上游)階前向傳遞之資訊。
如圖11C中所示,如圖11A中所示之兩個或兩個以上單元5000A可分組在一起且經組態以在管線中執行操作。單一處理器5030可用以控制及/或組態管線單元5000A。
實例區塊處理管線
圖12為根據至少一些實施例的用於H.264編碼之實例區塊處理方法6000中之一般操作的高階方塊圖,該實例區塊處理方法可藉由可實施如本文中所描述之區塊處理方法及裝置中之一或多者的區塊處理管線7040實施於階中。實施區塊處理方法6000之區塊處理管線7040可(例如)被實施為H.264視訊編碼器裝置之組件,其經組態以將輸入視訊圖框自輸入格式轉換成如H.264/AVC標準中所描述的H.264/進階視 訊編碼(AVC)格式。H.264/AVC標準係由ITU-T在名為「ITU-T Recommendation H.264:Advanced video coding for generic audiovisual services」之文件中發佈,該文件可被稱作H.264建議。一實例輸入視訊格式為經編碼於YCbCr色彩空間中之1080p(1920×1080像素、2.1百萬像素)。然而,其他輸入視訊格式可使用視訊編碼器裝置中之管線之實施例而編碼成H.264。
視訊編碼器裝置可(例如)被實施為積體電路(IC)或被實施為IC上之子系統,諸如,系統單晶片(SOC)。在至少一些實施例中,視訊編碼器裝置可包括至少一管線組件、一處理器組件(例如,低功率多核心處理器),及將該裝置之功能組件互連之匯流排子系統或網狀架構。視訊編碼器裝置之處理器組件可(例如)執行管線之圖框層級控制(諸如,速率控制)、執行管線組態,且經由驅動程式而與應用程式軟體介接。管線組件可實施多個處理階,每一處理階經組態以執行如圖12中所示之操作中之一或多者之一部分或全部,每一階包括一或多個處理單元。管線中之處理單元中之至少一者可包括一處理器組件(例如,M類處理器),該處理器組件可(例如)組態在巨集區塊層級處在各別階處之處理單元之參數。視訊編碼器裝置可包括其他功能組件或單元,諸如,記憶體組件;以及至(例如)一或多個視訊輸入源及外部記憶體之外部介面。至視訊編碼器裝置之實例視訊輸入源可包括如下各者中之一或多者(但不限於該等器件):用於原始視訊輸入處理之視訊攝影機、用於重新編碼/轉碼之解碼器裝置、快閃或其他記憶體,及JPEG解碼器。實例視訊編碼器裝置於圖13中予以說明。包括視訊編碼器裝置之實例SOC於圖14中予以說明。雖然實施例大體上關於運用奈特次序處理來實施區塊處理方法6000之區塊處理管線之硬體實施予以描述,但應注意,運用奈特次序處理之區塊處理方法6000可藉由以軟體實施之區塊處理管線予以實施。
實施如圖12中所示之方法6000的管線根據H.264標準可處理來自輸入視訊圖框之16×16像素巨集區塊,每一巨集區塊包括可在管線之階處單獨地處理之兩個或兩個以上區塊或分割區。輸入視訊圖框可(例如)經編碼於YCbCr色彩空間中;每一巨集區塊可由可在管線之階處分離地處理之色度元素及明度元素之分離區塊構成。實施區塊處理方法6000之管線可自記憶體接收輸入巨集區塊且將經處理巨集區塊輸出至記憶體。記憶體可包括視訊編碼器裝置之記憶體及/或視訊編碼器裝置外部之記憶體。在至少一些實施例中,記憶體可視需要由管線(例如)經由直接記憶體存取(DMA)存取。在至少一些實施例中,記憶體可被實施為多層級記憶體,其中快取記憶體被實施於管線與外部記憶體之間。舉例而言,在一些實施中,可自外部記憶體讀取一或多個四重列,且將一或多個四重列快取至快取記憶體以供由管線存取以縮減至外部記憶體之讀取數目。
如圖12中所示之可在階中藉由管線執行的實例H.264視訊編碼器方法6000之一般操作以及經由管線之一般資料流在下文中予以簡要描述。方法6000之一般操作中之每一者可藉由管線之一或多個階處之一或多個管線單元予以實施。實例管線單元在圖11A至圖11C中予以說明。亦應注意,圖12中所示之每一一般操作可再分成可藉由管線之一個、兩個或兩個以上階處之管線單元實施的兩個或兩個以上操作。然而,圖12中所示之操作中之兩個或兩個以上操作可在管線之同一階處予以執行。管線中之每一階每次處理一個巨集區塊,且因此,該等操作中之兩個或兩個以上操作可對當前處於各別階處之相同巨集區塊同時地操作。應注意,管線可執行比圖12中所示及下文所描述之彼等操作更多、更少的操作或不同於彼等操作的操作。
巨集區塊輸入
在至少一些實施例中,巨集區塊輸入6002可藉由管線之初始階 來執行。在至少一些實施例中,巨集區塊輸入6002自記憶體(例如)經由DMA而接收明度像素及色度像素、計算對由管線之下游階中之韌體所使用的輸入像素之統計,且對輸入巨集區塊進行緩衝以使韌體能夠向前看。將輸入巨集區塊像素資料及對應統計進行緩衝,且將該等輸入巨集區塊像素資料及對應統計發送至管線之實施圖框內及圖框間估計6010操作之一或多個下游階。在至少一些實施例中,高達16個巨集區塊之輸入緩衝器經維持用於輸入像素及統計。在至少一些實施例中,可根據如先前在題為奈特次序處理之章節中所描述之奈特次序輸入演算法將巨集區塊像素資料及對應統計輸入至管線之下游階。
在至少一些實施例中,巨集區塊輸入6002在四重列邊界處自記憶體讀取來自先前四重列之底部列之相鄰資料,且將相鄰資料傳遞至至少一下游階。
圖框內及圖框間估計
圖框內及圖框間估計6010操作可判定先前經編碼像素之區塊而待用於編碼輸入至管線之巨集區塊中。在H.264視訊編碼中,可使用已經編碼於當前圖框內之像素區塊來編碼每一巨集區塊。判定此等區塊之程序可被稱作圖框內估計,或簡單地被稱作框內估計。然而,亦可使用來自一或多個先前經編碼圖框(被稱作參考圖框)之像素區塊來編碼巨集區塊。在參考圖框中找到匹配像素區塊之程序可被稱作圖框間估計,或更通常被稱作運動估計。圖框內及圖框間估計6010操作可再分成可在管線之一個、兩個或兩個以上階處執行的兩個或兩個以上子操作,其中每一階處之一或多個組件或管線單元經組態以執行一特定子操作。
在至少一些實施例中,巨集區塊輸入6002自四重列邊界處之記憶體讀取來自先前四重列之底部列之相鄰資料,且將相鄰資料傳遞至圖框內及圖框間估計6010,例如傳遞至圖框內估計組件。另外,運動 補償及重建構6030(例如,明度重建構組件)可將相鄰資料作為反饋傳遞至圖框內及圖框間估計6010,例如傳遞至圖框內估計組件。
運動估計
在至少一些實施例中,為了執行運動估計,管線可包括用於待搜尋之每一參考圖框之運動估計引擎之一個例。每一運動估計引擎僅搜尋一個參考圖框。在至少一些實施例中,每一運動估計引擎可包括低解析度運動估計組件、全像素運動估計組件,及子像素運動估計組件。在至少一些實施例中,運動估計引擎中每一者之三個組件可被實施於管線之不同階處。在至少一些實施例中,對來自一或多個參考圖框之明度參考資料執行運動估計。在至少一些實施例中,每一運動估計引擎亦可包括記憶體組件,該記憶體組件視需要自外部記憶體讀取參考圖框資料(例如,明度參考資料)且本端地儲存該資料。在至少一些實施例中,處理器之單一個例管理運動估計引擎之所有個例。在至少一些實施例中,處理器可使用經預測且同置型運動向量來判定一或多個候選者,且將候選者輸入至運動估計引擎之全像素運動估計組件。
在至少一些實施例中,每一運動估計引擎之低解析度運動估計組件對各別參考圖框之一向下按比例調整之低解析度版本執行詳盡搜尋,以產生候選者。在至少一些實施例中,全像素運動估計組件使用來自低解析度運動估計組件之候選者而對全大小像素執行搜尋。在至少一些實施例中,子像素運動估計組件使用自全像素運動估計組件接收之最好候選者而對二分之一像素及四分之一像素執行搜尋。在一些實施例中,可基於在管線之上游階處所執行之直接模式估計之結果來停用全像素運動估計及子像素運動估計。在至少一些實施例中,每一運動估計引擎將結果資料輸出至模式決策6020。
在至少一些實施例中,運動估計亦可包括一直接模式估計組 件,該直接模式估計組件接收同置型及空間運動向量資料且計算其提供至模式決策6020之直接/跳過模式成本。基於結果,直接模式估計組件可停用全像素運動估計及子像素運動估計。
框內估計
在至少一些實施例中,管線之框內估計組件執行框內模式選擇以判定已經編碼於可用於編碼當前巨集區塊中之當前圖框內之像素區塊。在至少一些實施例中,框內估計組件僅對明度執行框內模式選擇。在此等實施例中,色度框內估計係藉由管線之下游階處之色度重建構組件來執行。在至少一些實施例中,框內估計組件可對一巨集區塊中之兩個或兩個以上區塊或分割區(例如,4×4、8×8、4×8、8×4、16×8、及/或8×16區塊)中每一者獨立地執行框內估計。對於每一區塊,首先自相鄰區塊提取預測像素(相鄰區塊可在圖框中之當前巨集區塊外部或在當前巨集區塊內)。對於當前區塊中之每一預測模式,藉由自相鄰像素產生預測區塊、計算模式成本且比較模式成本與用於彼區塊之最小成本來評估當前模式之成本。一旦評估所有預測模式且判定最好模式,就可對最好模式執行重建構使得經重建構像素可用以預測巨集區塊內之未來區塊。框內估計組件可將最好框內模式資訊傳遞至模式決策6020。
在至少一些實施例中,巨集區塊輸入6002自四重列邊界處之記憶體讀取來自先前四重列之底部列之相鄰資料,且將相鄰資料傳遞至框內估計組件。在至少一些實施例中,至少一下游階(例如,下游階處之明度重建構組件)可將相鄰資料傳遞回至框內估計組件。
模式決策
在至少一些實施例中,模式決策6020可藉由管線之實施圖框內及圖框間估計6010操作之階的下游階處之模式決策組件來實施。然而,在一些實施例中,模式決策6020操作可再分成可在管線之一個、 兩個或兩個以上階處執行的兩個或兩個以上子操作,其中每一階處之一或多個組件或管線單元經組態以執行一特定子操作。在至少一些實施例中,模式決策6020組件自框內估計接收最好框內模式、自直接模式估計接收直接/跳過模式成本,且自運動估計引擎接收運動向量候選者。在至少一些實施例中,模式決策組件計算用於雙向模式之額外成本且判定最好巨集區塊類型,包括巨集區塊分割區、子分割區、預測方向及參考圖框索引。在至少一些實施例中,模式決策6020組件亦執行所有運動向量預測。可在模式決策期間估計運動向量速率時使用運動向量預測結果。在至少一些實施例中,亦可將運動向量預測結果自模式決策6020組件反饋至運動估計,例如供用於直接模式估計及運動向量速率估計。
運動補償及重建構
在至少一些實施例中,運動補償及重建構6030操作可再分成可在管線之一個、兩個或兩個以上階處執行的兩個或兩個以上子操作,其中每一階處之一或多個組件或管線單元經組態以執行一特定子操作。舉例而言,在一些實施例中,運動補償及重建構6030可再分成明度運動補償及重建構以及色度運動補償及重建構。在至少一些實施例中,運動補償及重建構6030之此等子操作中之每一者可藉由管線之一或多個階處之一或多個組件或管線單元來執行。
明度運動補償及重建構
在至少一些實施例中,管線之明度運動補償組件自模式決策6020接收最好模式及對應運動向量。如先前所提及,每一運動估計引擎可包括一記憶體組件,該記憶體組件自記憶體讀取並儲存參考圖框資料。若最好模式經框間預測,則明度運動補償組件向對應於運動向量之運動估計引擎請求參考圖框巨集區塊。運動估計引擎取決於請求大小而返回子像素內插式4×4或8×8區塊。明度運動補償組件接著將該 等區塊組合成預測巨集區塊。明度運動補償組件接著將加權預測應用於預測巨集區塊以產生最終巨集區塊預測子,該最終巨集區塊預測子接著被傳遞至明度重建構組件。
在至少一些實施例中,管線之明度重建構組針對明度執行巨集區塊重建構,包括框內預測(在至少一些實施例中,明度運動補償組件執行框間預測)、正變換及量化(FTQ),及逆變換及量化(ITQ)。
在至少一些實施例中,基於來自模式決策6020之最好模式,框間預測巨集區塊係自明度運動補償組件傳遞或框內預測係藉由明度重建構組件執行,以產生預測區塊。在框內模式中,以區塊(掃描)次序來執行預測,此係因為來自相鄰區塊之經重建構像素係為未來區塊之預測所需。自預測區塊減去輸入區塊以產生殘餘區塊。藉由經由明度重建構組件實施之FTQ技術來轉換及量化此殘餘像素資料。將係數資料發送至藉由明度重建構組件實施之ITQ技術,且亦可將係數資料向下游發送至CAVLC編碼。ITQ技術產生經重建構殘餘像素區塊。將預測區塊加至殘餘區塊以產生經重建構區塊。可將經重建構像素向下游傳遞至解區塊濾波器。在至少一些實施例中,亦可將經重建構像素傳遞回至圖框內及圖框間估計6010之圖框內估計組件,以用於預測當前巨集區塊內部之未來區塊。
色度運動補償及重建構
在至少一些實施例中,在兩個階中執行色度重建構。在第一階中,基於輸入巨集區塊類型、運動向量及參考圖框索引而自記憶體讀取為框間預測所需之色度參考區塊。在一些實施例中,可在色度運動補償階之前的一或多個階處(例如,在明度運動補償階處)將給定巨集區塊所需的色度參考區塊預取至色度快取記憶體中。接著應用子像素內插及加權預測以產生預測巨集區塊。在第二階中,執行色度框內預測及色度框內/框間FTQ/ITQ。此情形允許一個額外管線階負載色度預 測像素資料。由於色度像素未由運動估計搜尋,因此自外部記憶體讀取色度預測資料且色度預測資料可具有大延時。在至少一些實施例中,色度運動補償組件執行第一階,而色度重建構組件執行第二階。
在至少一些實施例中,色度運動補償組件產生包括用於Cb及Cr色度區塊之子像素內插之預測區塊;大小係基於分割大小及色度格式。針對色度格式4:2:0、4:2:2及4:4:4之全大小色度區塊分別為8×8、8×16或16×16像素。在至少一些實施例中,色度運動補償組件可自外部(至管線)記憶體預取及快取色度預測像素。在至少一些實施例中,可基於模式決策6020結果讀取參考資料。色度運動補償組件執行子像素內插以產生預測區塊。模式決策6020提供巨集區塊類型及子類型、每分割區之參考圖框索引,及對應運動向量。將預測輸出至色度重建構組件。
在至少一些實施例中,色度重建構組件針對框間模式及框內模式執行色度預測、色度框內估計及色度重建構。對於色度格式4:2:0及4:2:2,執行框內色度估計及預測。在至少一些實施例中,在此階處而非在圖框內及圖框間估計6010處執行色度框內估計,使得可在估計程序期間使用經重建構像素。在至少一些實施例中,若最好模式在框內,則可執行框內色度估計。基於最好框內色度模式,且可使用四個框內色度模式中之一者來執行框內預測。對於框間巨集區塊,自色度運動補償接收框間色度預測像素。對於色度格式4:4:4,使用明度框內預測模式以產生色度區塊預測,且以與針對明度相同的方式來執行框間色度預測。因此,色度重建構概念上包括用以以4:4:4色度格式重建構色度之4:2:0及4:2:2色度重建構及明度重建構。
CAVLC編碼及解區塊
在至少一些實施例中,CAVLC編碼及解區塊可藉由管線之最後階處之一或多個組件來執行。在至少一些實施例中,管線之解區塊濾 波器組件自色度重建構組件接收經重建構明度及色度像素且根據H.264建議執行解區塊濾波。可將結果輸出至記憶體。
在至少一些實施例中,管線之CAVLC編碼組件自色度重建構組件接收至少明度及色度經量化係數、相鄰資料及色度重建構結果,且產生CAVLC(上下文自適應性可變長度編碼)經編碼輸出串流而至記憶體。
在至少一些實施例中,解區塊濾波器組件及CAVLC編碼組件將用於四重列之底部列之相鄰資料寫入至四重列邊界處之記憶體。對於下一四重列之頂部列,巨集區塊輸入6002可接著自四重列邊界處之記憶體讀取此相鄰資料且將相鄰資料傳遞至管線之至少一下游階。
轉碼器
在至少一些實施例中,轉碼操作可藉由轉碼器7050執行。該轉碼器可被實施為管線之功能組件或被實施為在管線外部之功能組件。在至少一些實施例中,轉碼器7050可執行由管線輸出之CAVLC(上下文自適應性可變長度寫碼)經編碼之串流至CABAC(上下文自適應性二進位算術寫碼)經編碼之串流之記憶體至記憶體轉碼或轉換。
在至少一些實施例中,管線可以不同於掃描次序之次序進行編碼,例如,如本文中先前所描述之奈特次序。然而,最終,應以習知巨集區塊掃描次序傳輸H.264視訊編碼器之經編碼位元串流。在至少一些實施例中,重新排序自奈特次序至掃描次序輸出之巨集區塊係藉由將經編碼資料寫入至四個不同輸出緩衝器之CAVLC編碼組件來實現,每一輸出緩衝器對應於一巨集區塊列。在四重列之末端處,每一列緩衝器將含有用於一各別列之經編碼巨集區塊之掃描次序串流。轉碼器7050處置縫合每一列之開端及末端以在巨集區塊列邊界處產生連續串流。在至少一些實施例中,管線可將後設資料嵌入於CAVLC輸出串流中以促進藉由轉碼器7050進行之列之縫合。
實例視訊編碼器裝置
圖13為根據至少一些實施例之實例視訊編碼器裝置7000之方塊圖。視訊編碼器裝置7000可(例如)被實施為積體電路(IC)或被實施為IC上之子系統,諸如,系統單晶片(SOC)。在至少一些實施例中,視訊編碼器裝置7000可包括管線7040組件、轉碼器7050組件、處理器7010組件(例如,低功率多核心處理器)、記憶體管理單元(MMU)7020、DMA 7030,及將裝置之功能組件互連的互連件7080(諸如匯流排子系統或網狀架構)。雖然展示為位於管線7040外部之功能組件,但轉碼器7050在一些實施例中可實施為管線7040之功能組件。視訊編碼器裝置7000之處理器7010組件可(例如)執行管線7040之圖框層級控制,諸如,速率控制;執行管線7040組態(包括管線7040內之個別管線單元之組態);且經由驅動程式與應用程式軟體介接(例如,針對視訊編碼器7000組態)。MMU 7020可充當至外部記憶體之介面,(例如)以供串流視訊輸入及/或輸出。管線7040組件可經由DMA 7030經由MMU 7020而存取記憶體。在一些實施例中,視訊編碼器裝置7000可包括圖13中未圖示之其他功能組件或單元,或比圖13所展示之功能組件少的功能組件。可藉由管線7040組件實施之實例區塊處理方法展示於圖12中。可包括至少一視訊編碼器裝置7000之實例系統單晶片(SOC)經展示於圖14中。
實例系統單晶片(SOC)
現在轉向至圖14,系統單晶片(SOC)8000之一實施例之方塊圖可包括視訊編碼器裝置之至少一個例,該視訊編碼器裝置包括可實施如圖3至圖13所說明之區塊處理方法及裝置中之一或多者的區塊處理管線。SOC 8000經展示耦接至記憶體8800。如由名稱所暗示,SOC 8000之組件可作為積體電路「晶片」而整合至單一半導體基板上。在一些實施例中,組件可被實施於系統中之兩個或兩個以上離散晶片 上。然而,SOC 8000將在本文中被用作一實例。在所說明之實施例中,SOC 8000之組件包括中央處理單元(CPU)複合體8020、晶片上周邊組件8040A至8040B(更簡要地,「周邊裝置」)、記憶體控制器(MC)8030、視訊編碼器7000(其自身可被視為周邊組件),及通信網狀架構8010。組件8020、8030、8040A至8040B及7000可全部皆耦接至通信網狀架構8010。記憶體控制器8030可在使用期間耦接至記憶體8800,且周邊裝置8040B可在使用期間耦接至外部介面8900。在所說明之實施例中,CPU複合體8020包括一或多個處理器(P)8024及一二階(L2)快取記憶體8022。
周邊裝置8040A至8040B可為包括於SOC 8000中之任一組額外硬體功能性。舉例而言,周邊裝置8040A至8040B可包括視訊周邊裝置,諸如,經組態以處理來自攝影機或其他影像感測器之影像俘獲資料之影像信號處理器(ISP)、經組態以在一或多個顯示器件上顯示視訊資料之顯示器控制器、圖形處理單元(GPU)、視訊編碼器/解碼器、按比例調整器、旋轉器、融合器(blender)等。周邊裝置可包括音訊周邊裝置,諸如,麥克風、揚聲器、至麥克風及揚聲器之介面、音訊處理器、數位信號處理器、混頻器等。周邊裝置可包括用於位於SOC 8000之外部之各種介面8900(包括諸如通用串列匯流排(USB)、包括高速PCI(PCIe)之周邊組件互連(PCI)、串列埠及並列埠等之介面)的周邊介面控制器(例如,周邊裝置8040B)。周邊裝置可包括諸如媒體存取控制器(MAC)之網路連接周邊裝置。可包括任何硬體集合。
更特定地在圖14中,SOC 8000可包括視訊編碼器7000組件之至少一個例,例如,如圖13所說明的視訊編碼器7000,其包括實施如圖12所說明之區塊處理方法6000及管線7040之區塊處理管線7040組件。視訊編碼器7000可為(例如)可經組態以將輸入視訊圖框自輸入格式轉換成如H.264/進階視訊寫碼(AVC)標準中所描述之H.264/AVC格式之 H.264視訊編碼器裝置。區塊處理管線7040可實施如本文中關於圖3至圖12所描述之區塊處理方法及裝置中之一或多者。
CPU複合體8020可包括充當SOC 8000之CPU的一或多個CPU處理器8024。系統之CPU包括執行系統之主要控制軟體(諸如,作業系統)之處理器。通常,由CPU在使用期間執行之軟體可控制系統之其他組件以認識到該系統之所要的功能性。處理器8024亦可執行其他軟體,諸如,應用程式。應用程式可提供使用者功能性,且可為了較低層級器件控制而依賴於作業系統。因此,處理器8024亦可被稱作應用程式處理器。CPU複合體8020可進一步包括其他硬體,諸如,L2快取記憶體8022及/或至系統之其他組件的介面(例如,至通信網狀架構8010之介面)。大體而言,處理器可包括經組態以執行在由處理器實施之指令集架構中定義的指令之任何電路系統及/或微碼。由處理器回應於執行該等指令而操作之指令及資料可通常儲存於記憶體8800中,但亦可針對存取周邊裝置之直接處理器定義某些指令。處理器可涵蓋經實施於具有其他組件之積體電路上的處理器核心,作為系統單晶片(SOC 8000)或其他層級之整合。處理器可進一步涵蓋離散微處理器、整合至多晶片模組實施之處理器核心及/或微處理器、實施為多個積體電路之處理器等。
記憶體控制器8030可通常包括用於自SOC 8000之其他組件接收記憶體操作及用於存取記憶體8800以完成記憶體操作之電路。記憶體控制器8030可經組態以存取任何類型之記憶體8800。舉例而言,記憶體8800可為靜態隨機存取記憶體(SRAM)、動態RAM(DRAM)(諸如,同步DRAM(SDRAM),其包括雙資料速率(DDR、DDR2、DDR3等)DRAM)。可支援低功率/行動版本之DDR DRAM(例如,LPDDR、mDDR等)。記憶體控制器8030可包括用於記憶體操作,用於操作之排序(及潛在地,重新排序)及將操作呈現給記憶體8800之佇列。記憶 體控制器8030可進一步包括資料緩衝器以儲存待寫入至記憶體的寫入資料及待返回至記憶體操作之源的讀取資料。在一些實施例中,記憶體控制器8030可包括用以儲存最近存取之記憶體資料之快取記憶體。舉例而言,在SOC實施中,快取記憶體可藉由避免來自記憶體8800之資料之重新存取(若預期不久將再次存取)來縮減SOC中之功率消耗。在一些狀況下,快取記憶體亦可被稱作系統快取記憶體,與僅為某些組件提供服務的諸如L2快取記憶體8022或處理器8024中之快取記憶體的私用快取記憶體相對。另外,在一些實施例中,系統快取記憶體無需位於記憶體控制器8030內。
在一實施例中,記憶體8800可用SOC 8000以疊層晶片或疊層封裝組態來封裝。亦可使用SOC 8000及記憶體8800之多晶片模組組態。此類組態可相較於至系統中之其他組件之傳輸相對更安全(就資料可觀察性而言)。因此,受保護資料可未經加密地駐留於記憶體8800中,而受保護資料可經加密以用於SOC 8000與外部端點之間的交換。
通信網狀架構8010可為用於在SOC 8000之組件當中通信之任何通信互連件及協定。通信網狀架構8010可以匯流排為基礎,包括共用匯流排組態、縱橫式組態,及具有橋接器之階層式匯流排。通信網狀架構8010亦可以封包為基礎,且可與橋接器成階層式、為縱橫式、點對點或其他互連件。
應注意,SOC 8000之組件之數目(及用於圖14中所示之彼等組件之子組件之數目(諸如,在CPU複合體8020內))可在實施例間變化。可存在比圖14中展示之數目更多或更少的每一組件/子組件。
實例系統
圖15為系統9000之一實施例的方塊圖。在所說明之實施例中,系統9000包括耦接至一或多個外部周邊裝置9020及外部記憶體8800的 圖14中所說明之SOC 8000之至少一個例。提供功率管理單元(PMU)9010,其將供應電壓供應至SOC 8000以及將一或多個供應電壓供應至記憶體8800及/或周邊裝置9020。在一些實施例中,可包括SOC 8000之一個以上個例(且亦可包括一個以上記憶體8800)。
視系統9000之類型而定,周邊裝置9020可包括任何所要電路。舉例而言,在一實施例中,系統9000可為行動器件(例如,個人數位助理(PDA)、智慧型電話等),且周邊裝置9020可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等)的器件。周邊裝置9020亦可包括額外儲存器,包括RAM儲存器、固態儲存器,或磁盤儲存器。周邊裝置9020可包括諸如顯示螢幕之使用者介面器件,包括觸摸顯示螢幕或多觸摸顯示螢幕、鍵盤或其他輸入器件、麥克風、揚聲器,等等。在其他實施例中,系統9000可為任何類型之計算系統(例如,桌上型個人電腦、膝上型電腦、工作站、迷你筆記型電腦(net top)等)。
外部內存8800可包括任何類型之內存。舉例而言,外部記憶體8800可為SRAM、動態RAM(DRAM),諸如,同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM、DDR DRAM之低功率版本(例如,LPDDR、mDDR等),等等。外部記憶體8800可包括記憶體器件被安裝至之一或多個記憶體模組,諸如,單列直插記憶體模組(SIMM)、雙列直插記憶體模組(DIMM)等等。替代地,外部記憶體8800可包括以疊層晶片或疊層封裝實施安裝於SOC 8000上之一或多個記憶體器件。
本文所描述之方法在不同實施例中可以軟體、硬體或其組合予以實施。另外,可改變該等方法之區塊之次序,且可添加、重新排序、組合、省略、修改各種元件等等。如將對受益於本發明之熟習此項技術者所顯見,可作出各種修改及改變。本文所描述之各種實施例 意謂說明性的而非限制性的。許多變化、修改、添加及改良係可能的。因此,可針對本文所描述之組件提供複數個個例作為單一個例。各種組件、操作及資料儲存器之間的邊界係稍微任意的,且在特定說明性組態之上下文中說明特定操作。預見功能性之其他分配,且功能性之其他分配可屬於以下之申請專利範圍之範疇。最後,在實例組態中呈現為離散組件之結構及功能性可被實施為組合式結構或組件。此等及其他變化、修改、添加及改良可屬於如以下之申請專利範圍中所界定的實施例之範疇。
200‧‧‧系統
210‧‧‧視訊編碼器
220‧‧‧處理器
240‧‧‧區塊處理管線
250‧‧‧轉碼器
260A‧‧‧視訊源
260B‧‧‧視訊源
262A‧‧‧圖框
290‧‧‧記憶體
292A‧‧‧圖框緩衝器
294A‧‧‧經編碼圖框

Claims (20)

  1. 一種在一區塊處理管線中用於處理多個視訊圖框之視訊編碼器,其包含:一區塊處理管線,其包含複數個階,每一階經組態以對來自通過該管線輸入之圖框的像素區塊執行一或多個操作;其中該區塊處理管線經組態以:開始處理來自一第一視訊源之一圖框;接收需要處理來自一第二視訊源之一較高優先權圖框的一指示:在該圖框內的一上下文終止位置處執行針對來自該第一視訊源之該圖框的一上下文終止;處理來自該第二視訊源之該較高優先權圖框;及執行一上下文重新啟動以在該圖框內的該上下文終止位置處恢復處理來自該第一視訊源之該圖框。
  2. 如請求項1之視訊編碼器,其中該區塊處理管線經組態以根據各包括來自該圖框之區塊的兩列或兩列以上列群組處理來自該圖框之該等像素區塊,且其中該上下文終止位置位於一列群組之末端處。
  3. 如請求項1之視訊編碼器,其中,在執行該上下文終止過程中,該區塊處理管線經組態以將來自經處理區塊之最後一列的資料儲存至一緩衝器,該等經處理區塊係來自該圖框;且其中,在執行該上下文重新啟動過程中,該區塊處理管線經組態以在該終止之前自該緩衝器讀取來自經處理區塊之該最後 一列的資料,該等經處理區塊係來自該圖框。
  4. 如請求項1之視訊編碼器,其中在執行該上下文終止的過程中,經由該管線之一或多個下游階自該管線之一第一階傳播該上下文終止位置的一指示。
  5. 如請求項1之視訊編碼器,其中該區塊處理管線經進一步組態以將來自該圖框之經處理區塊輸出至一記憶體,且其中該裝置進一步包含一轉碼器引擎,其經組態以執行由該區塊處理管線輸出之該等經處理區塊的記憶體至記憶體轉碼。
  6. 如請求項5之視訊編碼器,其中該轉碼將由該區塊處理管線輸出之一經CAVLC(上下文自適應性可變長度寫碼)編碼串流轉換至一經CABAC(上下文自適應性二進位算術寫碼)編碼串流。
  7. 如請求項5之視訊編碼器,其中該區塊處理管線經進一步組態以經由輸出至該記憶體之該等經處理區塊將該上下文終止位置傳播至該轉碼器引擎。
  8. 如請求項5之視訊編碼器,其中該區塊處理管線經進一步組態以將一圖塊標頭插入於輸出至該記憶體之該等經處理區塊中,以在該上下文終止位置處發信號一新圖塊之啟動至該轉碼器引擎。
  9. 如請求項5之視訊編碼器,其中該轉碼器引擎經組態以在該區塊處理管線正處理來自該較高優先權圖框之區塊且將該等經處理區塊輸出至該記憶體同時繼續執行由該區塊處理管線輸出的來自該圖框之該等經處理區塊之該記憶體至記憶體轉碼。
  10. 一種在一區塊處理管線中用於處理多個視訊圖框之方法,其包含:將來自一當前圖框之像素區塊輸入至包含複數個階之一區塊處理管線,每一階經組態以對每一像素區塊執行一或多個操 作;接收待於該區塊處理管線中處理之另一圖框的一指示;回應於該指示,引導該區塊處理管線執行針對該當前圖框之一上下文終止;判定該區塊處理管線已在該圖框內的一上下文終止位置處停止處理該當前圖框;於該區塊處理管線中處理其他圖框;及引導該區塊處理管線執行一上下文重新啟動,以在該圖框內的該上下文終止位置處恢復該當前圖框之處理。
  11. 如請求項10之方法,其中該其他圖框為來自與該當前圖框不同之一源的一較高優先權圖框。
  12. 如請求項10之方法,其中該區塊處理管線根據各包括來自該當前圖框之區塊的兩列或兩列以上的列群組處理來自該當前圖框之該等像素區塊,且其中該上下文終止位置位於一列群組之末端處。
  13. 如請求項10之方法,其進一步包含:由該區塊處理管線將來自該當前圖框之經處理區塊輸出至一記憶體;及由一轉碼器引擎執行來自由該區塊處理管線輸出至該記憶體的該當前圖框之該等經處理區塊的記憶體至記憶體轉碼。
  14. 如請求項13之方法,其進一步包含經由輸出至該記憶體的來自該當前圖框之該等經處理區塊將該上下文終止位置傳播至該轉碼器引擎。
  15. 如請求項13之方法,其中該轉碼器引擎繼續執行來自該當前圖框的該等經處理區塊之該記憶體至記憶體轉碼,同時該區塊處理管線正處理來自該其他圖框之區塊,且將該等經處理區塊輸 出至該記憶體。
  16. 一種在一區塊處理管線中用於處理多個視訊圖框之計算器件,其包含:一記憶體;及一裝置,其包含一區塊處理管線,該區塊處理管線包括經組態以處理通過該管線之像素區塊且將該等經處理區塊輸出至該記憶體的複數個階,其中該裝置經組態以:開始在該區塊處理管線中處理一當前圖框;接收需要在該區塊處理管線中處理另一圖框的一指示;回應於該指示,引導該區塊處理管線執行針對該當前圖框之一上下文終止;判定該區塊處理管線已在該圖框內的一上下文終止位置處停止處理該當前圖框;在該區塊處理管線中處理該其他圖框;及引導該區塊處理管線執行一上下文重新啟動,以在該圖框內的該上下文終止位置處恢復該當前圖框之處理。
  17. 如請求項16之計算器件,其中該當前圖框來自一第一視訊源,其中該其他圖框來自相比該第一當前圖框具有較高優先權之一視訊源。
  18. 如請求項16之計算器件,其中該區塊處理管線根據各包括來自該當前圖框之區塊之兩列或兩列以上的列群組處理來自該當前圖框之該等像素區塊,且其中該上下文終止位置位於一列群組之末端處。
  19. 如請求項16之計算器件,其中該裝置進一步包含一轉碼器引擎,其經組態以自該記憶體讀取來自該當前圖框之經處理區塊,將該等經處理區塊轉換至一不同編碼,且將該等經轉換區 塊輸出至該記憶體,且其中該上下文終止位置經由自該記憶體讀取的來自該當前圖框之該等經處理區塊被傳播至該轉碼器引擎。
  20. 如請求項19之計算器件,其中該轉碼器引擎經進一步組態以:在該上下文終止位置處終止讀取來自該當前圖框之經處理區塊;及在該終止之後,自該記憶體讀取來自該其他圖框之經處理區塊,將該等經處理區塊轉換至該不同編碼,且將該等經轉換區塊輸出至該記憶體。
TW104128531A 2014-08-30 2015-08-28 具有上下文切換之視訊編碼器 TWI583180B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/474,114 US10313683B2 (en) 2014-08-30 2014-08-30 Video encoder with context switching

Publications (2)

Publication Number Publication Date
TW201630423A TW201630423A (zh) 2016-08-16
TWI583180B true TWI583180B (zh) 2017-05-11

Family

ID=54140656

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104128531A TWI583180B (zh) 2014-08-30 2015-08-28 具有上下文切換之視訊編碼器

Country Status (3)

Country Link
US (1) US10313683B2 (zh)
TW (1) TWI583180B (zh)
WO (1) WO2016033254A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10218983B2 (en) 2015-09-30 2019-02-26 Apple Inc. Adapting mode decisions in video encoder
US10728546B2 (en) 2016-02-05 2020-07-28 Apple Inc. Sample adaptive offset systems and methods
US10460642B2 (en) 2016-06-30 2019-10-29 Apple Inc. Noise reduction in LED sensing circuit for electronic display
US20200137134A1 (en) * 2018-10-31 2020-04-30 Ati Technologies Ulc Multi-session low latency encoding
US20230102584A1 (en) * 2021-09-24 2023-03-30 Apple Inc. Systems and Methods for Multi-Core Image Encoding

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003104989A1 (fr) * 2002-06-06 2003-12-18 Tak'asic Procede de changement de taches de codage d'image
EP1545133A2 (en) * 2003-12-18 2005-06-22 Lsi Logic Corporation Low complexity transcoding between video streams using different entropy coding
TW200931818A (en) * 2007-09-27 2009-07-16 Qualcomm Inc H.264 video decoder CABAC core optimization techniques
US20090196356A1 (en) * 2005-09-14 2009-08-06 Mitsunori Houki Multi-stream decoder apparatus
US20130215020A1 (en) * 2012-02-17 2013-08-22 Renesas Electronics Corporation Signal processing device and semiconductor device

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096487B1 (en) * 1999-10-27 2006-08-22 Sedna Patent Services, Llc Apparatus and method for combining realtime and non-realtime encoded content
US7174085B2 (en) 2001-08-20 2007-02-06 Broadcom Corporation Apparatus and method of seamless switching between a live DTV decoding and a PVR playback
EP1568208A4 (en) 2002-11-27 2010-06-23 Rgb Networks Inc METHOD AND APPARATUS FOR TEMPORARILY PROCESSING MULTIPLE DIGITAL VIDEO PROGRAMS
US20110096699A1 (en) 2009-10-27 2011-04-28 Sakhamuri Srinivasa Media pipeline for a conferencing session
EP2577489A4 (en) 2010-06-02 2014-09-10 Onmobile Global Ltd METHOD AND APPARATUS FOR ADAPTING MULTIMEDIA CONTENT
US9167296B2 (en) 2012-02-28 2015-10-20 Qualcomm Incorporated Customized playback at sink device in wireless display system
US20140201416A1 (en) 2013-01-17 2014-07-17 Xockets IP, LLC Offload processor modules for connection to system memory, and corresponding methods and systems
US9270999B2 (en) * 2013-09-25 2016-02-23 Apple Inc. Delayed chroma processing in block processing pipelines
US9571846B2 (en) * 2013-09-27 2017-02-14 Apple Inc. Data storage and access in block processing pipelines
US9351003B2 (en) * 2013-09-27 2016-05-24 Apple Inc. Context re-mapping in CABAC encoder
US9215472B2 (en) * 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines
US9392292B2 (en) * 2013-09-27 2016-07-12 Apple Inc. Parallel encoding of bypass binary symbols in CABAC encoder
US10110911B2 (en) * 2014-11-11 2018-10-23 Cisco Technology, Inc. Parallel media encoding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003104989A1 (fr) * 2002-06-06 2003-12-18 Tak'asic Procede de changement de taches de codage d'image
EP1545133A2 (en) * 2003-12-18 2005-06-22 Lsi Logic Corporation Low complexity transcoding between video streams using different entropy coding
US20050147173A1 (en) * 2003-12-18 2005-07-07 Lsi Logic Corporation Low complexity transcoding between video streams using different entropy coding
US20090196356A1 (en) * 2005-09-14 2009-08-06 Mitsunori Houki Multi-stream decoder apparatus
TW200931818A (en) * 2007-09-27 2009-07-16 Qualcomm Inc H.264 video decoder CABAC core optimization techniques
US20130215020A1 (en) * 2012-02-17 2013-08-22 Renesas Electronics Corporation Signal processing device and semiconductor device

Also Published As

Publication number Publication date
US20160065969A1 (en) 2016-03-03
WO2016033254A1 (en) 2016-03-03
US10313683B2 (en) 2019-06-04
TW201630423A (zh) 2016-08-16

Similar Documents

Publication Publication Date Title
TWI533209B (zh) 並行硬體及軟體之區塊處理管線
US9843813B2 (en) Delayed chroma processing in block processing pipelines
US10757437B2 (en) Motion estimation in block processing pipelines
TWI586149B (zh) 用於在區塊處理管線中處理視訊圖框之視訊編碼器、方法及計算器件
US9106888B2 (en) Reducing quantization artifacts using neighbor-based weighted dithering
US9292899B2 (en) Reference frame data prefetching in block processing pipelines
US9473778B2 (en) Skip thresholding in pipelined video encoders
US9224186B2 (en) Memory latency tolerance in block processing pipelines
US9807410B2 (en) Late-stage mode conversions in pipelined video encoders
TWI583180B (zh) 具有上下文切換之視訊編碼器
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
US9299122B2 (en) Neighbor context processing in block processing pipelines
US9571846B2 (en) Data storage and access in block processing pipelines
US9218639B2 (en) Processing order in block processing pipelines
US20150091927A1 (en) Wavefront order to scan order synchronization
US9305325B2 (en) Neighbor context caching in block processing pipelines
JP6610115B2 (ja) 動画像符号化装置、動画像符号化方法、及び動画像符号化プログラム