大體而言,本發明係關於改良視訊壓縮技術(諸如用以壓縮顯示串流之彼等技術)的方法。更特定而言,本發明係關於用於經由選擇用於計算QP調整值之合適的技術而改良量化參數(QP)之更新的系統及方法。 雖然某些實施例在顯示串流壓縮(DSC)標準之情況下在本文中進行描述,但本文中揭示之系統與方法可適用於任何合適的視訊寫碼標準。舉例而言,本文中揭示之實施例可適用於以下標準中之一或多者:國際電信聯盟(ITU)電信標準化部門(ITU-T)H.261、國際標準化組織/國際電工委員會(ISO/IEC)動畫專業團體-1 (MPEG-1)Visual、ITU-T H.262或ISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IECMPEG-4 Visual、ITU-T H.264(亦稱為ISO/IEC MPEG-4 AVC)、高效視訊寫碼(HEVC),及對此等標準之任何擴展。本文中所描述之技術可特別適用於合併緩衝器模型之標準或寫碼技術。在各種實施例中,可利用恆定位元速率(CBR)或可變位元速率(VBR)緩衝器模型。此外,本發明中描述之技術可變為將來開發的標準之部分。換言之,本發明中描述之技術可適用於先前開發之視訊寫碼標準、當前正在開發之視訊寫碼標準及即將出現之視訊寫碼標準。 藉由視訊電子器件標準協會(VESA)最近定案的3:1顯示串流壓縮(DSC)v1.0解決方案之產生不足以驅動未來行動市場(尤其)對於高解析度顯示器(諸如4K)之要求。因此,為解決未來需求,VESA發佈CfT(需要技術)以便發展以4:1及更高之壓縮比率為目標的下一代DSC解決方案。 大體而言,DSC寫碼器提供具低成本、具固定速率的視覺無損壓縮。該寫碼器係以基於區塊之方法(區塊大小P×Q)為基礎進行設計且包含眾多寫碼模式。舉例而言,針對每一區塊的可用寫碼選項為變換(例如,DCT、Hadamard)模式、區塊預測模式、DPCM模式、圖案模式、中點預測(MPP)模式及中點預測後降(MPPF)模式。若干寫碼模式被用於寫碼器中以便有效地壓縮不同類型的內容或影像。舉例而言,可藉由圖案模式有效地壓縮本文影像,而可藉由變換模式有效地俘獲天然影像。 每一區塊可基於速率-控制機構自複數個寫碼模式挑選一個寫碼模式,其中該速率-控制機構旨在藉由考慮模式之速率及失真兩者為每一區塊選擇最佳模式。該速率-控制機構藉由緩衝器模型支援,且為編解碼器之設計要求,亦即,緩衝器(例如,緩衝器單元)從不處於下溢(緩衝器中少於零個位元)或上溢(緩衝器大小增大超過設定之最大大小)之狀態中。 視訊寫碼方法可藉由使用QP調整值更新先前所計算之QP值而計算QP值。可基於前一區塊與當前區塊之間的差(例如,對前一區塊進行寫碼所需的位元與其中對當前區塊進行寫碼之目標數目個位元之間的差)來計算QP調整值。 然而,由習知技術判定之QP調整值可導致寫碼之低效率或可在某些情況下產生可注意到的偽影。舉例而言,用於判定QP調整值之習知的技術可不足夠主動以用於自影像之平坦區域至複雜區域的過渡(例如,QP調整值可小於將導致更好的寫碼效率而無可注意到的偽影的更合乎需要的QP調整值)。平坦及複雜區域之概念將在下文更詳細地描述。 另外,當緩衝器之充滿度在空臨限值或全臨限值內時,用於計算QP調整值之習知的技術可太主動,以導致藉由解碼器重建構之影像中之偽影。舉例而言,藉由習知的技術所計算的QP調整值可大於將遮蔽偽影以不在經重建構影像中可注意到的更合乎需要的QP調整值。 因此,本發明之態樣係針對解決至少上文所指示之問題。在某些態樣中,此可經由偵測或判定可與上述所指示之問題相關聯之條件,及在所偵測到之條件下應用用於計算QP調整值之一或多個替代技術來實現。 視訊寫碼標準 諸如視訊影像、TV影像、靜態影像或由視訊記錄器或電腦產生之影像的數位影像可包括依水平線及豎直線配置之像素或樣本。單個影像中之像素的數目通常為數萬個。每一像素通常含有明度及色度資訊。在不壓縮之情況下,待自影像編碼器傳送至影像解碼器的資訊之絕對數量將致使即時影像傳輸不切實際。為了減少待傳輸的資訊之量,已開發多種不同壓縮方法,諸如JPEG、MPEG及H.263標準。 視訊寫碼標準包括ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262或ISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264 (亦稱為ISO/IEC MPEG-4 AVC),以及包括此等標準之擴展的HEVC。 另外,視訊寫碼標準(即DSC)已由VESA開發。DSC標準為可壓縮視訊以用於經由顯示連結傳輸的視訊壓縮標準。隨著顯示之解析度增大,視訊資料驅動顯示器所需的頻寬相應地增大。一些顯示連結可不具有將視訊資料之所有傳輸至此類解析度之顯示器的頻寬。因此,DSC標準規定用於在顯示連結上之可互操作的、視覺上無損之壓縮的壓縮標準。 DSC標準與其他視訊寫碼標準(諸如,H.264及HEVC)不同。DSC包括框內壓縮,但不包括框間壓縮,意謂時間資訊可不被DSC標準用於對該視訊資料進行寫碼。相比而言,其他視訊寫碼標準可在其視訊寫碼技術中使用框間壓縮。 視訊寫碼系統 在下文中參考隨附圖式更完整地描述新穎系統、裝置及方法之各種態樣。然而,本發明可以許多不同形式來體現,且不應將其解釋為限於貫穿本發明所呈現之任何特定結構或功能。實情為,提供此等態樣,使得本發明將為透徹且完整的,且將向熟習此項技術者充分傳達本發明之範疇。基於本文中之教示,熟習此項技術者應瞭解,本發明之範圍意欲涵蓋本文所揭示之新穎系統、裝置及方法之任何態樣,不管是獨立於本發明之任何其他態樣實施還是與本發明之任何其他態樣組合地實施。舉例而言,可使用本文中所闡述之任何數目之態樣來實施一裝置或可使用本文中所闡述之任何數目個態樣來實踐一方法。另外,本發明之範疇意欲涵蓋使用除本文中所闡明的本發明之各種態樣之外的或不同於本文中所闡明的本發明之各種態樣的其他結構、功能性或結構與功能性來實踐的此裝置或方法。應理解,可藉由申請專利範圍之一或多個要素來體現本文中所揭示之任何態樣。 儘管本文中描述特定態樣,但此等態樣之許多變化及排列屬於本發明之範疇。儘管提及了較佳態樣之一些益處及優點,但本發明之範疇不欲限於特定益處、用途或目標。實情為,本發明之態樣意欲廣泛適用於不同無線技術、系統組態、網路及傳輸協定,其中之一些在諸圖中及在較佳態樣之以下描述中借助於實例加以說明。實施方式及圖式僅對本發明進行說明而非限制,本發明之範疇由隨附申請專利範圍及其等效內容界定。 附圖對實例進行說明。由附圖中之參考數字指示之元件對應於在以下描述中由相同參考數字指示之元件。在本發明中,具有以序數詞(例如,「第一」、「第二」、「第三」等)開始的名稱的元件不一定暗示所述元件具有特定順序。相反地,此等序數詞僅用以指相同或類似類型之不同元件。
圖 1A
係說明可利用根據本發明中描述之態樣的技術之例示性視訊寫碼系統10的方塊圖。如本文描述所使用,術語「視訊寫碼器」或「寫碼器」一般指視訊編碼器及視訊解碼器兩者。在本發明中,術語「視訊寫碼」或「寫碼」一般可係指視訊編碼及視訊解碼。除視訊編碼器及視訊解碼器之外,本申請案中描述之態樣可擴展至其他相關器件,諸如,轉碼器(例如,可對位元串流進行解碼且對另一位元串流重新編碼之器件)及中間框(例如,可修改、變換及/或另外操縱位元串流之器件)。 如
圖 1A
中所展示,視訊寫碼系統10包括產生在稍後時間由目的地器件14解碼之經編碼視訊資料的源器件12。在
圖 1A
之實例中,源器件12及目的地器件14構成單獨器件。然而,應注意,源器件12與目的地器件14可在同一器件上或為同一器件之部分,如在
圖 1B
之實例中所展示。 再次參考
圖 1A
,源器件12及目的地器件14可分別包含廣泛範圍之器件中之任一者,包括桌上型電腦、筆記型(例如,膝上型)電腦、平板電腦、機上盒、電話手機(諸如,所謂的「智慧型」電話)、所謂的「智慧型」平板、電視、攝像機、顯示器件、數位媒體播放器、視訊遊戲控制台、車載電腦、視訊串流器件、可由實體(例如,人、動物及/或另一可控的器件)穿戴的(或可以可拆卸方式附接的)器件(諸如,眼用佩戴品及/或穿戴式電腦)、可用於、攝取或放置於實體內之器件或裝置及/或類似者。在各種實施例中,源器件12及目的地器件14可經裝備以用於無線通信。 目的地器件14可經由連結16接收待解碼之經編碼視訊資料。連結16可包含能夠將經編碼視訊資料自源器件12移動至目的地器件14之任何類型的媒體或器件。在
圖 1A
之實例中,連結16可包含使源器件12能夠即時將經編碼視訊資料傳輸至目的地器件14的通信媒體。經編碼視訊資料可根據通信標準(諸如,無線通信協定)來調變,且被傳輸至目的地器件14。通信媒體可包含任何無線或有線通信媒體,諸如,射頻(RF)頻譜或一或多個實體傳輸線。通信媒體可形成基於封包之網路(諸如,區域網路、廣域網路或諸如網際網路之全域網路)之部分。通信媒體可包括路由器、交換器、基地台或任何其他可用於促進自源器件12至目的地器件14的通信之設備。 在
圖 1A
之實例中,源器件12包括視訊源18、視訊編碼器20及輸出介面22。在一些情況下,輸出介面22可包括調變器/解調器(數據機)及/或傳輸器。在源器件12中,視訊源18可包括諸如視訊俘獲器件(例如,視訊攝影機)、含有先前所俘獲視訊之視訊封存檔、用以自視訊內容提供者接收視訊的視訊饋入介面,及/或用於將電腦圖形資料產生為源視訊的電腦圖形系統之源,或此等源之一組合。作為一個實例,若視訊源18為視訊攝影機,則源器件12及目的地器件14可形成所謂的「攝影機電話」或「視訊電話」,如在
圖 1B
之實例中所說明。然而,本發明中所描述之技術可大體上適用於視訊寫碼,且可應用於無線及/或有線應用。 可由視訊編碼器20對所俘獲、預先俘獲或電腦產生之視訊進行編碼。經編碼視訊資料可經由源器件12之輸出介面22傳輸至目的地器件14。亦可(或替代地)將經編碼視訊資料儲存至儲存器件31上以供稍後由目的地器件14或其他器件存取以用於解碼及/或播放。
圖 1A
及
圖 1B
中說明的視訊編碼器20可包含
圖 2A
中說明的視訊編碼器20或本文所描述之任何其他視訊編碼器。 在
圖 1A
之實例中,目的地器件14包括輸入介面28、視訊解碼器30及顯示器件32。在一些狀況下,輸入介面28可包括接收器及/或數據機。目的地器件14的輸入介面28可經由連結16及/或從儲存器件31接收經編碼視訊資料。經由連結16傳達或在儲存器件31上提供之經編碼視訊資料可包括由視訊編碼器20產生以由視訊解碼器(諸如,視訊解碼器30)用於解碼視訊資料的各種語法元素。傳輸於通信媒體上、儲存於儲存媒體上,或儲存於檔案伺服器之經編碼視訊資料內可包括此等語法元素。
圖 1A
及
圖 1B
中說明的視訊解碼器30可包含
圖 2B
中說明的視訊解碼器30或本文所描述之任何其他視訊解碼器。 顯示器件32可與目的地器件14整合或在該目的地器件外部。在一些實例中,目的地器件14可包括整合顯示器件,且亦經組態以與外部顯示器件介接。在其他實例中,目的地器件14可為顯示器件。一般而言,顯示器件32向使用者顯示經解碼視訊資料,且可包含多種顯示器件中之任一者,諸如,液晶顯示器(LCD)、電漿顯示器、有機發光二極體(OLED)顯示器或另一類型之顯示器件。 在相關態樣中,
圖 1B
展示實例視訊寫碼系統10',其中源器件12及目的地器件14在器件11上或為其之部分。器件11可為電話手機,諸如「智慧型」電話或其類似者。器件11可包括與源器件12及目的地器件14操作性通信的處理器/控制器器件13(視情況呈現)。
圖 1B
之視訊寫碼系統10'及其組件或者類似於
圖 1A
之視訊寫碼系統10及其組件。 視訊編碼器20及視訊解碼器30可根據視訊壓縮標準(諸如,DSC)來操作。替代地,視訊編碼器20及視訊解碼器30可根據其他專屬標準或行業標準(諸如,ITU-T H.264標準,替代地被稱作MPEG-4,第10部分,AVC,HEVC)或此類標準之擴展而操作。然而,本發明之技術並不限於任何特定寫碼標準。視訊壓縮標準之其他實例包括MPEG-2及ITU-T H.263。 雖未在
圖 1A
及
圖 1B
之實例中展示,但視訊編碼器20及視訊解碼器30可各自與音訊編碼器及解碼器整合,且可包括適當MUX-DEMUX單元或其他硬體及軟體以處置在共同資料串流或分開的資料串流中的音訊及視訊兩者之編碼。若適用,則在一些實例中,MUX-DEMUX單元可符合ITU H.223多工器協定或其他協定,諸如使用者資料報協定(UDP)。 視訊編碼器20及視訊解碼器30各自可實施為多種合適編碼器電路中的任一者,諸如一或多個微處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)、離散邏輯、軟體、硬體、韌體或其任何組合。當該等技術部分以軟體實施時,器件可將用於軟體之指令儲存於合適之非暫時性電腦可讀媒體中,且在硬體中使用一或多個處理器執行指令以執行本發明之技術。視訊編碼器20及視訊解碼器30中之每一者可包括在一或多個編碼器或解碼器中,編碼器或解碼器中之任一者可整合為各別器件中之組合編碼器/解碼器的部分。 視訊寫碼過程 如以上簡要地提及,視訊編碼器20對視訊資料進行編碼。視訊資料可包含一或多個圖像。圖像中之每一者為形成視訊之部分的靜態影像。在一些情況下,圖像可被稱作視訊「圖框」。當視訊編碼器20對視訊資料進行編碼時,視訊編碼器20可產生位元串流。位元串流可包括形成視訊資料之經寫碼表示之一連串位元。位元串流可包括經寫碼圖像及相關聯之資料。經寫碼圖像為圖像之經寫碼表示。 為產生位元串流,視訊編碼器20可對視訊資料中之每一圖像執行編碼操作。當視訊編碼器20對圖像執行編碼操作時,視訊編碼器20可產生一系列經寫碼圖像及相關聯之資料。相關聯之資料可包括寫碼參數(諸如,QP)之集合。為產生經寫碼圖像,視訊編碼器20可將圖像分割成相等大小之視訊區塊。視訊區塊可為樣本之二維陣列。寫碼參數可定義視訊資料之每一區塊之寫碼選項(例如,寫碼模式)。寫碼選項可經選擇以便達成所要之率失真效能。 在一些實例中,視訊編碼器20可將圖像分割成複數個圖塊。圖塊中之每一者可包括影像(例如,圖框)中之空間不同區域,其可在無需來自所述影像或圖框中之剩餘區域之資訊的情況下獨立地解碼。每一影像或視訊圖框可在單個圖塊中編碼或每一影像或視訊圖框可在若干圖塊中編碼。在DSC中,經分配以編碼每一圖塊之目標位元可實質上恆定。作為對圖像執行編碼操作之部分,視訊編碼器20可對圖像之每一圖塊執行編碼操作。當視訊編碼器20對圖塊執行編碼操作時,視訊編碼器20可產生與圖塊相關聯之經編碼資料。與圖塊相關聯之經編碼資料可被稱作「經寫碼圖塊」。 DSC視訊編碼器
圖 2A
為說明可實施根據本發明中描述之態樣的技術的視訊編碼器20之實例的方塊圖。視訊編碼器20可經組態以執行本發明之技術中的一些或全部。在一些實例中,本發明中描述之技術可在視訊編碼器20的各種組件之間共用。在一些實例中,另外或替代地,處理器(未展示)可經組態以執行本發明中描述之技術中的一些或全部。 出於解釋之目的,本發明在DSC寫碼之情況中描述視訊編碼器20。然而,本發明之技術可適用於其他寫碼標準或方法。 在
圖 2A
之實例中,視訊編碼器20包括複數個功能組件。視訊編碼器20之功能組件包括色彩空間轉換器105、緩衝器110、平度偵測器115、速率控制器120、預測器、量化器及重建構器組件125、列緩衝器130、索引色彩歷史135、熵編碼器140、子串流多工器145及速率緩衝器150。在其他實例中,視訊編碼器20可包括更多、更少或不同之功能組件。 色彩空間轉換器105可將輸入色彩空間轉換成用於寫碼實施方案的色彩空間。舉例而言,在一個例示性實施例中,輸入視訊資料之色彩空間為紅、綠及藍(RGB)色彩空間,且寫碼以明度Y、綠色色度Cg及橙色色度Co (YCgCo)色彩空間實施。色彩空間轉換可由包括對視訊資料轉移及添加之方法執行。應注意,可處理其他色彩空間之輸入視訊資料,且亦可執行轉換至其他色彩空間。 在相關態樣中,視訊編碼器20可包括緩衝器110、列緩衝器130及/或速率緩衝器150。舉例而言,緩衝器110可在緩衝器110'由視訊編碼器20之其他部分使用之前保持經色彩空間轉換之視訊資料。在另一實例中,視訊資料可儲存於RGB色彩空間中,且可按需要執行色彩空間轉換,因為經色彩空間轉換之資料可需要較多位元。 速率緩衝器150可充當視訊編碼器20中之速率控制機構的一部分,其下文將結合速率控制器120更詳細地描述。對每一區塊進行編碼所耗費的位元可實質上基於區塊之性質而高度變化。速率緩衝器150可平緩經壓縮視訊中之速率變化。在一些實施例中,使用CBR緩衝器模型或可操作模式,其中以恆定位元速率自緩衝器獲得位元。在其他實施例中,可使用VBR緩衝器模型或可操作模式,其中以變數(非恆定位元速率)自緩衝器獲得位元。在一些實施例中,若視訊編碼器20將過多位元添加至位元串流(例如,以高於自緩衝器獲得位元之速率的一速率),則速率緩衝器150可上溢。另一方面,視訊編碼器20亦可需要添加足夠位元以便防止速率緩衝器150之下溢。 在視訊解碼器側,可以恆定位元速率將位元添加至視訊解碼器30之速率緩衝器155 (見下文更詳細地描述之
圖 2B
),且視訊解碼器30可移除用於每一區塊之可變數目個位元。為了確保恰當的解碼,視訊解碼器30之速率緩衝器155不應在經壓縮位元串流之解碼期間「下溢」或「上溢」。 在一些實施例中,緩衝器充滿度(BF)可基於表示當前在緩衝器中之位元數目之值BufferCurrentSize及表示速率緩衝器150之大小之值BufferMaxSize(亦即,可在任何時間點儲存於速率緩衝器150中之最大位元數目)來定義。BF可計算為: BF = ((BufferCurrentSize * 100) / BufferMaxSize) 應注意,上文計算BF之方法僅為例示性的,且該BF可視特定實施或內容而以任何數目個不同方式來計算。 平度偵測器115可偵測自視訊資料中之複雜(亦即,非平坦)區域到視訊資料中之平坦(亦即,簡單或均勻的)區域的變化,及/或反之亦然。術語「複雜」及「平坦」將在本文中用以大體上指代視訊編碼器20編碼視訊資料之各別區域的難度。因此,本文所使用之術語複雜將視訊資料之區域大體上描述為視訊編碼器20編碼起來複雜,且可(例如)包括紋理化的視訊資料、高空間頻率及/或編碼起來複雜之其他特徵。本文所使用之術語平坦將視訊資料之區域大體上描述為視訊編碼器20編碼起來簡單,且可(例如)包括視訊資料中之平滑梯度、低空間頻率及/或編碼起來簡單的其他特徵。自複雜區域至平坦區域之過渡可由視訊編碼器20使用以減小經編碼視訊資料中之量化偽影。具體而言,速率控制器120及預測器、量化器及重建構器組件125可減小當自複雜區域至平坦區域之過渡被識別時的此類量化偽影。類似地,自平坦至複雜區域之過渡可由視訊編碼器20使用以增加QP以便減小所預期的對當前區塊進行寫碼所需的速率。 速率控制器120判定寫碼參數(例如QP)之集合。QP可由速率控制器120基於速率緩衝器150之緩衝器充滿度及視訊資料之影像活動(例如,自複雜區域至平坦區域之過渡或平坦區域至複雜區域之過渡)來調整以便將確保速率緩衝器150不上溢或下溢的目標位元速率之圖像品質。速率控制器120亦選擇用於視訊資料之每一區塊之特定寫碼選項(例如,特定模式)以便實現最佳速率-失真效能。速率控制器120將經重建構影像之失真最小化以使得其滿足位元速率約束條件(亦即,符合目標位元速率中之整體實際寫碼速率)。因此,速率控制器120之一個目的是判定寫碼參數(諸如,QP、寫碼模式等)之集合以滿足對速率的瞬時及平均約束同時最大化速率-失真效能。 預測器、量化器及重建構器組件125可執行視訊編碼器20之至少三個編碼操作。預測器、量化器及重建構器組件125可在多個不同模式中執行預測。一個實例預測模式係中值適應性預測之經修改版本。中值適應性預測可藉由無損JPEG標準(JPEG-LS)實施。可由預測器、量化器及重建構器組件125執行之中值適應性預測經修改版本可允許三個連續樣本值之平行預測。另一實例預測模式為區塊預測。在區塊預測中,自上方排中或同一排中左邊之先前經重建構像素預測樣本。在一些實施例中,視訊編碼器20及視訊解碼器30皆可對經重建構像素執行相同搜索以判定區塊預測使用,且因此在區塊預測模式中不需要發送位元。在其他實施例中,視訊編碼器20可在位元串流中執行搜索及信號區塊預測向量,使得視訊解碼器30不必執行單獨搜索。亦可實施中點預測模式,其中使用組件範圍之中點來預測樣本。中點預測模式可啟用即使最差情況樣本中之經壓縮視訊所需的位元數目之限定。 預測器、量化器及重建構器組件125亦執行量化。舉例而言,可經由可使用移位器實施之2冪量化器執行量化。應注意,可代替2冪量化器實施其他量化技術。由預測器、量化器及重建構器組件125執行的量化可基於由速率控制器120判定的QP。最終,預測器、量化器及重建構器組件125亦執行包括將經反量化之殘餘添加至經預測值及確保結果不超出樣本值之有效範圍的重建構。 應注意,上文所描述的由預測器、量化器及重建構器組件125執行之預測、量化及重建構之實例方法僅為說明性的,且可實施其他方法。亦應注意,預測器、量化器及重建構器組件125可包括用於執行預測、量化及/或重建構之子組件。應進一步注意,可由若干單獨編碼器組件代替預測器、量化器及重建構器組件125執行預測、量化及/或重建構。 列緩衝器130保持自預測器、量化器及重建構器組件125之輸出以使得預測器、量化器及重建構器組件125及索引色彩歷史135可使用經緩衝的視訊資料。索引色彩歷史135儲存最近使用之像素值。此等最近使用之像素值可直接由視訊編碼器20經由專用語法參考。 熵編碼器140基於索引色彩歷史135及平度偵測器115所識別之平度轉變來對自預測器、量化器及重建構器組件125接收之預測殘餘及任何其他資料(例如,預測器、量化器及重建構器組件125所識別之索引)進行編碼。在一些實例中,熵編碼器140可每時脈每子串流編碼器對三個樣本進行編碼。子串流多工器145可基於無標頭封包多工方案來多工位元串流。此允許視訊解碼器30並行運行三個熵解碼器,從而促進每時脈三個像素之解碼。子串流多工器145可使封包次序最佳化以使得封包可由視訊解碼器30有效地解碼。應注意,可實施不同的熵寫碼方法,可促進每時脈2冪像素(例如,2像素/時脈或4像素/時脈)之解碼。 DSC視訊解碼器
圖 2B
係說明可實施根據本發明中描述之態樣的技術之視訊解碼器30之實例的方塊圖。視訊解碼器30可經組態以執行本發明之技術中的一些或全部。在一些實例中,本發明中描述之技術可在視訊編碼器30之各種組件當中共用。在一些實例中,另外或替代地,處理器(未展示)可經組態以執行本發明中描述之技術中的一些或全部。 出於解釋之目的,本發明在DSC寫碼之情況中描述視訊解碼器30。然而,本發明之技術可適用於其他寫碼標準或方法。 在
圖 2B
之實例中,視訊解碼器30包括複數個功能組件。視訊解碼器30之功能組件包括速率緩衝器155、子串流解多工器160、熵解碼器165、速率控制器170、預測器、量化器及重建構器組件175、索引色彩歷史180、列緩衝器185及色彩空間轉換器190。所說明的視訊解碼器30之組件類似於上文結合
圖 2A
中之視訊編碼器20所描述的對應組件。由此,視訊解碼器30之組件中的每一者可以與上文所描述之視訊編碼器20之對應組件類似的方式操作。
量化參數 (QP)
如上文所論述,編碼器20之預測器、量化器及重建構器組件125可執行可在視訊資料區塊中引入失真之量化。可藉由區塊之量化參數(QP)控制失真之量。舉例而言,編碼器20可將QP用於一區塊,以判定用於量化該區塊之視訊資料之色彩分量值的量化步長。在一些實施例中,替代編碼器20儲存每一QP之量化步長,編碼器20可指定隨QP而變化之縮放矩陣。可自縮放矩陣推導每一QP之量化步長,其中推導值可不必為二冪,(例如)推導值亦可為非二冪。 在DSC測試模型之一些實施例中,明度道之各別最小及最大QP針對8bpc被設定成16及56。用於每一明度QP,可存在可在運行中推導或自查找表推斷的相關聯色度QP。
跳過模式
若給定視訊資料區塊中之單個組件的所有值為零,則編碼器20可使用跳過模式對區塊進行有效寫碼。在跳過模式寫碼之一些實施例中,編碼器20可發信可藉由解碼器30讀取之1位元旗標,指示當前區塊使用跳過模式寫碼(若所有值為零)或並非處於跳過模式中(若區塊中之至少一值為非零)。
增量大小單元 - 可變長度寫碼 圖 3
展示使用增量大小單元-可變長度寫碼對視訊資料進行寫碼的實例(DSU-VLC)。在一些實施例中,編碼器20可使用DSU-VLC處理器304來將K長度樣本向量302之經量化殘餘值(亦被稱作「群組」)寫碼成經寫碼位元序列306。該經寫碼位元序列306可包含首碼308及尾碼310,其中尾碼310包含複數個尾碼部件。DSU-VLC處理器304可對應於圖2A中所說明的熵編碼器140。如本文所使用,樣本可指單個色彩分量中之值,(例如)針對RGB 444,每一像素具有三個樣本。 首碼308指示尾碼310之尾碼部件中之每一者的殘餘值之大小(例如,位元之長度)(該大小表示為B個位元)。在一些實施例中,首碼308可具有可變長度且使用一元碼進行寫碼。尾碼310指示樣本向量302中之所有樣本的實際殘餘值(例如,尾碼310之每一尾碼部件可對應於樣本向量302之樣本)。編碼器20可對樣本向量302中之所有K個殘餘值進行寫碼,以使用特定格式(例如,二之補數)且將相同數目個位元(例如,B個位元)用於每一殘餘值來形成尾碼310。 作為一實例,若樣本向量302包含具有值[1, -2, -1, 0]之4個樣本,則編碼器20可需要B=2個位元來使用二之補數表示來對樣本向量302之每一樣本進行寫碼。就此而論,首碼308可具有值001,其表示值B=2之一元碼。尾碼310可包含具有值[01, 10, 11, 00]之尾碼部件,其分別表示樣本向量302中使用B=2個位元進行寫碼之樣本值中的每一者。藉由對首碼308進行解碼(通常在單一時脈循環中完成),解碼器30可能夠並行地對尾碼310之所有4個樣本進行解碼。
DSC 中之熵寫碼 圖 4
說明根據一些實施例之將給定P×Q視訊資料區塊之樣本分割為複數個樣本向量(群組)的實例。如圖4中所說明,區塊402可為包含16個樣本的2×8區塊。區塊402之每一樣本可對應於視訊資料之特定色彩分量的經量化殘差值,該視訊資料對應於區塊402。在使用DSU-VLC處理器304對樣本進行寫碼之前,編碼器20可將樣本分割成複數個樣本向量。舉例而言,圖4說明區塊402之16個樣本,該區塊被分割成各包含4個樣本之四個樣本向量404(例如,樣本向量404A、404B、404C及404D)。DSU-VLC處理器304可對樣本向量404A-404D進行寫碼,以產生各自具有一首碼及一尾碼(例如,如圖3中所說明)之碼(圖中未示)。如上文所描述,解碼器30 (如圖2B中所說明)可能夠並行對該等碼中之每一者的首碼及尾碼進行解碼,從而允許解碼器30每時脈循環解碼4個樣本。 藉由使用編碼器20將區塊402之樣本分割為群組,解碼器30在對經寫碼之群組進行解碼時可達成每時脈多個樣本之處理量。雖然圖4說明區塊402之樣本被均勻地分割為樣本向量404,但應理解,編碼器20可能均勻地或不均勻地將樣本區塊分割為N個樣本向量。在均勻分組方法中,所有N個樣本向量404將具有均等數目的樣本。另一方面,當使用不均勻分組方法時,每一樣本向量404中之樣本的數目可不同。 在一些實施例中,區塊402之分割均勻或是不均勻可基於與區塊402相關聯的寫碼模式。舉例而言,編碼器20可在區塊預測及DPCM模式中使用均勻分組方法,而在變換模式中使用不均勻分組方法。
QP 計算
在一些實施例中,速率控制器120可推導或計算當前視訊資料區塊之QP(表示為
currQP
)。用於計算QP之技術揭示於2015年4月13日申請的現今作為公開案第US 2015/0296206號予以公開之美國申請案第14/685,430號中,該申請案以全文引用的方式併入本文中。如其中所描述,速率控制器120可使用以下方程式,基於視訊資料之先前區塊(例如,按照寫碼次序的視訊資料之先前區塊)的QP推導當前區塊之QP(
currQP
):
, 其中
prevQP
為與先前區塊相關聯之QP,且
diffBits
表示
previousBlockBits
與
targetBits
之間的差,且
QpAdj
為基於
diffBits
之量值所計算的QP偏移值。
previousBlockBits
對應於用以對先前區塊進行寫碼之若干位元,而
targetBits
對應於用於對當前區塊進行編碼之目標數目個位元。 如以上方程式中可見,當時
previousBlockBits
>
targetBits
時,
diffBits
係正的,且速率控制器120藉由將偏移
QpAdj
與
prevQP
相加來推導當前區塊QP。換言之,不允許QP值在與
prevQP
進行比較時減小。當
previousBlockBits
<
targetBits
時,
diffBits
為負的,且不允許
currQP
在與
prevQP
進行比較時增大。
圖 5
展示說明基於
diffBits
之值判定
QpAdj
之例示性方法的曲線。更特定而言,圖5之圖表展示表示自0起且在方向502上增大的
diffBits
之值的水平軸。
diffBits
之值使用
k
個臨限值(例如,臨限1、臨限2、臨限3…臨限
k
)被分段成
k
+1個範圍,其中
k
為整數值。舉例而言,如圖5中所說明之「範圍1」可對應於介於0與「臨限1」之間的
diffBits
值,而「範圍2」對應於介於「臨限1」與「臨限2」之間的
diffBits
值,「範圍3」對應於介於「臨限2」與「臨限3」之間的
diffBits
值,諸如此類,直至「範圍
k
+1」對應於大於「臨限
k
」之
diffBits
值為止。
diffBits
範圍(例如,範圍1、範圍2…範圍
k
+1)中之每一者可與特定
QpAdj
值(例如,
QpAdj1
、
QpAdj2
…
QpAdjk+1
)相關聯。值
QpAdj1
至
QpAdjk+1
可隨範圍增大而增大(例如,
QpAdj1 ≤ QpAdj2 ≤ QpAdj3 … ≤ QpAdjk+1
)。就此而論,在一些實施例中,速率控制器120可計算隨
diffBits
而變之偏移值
QpAdj
,其方式為使得
QpAdj
隨著
diffBits
之量值增大而單調增大。 在另一方面,當
diffBits
<=0時(圖中未示),
diffBits
之絕對值可使用
j
個臨限值分類至
j
+1個範圍,其中
j
對應於整數值。另外,特定
QpAdj
值可與每一範圍相關聯。在一些實施例中,與
j
+1範圍中之每一者相關聯的
QpAdj
值可隨
diffBits
之絕對值增大而增大。在本文所使用的,此計算
QpAdj
之方法被稱作「預設方法」。 此外,在一些實施例中,速率控制器120可基於速率緩衝器150之狀態調整
currQP
(亦在下文稱作緩衝器150),以便防止緩衝器150之下溢及上溢。可依據緩衝器充滿度BF表示緩衝器150之狀態,該緩衝器充滿度量測當前儲存於緩衝器150中之位元數目與可儲存於緩衝器150中之位元的總數目。舉例而言,在一些實施例中,當BF超過某一臨限(例如,P
1
)時,速率控制器120可藉由將
currQP
遞增固定偏移(例如,p
1
)來調整
currQP
之值,使得currQP+=p
1
。在另一方面,當BF降低至某一臨限(例如,Q
1
)之下時,速率控制器120可藉由遞減固定偏移(例如,q
1
)來調整
currQP
,使得
currQP
-=q
1
。在一些實施例中,代替單個臨限P
1
(或Q
1
),速率控制器120可基於多個緩衝器充滿度臨限調整
currQP
,其中每一緩衝器充滿度臨限可與不同對應偏移值(針對其調整
currQP
)相關聯。 在一些實施例中,速率控制器120可基於當前視訊資料區塊是否與平坦區域或自複雜區域至平坦區域之過渡相關聯,進一步判定
currQP
值。舉例而言,平度偵測器115可判定如出現在視訊資料區塊內的自複雜區域至平坦區域之過渡,或判定視訊資料區塊包含平坦區域。回應於藉由平度偵測器115之判定,速率控制器120可將
currQP
設定為預定值。
DSC 中之 QP 更新模式
在DSC中,可基於緩衝器150之緩衝器充滿度,藉由速率控制器120使用各種模式來更新當前視訊資料區塊之QP。舉例而言,在一些實施例中,當緩衝器150之緩衝器充滿度降低至某一臨限之下或超過臨限時,代替使用預設方法來計算
QpAdj
,可藉由速率控制器120使用各種方法來計算
QpAdj
以供判定
currQP
。 緩衝器超過臨限限制 如上文所論述,在一些實施例中,速率控制器120可視緩衝器150之緩衝器充滿度之量而定,以不同方式計算
QpAdj
之值。舉例而言,在一些實施例中,速率控制器120可維持複數個臨限值
[P1
, P2
, … Pn
]
,其可對應於以單調減小次序配置的n個臨限值。另外,速率控制器120可維持複數個各別方法[方法-P
1
,方法-P
2
…方法-P
n
],其可用以計算
QpAdj
。速率控制器120可基於緩衝器150之緩衝器充滿度與複數個臨限值之間的關係選擇計算
QpAdj
之特定方法。舉例而言,在一些實施例中: If(緩衝器充滿度>=
P1
) 使用方法-P
1
計算
QpAdj
; else if (緩衝器充滿度>=
P2
) 使用方法-P
2
計算
QpAdj
; … else if(緩衝器充滿度>=
Pn
) 使用方法-P
n
計算
QpAdj
; 在一些實施例中,當
diffBits
>0時,對於
diffBits
之給定值,使用方法-P
1
計算之
QpAdj
之值>=使用方法-P
2
計算之
QpAdj
值>=…使用方法-P
n
計算之
QpAdj
值>=使用預設方法計算之
QpAdj
值。 在另一方面,當
diffBits
<0時,使用方法-P
1
計算之
QpAdj
值<=使用方法-P
2
計算之
QpAdj
值<=…使用方法-P
n
計算之
QpAdj
值<=使用預設方法計算之
QpAdj
值。換言之,根據一些實施例,如藉由速率控制器120所計算,緩衝器150愈全,
currQP
之值可愈高。
圖 6
展示說明隨
diffBits
而變之增量Qp對於預設方法及方法-P
1
的關係的曲線(例如,對應於緩衝器充滿度之臨限量)。如本文所使用,增量QP通常指代
currQP
不同於
PrevQP
之程度。舉例而言,增量QP可被定義為
。換言之,
QpAdj
可考慮增量QP之絕對值。在一些實施例中,增量QP將在
diffBits
具有正值時為正,且在
diffBits
具有負值時為負。 圖6之曲線展示對應於
diffBits
之值的x軸,及對應於增量QP之值的y軸。該曲線展示回應於當緩衝器150之緩衝器充滿度小於P
1
臨限時的對應於如藉由速率控制器120使用預設函數所判定之增量QP的第一較低曲線602。另外,曲線展示對應於如藉由速率控制器120使用方法-P
1
所判定之增量QP的第二較高曲線604,其在緩衝器150之緩衝器充滿度符合或超過P
1
臨限但低於P
2
臨限時使用。第一較低曲線602及第二較高曲線604可實質上呈步階函數之形式。 如圖6之曲線中所說明,對於大於0的
diffBits
給定值,如藉由速率控制器120使用方法-P
1
所計算之
QpAdj
的值將大於或等於如使用預設方法所計算之
QpAdj
的值。在另一方面,對於
diffBits
<=0,如使用方法-P
1
所計算之
QpAdj
的值(其為增量QP之絕對值)將小於使用預設方法所計算之
QpAdj
的值。換言之,對於
diffBits
之給定值,相比在緩衝器150之緩衝器充滿度未超出P
1
時,增量QP(且因此currQP)在緩衝器充滿度超過臨限量P
1
時將通常較高。
緩衝器降低至臨限限制之下
在一些實施例中,速率控制器120可基於緩衝器150之緩衝器充滿度低於一或多個臨限值,使用不同方法計算
QpAdj
之值(且因此
currQP
)。舉例而言,在一些實施例中,速率控制器120可維持按單調遞增次序配置之m個臨限值[
Q1
, Q2
, … Qm
]及藉由速率控制器120用以計算
QpAdj
之各別方法[方法-Q
1
、方法-Q
2
、…方法-Q
m
]。舉例而言,在一些實施例中,速率控制器120可基於以下選擇用於計算
QpAdj
之特定方法: If(緩衝器充滿度<=
Q1
) 使用方法-Q
1
計算
QpAdj
; else if(緩衝器充滿度<=
Q2
) 使用方法-Q
2
計算
QpAdj
; … else if(緩衝器充滿度<=
Qm
) 使用方法-Q
m
計算
QpAdj
; 在一些實施例中,對於
diffBits
之給定值>
0
,使用預設方法所計算之
QpAdj
值>=使用方法
-Q1
所計算之
QpAdj
值>=…使用方法
-Q2
所計算之
QpAdj
值>=使用方法
-Qm
所計算之
QpAdj
值。在另一方面,對於
diffBits
之給定值<=
0
,使用預設方法所計算之
QpAdj
值<=使用方法
-Q1
所計算之
QpAdj
值<=…使用方法
-Q2
所計算之
QpAdj
值<=使用方法
-Qm
所計算之
QpAdj
值。換言之,根據一些實施例,緩衝器150之緩衝器充滿度愈小,如藉由速率控制器120所計算,
currQP
之值可愈小。
圖 7
展示根據一些實施例的說明隨
diffBits
而變之增量Qp對於預設方法、方法-Q1及方法-Q2的關係的曲線。如同圖6中,圖7中所說明之曲線展示對應於
diffBits
之值的x軸及對應於增量QP之值的y軸。曲線展示對應於如使用預設函數判定之增量QP的第一較高曲線702(說明為實線),其在緩衝器150之緩衝器充滿度大於Q1臨限時使用。曲線進一步展示第二中間曲線704(說明為虛線)及第三較低曲線706(說明為點線),其分別對應於使用方法-Q1及方法-Q2判定之增量QP。如上文所論述,速率控制器120可在緩衝器150之緩衝器充滿度介於Q1臨限與Q2臨限之間時使用方法-Q1計算
QpAdj
(且因此增量QP)。速率控制器可在緩衝器充滿度介於Q2臨限與Q3臨限之間時使用方法Q2計算增量QP。類似於圖6,曲線702、704及706中之每一者可實質上呈步階函數之形狀。 如圖7之曲線中所說明,對於大於0的
diffBits
之給定值,如藉由速率控制器120使用方法-Q
1
所計算之
QpAdj
的值將小於或等於使用預設方法所計算之
QpAdj
的值,且大於或等於使用方法-Q
2
所計算之
QpAdj
的值。在另一方面,對於
diffBits
<=0,如使用方法-Q
1
所計算之
QpAdj
的值(其為增量QP之絕對值)將小於或等於如使用預設方法所計算之
QpAdj
的值,且大於或等於使用方法-Q
2
所計算之
QpAdj
的值。換言之,對於
diffBits
之給定值,相比在緩衝器150之緩衝器充滿度高於臨限量Q1時,增量QP(且因此currQP)在緩衝器充滿度低於臨限量Q1時將通常較高。
緩衝器充滿度計算
在一些實施例中,為能夠基於緩衝器150之狀態調整當前視訊資料區塊之QP值(
currQP
),可能需要速率控制器120能夠判定緩衝器150之精確緩衝器充滿度(BF)值。在一些實施例中,可在編碼器20對視訊資料區塊進行編碼時調整緩衝器150中可用的最大數目個位元。舉例而言,緩衝器150之大小可在圖塊中之一些固定數目個區塊進行寫碼之後以恆定速率線性減小,以此方式使得在圖塊末端,緩衝器150之大小(例如,在圖塊末端可包含於緩衝器150中之最大數目個位元)可表示為
maxBufferBitsAtSliceEnd
。就此而論,在視訊資料之給定圖塊末端,緩衝器150之BF在
BufferCurrentSize
=
maxBufferBitsAtSliceEnd
的情況下係100%的。 緩衝器150之大小在特定時間下可表示為
bufAdjSize
,且緩衝器150之大小在圖塊中之視訊資料區塊進行寫碼時減小的速率可表示為
bufferRateReductionPerBlock
。就此而論,速率控制器120可將緩衝器150之
BF
計算為,
(1) 其中,
bufferAdjSize
=
BufferMaxSize
-
偏移
,
偏移
=((
bufferRateReductionPerBlock
)*(
numBlocksCoded
-
numBlocksTh
))。如本文所使用,
numBlocksCoded
可表示到目前為止圖塊中藉由編碼器20寫碼之區塊的數目,且
numBlocksTh
可對應於可藉由編碼器20組態的臨限參數。 在一些實施例中,緩衝器150可根據經寫碼視訊資料區塊線性調整其大小。在一些實施例中,緩衝器150根據區塊調整其大小的速率可計算為
b ufferRateReductionPerBlock
=
diffSize/
(
TotalnumberofBlocksInSlice
-
numBlocksTh
),其中
diffSize
=
BufferMaxSize
-
maxBufferBitsAtSliceEnd
,或緩衝器150之最大大小與緩衝器150在圖塊末端之最大大小之間的總差2015年8月6日申請的美國申請案第14/820,404號(其以全文引用的方式併入本文中)描述一種經描述用以計算緩衝器充滿度(BF)之方法。 在一些實施例中,速率控制器210可基於上文方程式(1)經由硬體及/或軟體計算緩衝器150之緩衝器充滿度。然而,方程式(1)包括除法運算,方程式(1)中之分母值取決於當前區塊在圖塊中之位置而改變,使得計算可能昂貴。2016年3月8日申請的美國申請案第62/305,314號中提議一種用以計算緩衝器充滿度之替代性方法,該申請案以全文引用的方式併入本文中。在一些實施例中,偏移值在方程式(1)中自分母移動至分子,使得分母自
bufAdjSize
變化成
BufferMaxSize
。因為
BufferMaxSize
不管當前區塊在圖塊中之位置而保持恆定,所以所得方程式可對於速率控制器120而言更加易於計算。就此而論,方程式(1)可修改為
方程式(2)中之偏移值可如上文所描述以相同方式計算。由於方程式(2)中之分母在整個圖塊上為恆定值,因此速率控制器120可在方程式(2)中預計算分母,該分母可儲存為編解碼器之參數集(例如,作為查找表(LUT)或其他資料結構)。
設定最大 QP 值
在一些實施例中,速率控制器120可在計算當前視訊資料區塊之QP值時強加最大QP值。最大QP值(亦被稱作臨限QP值)可充當指示對視訊資料進行寫碼時的量化損耗或失真之可接受量的上限。舉例而言,在一些實施例中,速率控制器120可使用上文描述之技術中的任一者計算當前視訊資料區塊之
currQP
值。速率控制器120可接著將所計算之
currQP
與最大QP值進行比較。若所計算之
currQP
超過最大QP值,則速率控制器120可將
currQP
設定為小於或等於最大QP值。 在一些實施例中,藉由速率控制器120強加之最大QP可設定成預定義固定值。然而,將最大QP設定成單個固定值可能並非對所有類型之視訊內容起到有效作用。在一些實施例中,速率控制器120強加固定最大QP值可能在不必要高QP值時人工地抬升視訊資料區塊之QP值。舉例而言,在當緩衝器150接近於空的情況下,可能需要速率控制器120強加較低的最大QP值。此可減少歸因於量化之損耗或失真,且藉由增大編碼器20用以對視訊資料區塊進行寫碼之位元的數目而防止緩衝器150排空。在另一方面,若緩衝器150接近於滿,則可需要較高的經強加之最大QP值,以便藉由減少編碼器20用以對視訊資料區塊進行寫碼之位元的數目而防止潛在的上溢。 在一些實施例中,緩衝器150接收且儲存由編碼器20編碼之經寫碼視訊資料,且將經寫碼視訊資料輸出至視訊資料位元串流。就此而論,在任何給定時間,緩衝器150之若干位元可由經寫碼視訊資料(例如,已藉由編碼器20寫碼但尚未輸出至視訊資料位元串流的視訊資料)佔據。如上文所論述,緩衝器150之緩衝器充滿度可指示緩衝器150中當前所佔據之位元的數目與緩衝器150之當前容量之比。緩衝器150之緩衝器充滿度可基於由編碼器20用以對先前視訊資料區塊進行寫碼的若干位元與儲存於緩衝器150中之經寫碼視訊資料被輸出至位元串流的速率之間的關係而變化。 在一些實施例中,編碼器20使用固定速率編解碼器對視訊資料進行寫碼,從而緩衝器150經組態以特定(例如,恆定)速率輸出視訊資料之位元以形成視訊資料位元串流。舉例而言,在編碼器能夠對視訊資料區塊進行寫碼的時段期間,緩衝器150可經組態將固定數目個位元輸出至位元串流。因此,若編碼器20平均使用多於固定數目個位元對視訊資料區塊進行寫碼,則緩衝器150可開始填充(例如,增大緩衝器充滿度)且可能上溢。在另一方面,若編碼器20平均使用小於固定數目個位元對視訊資料區塊進行寫碼,則緩衝器150可減小緩衝器充滿度且可能排空。 在一些實施例中,速率控制器120可經組態以「在運行中」調整最大QP值(例如,在操作過程中)。藉由能夠在操作過程中動態地調整最大QP值,編碼器20可能夠使用較小的平均QP值對視訊資料進行寫碼(經由量化產生較小損耗),同時保證速率緩衝器150不會上溢或排空。
圖 8A
說明具有低複雜性影像資料及高複雜性影像資料之混合的例示性影像800。舉例而言,如
圖 8A
中所說明,影像800具有實質上平坦之背景802 (低複雜性)及複雜前景804 (高複雜性)。
圖 8B
說明QP值映射810,其使用固定最大QP值展示可藉由編碼器20用於對影像800中之不同空間區域進行寫碼的QP值。QP值映射810可含有對應於影像800之空間區域的較亮區域812,其中編碼器20使用較高QP值對與彼等區域相關聯之視訊資料區塊進行寫碼。另外,QP值映射810之較暗區域814對應於其中編碼器20使用較低QP值對影像800之區域進行寫碼的影像800之空間區域。舉例而言,QP值映射810之較亮區域812可對應於影像800之複雜前景804,且可藉由編碼器20使用較高QP值寫碼,導致大量的量化損耗。在另一方面,QP值映射810之較暗區域814可對應於影像800的實質上平坦之背景802,其中編碼器20使用較低QP值對視訊資料進行寫碼。
圖 8C
說明另一QP值映射820,其展示可藉由編碼器20用於對影像800之不同空間區域進行寫碼的QP值,其中編碼器20能夠動態地調整最大QP值。如圖8C中所說明,藉由動態地調整最大QP值,該影像上的平均QP值可降低,從而可能改良影像品質且減少失真。舉例而言,相比在使用固定最大QP值時(例如,如圖8B中所說明),藉由編碼器20用於對影像之區域822(其對應於QP值映射810之區域812)進行寫碼的QP值可在編碼器20能夠動態地調整最大QP值時較低。 在一些實施例中,最大QP可指僅僅對應於明度道之值,或可指明度道及色度道兩者。替代地,最大QP可指主要最大QP值,其中可自該值計算或推斷各別明度及色度最大QP值(例如,自查找表(LUT)或其他資料結構)。 在一些實施例中,速率控制器120可基於緩衝器150中之若干位元調整最大QP(例如,經量測為緩衝器150之緩衝器充滿度)。在一些實施例中,速率控制器120可基於經先前寫碼視訊資料區塊之複雜性資訊(例如,複雜性值)計算最大QP。舉例而言,若經先前寫碼視訊資料區塊具有高複雜性值,則速率控制器120可將最大QP值調整為較高值,從而可使用較少位元對後續視訊資料區塊進行寫碼。在另一方面,若經先前寫碼視訊資料區塊具有低複雜性值,則速率控制器120可將最大QP值調整為較低值,從而可使用較大數目個位元對後續視訊資料區塊進行寫碼。在一些實施例中,速率控制器120可基於一或多個經先前寫碼視訊資料區塊之複雜性值是否符合一或多個臨限值的一判定,判定調整最大QP值以供對當前視訊資料區塊進行寫碼的量。在一些實施例中,複雜性資訊可藉由平度偵測器115計算。 在一些實施例中,可使用變換(例如,Hadamard、DCT及/或其類似者)自一視訊資料區塊推導該區塊的複雜性值。在一些實施例中,可基於對區塊進行寫碼所耗費的位元之數目及區塊之相關聯QP值及模式資訊(例如,用以對區塊進行寫碼之寫碼模式)推導該區塊的複雜性值。 在一些實施例中,可自緩衝器150之緩衝器充滿度推斷一或多個經先前寫碼視訊資料區塊的複雜性值。舉例而言,在一些實施例中,當緩衝器150之緩衝器充滿度很高(例如,緩衝器150幾乎為滿)時,可推斷該一或多個經先前寫碼區塊具有高複雜性值。在另一方面,當緩衝器150之緩衝器充滿度很低時,可推斷該一或多個經先前寫碼區塊具有低複雜性值。 在一些實施例中,速率控制器120可使用緩衝器150之狀態(例如,緩衝器充滿度)及經先前寫碼區塊之複雜性值兩者來調整最大QP值。 根據一些實施例,
maxFixedQp
可表示藉由編碼器20維持之預設最大QP值(例如,預定值),而
maxCalQp
可表示經調整最大QP值(例如,藉由速率控制器120調整)。δ指示用以調整
maxFixedQp
以判定
maxCalQp
之偏移值(亦被稱作調整值)。亦即,經調整最大QP可計算為
。在一些實施例中,僅基於緩衝器150之緩衝器充滿度(BF)判定δ。在另一實施中,速率控制器120可組合BF及一或多個經先前寫碼區塊之複雜性值兩者以推導δ偏移值。 在一些實施例中,當BF介於第一較小臨限
與第二較大臨限
,使得
時,速率控制器120可使用預設非零正偏移值
來計算
。舉例而言,代替使用較高的
maxFixedQp
值,速率控制器120將
maxFixedQp
減小一固定偏移以判定較低值
,其可用以對圖塊中之連續區塊進行編碼(例如,用以對圖塊中之連續區塊進行編碼的QP值可藉由較低
而非較高
maxFixedQp
來限制。 如上文所論述,緩衝器150之緩衝器充滿度可受藉由編碼器20用以對視訊資料區塊進行寫碼的位元之數目影響。舉例而言,當編碼器20正使用平均數目個位元對視訊資料區塊進行寫碼時,緩衝器150之充滿度可保持實質上恆定。在另一方面,當編碼器20正使用小於平均數目個位元對視訊資料區塊進行寫碼時,緩衝器150之充滿度可開始減小。當編碼器20正使用多於平均數目個位元對視訊資料區塊進行寫碼時,緩衝器150之充滿度可增大。 在一些實施例中,當所計算之
足夠低,從而編碼器20使用大於平均數目個位元對連續視訊資料區塊中之視覺資訊(例如,歸因於連續區塊中之紋理化/複雜視覺資訊)進行有效寫碼時,緩衝器150之緩衝器充滿度可增大超出臨限
。當緩衝器充滿度超過臨限值
時,速率控制器120可減小δ
default
之值,且使用經減小之偏移值推導新的
,以供編碼器20對下一連續視訊資料區塊進行寫碼。就此而論,
maxCalQp
將變得較高,從而允許編碼器20用較高QP值對視訊資料區塊進行編碼。若此新的最大值導致經進一步增大之緩衝器充滿度,則經減小之偏移值進一步減小。速率控制器120可重複連續減小偏移值且計算
maxCalQp
直至緩衝器充滿度小於預定臨限值的步驟,以便防止緩衝器150溢位。在某些情況下,可允許負偏移以防止緩衝器上溢。 在另一方面,當
導致緩衝器充滿度減小超出臨限
時(例如,歸因於
maxCalQp
足夠高使得編碼器20使用小於平均數目個位元對連續視訊資料區塊中之視覺資訊進行寫碼),速率控制器120可增大偏移值,從而產生較低
maxCalQp
值。較低
maxCalQp
值可導致編碼器20使用較低QP值(且因此平均使用較高數目個位元)對視訊資料區塊進行寫碼。在一些實施例中,偏移值可在緩衝器充滿度減小為低於臨限
時不變。
圖 9
展示用於針對不同範圍之緩衝器充滿度(BF)挑選偏移增量值的例示性方案之曲線。在一些實施例中,速率控制器120可基於複數個不同緩衝器充滿度臨限值調整用於判定
maxCalQp
之偏移δ。圖9說明對應於緩衝器150之緩衝器充滿度值的水平軸,其範圍介於軸線左側上的最小值(Min BF)至軸線右側上的最大值(Max BF)。複數個臨限值經定位沿著水平軸,包括n個較小緩衝器值[
S1
, S2
, … Sn
]及及個較大緩衝器值[
L1
, L2
, … Lm
]。臨限值經配置使得
且
。 每一對鄰近臨限值[
S1
, S2
, … Sn
]及[
L1
, L2
, … Lm
]可界定與可藉由速率控制器120使用以供判定
maxCalQp
之特定偏移值相關聯的緩衝器充滿度範圍。舉例而言,介於
與
Lm
之間的緩衝器充滿度值之範圍可與預設偏移值
δ default
相關聯。由鄰近較小臨限[
S1
, S2
, … Sn
]界定之每一範圍可與各別偏移值
相關聯,其中
。舉例而言,如圖9中所說明,偏移值
與介於Min BF與
S1
之間的BF值範圍相關聯,而偏移值
與介於
Sn-1
與
Sn
之間的BF值範圍相關聯。 另外,由鄰近較大臨限界定之每一範圍[
L1
, L2
, … Lm
]可與各別偏移值
相關聯,其中
。舉例而言,如圖9中所說明,偏移值
與介於
L1
與Max BF之間的BF值範圍相關聯,而偏移值
與介於
Lm
與
Lm-1
之間的BF值範圍相關聯。 在一些實施例中,速率控制器120可基於以下偽碼,計算用於基於緩衝器150之緩衝器充滿度
BF
調整最大QP之偏移值
δ
:
δ=δdefault
; if(BF >=
L1
)
; else if(BF >=
L2
)
; … else if(BF >=
Lm
)
; if(BF <=
)
; else if (BF <=
)
; … else if (BF <=
)
; 如上文所論述,速率控制器120可使用偏移值
δ
將最大QP值調整為
。在上文實施中,「小於及等於」之指示可精確地由「小於」替換。類似地,「大於及等於」之指示可精確地由「大於」替換。在一些實施例中,
n
及
m
可相同或可不相同。 就此而論,如上文圖9中所描述,當緩衝器150之緩衝器充滿度低(例如,低於
)時,速率控制器120可將偏移
δ
之值設定為高於
δdefault
之值,從而產生較低
maxCalQp
。就此而論,編碼器20可使用較大數目個位元對連續視訊資料區塊進行寫碼,從而可能增大緩衝器150之充滿度。 在另一方面,當緩衝器150之緩衝器充滿度高(例如,超過
Lm
)時,速率控制器120可將偏移
δ
之值設定為低於
δdefault
之值,從而產生較高
maxCalQp
。就此而論,編碼器20可使用較小數目個位元對連續視訊資料區塊進行寫碼,從而可能減小緩衝器150之充滿度。 [在一些實施例中,緩衝器臨限[
L1
, L2
, … Lm
]及/或[
S1
, S2
, … Sn
]可針對明度及色度分量兩者相同。在另一實施中,其可針對明度及色度分量不同。在另一實例中,每一緩衝器臨限之偏移值
δ
可針對明度及色度分量為相同或不同的。 臨限值[
L1
, L2
, … Lm
]可能為或可能並非為如上文所論述用以判定QP模式[
Q1
, Q2
, … Qm
]的相同的
m
個臨限值。類似地,臨限值[
S1
, S2
, … Sn
]可能為或可能並非為用以判定QP模式[
P1
, P2
, … Pn
]的相同的
n
個臨限值。 在一些實施例中,代替基於一或多個緩衝器充滿度臨限值判定用於調整最大QP之偏移增量值,速率控制器120可基於預定函數或方程式自緩衝器150之當前緩衝器充滿度(BF)判定偏移增量值。 在一些實施例中,可週期性地判定用以調整最大QP之偏移增量值(例如,在某些時間間隔,在已對某一數目個區塊進行寫碼之後,及/或其類似者)。舉例而言,速率控制器120可基於緩衝器150之當前緩衝器充滿度,判定用於調整有待藉由編碼器20寫碼之每一視訊資料區塊之最大QP的偏移增量值。 此處揭示之技術可僅在編碼器20處應用。舉例而言,編碼器20可判定用於調整最大QP之偏移值,且將經判定偏移發信至解碼器30(例如,作為經由連結16傳輸至解碼器30的經寫碼視訊資料位元串流之部分)。在另一替代例中,此處提議之技術可應用於編碼器20及解碼器30兩者。在一些實施例中,其中本文中所提議之技術在應用於編碼器20及解碼器30兩者之後,編碼器20無需將偏移值發信至解碼器30。
實例實施例 圖 10
說明用於針對不同範圍之緩衝器充滿度(BF)挑選偏移增量值的例示性方案之曲線。圖10中所說明之曲線類似於圖9中所說明的,其中緩衝器150之緩衝器充滿度值展示於範圍介於軸線左側上的最小BF(Min BF)至軸線右側上的最大BF(Max BF)的水平軸上。在一些實施例中,表示於軸線上的BF值可對應於百分比值。舉例而言,Min BF可對應於0%,而Max BF可對應於100%。另外,如在圖9中,圖10之曲線展示經定位沿著水平軸的複數個臨限值。在圖10中所說明之方案中,速率控制器120可維持
n
=2個較小臨限值[
S1
, S2
],其具有值[12, 24](展示於水平軸左側上),及
m
=2個較大臨限值[
L1
, L2
],其具有值[88, 76](展示於水平軸右側上)。 沿表示緩衝器充滿度之水平軸的每一對鄰近臨限值可對應於可藉由速率控制器120使用以供調整最大QP的特定偏移值。舉例而言,當緩衝器150之緩衝器充滿度介於24%與76%之間時,速率控制器120可將最大QP調整一偏移
δdefault
=4。當緩衝器充滿度介於76%與88%之間時,偏移可為
。當緩衝器充滿度高於88%時,速率控制器120可使用偏移
。 在另一方面,在圖9中所說明之實施例中,偏移值可並非隨緩衝器充滿度減小低於臨限值24而減小。舉例而言,可分別對應於低於12及介於12與24之間的緩衝器充滿度範圍的偏移
及
兩者可均對應於值4。臨限[
L1
, L2
]及[
S1
, S2
]可針對明度道及色度道兩者為相同的。
基於圖像參數調整至最大 QP
在一些實施例中,速率控制器120可基於與待寫碼視訊資料相關聯之一或多個圖像參數(例如,源位元深度、壓縮位元速率及/或其類似者)進一步調整最大QP。舉例而言,在一些實施例中,用於視訊資料之源位元深度的預設值可為(例如)每分量8個位元。在此情況下,最大QP可如下進行調整:
其中參數a可經調諧(例如,參數a可藉由速率控制器120修改)。舉例而言,在進階DSC(A-DSC)中,可使用預設值a=2。 應理解,在其他實施例中,可基於源位元深度之預設值的變化而修改上文用於最大QP之方程式。舉例而言,方程式可如下進行修改,其中參數bd可指示預設位元深度值(例如,每分量之預設位元數目)。
在一些實施例中,速率控制器120可基於壓縮位元速率值調整最大QP。在其他實施例中,速率控制器120可基於位元深度或壓縮位元速率中之至少一者調整最大QP。 在一些實施例中,預設壓縮位元速率可為6bpp(8bpc源內容4:1壓縮)。在A-DSC編解碼器中,可使用m個分率位元定義壓縮位元速率,意謂著壓縮位元速率6bpp將以內部方式儲存於編解碼器中作為
。舉例而言,當m=4時,經內部儲存之值可為6<<4=96。 在一些實施例中,在假定預設壓縮位元速率等於6bpp的情況下,對於具有低於6bpp之值的壓縮位元速率,速率控制器120可如下調整最大QP:
相反地,對於高於6bpp之位元速率,速率控制器120可如下調整最大QP:
其中
b0
及
b1
可對應於用於按比例調整共計為
maxQp
之偏移的預定固定值。在一些實施例中,
m
、
b0
及
b1
之值可為
m
=4、
b0
=3、
b1
=2。應理解,在其他實施例中,可基於預設壓縮位元速率值之變化修改上文用於最大QP之方程式。 在源位元深度及壓縮位元速率兩者不同於其預設值(例如,分別為8bpc及6bpp)的一些實施例中,速率控制器120可如下將最大QP調整兩次(可無需按次序): · 基於源位元深度修改最大QP。 · 基於壓縮位元速率進一步修改最大QP。 在一些實施例中,在基於圖像參數調整最大QP之後,藉由寫碼器使用先前章節中描述之技術(例如,基於緩衝器150之緩衝器充滿度),速率控制器120可在運行中進一步動態地調整最大QP。舉例而言,在一些實施例中,速率控制器120可最初基於諸如源位元深度及壓縮位元速率之圖像參數調整最大QP值。可出於在運行中基於緩衝器150之緩衝器充滿度調整最大QP值之目的,將經調整最大QP值用作
maxFixedQp
值。
過程流程 圖 11
展示用於調整對視訊資料區塊進行寫碼之一最大QP值的例示性程序之流程圖。在區塊1102處,速率控制器120可判定預設最大QP值。在一些實施例中,最大QP值可為預定值。 在區塊1104處,速率控制器120可基於一或多個圖像參數調整最大QP值。在一些實施例中,圖像參數可對應於源位元深度或壓縮位元速率。在一些實施例中,速率控制器120可首先基於源位元深度,且接著基於壓縮位元速率調整最大QP值。在一些實施例中,速率控制器120可僅基於源位元深度或僅基於壓縮位元速率調整最大QP值。在一些實施例中,若源位元深度或壓縮位元速率偏離預設值,則速率控制器120僅僅基於源位元深度或壓縮位元速率調整最大QP值。在一些實施例中,經調整最大QP值可被稱為
maxFixedQp
。 在區塊1106處,速率控制器120可接收緩衝器150之緩衝器充滿度之量的指示。在區塊1108處,速率控制器可基於緩衝器之緩衝器充滿度判定最大QP偏移。在一些實施例中,速率控制器120將緩衝器充滿度值與一或多個臨限值進行比較以判定偏移值。舉例而言,該一或多個臨限值可界定一或多個緩衝器充滿度範圍,其中不同偏移值可與不同緩衝器充滿度範圍相關聯。在區塊1110處,速率控制器120可基於經調整最大QP(例如,如在區塊1104處判定之
maxFixedQp
)及經判定偏移值而判定最大QP值。舉例而言,速率控制器120可判定最大QP值
maxCalQp
作為
maxFixedQp
與經判定偏移值之間的差。經判定最大QP值隨後由編碼器20用於對視訊資料區塊進行寫碼。 在一些實施例中,區塊1106至1110可隨編碼器20對連續視訊資料區塊進行寫碼而重複。舉例而言,在一些實施例中,速率控制器120可在週期性間隔中(例如,在某些時間間隔中,或在已對某一數目個區塊進行寫碼之後)接收緩衝器充滿度之指示(區塊1106)。速率控制器120可接著判定有待藉由編碼器20用於對後續視訊資料區塊進行寫碼之新偏移及最大QP值(區塊1108、1110)。此迴路可重複,直至編碼器20已對所有視訊資料區塊進行寫碼為止。 藉由基於緩衝器充滿度動態地調整用以對視訊資料區塊進行寫碼的最大QP值,速率控制器120可能限制用以對視訊資料區塊進行寫碼之最大QP值,同時防止緩衝器150排空或溢位。舉例而言,藉由在緩衝器充滿度低(例如,低於某些臨限值)時增大偏移值(且因此減小最大QP值),編碼器20可相比其已另外使用的QP值,使用較小QP值對視訊資料區塊進行編碼,從而減少量化損耗且防止緩衝器排空。 可使用多種不同技術及技藝中之任何者來表示本文中揭示之資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合表示在整個以上描述中可參考之資料、指令、命令、資訊、信號、位元、符號及晶片。 結合本文中所揭示之實施例而描述之各種說明性邏輯區塊及演算法步驟可被實施為電子硬體、電腦軟體或兩者之組合。為了清晰地說明硬體與軟體之此可互換性,上文已大體按其功能性描述了各種說明性組件、區塊及步驟。此功能性被實施為硬體抑或軟體取決於特定應用及強加於整個系統上之設計約束。熟習此項技術者可針對每一特定應用以不同方式實施所描述之功能性,但此等實施決策不應被解譯為致使對本發明之範疇的偏離。 本文所描述之技術可以硬體、軟體、韌體或其任何組合來實施。此類技術可以多種器件中之任一者實施,諸如,通用電腦、無線通信器件手機、或積體電路器件,該等器件具有包括無線通信器件手機、汽車的、電氣設備、可穿戴的及/或其他器件中之應用的多個用途。可將描述為器件或組件之任何特徵一起實施於整合式邏輯器件中或分開來實施為離散但可互操作之邏輯器件。若以軟體實施,則該等技術可至少部分由包含程式碼之電腦可讀資料儲存媒體實現,該程式碼包括在經執行時執行上文所描述之方法中之一或多者的指令。電腦可讀資料儲存媒體可形成電腦程式產品之部分,電腦程式產品可包括封裝材料。電腦可讀媒體可包含記憶體或資料儲存媒體,諸如,隨機存取記憶體(RAM),諸如,同步動態隨機存取記憶體(SDRAM)、唯讀記憶體(ROM)、非揮發性隨機存取記憶體(NVRAM)、電可抹除可程式化唯讀記憶體(EEPROM)、快閃記憶體、磁性或光學資料儲存媒體,及其類似者。該等技術另外或替代地可至少部分由電腦可讀通信媒體實現,該電腦可讀通信媒體攜載或傳達呈指令或資料結構之形式且可由電腦存取、讀取及/或執行的程式碼,諸如,傳播之信號或波。 程式碼可由可包括一或多個處理器之處理器執行,諸如,一或多個數位信號處理器(DSP)、通用微處理器、特殊應用積體電路(ASIC)、場可程式化邏輯陣列(FPGA)或其他等效積體或離散邏輯電路。此處理器可經組態以執行本發明中所描述之技術中之任一者。通用處理器可為微處理器;但在替代方案中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可實施為計算器件之組合,(例如)DSP與微處理器之組合,複數個微處理器,一或多個微處理器結合DSP核心,或任何其他此組態。因此,如本文中所使用之術語「處理器」可指代前述結構、前述結構之任何組合或適合於實施本文中描述之技術的任何其他結構或裝置中之任一者。此外,在一些態樣中,本文中所描述之功能性可提供於經組態用於編碼及解碼之專用軟體或硬體內,或併入於組合式視訊編碼器-解碼器(編碼解碼器)中。又,該等技術可完全實施於一或多個電路或邏輯元件中。 本發明之技術可在多種器件或裝置中實施,該等器件或裝置包含無線手機、積體電路(IC)或IC集合(例如,晶片組)。在本發明中描述各種組件或單元以強調經組態以執行所揭示技術之器件的功能態樣,但未必需要藉由不同硬體單元實現。實情為,如上文所描述,可將各種單元組合於編解碼器硬體單元中,或藉由互操作性硬體單元(包括如上文所描述之一或多個處理器)之集合而結合合適軟體及/或韌體來提供該等單元。 雖然已結合各種不同實施例描述了前文,但可在不脫離本發明之教示的情況下將來自一個實施例之特徵或元件與其他實施例組合。然而,各別實施例之間的特徵之組合不必限於此。已描述了本發明之各種實施例。此等及其他實施例係在以下申請專利範圍之範疇內。