TWI805534B - 使用時間交錯緩存訪問的視頻編碼並行化 - Google Patents

使用時間交錯緩存訪問的視頻編碼並行化 Download PDF

Info

Publication number
TWI805534B
TWI805534B TW111148485A TW111148485A TWI805534B TW I805534 B TWI805534 B TW I805534B TW 111148485 A TW111148485 A TW 111148485A TW 111148485 A TW111148485 A TW 111148485A TW I805534 B TWI805534 B TW I805534B
Authority
TW
Taiwan
Prior art keywords
pes
sub
blocks
encoding
video material
Prior art date
Application number
TW111148485A
Other languages
English (en)
Other versions
TW202327350A (zh
Inventor
莊政彥
陳俊嘉
徐志瑋
莊子德
陳慶曄
黃毓文
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 聯發科技股份有限公司
Application granted granted Critical
Publication of TWI805534B publication Critical patent/TWI805534B/zh
Publication of TW202327350A publication Critical patent/TW202327350A/zh

Links

Images

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
    • 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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding 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/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • 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
    • H04N19/423Methods 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 characterised by memory arrangements

Landscapes

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

Abstract

描述了與視頻編碼並行化技術有關的各種方案。 一種裝置接收視頻資料。 該裝置隨後計算多個品質因數(FOM),每個FOM表示特定編碼工具在對視頻資料進行編碼時可以獲得的品質多高。 該裝置還通過比較FOM來確定可能適合於對視頻資料進行編碼的編碼工具。 在確定編碼工具時,該裝置利用時間交錯技術來並行處理視頻資料。視頻資料可以包括編碼塊陣列,並且該裝置可以使用蛇形處理順序掃描編碼塊陣列來接收視頻資料。

Description

使用時間交錯緩存訪問的視頻編碼並行化
本公開總體上涉及視頻編碼,並且更具體地,涉及用於利用並行化技術進行高效視頻編碼的方法和裝置。
除非本文另有說明,否則本節中描述的方法不是下面列出的請求項的現有技術,並且不因包含在本節中而被承認為現有技術。
視頻編碼通常涉及通過編碼器將視頻(即,原始視頻)編碼成位元流,將位元流傳輸到解碼器,以及通過解碼器解析和處理位元流以產生重建的。編碼器可以在對視頻進行編碼時採用各種編碼模式或工具,其目的之一是減少需要傳輸到解碼器的位元流的總大小,同時仍然向解碼器提供關於原始視頻的足夠信息,使得解碼器可以生成非常忠實於原始視頻的重建視頻。例如,在 2020 年發布的最先進的視頻編碼標準通用視頻編碼 (VVC) 標準的最終版本中,其中新定義了各種編碼工具以實現與上一代視頻編碼標準(即高效視頻編碼 (HEVC) 標準,自 2013 年發布以來的視頻編碼規範)相比約 40%的編碼增益(例如 Bjontegaard Delta-Rate 增益)。借助 VVC 提供的新編碼工具,高性能視頻編碼成為可能,支持新的視頻用例,例如視野相關的 360° 視頻流,具有區域隨機訪問、信噪比(SNR)可擴展性等高級功能。
例如,VVC標準包括與幀內預測相關的新編碼工具,例如基於矩陣的幀內預測(MIP)、色度分離樹(CST)、幀內子分區(ISP)和幀內塊複製(IBC)。與幀間預測相關的新編碼工具,例如自適應運動矢量分辨率(AMVR)、運動矢量差分合併模式(MMVD)、組合幀間/幀內預測(CIIP)和幾何分區(GPM)也包含在 VVC 中。適用於圖片內和圖片間預測的新工具也包含在 VVC 中,例如採樣自適應偏移(SAO)、自適應環路濾波器(ALF)、交叉分量自適應環路濾波器(CCALF)和色差聯合編碼( JCCR)。此外,與編碼器塊劃分相關的新工具也包含在 VVC 中,例如三元樹劃分 (TT)、二叉樹三元樹劃分 (BT_TT)、更大的最大編碼樹單元大小為 64像素 x 64 像素 (CTU64)、以及更大的最大變換單元大小為 32 像素 x 32 像素 (TU32) 。其他新開發的視頻編碼標準也跟隨 VVC 的類似趨勢,包括更多的編碼工具以實現更好的編碼性能。
因此,編碼器需要使用的編碼工具將取決於編碼器被設計為支持哪個或哪些視頻編碼標準。隨著視頻編碼標準的不斷演進,標準中定義了越來越多的編碼工具,因此期望通用的視頻編碼器能夠實現各種編碼工具。因此,對於要編碼的每個圖片或其一部分,編碼器能夠快速確定要應用於要編碼的直接視頻資料的優選的或其他合適的編碼工具是非常重要的,以便以合理的編碼成本實現所需的視頻質量。
以下概述僅是說明性的,並不旨在以任何方式進行限制。即,提供以下概述以介紹本文描述的新穎的和非顯而易見的技術的概念、亮點、好處和優點。選擇的實現在下面的詳細描述中進一步描述。因此,以下概述不旨在識別要求保護的主題的基本特徵,也不旨在用於確定要求保護的主題的範圍。
本公開的目的是提供與利用並行化技術進行視頻編碼有關的方案、概念、設計、技術、方法和設備。據信,利用本公開中的各種實施例,實現了包括改進的編碼等待時間、簡化的搜索存儲器訪問和/或減少的硬體開銷在內的益處。
一方面,提出了一種使用優選編碼工具對視頻資料進行編碼的方法。該方法可以涉及通過多個處理元件(PE)接收視頻資料,每個處理元件被配置為針對相應的編碼工具執行編碼效率評估,以在執行編碼效率評估時進行評估。在一些實施例中,每個PE可以是低複雜度率失真優化器(LC-RDO)。該方法隨後可以涉及通過執行編碼效率評估的多個PE中的每一個來計算特定於相應編碼工具和視頻資料的相應品質因數(FOM)。在一些實施例中,FOM可以是平方差和(SSD)、絕對差和(SAD)或絕對變換差和(SATD)。該方法還可以包括通過比較由多個PE計算的FOM來確定特定於視頻資料的編碼工具。在一些實施例中,該方法還可以涉及確定一組與所確定的編碼工具有關的參數設置。最後,該方法可以使用確定的編碼工具和參數設置對視頻資料進行編碼。
在一些實施例中,視頻資料可以是編碼塊(CB),其被劃分成形成列和行的陣列的多個子塊。每個PE在接收視頻資料時,可能一次連續接收多個子塊。每個PE一次接收的子塊的數量可以與涉及的PE的數量相同,即與待評估的編碼工具的數量相同。在一些實施例中,PE可以使用蛇形掃描處理順序來接收和處理視頻資料以通過列或行進行處理。
在一些實施例中,子塊可以存儲在具有多個存儲體的高速緩衝存儲器中。存儲體可以分為兩組,其中每組可以具有與PE的數量一樣多的存儲體。在PE通過逐列蛇形或光柵掃描接收子塊的情況下,將子塊的任意兩列相鄰的子塊分別存儲在兩組存儲體中。在PE通過逐行蛇形掃描或光柵掃描接收子塊的情況下,將任意兩行相鄰的子塊分別存儲在兩組存儲體中。
在另一方面,提出了一種裝置,其包括高速緩衝存儲器、處理器、多個處理元件(PE)和比較器。處理器被配置為根據視頻資料特定的存儲體分配方案將視頻資料存儲在高速緩存存儲器中,其中存儲體分配方案由處理器基於諸如視頻資料的編碼塊的大小、視頻資料子塊的大小、以時間交錯方式同時運行的 PE 的數量、用於處理視頻資料子塊的掃描順序(例如,光柵掃描或蛇形掃描)等的各種因素來確定。每個PE被配置為將各自的編碼模式或編碼工具應用於視頻資料,並且隨後通過計算品質因數(FOM)例如平方差和(SSD)、絕對差之和 (SAD),或絕對轉換差之和 (SATD) 來確定其編碼效率。比較器用於比較PE計算出的FOM,從而確定編碼工具。
本文公開了要求保護的主題的詳細實施例和實施方式。然而,應當理解,所公開的實施例和實施方式僅僅是可以以各種形式體現的要求保護的主題的說明。然而,本公開可以以許多不同的形式來體現,並且不應被解釋為限於在此闡述的示例性實施例和實施方式。相反,提供這些示例性實施例和實施方式使得本公開的描述是透徹和完整的,並且將向本領域的技術人員充分傳達本公開的範圍。在下面的描述中,可以省略眾所周知的特徵和技術的細節以避免不必要地模糊所呈現的實施例和實現方式。
根據本公開的實施方式涉及與高效並行化視頻編碼和搜索存儲器訪問有關的各種技術、方法、方案和/或解決方案。根據本發明,可以單獨或聯合實施多種可能的方案。也就是說,雖然這些可能的解決方案可以在下面單獨描述,但是這些可能的解決方案中的兩個或更多個可以以一種或另一種組合來實現。 一、並行編碼工具評估
如上文別處所述,重要的是編碼器(即,視頻編碼器)快速確定哪個編碼工具適合於對即時視頻資料進行編碼。編碼器因此將使用確定的編碼工具而不是編碼器也能夠執行的其他編碼模式來編碼視頻資料。編碼器可以根據各種因素確定某個編碼工具是最合適的,例如要編碼的視頻的特定屬性、編碼位元流的特定特徵等。此外,視頻資料的不同部分可以是使用不同的編碼工具或模式進行編碼。例如,視頻的每個幀可以被劃分成非重疊塊,有時稱為編碼塊(CB),並且每個幀可以被劃分成多個切片(slice),每個切片具有非重疊塊的相關組(group)。視頻資料可以以每個切片(即,其編碼塊)用相應的編碼工具編碼的方式編碼。
為了確定編碼工具(即,用於編碼即時視頻資料或其切片的最合適的編碼工具),編碼器可能需要使用即時視頻的至少一部分要編碼的資料來評估若干候選編碼工具。為了快速確定編碼工具,評估過程的目的不是為了獲得精細(即高度準確)的編碼結果,而是針對每個候選編碼工具及時獲得粗略(即不太準確)的結果,以便比較結果,並據此確定編碼工具。編碼器隨後將使用確定的編碼工具對即時視頻資料進行編碼。該評估過程在下文中可互換地稱為「編碼工具評估過程」或「編碼效率評估過程」。
值得注意的是,所確定的編碼工具通常取決於待編碼的視頻資料。這是因為適用於對某種類型的視頻資料進行編碼的編碼工具可能並不同樣適用於對其他類型的視頻資料進行編碼。例如,當對主要包含自然圖像的視頻資料進行編碼時與對主要包含屏幕內容的視頻資料進行編碼時,可以分別確定不同的編碼工具。
為了及時評估多個候選編碼工具,編碼器可以對評估過程採用並行化(parallelization)。即,兩個或多個處理元件 (processing element, PE) 同時運行,每個 PE 評估各自候選編碼工具的性能(例如,編碼效率)。第1圖是根據本公開的實施方式的示例設計的圖,其中呈現了並行編碼工具評估方案100。在方案100中,並行化是由四個同時操作的處理單元(PE),即PE 130、131、132和133來實現的。PE 130-133中的每一個被配置為評估應用於存儲在搜索存儲器110中的視頻資料的相應編碼工具的編碼效率。例如,PE 130被配置為對編碼工具T0執行編碼效率評估,PE 131用於對編碼工具T1進行編碼效率評估。同時,PE 132和PE 133用於分別對編碼工具T2和T3進行編碼效率評估。每個編碼工具T0、T1、T2和T3可以是VVC、HEVC或其他視頻編碼標準中定義的編碼工具之一,例如上文別處所述的 VVC 編碼工具。
如上所述,PE 130-133旨在及時評估編碼工具的效率。因此,涉及低複雜度硬體和/或軟體模塊的簡單評估算法通常用於實現 PE。例如,PE 130-133中的每一個可以是低複雜度率失真優化器(low-complexity rate-distortion optimizer,LC-RDO),其被配置為通過執行相對簡單的計算來評估編碼工具的編碼效率,例如空間像素濾波、絕對像素間差值計算、逐像素平方差值計算、逐像素變換差值計算。通常,PE 130-133中的每一個可以具有流水線結構或架構,其包括多個處理階段。流水線結構被配置為通過順序地將資料從一個階段傳遞到下一個階段來處理資料。在一些實施例中,PE 130-133可以從搜索存儲器110遞增地獲取視頻資料用於處理。例如,PE 130-133中的每一個可以是具有流水線結構的LC-RDO,其包括水平濾波(HFIR)級,其後是垂直濾波(VFIR)級,其後是失真計算( DIST)級,然後是比較(COMP)級。 LC-RDO 可以使用流水線級遞增地處理資料,其中每個級在每個流水線週期期間處理資料的不同部分。
每個 PE 130-133 使用相同的視頻資料,即存儲在搜索存儲器 110 中的視頻資料 113, 來評估相應編碼工具的編碼效率。在一些實施例中,視頻資料113可以包括視頻的編碼塊(CB)。編碼工具160在方案100中確定後,用於對CB 113進行編碼。編碼工具160被確定為編碼工具T0、T1、T2和T3之一。編碼工具160由比較器150確定,比較器150被配置為比較由PE 130-133生成的評估結果。每個PE 130-133可以通過對視頻資料113應用各自的編碼工具來執行編碼效率評估,從而生成評估結果。例如,PE 130可通過對視頻資料113應用編碼工具T0來執行編碼效率評估,從而產生表現在品質因數(FOM)140中的評估結果。類似地,PE 131、132和133中的每一個可以通過分別對視頻資料113應用編碼工具T1、T2和T3來執行編碼效率評估,從而分別產生表現在FOM 141、142和143中的評估結果。在一些實施例中,FOM 140-143中的每一個可以是所得到的編碼視頻與原始視頻資料113之間的平方差之和(SSD)、絕對差之和(SAD)或絕對變換差之和(SATD),其中對視頻資料113中的每個像素計算總和。比較器150可以比較FOM 140-143並確定編碼工具T0、T1、T2和T3中的哪一個是編碼工具160,其稍後將用於對 CB 113 進行編碼。例如,每個FOM 140-143可以是相應的SSD值,並且比較器150可以比較FOM 140-143並且確定FOM 142具有FOM 140-143中的最低值。因此,比較器150從而可以決定編碼工具T2是用於對視頻資料113進行編碼的編碼工具160。
在一些實施例中,除了確定的編碼工具160之外,比較器150還可以確定一組編碼參數以與確定的編碼工具160一起使用以對視頻資料113進行編碼。為此,一些PE 130 - 133 可以配置為使用相同的編碼工具但使用不同的編碼參數設置進行操作。例如,T0和T1可以是相同的編碼工具,而PE 130和131以應用於相同編碼工具的不同編碼參數設置操作,例如,第一組編碼參數與第二組編碼參數。得到的 FOM 140 和 141 將指示在第一組和第二組之間優選哪組編碼參數。優選的編碼參數集被包括作為確定的編碼工具160的一部分。
在一些實施例中,方案100可以涉及PE(例如,PE 130、131、132或133),其包括高複雜度率失真優化器(HC-RDO)來替代或增加到PE 的LC-RDO。 HC-RDO可以與PE的LC-RDO級聯。與僅具有LC-RDO的PE的實施方式相比,具有HC-RDO的PE可以通過涉及更複雜的運算以更高精度來確定或計算相應的FOM(即,FOM 140、141、142或143),儘管通常以更多的處理時間為代價。由於更高的準確性,由涉及HC-RDO的PE確定的編碼工具160可能不同於由僅涉及LC-RDO的PE確定的編碼工具160,並且可能更適合編碼,具有增強的編碼效率和/或表現。 二、時間交錯緩存訪問
搜索存儲器110有時被稱為「高速緩存」或「高速緩衝存儲器」。高速緩存 110被設計為在編碼工具評估過程中用於存儲視頻資料例如CB 113的臨時存儲器,其中PE 130-133可以重複訪問高速緩存 110以加載CB 113的不同部分。然而,高速緩存 110不能提供對每個PE 130-133的同時訪問。即,即使方案100說明PE 130-133可以通過資料總線120、121、122 和 123訪問高速緩存 110 ,上述高速緩存存儲器 110 的屬性要求在任何時候,資料總線 120-123 中只有一條可以「打開」,即,將資料從高速緩存 110傳輸到一個PE 130 -133 。由此可見,只有當高速緩存 110 被複製成多個副本時,PE 130-133 之間的真正並行化才是可能的,每個副本由 PE 130 -133 中的相應一個訪問。顯然,複製高速緩存 110 不是一個有吸引力的並行化解決方案,因為複製副本的硬體成本很高並且可能不實用。
第2圖是根據本公開的實施方式的示例設計的圖,其中在不復製高速緩存 110的情況下實現實際意義的並行化。具體地,第2圖圖示了時間交錯(time-interleaving)高速緩存訪問方法200,其中PE 130-133可以同時操作,其中在任何時間不超過一個資料總線120-123打開以訪問高速緩存 110。即,在任何給定時間,不超過一個PE 130-133可以從高速緩存 110接收資料(例如,視頻資料113)。
在開始編碼效率評估過程之前,PE 130-133可以不加載或以其他方式從高速緩存110中讀取全部視頻資料113。相反,PE 130-133 可以只加載視頻資料 113 的一部分,例如 CB 113 的一部分 115。PE 130-133 可能不需要訪問高速緩存 110 來加載 CB 113 的更多部分,直到部分115被處理。 PE 130-133中的每一個可以具有內部存儲器,通常被稱為「隊列緩衝器(line buffer)」,以存儲當前正在加載的視頻資料113的部分。 PE可以訪問隊列緩衝器以檢索視頻資料113的部分用於編碼工具評估過程。 PE可以使用隊列緩衝器來保存或存儲視頻資料113的部分直到高速緩存窗口再次打開,此時正在加載視頻資料113的下一部分。隊列緩衝器然後可以由當前加載的視頻資料113的新部分來補充。
在一些實施例中,CB 113可以被分成多個非重疊的子塊,通常具有相同的大小(例如,4個像素的高度和4個像素的寬度)。也就是說,CB 113的子塊可以形成CB 113的列和行的陣列。CB 113的部分115可以包括多個子塊,例如,標有「0」、「1」、「2」、「3」、「4」、「5」。此外,如上文別處所述,PE 130-133中的每一個可以是由HFIR級、VFIR級、DIST級和COMP級組成的LC-RDO流水線。資料可以通過 LC-RDO 流水線的各個階段,首先由 HFIR 階段處理,然後由 VFIR 階段處理,然後由 DIST 階段處理,最後由 COMP 階段處理。第2圖中提供了時間線299。 表示前 13 個流水線週期的進展,即流水線週期 1-13。
參考第2圖,PE 130-133以時間交錯的方式訪問高速緩存110。例如,在第一個流水線週期期間,輪到PE 130訪問高速緩存110(在圖中由「讀取」階段指示),在此期間PE 130加載CB 113的子塊「0」。 PE 131-133分別在接下來的三個流水線週期,即第二、第三和第四流水線週期中加載CB 113的子塊「0」。在PE 131-133依次加載子塊「0」之後,PE 130在第五流水線週期再次訪問高速緩存110,在此期間PE 130加載下一個子塊(即, CB 113 的子塊「1」)。同樣,PE 131-133 分別在接下來的三個流水線週期(即第六、第七和第八個)中加載 CB 113 的子塊「1」。在PE 131-133依次加載子塊「1」之後,PE 130在第九個流水線週期再次輪到訪問高速緩存110,在此期間PE 130加載下一個子塊(即, CB 113 的子塊「2」)。PE 131-133 在接下來的三個流水線週期(即第十、第十一和第十二流水線週期)中分別加載 CB 113 的子塊「2」 。
由於 PE 130-133 對高速緩存 110 的訪問是時間交錯的,因此由於 PE 的流水線特性,PE 130-133 內加載的子塊的處理也是時間交錯的。例如,PE 130 在第四個流水線週期結束時完成處理 CB 113 的子塊「0」(PE 130 的 COMP 階段完成處理子塊「0」),而 PE 131、132和133分別在第五、第六和第七流水線週期結束時完成對CB 113的子塊「0」的處理。
根據時間交錯高速緩存訪問方法200,在任何給定時間,PE 130-133中至多只有一個從高速緩存110加載子塊資料。因此,並行化方案100僅利用高速緩存 110的一個副本可以通過採用時間交錯高速緩存訪問方法200來實現。然而,方法200導致非常低的PE利用率。如第2圖所示,PE 流水線階段在大多數流水線週期中都是空閒的(即不處理任何資料)。在四個PE並行化的情況下,時間交錯緩存訪問方法200導致大約25%的PE利用率。在並行化方案中涉及超過四個 PE 的情況下,時間交錯高速緩存訪問方法 200 將導致甚至更低的 PE 利用率。
第3圖是根據本公開的實施方式的示例設計的圖,其中示出了另一種時間交錯緩存訪問方法(即,方法300),其大大改善了方法200導致的低PE利用率。如第3圖所示、PE空閒時間比方法200少很多。事實上,經過多次流水線循環後,方法300的PE利用率接近100%。通過在每個緩存訪問窗口加載 CB 113 的一個以上子塊,方法 200 中的大部分 PE 空閒時間在方法 300 中被消除。例如,雖然方法 200 命令 PE 130 在第一個流水線週期期間僅從緩存 110 加載 CB 113 的子塊「0」,但方法 300 提倡加載四個子塊,即在第一個流水線週期期間,加載塊 CB 113 的子塊「0」、「1」、「2」和「3」。假設子塊「1」、「2」和「3」在與子塊「0」在同一流水線週期中被加載和保存到 PE 130 的隊列緩衝區,則可以提早子塊“1”、“2”和“3”上的 PE 130 流水線操作的開始。。例如,PE 130可以早在第二流水線週期開始處理子塊「1」並在第五個流水線週期完成處理,與方法 200 相比提早了三個流水線週期。PE 130 處理子塊「2」的完成被進一步提早,從如第2圖所示的第十二個流水線週期拖拽至第3圖的第六流水線週期。
具體而言,根據時間交錯緩存訪問方法300,PE 130-133中的每一個以子塊的批次(batch)接收視頻資料113,每個批次具有視頻資料113的多個子塊。在一些實施例中,每批中的子塊的數量等於編碼效率評估過程中並行操作的PE的數量。例如,在並行化方案100的編碼效率評估過程中並行使用了4個PE(即PE 130-133),因此需要4個PE中的每一個,每次打開時間窗口以訪問高速緩存 110時,加載CB113的一批4個子塊(例如,子塊「0-3」、子塊「4-7」或子塊「8-11」),如時間交錯高速緩存訪問方法 300所示。
在一些實施例中,高速緩存110可以被分成幾個「體(bank)」(即,存儲體)。緩存的體數量是緩存的一個重要參數,體的數量代表了可以同時從緩存中讀取或寫入的資料條目的數量。具體地,在任何時候,至多只有一個資料條目可以從存儲體讀取或寫入到存儲體。鑑於每個PE 130-133預期在一個流水線週期內接收CB 113的四個子塊,因此高速緩存110需要具有至少四個存儲體,其中四個子塊在一個流水線週期中的批次分別存儲在四個獨立的存儲體中。如下文別處所述,諸如高速緩存110必須至少具有的存儲體的數量、以及視頻資料113的哪些子塊存儲在哪些存儲體中的考慮是實現並行編碼工具評估方案 100 與時間交錯高速緩存訪問方法 300 的結合的重要設計參數。 三、子塊掃描順序
如上文別處所述,編碼塊可被劃分成多個子塊,使得子塊形成編碼塊的列和行的陣列。第4圖是根據本公開的實施方式的示例設計的圖,其中CB 113被分成形成列和行的陣列的非重疊子塊。具體地,如第4圖所示,CB 113的大小為 32 像素寬和 32 像素高,而每個子塊的大小為 4 x 4 像素。因此,CB 113被分成64個子塊,如411、412、451和452中的每一個所示。
根據時間交錯高速緩存訪問方法300,PE 130-133中的每一個被設計成分批加載或以其他方式接收CB 113的子塊,每批包含CB 113的四個連續子塊。第4圖示出了PE 130-133可以用來接收CB 113的子塊的兩種類型的掃描順序。具體地,PE 130-133可以使用稱為「光柵掃描」的掃描順序來接收CB 113的子塊,如圖表 411 和 412 所示。或稱為「蛇形掃描」的掃描順序,如圖表 451 和 452 所示。可以逐列方式或逐行方式執行光柵掃描。逐行方式如圖表 411 所示,其中PE 130-133 從左到右加載 CB 113 第一行中的子塊,然後加載 CB 113 的第二行,也是從左到右,依此類推。 逐列方式在圖表412中示出,其中PE 130-133從上到下加載CB 113的第一列中的子塊,隨後加載CB 113的第二列,也 從上到下,依此類推。
同樣,蛇形掃描也可以逐列方式或逐行方式執行。在蛇形掃描中,掃描方向每行或每列交替。逐列蛇形掃描如圖表451 所示,其中 PE130-133從上到下加載 CB 113 的第一列中的子塊,然後從下到上加載 CB 113 的第二列,然後再次從上到下加載 CB 113 的第三列,依此類推。逐行蛇形掃描如圖表 452 所示,其中 PE 130-133 從左到右加載 CB 113 的第一行中的子塊,然後從右到左加載 CB 113 的第二行,然後再次從左到右加載 CB 113 的第三行,依此類推。
如上文別處所述,PE 130-133中的每一個都需要根據時間交錯高速緩存訪問方法300一次(即,在流水線週期期間)加載一批四個子塊。如圖所示,對於CB 113,每列或每行可以恰好分兩批加載,無論是光柵掃描還是蛇形掃描,在加載任意4個子塊的批次時,都不會出現跨列跨行的情況。即,不存在這樣的情況,其中在流水線週期期間獲取的一批中的四個子塊中的兩個位於CB 113的兩個相鄰列或行中。
為第4圖的子塊分配對應的高速緩存體也可以很容易地確定。例如,高速緩存體分配 422 可用於圖表 412 的光柵掃描和圖表 451 的蛇形掃描。如高速緩存體分配 422 所示,高速緩存 110 需要具有四個存儲體,即,如緩存體分配422所示的「0」、「1」、「2」、「3」。CB 113的子塊根據緩存體分配422存儲在緩存110中。即,每一列的第一個以及第五個子塊存儲在存儲體「0」中;每列的第二個和第六個子塊存儲在存儲體「1」中;每列的第三個和第七個子塊存儲在存儲體「3」中;最後,每一列的第四個和第八個子塊存儲在存儲體「4」中。
然而,對於在行或列中具有更多或更少數量的子塊的編碼塊,或者對於並行編碼工具評估方案100中涉及的不同數量的並行PE,跨列或跨行的情況可能是不可避免的,相應的緩存體分配會變得更加複雜。對於這些情況,蛇形掃描處理順序優於光柵掃描處理順序,因為與光柵掃描相比,蛇形掃描的相應高速緩存體分配相對簡單。可能難以找到或確定針對光柵掃描處理順序的相應緩存體分配,因為跨列或跨行地址差異可能非常不同,具體取決於所使用的編碼塊的大小。相反,蛇掃描處理順序在面對跨列或跨行場景時,地址差異有限。
第5圖是根據本公開的實施方式的示例設計的圖,其中圖示了可能的跨列蛇形掃描場景,而不管CB 113的大小。具體地,圖表540圖示了跨列的並行編碼工具評估方案100中涉及四個PE的所有四種可能性場景。如圖表540所示,四種可能性之間的最大地址差異等於子塊高度的四倍。類似地,圖表530說明了當並行編碼工具評估方案100中涉及三個PE時跨列場景的所有三種可能性;三種可能性之間的最大地址差等於子塊高度的三倍。同樣地,圖表550說明了當並行編碼工具評估方案100中涉及五個PE時跨列場景的所有五種可能性;五種可能性之間的最大地址差異等於子塊高度的五倍。
還如圖所示。第5圖分別是圖表 530、540 和 550 中所示場景的對應體分配,即高速緩存 110 的體分配 532、542 和 552。高速緩存110的存儲體可以分為兩組(group),其中每組可以具有與PE的數量一樣多的存儲體。例如,在存儲體分配542中,高速緩存110具有兩組四個存儲體,第一組由存儲體「0」、「1」、「2」和「3」組成,第二組由存儲體「4」、「5」、「6」和「7」組成。第一組中的體從上到下重複分配給每個奇數列(即第一、第三、第五、第七、第九和第十一列等)的子塊,而第二組中的體被重複分配給每個偶數列的子塊(即第二、第四、第六、第八、第十和第十二列等),也是從上到下。因此,任意兩列相鄰的子塊分別存儲在兩組存儲體中。作為另一個示例,在存儲體分配 552 中,高速緩存 110 具有兩組五個存儲體,第一組由存儲體「0」、「1」、「2」、「3」和「4」組成,第二組由存儲體「5」、「6」、「7」、「8」和「9」組成。第一組中的存儲體從上到下重複分配給每個奇數列的子塊,而第二組中的存儲體重複分配給每個偶數列的子塊列,也是從上到下。因此,任意兩列相鄰的子塊分別存儲在兩組存儲體中。 四、說明性實施
第6圖示出了能夠使用上述並行化方法評估多個編碼工具的編碼效率的示例裝置600。如圖所示,裝置600接收用於評估編碼工具的視頻資料601,並相應地確定適合於對視頻資料601進行編碼的編碼工具660。在一些實施例中,裝置600還可以確定編碼參數的設置666,其將與確定的編碼工具660一起使用。視頻資料601可以包括編碼塊113,而確定的編碼工具660可以是編碼工具160的實施例。裝置600可以用於實現並行編碼工具評估方案 100 使用時間交錯高速緩存訪問方法 200 或 300。
如圖所示,裝置600具有用於處理視頻資料601和確定編碼工具660的若干組件或模塊,至少包括一些組件選自處理器605、搜索存儲器或高速緩存610、多個處理元件(例如 PE 631-634)、存儲器 640 和比較器 650。高速緩存 610 可以包括多個存儲體,例如存儲體 611-614,每個存儲體 611-614 能夠與其餘存儲體同時提供相應的資料條目。
在一些實施例中,如上所列的模塊605-650是由計算設備或電子設備的一個或多個處理單元(例如,處理器)執行的軟體指令的模塊。在一些實施例中,模塊605-650是由電子裝置的一個或多個集成電路(IC)實現的硬體電路模塊。儘管模塊605-650被示為單獨的模塊,但是一些模塊可以組合成單個模塊。
處理器605被配置為接收和分析視頻資料601,從而確定存儲體分配(例如,存儲體分配422、532、542或552)。即,存儲體分配是特定於視頻資料601的。處理器605還被配置為根據確定的存儲體分配將視頻資料601的子塊存儲在搜索存儲器610中。
高速緩存610可以包括多個存儲體,例如存儲體611、612、613和614。存儲體的數量可以與存儲體分配中指示的存儲體的數量一致(例如,等於) ,其由處理器605決定。高速緩存610的存儲體的數量可以多於第6圖所示的四個存儲體。 例如,存儲體分配542指示八個不同的存儲體用於蛇形掃描。處理器605可以相應地將視頻資料601存儲在高速緩存610的八個不同的存儲體中。高速緩存610可以包含搜索存儲器110。
處理元件631-634中的每一個可以是PE 130-133之一的實施例。在一些實施例中,處理元件631-634中的每一個可以是低複雜度RDO流水線。在一些實施例中,處理元件631-634中的每一個可以附加地或備選地包括高複雜度RDO。處理元件631-634可以被配置為通過以時間交錯方式訪問高速緩存610來獲取視頻資料601的一部分(例如,遵循時間交錯方法200或300)。一次獲取的視頻資料部分 601 可以包括視頻資料 601 的多個子塊(例如,CB 113 的部分 115 的子塊 0-3、4-7 或 8-11 )。在一些實施例中,每個處理元件631-634可以包括隊列緩衝器,其被配置為臨時存儲從緩存610中批量提取的子塊,直到該批次的所有子塊經由各個處理元件的流水線階段都被處理完為止。
處理元件631-634中的每一個還可以被配置為計算對於視頻資料601指示所應用的相應編碼工具的編碼效率的相應品質因數(FOM) (例如,FOM 140、141、142或143)。因此,FOM特定於相應的編碼工具和視頻資料601。也就是說,FOM特定於相應的編碼工具和視頻資料601的組合。FOM可以是總和平方差、絕對差之和或絕對變換差之和。處理元件631-634計算出的FOM可以存儲在存儲器640中並用作比較器650的輸入。在一些實施例中,處理元件631-634還可以存儲用於計算FOM的編碼參數。在一些實施例中,PE 631-634中的每一個可以使用相同的編碼工具但具有不同的編碼參數設置來計算視頻資料601的多個FOM。即,在這些實施例中,每個計算出的FOM特定於相應的編碼工具、相應的編碼參數和視頻資料601的組合。每個FOM和相應的編碼參數設置都可以保存在存儲器640中。
比較器 650 可以是比較器 150 的一個實施例,並被配置為通過比較由處理元件 631-634 計算並存儲在存儲器 640 中的 FOM 來確定編碼工具 660。比較器 650 的比較可以確定首選FOM。例如,優選的FOM可以是具有最低值的SAD。因此,導致SAD的最低值的編碼工具可以被確定為編碼工具660。在一些實施例中,比較器650還可以確定參數設置666,其可以是處理元件631- 634使用的參數設置導致首選 FOM(例如,具有最低的 SAD 值)。 五、說明過程
第7圖圖示了根據本公開的實施方式的示例過程700。過程700可以表示實現上述各種提議的設計、概念、方案、系統和方法的方面。更具體地,過程700可以表示與根據本公開在多個編碼工具中確定編碼工具有關的所提出的概念和方案的方面。過程700可包括如框710、720、730和740中的一者或一者以上所說明的一或多個操作、動作或功能。雖然說明為離散的框,但過程700的各種框可分為額外的框、組合成更少的框塊,或消除,這取決於所需的實施。此外,過程700的方框/子方框可以第7圖所示的順序執行,或者以不同的順序。此外,可以重複或迭代地執行過程700的一個或多個塊/子塊。過程700可由裝置600及其任何變型實施或在裝置600中實施。僅出於說明的目的並且不限制範圍,過程700在下面在裝置600的上下文中被描述。過程700可以開始於塊710。
在710,過程700可以涉及裝置600的每個處理元件(例如,PE 631-634)接收要在執行編碼效率評估中評估的視頻資料(例如,視頻資料113或601)。每個處理元件被配置為針對相應的編碼工具(例如,第1圖的編碼工具T0、T1、T2或T3)執行編碼效率評估。在一些實施例中,裝置600的PE通過以時間交錯的方式訪問緩存610來接收視頻資料601。也就是說,在任何時候,裝置600的不超過一個PE可以訪問緩存610。在一些實施例中,視頻資料601可以包括編碼塊(CB),編碼塊可以被劃分成多個形成列或行陣列的子塊。裝置600的PE可以以子塊的批次接收CB,每個批次具有多個子塊。在一些實施例中,一批子塊的數量等於裝置600的同時操作的PE的數量。在一些實施例中,視頻資料601的子塊可以由裝置600的PE使用通過視頻資料601的子塊的列或行的蛇形掃描來獲取。過程700可以從710繼續到720。
在720,過程700可以涉及裝置600的每個PE計算相應的FOM。在一些實施例中,每個PE可以是LC-RDO,並且相應的FOM可以是平方差和(SSD)、絕對差和(SAD)或絕對變換差和(SATD)。由裝置600的PE計算的FOM可以存儲在存儲器640中。在一些實施例中,用於計算FOM的編碼參數也可以存儲在存儲器640中。過程700可以從720進行到730。
在730,過程700可以涉及比較器650比較存儲在存儲器640中的FOM並且相應地確定編碼工具660,其特定於視頻資料601。在一些實施例中,比較器650可以確定與確定的編碼工具660一起使用的參數設置666。確定的參數設置666可以是包括多個編碼參數的值的一組設置。過程700可以從730進行到740。
在740,過程700可以涉及處理器605使用確定的編碼工具660對視頻資料601進行編碼。在一些實施例中,處理器605可以使用確定的編碼工具660和確定的參數設置666對視頻資料601進行編碼。 六、說明性電子系統
許多上述特徵和應用被實現為軟體過程,這些軟體過程被指定為記錄在計算機可讀存儲介質(也稱為計算機可讀介質)上的一組指令。當這些指令由一個或多個計算或處理單元(例如,一個或多個處理器、處理器核心或其他處理單元)執行時,它們會導致處理單元執行指令中指示的動作。計算機可讀介質的示例包括但不限於 CD-ROM、閃存驅動器、隨機存取存儲器 (RAM) 芯片、硬盤驅動器、可擦除可編程只讀存儲器 (EPROM)、電可擦除可編程只讀存儲器 (EEPROM) )等。計算機可讀介質不包括無線或通過有線連接傳遞的載波和電子信號。
在本說明書中,術語「軟體」意味著包括駐留在只讀存儲器中的軔體或存儲在存儲器中的應用程序,其可以被讀入存儲器以供處理器處理。此外,在一些實施例中,多個軟體發明可以作為較大程序的子部分來實現,同時保留不同的軟體發明。在一些實施例中,多個軟體發明也可以被實現為單獨的程序。最後,一起實現這裡描述的軟體發明的單獨程序的任何組合都在本公開的範圍內。在一些實施例中,當軟體程序被安裝以在一個或多個電子系統上運行時,定義了一個或多個執行和執行軟體程序的操作的特定機器實現。
第8圖概念性地圖示了實現本公開的一些實施例的電子系統800。電子系統800可以是計算機(例如台式計算機、個人計算機、平板計算機等)、電話、PDA或任何其他種類的電子設備。這樣的電子系統包括各種類型的計算機可讀介質和用於各種其他類型的計算機可讀介質的接口。電子系統800包括總線805、處理單元810、圖形處理單元(GPU)815、系統存儲器820、網絡825、只讀存儲器(ROM)830、永久存儲設備835、輸入設備840和輸出設備 845。
總線 805 共同表示通信連接電子系統 800 的眾多內部設備的所有系統、外圍設備和芯片組總線。例如,總線 805 通信連接處理單元 810 與 GPU 815,GPU 815、只讀存儲器830、系統存儲器820和永久存儲設備835。
從這些不同的存儲器單元,處理單元810檢索要執行的指令和要處理的資料以便執行本公開的處理。在不同的實施例中,處理單元可以是單處理器或多核處理器。一些指令被傳遞到 GPU 815 並由其執行。GPU 815 可以卸載各種計算或補充由處理單元 810 提供的圖像處理。
只讀存儲器(ROM) 830存儲由處理單元810和電子系統的其他模塊使用的靜態資料和指令。另一方面,永久存儲設備835是讀寫存儲設備。該設備是即使在電子系統800關閉時也存儲指令和資料的非易失性存儲單元。本公開的一些實施例使用大容量存儲設備(例如磁盤或光盤及其相應的磁盤驅動器)作為永久存儲設備835。
其他實施例使用可移動存儲設備(例如軟盤、閃存設備等,及其對應的磁盤驅動器)作為永久存儲設備。與永久存儲設備835一樣,系統存儲器820是讀寫存儲設備。然而,與存儲設備835不同,系統存儲器820是易失性讀寫存儲器,例如隨機存取存儲器。系統存儲器820存儲處理器在運行時使用的一些指令和資料。在一些實施例中,根據本公開的過程存儲在系統存儲器820、永久存儲設備835和/或只讀存儲器830中。例如,各種存儲器單元包括用於處理多媒體剪輯的指令與一些實施例。從這些不同的存儲器單元,處理單元810檢索要執行的指令和要處理的資料以便執行一些實施例的過程。
總線 805 還連接到輸入和輸出設備 840 和 845。輸入設備 840 使用戶能夠向電子系統傳送信息和選擇命令。輸入設備 840 包括字母數字鍵盤和定點設備(也稱為「光標控制設備」)、相機(例如網絡攝像頭)、麥克風或用於接收語音命令的類似設備等。輸出設備 845 顯示由電子系統生成的圖像或否則輸出資料。輸出設備845包括打印機和顯示設備,例如陰極射線管(CRT)或液晶顯示器(LCD),以及揚聲器或類似的音頻輸出設備。一些實施例包括同時用作輸入和輸出設備的設備,例如觸摸屏。
最後,如第8圖所示,總線805還通過網絡適配器(未示出)將電子系統800耦合到網絡825。以這種方式,計算機可以是計算機網絡的一部分,例如局域網(「LAN」)、廣域網(「WAN」)或內聯網,電子系統800的任何或所有組件可結合本公開使用。
一些實施例包括在機器可讀或計算機可讀介質(或者稱為計算機可讀存儲介質、機器可讀介質或機器-可讀存儲介質)。此類計算機可讀介質的一些示例包括 RAM、ROM、只讀光盤 (CD-ROM)、可記錄光盤 (CD-R)、可重寫光盤 (CD-RW)、只讀數字多功能光盤(例如, DVD-ROM, 雙層 DVD-ROM), 各種可刻錄/可重寫 DVD (例如, DVD-RAM, DVD-RW, DVD+RW, 等等), 閃存(例如, SD 卡, mini-SD卡、微型 SD 卡等)、磁性和/或固態硬盤驅動器、只讀和記錄可用的 Blu-Ray® 光盤、超密度光盤、任何其他光學或磁性媒體以及軟盤。計算機可讀介質可以存儲可由至少一個處理單元執行並且包括用於執行各種操作的指令集的計算機程序。計算機程序或計算機代碼的示例包括機器代碼,例如由編譯器生成的機器代碼,以及包括由計算機、電子組件或使用解釋器的微處理器執行的高級代碼的文件。
雖然以上討論主要涉及執行軟體的微處理器或多核處理器,但許多上述特徵和應用是由一個或多個集成電路執行的,例如專用集成電路(ASIC)或現場可編程門陣列 (FPGA)。在一些實施例中,這樣的集成電路執行存儲在電路本身上的指令。此外,一些實施例執行存儲在可編程邏輯設備(PLD)、ROM或RAM設備中的軟體。
如在本說明書和本申請的任何請求項中使用的,術語「計算機」、「服務器」、「處理器」和「存儲器」均指電子或其他技術設備。這些術語不包括人或人群。出於說明書的目的,術語顯示或顯示表示在電子設備上顯示。如本說明書和本申請的任何請求項中所使用,術語「計算機可讀介質」、「計算機可讀介質」和「機器可讀介質」完全限於以可讀形式存儲信息的有形物理對象。一台電腦。這些術語不包括任何無線信號、有線下載信號和任何其他臨時信號。儘管已經參考許多具體細節描述了本公開,但是本領域的普通技術人員將認識到,在不脫離本公開的精神的情況下,可以以其他具體形式來實施本公開。 補充說明
此處描述的主題有時說明不同的組件包含在不同的其他組件內或與不同的其他組件連接。應當理解,這樣描繪的架構僅僅是示例,並且實際上可以實現相同功能的許多其他架構。從概念上講,實現相同功能的任何組件排列都是有效「關聯」的,從而實現所需的功能。因此,此處組合以實現特定功能的任何兩個組件可以被視為彼此「相關聯」以使得實現期望的功能,而不管架構或中間組件如何。同樣,如此關聯的任何兩個組件也可被視為彼此「可操作地連接」或「可操作地耦合」以實現所需的功能,並且能夠如此關聯的任何兩個組件也可被視為「可操作地連接」,彼此實現所需的功能。可操作地耦合的具體示例包括但不限於物理上可配合和/或物理上交互的組件和/或無線上可交互和/或無線上交互的組件和/或邏輯上交互和/或邏輯上可交互的組件。
此外,關於本文中基本上任何復數和/或單數術語的使用,本領域技術人員可以根據上下文從複數翻譯成單數和/或從單數翻譯成複數和/或申請。為了清楚起見,可以在本文中明確地闡述各種單數/複數排列。
此外,本領域技術人員將理解,一般而言,本文使用的術語,尤其是在所附請求項中,例如所附請求項的主體,通常意在作為開放術語,例如, 「包括」一詞應解釋為「包括但不限於」,「有」一詞應解釋為「至少有」,「包括」一詞應解釋為「包括但不限於」,等。本領域的技術人員將進一步理解,如果意圖引入特定數量的請求項陳述,則該意圖將在請求項中明確地陳述,並且在沒有該陳述的情況下不存在該意圖。例如,為了幫助理解,以下所附請求項可能包含使用介紹性短語「至少一個」和「一個或多個」來介紹請求項的敘述。然而,使用此類短語不應被解釋為暗示通過不定冠詞「一」或「一個」引入的請求項將包含此類引入的請求項的任何特定請求項限制為僅包含一個此類請求項的實施方式,即使當同一請求項包括介紹性短語「一個或多個」或「至少一個」和不定冠詞,例如「一」或「一個」,應解釋為「至少一個」或「一個或多個」;這同樣適用於使用定冠詞來引入索賠陳述。此外,即使明確引用了引入的請求項記載的特定數量,本領域技術人員將認識到,這種記載應被解釋為至少是指被引用的數量,例如,僅引用「兩次引用」,而不其他修飾語,表示至少兩次背誦,或者兩次或更多次背誦。此外,在那些約定類似於「A、B 和 C 等中的至少一個」的情況下。被使用,一般來說,這樣的結構意在本領域技術人員會理解約定的意義上,例如,「具有A、B和C中的至少一個的系統」將包括但不限於這樣的系統單獨有 A,單獨有 B,單獨有 C,A 和 B 在一起,A 和 C 在一起,B 和 C 在一起,和/或 A、B 和 C 在一起,等等。在那些類似於「至少一個」的約定的情況下A、B 或 C 等。通常這樣的結構意在本領域技術人員理解約定的意義上,例如,「具有A、B或C中的至少一個的系統」將包括但不限於系統具有單獨的 A、單獨的 B、單獨的 C、A 和 B 在一起、A 和 C 在一起、B 和 C 在一起和/或 A、B 和 C 在一起等。本領域技術人員將進一步理解實際上無論是在說明書、請求項書還是附圖中,任何出現兩個或更多替代術語的分離詞和/或短語都應該被理解為考慮包括一個術語、一個術語或兩個術語的可能性。例如,短語「A 或 B」將被理解為包括「A」或「B」或「A 和 B」的可能性。
從上文中可以理解,為了說明的目的,本文已經描述了本公開的各種實施方式,並且在不脫離本公開的範圍和精神的情況下可以進行各種修改。因此,本文公開的各種實施方式並非旨在限制,真正的範圍和精神由所附請求項指示。
100:並行編碼工具評估方案 130、131、132、133、631-634:PE 110:搜索存儲器資料 120、121、122 、 123:總線 140、141、142、143:FOM 601:視頻資料 160、660:編碼工具 150:比較器 200、300:時間交錯高速緩存訪問方法 113:CB 115:部分CB 299:時間線 411、412、451、452:子塊 422:高速緩存體分配 530、540 、 550:圖表 532、542 、 552:體分配 600:編碼效率裝置 666:編碼參數設置 605:處理器 610:搜索存儲器或高速緩存 640:存儲器 650:比較器 611-614 :存儲體 700:過程 710、720、730、740:步驟 800:電子系統 805:總線 810:處理單元 815:圖形處理單元(GPU) 820:系統存儲器 825:網絡 830:只讀存儲器(ROM) 835:永久存儲設備 840:輸入設備 845:輸出設備
附圖被包括以提供對本公開的進一步理解並且併入並構成本公開的一部分。附圖圖示了本公開的實施方式,並且與描述一起用於解釋本公開的原理。值得注意的是,附圖不一定是按比例繪製的,因為一些組件可能被顯示為與實際實施中的尺寸不成比例,以清楚地說明本公開的概念。 第1圖是根據本公開的實施方式的示例設計的圖。 第2圖是根據本公開的實施方式的示例設計的圖。 第3圖是根據本公開的實施方式的示例設計的圖。 第4圖是根據本公開的實施方式的示例設計的圖。 第5圖是根據本公開的實施方式的示例設計的圖。 第6圖是根據本公開的實施方式的示例編碼效率評估裝置的圖。 第7圖是根據本公開的實施方式的示例過程的流程圖。 第8圖是根據本公開的實施方式的示例電子系統的圖。
600:編碼效率裝置
666:編碼參數設置
605:處理器
610:搜索存儲器或高速緩存
640:存儲器
650:比較器
611-614:存儲體
601:視頻資料
660:編碼工具

Claims (18)

  1. 一種視頻編碼方法,包括:由多個處理元件(PE)接收視頻資料,每個處理元件被配置為對相應的編碼工具執行編碼效率評估;由多個PE中的每一個執行所述編碼效率評估,以計算特定於相應編碼工具和視頻資料的一相應品質因數(FOM);通過比較多個PE計算出的所述FOM,確定視頻資料特有的編碼工具;以及使用確定的編碼工具對視頻資料進行編碼;其中所述多個PE中的每一個是低複雜度率失真優化器(LC-RDO),並且其中所述FOM包括平方差和(SSD)、絕對差和(SAD)或絕對變換差值之和(SATD)。
  2. 如請求項1所述的方法,其中,所述多個PE中不超過一個PE同時接收視頻資料。
  3. 如請求項1所述的方法,其中:所述視頻資料包括分成多個子塊的編碼塊(CB),多個子塊形成列和行的陣列,所述多個PE包括第一數量的PE,所述多個PE接收所述視頻資料包括多個PE中的每一個分批接收所述CB的多個子塊,每一批包括第二數量的多個子塊,以及第二數量等於第一數量。
  4. 根據請求項3所述的方法,其中由所述多個PE接收所述視頻資料包括多個PE中的每一個使用通過列或行的蛇形掃描來接收所述多個子塊。
  5. 如請求項3所述的方法,還包括:由所述多個PE中的每一個將所述第二數量的子塊存儲在可由相應PE訪問的 相應緩衝器中。
  6. 如請求項3所述的方法,其中,所述多個PE中的每一個都具有包括多個級的流水線結構,並且其中計算相應的FOM包括通過所述多個級順序地處理所述第二數量的子塊。
  7. 如請求項1所述的方法,其中:視頻資料包括分成多個子塊的編碼塊(CB),多個子塊形成列和行的陣列,接收視頻資料包括接收存儲在具有多個存儲體的存儲器中的視頻資料,所述多個存儲體包括多個存儲體中的具有第三數量的存儲體的第一組、和具有第四數量的存儲體的第二組,以及所述陣列的相鄰的列或行中的每對列或行分別存儲在所述第一組和第二組存儲體中。
  8. 如請求項7所述的方法,其中:所述多個PE包括第一數量的PE,並且所述第三數量和所述第四數量中的每一個都等於所述第一數量。
  9. 如請求項1所述的方法,還包括:確定與所確定的編碼工具相關的一組編碼參數。
  10. 一種視頻編碼裝置,包括:具有多個存儲體的高速緩衝存儲器;處理器被配置為根據特定於視頻資料的塊分配方案將視頻資料存儲在高速緩衝存儲器中;多個處理元件(PE),每個處理元件被配置為計算特定於相應編碼工具和視頻資料的相應品質因數(FOM);和比較器,被配置為通過比較由所述多個PE計算的FOM來確定所述視頻資料特定的編碼工具; 其中所述多個PE中的每一個是低複雜度率失真優化器(LC-RDO),並且其中所述FOM包括平方差和(SSD)、絕對差和(SAD)或絕對變換差值之和(SATD)。
  11. 如請求項10所述的裝置,其中,不超過所述多個PE中的一個PE訪問所述高速緩衝存儲器。
  12. 如請求項10所述的裝置,其中:所述視頻資料包括分成多個子塊的編碼塊(CB),多個子塊形成列和行的陣列,所述多個PE包括第一數量的PE,所述多個PE中的每一個PE訪問所述高速緩衝存儲器以分批獲取CB的多個子塊,每批包括第二數量的子塊,並且所述第二數量等於所述第一數量。
  13. 如請求項12所述的裝置,其中,所述多個PE中的每一個PE使用通過所述多個子塊的列或行的蛇形掃描來訪問所述高速緩衝存儲器。
  14. 根據請求項12所述的裝置,其中所述多個PE中的每一個PE經配置以將所述第二數量的子塊存儲在可由相應PE訪問的相應緩衝器中。
  15. 根據請求項12所述的裝置,其中,所述多個PE中的每一個PE具有包括多個級的流水線結構,並且其中,所述多個PE中的每一個PE被配置為通過多個級順序地處理所述第二數量的子塊來計算各自的FOM。
  16. 如請求項10所述的裝置,其中:所述視頻資料包括分成多個子塊的編碼塊(CB),多個子塊形成列和行的陣列,多個存儲體包括多個存儲體中的具有第三數量的存儲體的第一組、和多個存儲體中的具有第四數量的存儲體的第二組,並且 陣列的相鄰的列或行的每對列或行分別存儲在所述第一組和所述第二組多個存儲體中。
  17. 如請求項16所述的裝置,其中:多個PE包括第一數量的PE,並且第三數量和第四數量中的每一個都等於所述第一數量。
  18. 如請求項10所述的裝置,其中,所述比較器進一步確定一組與所確定的編碼工具相關的編碼參數。
TW111148485A 2021-12-16 2022-12-16 使用時間交錯緩存訪問的視頻編碼並行化 TWI805534B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163290073P 2021-12-16 2021-12-16
US63/290,073 2021-12-16
US17/978,530 2022-11-01
US17/978,530 US20230199199A1 (en) 2021-12-16 2022-11-01 Video Encoding Parallelization With Time-Interleaving Cache Access

Publications (2)

Publication Number Publication Date
TWI805534B true TWI805534B (zh) 2023-06-11
TW202327350A TW202327350A (zh) 2023-07-01

Family

ID=86769508

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111148485A TWI805534B (zh) 2021-12-16 2022-12-16 使用時間交錯緩存訪問的視頻編碼並行化

Country Status (2)

Country Link
US (1) US20230199199A1 (zh)
TW (1) TWI805534B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI325697B (en) * 2004-06-27 2010-06-01 Apple Inc Multi-pass video encoding
TW201813387A (zh) * 2016-07-12 2018-04-01 聯發科技股份有限公司 低延遲視頻編碼之裝置與方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100621137B1 (ko) * 2004-02-27 2006-09-13 세이코 엡슨 가부시키가이샤 동화상 부호화 장치 및 동화상 처리장치
EP1854011A2 (en) * 2005-02-15 2007-11-14 Koninklijke Philips Electronics N.V. Enhancing performance of a memory unit of a data processing device by separating reading and fetching functionalities
US8130841B2 (en) * 2005-12-29 2012-03-06 Harris Corporation Method and apparatus for compression of a video signal
JP4695124B2 (ja) * 2007-09-13 2011-06-08 日本電信電話株式会社 動画像符号化における動き探索装置
US20220248041A1 (en) * 2021-02-01 2022-08-04 Facebook Technologies, Llc Pixel Block Encoder
US11496746B2 (en) * 2021-02-02 2022-11-08 Qualcomm Incorporated Machine learning based rate-distortion optimizer for video compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI325697B (en) * 2004-06-27 2010-06-01 Apple Inc Multi-pass video encoding
TW201813387A (zh) * 2016-07-12 2018-04-01 聯發科技股份有限公司 低延遲視頻編碼之裝置與方法

Also Published As

Publication number Publication date
TW202327350A (zh) 2023-07-01
US20230199199A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
TWI677234B (zh) 二次轉換核心尺寸選擇
US20170026659A1 (en) Partial Decoding For Arbitrary View Angle And Line Buffer Reduction For Virtual Reality Video
US8218640B2 (en) Picture decoding using same-picture reference for pixel reconstruction
US8218641B2 (en) Picture encoding using same-picture reference for pixel reconstruction
US9467699B2 (en) Method for performing parallel coding with ordered entropy slices, and associated apparatus
TWI512673B (zh) 視頻解碼方法及電腦可讀媒介
US9948934B2 (en) Estimating rate costs in video encoding operations using entropy encoding statistics
US20080298473A1 (en) Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
WO2015124058A1 (zh) 编解码方法和装置
CN105282558A (zh) 帧内像素预测方法、编码方法、解码方法及其装置
US10237554B2 (en) Method and apparatus of video encoding with partitioned bitstream
US11223838B2 (en) AI-assisted programmable hardware video codec
TWI832628B (zh) 視訊編解碼方法及其裝置
TWI805534B (zh) 使用時間交錯緩存訪問的視頻編碼並行化
KR20110047700A (ko) 복호화 가속화를 위한 엔트로피 부호화 방법과 그 장치 및 엔트로피 복호화 방법과 그 장치
TWI832449B (zh) 視訊編解碼方法及裝置
TWI833327B (zh) 視訊編解碼方法及裝置
CN116366851A (zh) 视频数据编码方法与装置
US8538178B2 (en) Image processing device and image processing method
US10939107B2 (en) Embedded codec circuitry for sub-block based allocation of refinement bits
TWI332795B (en) Hardware implementation of inverse scan for a plurality of standards
US11973985B2 (en) Video encoder with motion compensated temporal filtering
TWI834269B (zh) 視訊處理方法及裝置
JP6490272B2 (ja) 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US20220368887A1 (en) Supporting multiple partition sizes using a unified pixel input data interface for fetching reference pixels in video encoders