JP2019512970A - ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法 - Google Patents

ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法 Download PDF

Info

Publication number
JP2019512970A
JP2019512970A JP2018549570A JP2018549570A JP2019512970A JP 2019512970 A JP2019512970 A JP 2019512970A JP 2018549570 A JP2018549570 A JP 2018549570A JP 2018549570 A JP2018549570 A JP 2018549570A JP 2019512970 A JP2019512970 A JP 2019512970A
Authority
JP
Japan
Prior art keywords
value
buffer
fullness
adjustment value
video
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2018549570A
Other languages
English (en)
Other versions
JP2019512970A5 (ja
Inventor
ティルマライ、ビジャヤラガバン
ヤコブソン、ナタン・ハイム
ジョーシー、ラジャン・ラクスマン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2019512970A publication Critical patent/JP2019512970A/ja
Publication of JP2019512970A5 publication Critical patent/JP2019512970A5/ja
Pending legal-status Critical Current

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/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/124Quantisation
    • 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/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/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/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter

Landscapes

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

Abstract

複数のビデオサンプルを有するビデオ情報をコーディングするための方法および装置が開示される。ビデオデータのためのブロックは、各ブロックについての量子化パラメータ(QP)に基づいてエンコーダによってコーディングされる。各ブロックに使用されるQPは、最大QP値によって制限され得る。バッファユニット中で現在占有されているビット数と、バッファユニットの現在の容量との間の比を示すバッファユニットのバッファフルネスが決定され得る。エンコーダは、決定されたバッファフルネスに基づいて、最大QPのための調整値を決定し得る。ビデオデータのブロックをコーディングするための最大QPを動的に調整することによって、量子化による歪みは、バッファユニットがオーバーフローすることまたは空になることを防ぎながら低減され得る。【選択図】図11

Description

[0001]本開示は、ビデオコーディングおよび圧縮の分野に関し、具体的には、ディスプレイリンクを介した送信のためのビデオの圧縮に関する。
[0002]デジタルビデオ機能は、デジタルテレビ、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップモニタ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲーム機、セルラまたは衛星無線電話、ビデオ電話会議デバイス、等を含む、幅広い範囲のディスプレイに組み込まれることができる。ディスプレイリンクは、適切なソースデバイスにディスプレイを接続するために使用される。ディスプレイリンクの帯域幅要件は、ディスプレイの解像度に比例し、そのため、高解像度ディスプレイは、広帯域幅ディスプレイリンクを要求する。いくつかのディスプレイリンクは、高解像度ディスプレイをサポートする帯域幅を有さない。より小さい帯域幅のディスプレイリンクが高解像度ディスプレイにデジタルビデオを提供するために使用されることができるように帯域幅要件を緩和するために、ビデオ圧縮が使用され得る。
[0003]本開示のシステム、方法、デバイスは各々、いくつかの革新的な態様を有し、それらのどの1つをとっても、単独で本明細書で開示される所望の属性に対して責任を担うものではない。
[0004]一態様では、ビデオ情報のディスプレイストリーム圧縮における最大量子化パラメータ(QP)値を決定するための方法が提供される。方法は、ビデオ情報のブロックをコーディングするために使用されるバッファユニットにおいて利用可能なビット数を決定することを備える。方法はさらに、ビデオ情報の前のブロックをコーディングするのに費やされたビット数に基づいて導かれた複雑度値を決定することを備える。方法はさらに、バッファユニットにおいて利用可能なビット数に基づいて、および/または決定された複雑度値に基づいて、現在のブロックについての最大QP値のための調整値を決定することを備える。
[0005]いくつかの実施形態では、ビデオ情報をコーディングするための装置が提供される。装置は、コーディングされたビデオ情報を記憶するように構成されたバッファユニットを備える。装置はさらに、バッファユニットのバッファフルネス(buffer fullness:バッファ充足率)を決定するように構成されたハードウェアプロセッサを備え、該バッファフルネスは、バッファユニット中で現在占有されているビット数と、バッファユニットの現在の容量との間の比を示す。ハードウェアプロセッサはさらに、初期最大量子化パラメータ(QP)値を決定するように構成される。ハードウェアプロセッサはさらに、バッファユニットの決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定するように構成される。ハードウェアプロセッサはさらに、決定された調整値を使用して初期最大QP値を調整するように構成され、ここにおいて、該調整された最大QP値は、ビデオ情報の現在のブロックをコーディングするために使用され得る最大QP値を指定する。ハードウェアプロセッサはさらに、ディスプレイまたは送信のためにビデオデータビットストリームを形成するためのQP値に基づいて、該QP値が調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の現在のブロックをコーディングするように構成される。
[0006]いくつかの実施形態では、ビデオ情報をコーディングするための方法が提供される。方法は、コーディングされたビデオ情報を記憶するように構成されたバッファユニットのバッファフルネスを決定することを備え、該バッファフルネスは、バッファユニット中で現在占有されているビット数と、バッファユニットの現在の容量との間の比を示す。方法はさらに、初期最大量子化パラメータ(QP)値を決定することを備える。方法はさらに、バッファユニットの決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定することを備える。方法はさらに、決定された調整値を使用して初期最大QP値を調整することを備え、ここにおいて、該調整された最大QP値は、ビデオ情報の現在のブロックをコーディングするために使用され得る最大QP値を指定する。方法はさらに、ディスプレイまたは送信のためにビデオデータビットストリームを形成するためのQP値に基づいて、該QP値が調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の現在のブロックをコーディングすることを備える。
[0007]いくつかの実施形態では、ビデオ情報をコーディングするための装置が提供される。装置は、コーディングされたビデオ情報を記憶するためのバッファ手段を備える。装置はさらに、バッファ手段のバッファフルネスを決定するための手段を備え、該バッファフルネスは、バッファ手段中で現在占有されているビット数と、バッファ手段の現在の容量との間の比を示す。装置はさらに、初期最大量子化パラメータ(QP)値を決定するための手段を備える。装置はさらに、バッファ手段の決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定するための手段を備える。装置はさらに、決定された調整値を使用して初期最大QP値を調整するための手段を備え、ここにおいて、該調整された最大QP値は、ビデオ情報の現在のブロックをコーディングするために使用され得る最大QP値を指定する。装置はさらに、ディスプレイまたは送信のためにビデオデータビットストリームを形成するためのQP値に基づいて、該QP値が調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の現在のブロックをコーディングするための手段を備える。
本開示で説明される態様にしたがった技法を利用し得る実例的なビデオ符号化および復号システムを例示するブロック図である。 本開示で説明される態様にしたがった技法を実行し得る別の実例的なビデオ符号化および復号システムを例示するブロック図である。 本開示で説明される態様したがった技法を実施し得る実例的なビデオエンコーダを例示するブロック図である。 本開示で説明される態様にしたがった技法を実施し得る実例的なビデオデコーダを例示するブロック図である。 デルタサイズユニット可変長コーディング(DSU−VLC)を使用するビデオデータの実例的なコーディングの機能ブロック図を示す。 いくつかの実施形態にしたがった、ビデオデータの所与のP×Qブロックのサンプルを複数のサンプルベクトル(グループ)に区分化する例を例示する。 K個のしきい値を使用してdiffBitsをK+1範囲にセグメント化することによって、QpAdjを決定する実例的な方法を例示するグラフを図示する。 デフォルトの方法および方法PについてのdiffBitsの関数としてのデルタQpの関係を例示するグラフを図示する。 いくつかの実施形態にしたがった、デフォルトの方法、方法Q1、および方法Q2についてのdiffBitsの関数としてのデルタQpの関係を例示するグラフを図示する。 低複雑度画像データと高複雑度画像データとの混合を有する実例的な画像を例示する。 図8Aの画像の異なる空間エリアをコーディングする際にエンコーダによって使用され得るQP値をマッピングする実例的なQPマップを例示し、ここで最大QP値は固定されている。 図8Aの画像の異なる空間エリアをコーディングする際にエンコーダによって使用され得るQP値をマッピングする実例的なQPマップを例示し、ここで最大QP値は動的に調整される。 バッファフルネス(BF)の異なる範囲に対するオフセットデルタ値を選ぶための実例的なスキームのグラフを図示する。 バッファフルネス(BF)の異なる範囲に対するオフセットデルタ値を選ぶための実例的なスキームのグラフを例示する。 ビデオデータのブロックをコーディングするための最大QP値を調整することについての実例的なプロセスのフローチャートを図示する。
詳細な説明
[0022]一般に、本開示は、ディスプレイストリームを圧縮するために使用されるような技法といった、ビデオ圧縮技法を向上させる方法に関する。より具体的には、本開示は、量子化パラメータ(QP)調整値を計算するための適切な技法の選択を介してQPの更新を改善するためのシステムおよび方法に関する。
[0023]ある特定の実施形態が本明細書ではディスプレイストリーム圧縮(DSC)規格のコンテキストで説明されるけれども、本明細書で開示されるシステムおよび方法は、いずれの適したビデオコーディング規格にも適用可能であり得る。たとえば、本明細書で開示される実施形態は、以下の規格:国際電気通信連合(ITU)電気通信標準化部門(ITU−T)H.261、国際標準化機構/国際電気標準会議(ISO/IEC)MPEG−1(Moving Picture Experts Group-1)ビジュアル、ITU−T H.262即ちISO/IEC MPEG−2ビジュアル、ITU−T H.263、ISO/IEC MPEG−4ビジュアル、(ISO/IEC MPEG−4 AVCとしても知られている)ITU−T H.264、高効率ビデオコーディング(HEVC)、およびそのような規格のあらゆる拡張版、のうちの1つまたは複数に適用可能であり得る。本明細書で説明される技法は、バッファモデルを組み込む規格またはコーディング技法に特に適用可能であり得る。様々な実施形態において、固定ビットレート(CBR)または可変ビットレート(VBR)バッファモデルが利用され得る。また、本開示で説明される技法は、将来開発される規格の一部になり得る。言い換えると、本開示で説明される技法は、前に開発されたビデオコーディング規格、現在開発中のビデオコーディング規格、および来たるビデオコーディング規格に適用可能であり得る。
[0024]VESA(Video Electronics Standards Association)によって最近になって完成された3:1ディスプレイストリーム圧縮(DSC)v.10ソリューション世代は、特に4Kのような高解像度ディスプレイについての、将来のモバイルマーケットの要件を行使する(drive)のに不十分である。したがって、将来の需要に対処するために、VESAは、圧縮比4:1以上をターゲットとする次世代DSCソリューションを開発するために、CfT(call for technology)をリリースした。
[0025]一般に、DSCコーダは、低コストで固定レートの、視覚的にロスレスの圧縮を提供する。コーダは、(ブロックサイズP×Qを用いる)ブロックベースの手法に基づいて設計され、多数のコーディングモードにより構成されている。たとえば、各ブロックに利用可能なコーディングオプションは、変換(たとえば、DCT、アダマール)、ブロック予測、DPCM、パターン、中間点予測(MPP:mid-point prediction)および中間点予測フォールバック(MPPF)モードである。いくつかのコーディングモードが、異なるタイプのコンテンツまたは画像を効果的に圧縮するためにコーダにおいて使用される。たとえば、テキスト画像が、パターンモードによって効果的に圧縮され得るのに対し、自然画は、変換モードによって効果的にキャプチャされ得る。
[0026]各ブロックが、モードのレートと歪みとの両方を検討することによって各ブロックにとって最良のモードを選択することを目指すレート制御メカニズムに基づいて、複数のコーディングモードから1つのコーディングモードを選び得る。レート制御メカニズムは、バッファモデルによってサポートされており、バッファ(たとえば、バッファユニット)が、アンダーフロー(0よりも少ないビットがバッファにある)、またはオーバーフロー(バッファサイズが設定された最大サイズを超えて拡大してしまっている)の状態に決してならないことが、コデックの設計要件である。
[0027]ビデオコーディング方法は、前に計算されたQP値をQP調整値で更新することによって、QP値を計算し得る。QP調整値は、前ブロックと現在のブロックとの間の差分、たとえば、前ブロックをコーディングするのに要求されたビットと現在のブロックをコーディングするためのターゲットビット数との間の差分、に基づいて計算され得る。
[0028]しかしながら、従来の技法によって決定されるQP調整値は、結果としてコーディング非効率をもたらし得るか、またはある特定の状況下で顕著なアーティファクトを引き起こし得る。たとえば、QP調整値を決定するための従来の技法は、画像の平坦領域から複雑領域への遷移に十分な程にはアグレッシブでないことがある(たとえば、QP調整値は、結果として顕著なアーティファクトが無いより良好なコーディング効率をもたらすだろう、より所望のQP調整値よりも小さいことがある)。平坦領域および複雑領域の概念は、以下でより詳細に説明される。
[0029]加えて、バッファのフルネスが空である、またはフルであるしきい値内であるとき、QP調整値を計算するための従来の技法は、過度にアグレッシブであり得、これは、結果としてデコーダによって再構築される画像においてアーティファクトを引き起こす。たとえば、従来の技法によって計算されるQP調整値は、再構築された画像においてアーティファクトが顕著であることにマスクする(mask)だろう、より所望のQP調整値よりも大きいことがある。
[0030]したがって、本開示の態様は、少なくとも上で示された問題を解決することを対象としている。ある特定の態様では、これは、上で示された問題に関連付けられ得るコンディションの検出または決定、および該検出されたコンディション下でQP調整値を計算するための1つまたは複数の代替技法を適用することを介して達成され得る。
ビデオコーディング規格
[0031]ビデオ画像、TV画像、静止画像、またはビデオレコーダもしくはコンピュータによって生成された画像のようなデジタル画像は、水平線状および垂直線状に配列されたピクセルまたはサンプルを含み得る。単一画像におけるピクセル数は通常、数万である。各ピクセルは通常、輝度およびクロミナンス情報を含む。圧縮なしでは、画像エンコーダから画像デコーダに伝達されるべき情報の膨大な量が、リアルタイムの画像送信を実現困難にするだろう。送信されるべき情報量を低減するために、JPEG、MPEG、およびH.263規格のような複数の異なる圧縮方法が開発されてきた。
[0032]ビデオコーディング規格には、ITU−T H.261、ISO/IEC MPEG−1ビジュアル、ITU−T H.262即ちISO/IEC MPEG−2ビジュアル、ITU−T H.263、ISO/IEC MPEG−4ビジュアル、(ISO/IEC MPEG−4 AVCとしても知られている)ITU−T H.264、およびHEVCが、該規格の拡張版を含めて、挙げられる。
[0033]加えて、ビデオコーディング規格、すなわちDSC、は、VESAによって開発されてきた。DSC規格は、ディスプレイリンクを介した送信のためにビデオを圧縮することができるビデオ圧縮規格である。ディスプレイの解像度が増加するにつれ、ディスプレイを駆動するために要求されるビデオデータの帯域幅が相応して増加する。いくつかのディスプレイリンクは、そのような解像度のためのディスプレイにビデオデータの全てを送信するための帯域幅を有さないことがある。したがって、DSC規格は、ディスプレイリンクを介した相互動作可能で視覚的にロスレスな圧縮のための圧縮規格を規定する。
[0034]DSC規格は、H.264およびHEVCのような他のビデオコーディング規格とは異なる。DSCは、フレーム内圧縮を含むが、フレーム間圧縮は含まず、これは、ビデオデータをコーディングする際に時間情報がDSC規格によって使用されないことがあることを意味する。対照的に、他のビデオコーディング規格は、それらのビデオコーディング技法においてフレーム間圧縮を用い得る。
ビデオコーディングシステム
[0035]新規のシステム、装置、および方法の様々な態様が、添付の図面を参照して以下でより十分に説明される。しかしながら、本開示は、多くの異なる形態で具現化され得、本開示全体を通して提示されるいずれの特定の構造または機能にも限定されるとは解釈されるべきではない。むしろ、これらの態様は、本開示が徹底的で完全になるように提供されており、当業者に本開示の範囲を十分に伝達することになる。本明細書における教示に基づいて、本開示の範囲が、本明細書で開示される新規のシステム、装置、および方法のいずれの態様も、本開示のいずれの他の態様からも独立して実施されようと本開示のいずれの他の態様と組み合わせられようと、カバーするように意図されていることを当業者は認識するべきである。たとえば、いずれの数の本明細書で述べられる態様を使用しても、装置は実装され得る、または方法は実施され得る。加えて、本開示の範囲は、本明細書で述べられる本開示の様々な態様に加えて、またはそれ以外に、他の構造、機能性、または構造と機能性を使用して実施されるような装置または方法をカバーするように意図されている。本明細書で開示されるいずれの態様も請求項の1つまたは複数の要素によって具現化され得ることは理解されるべきである。
[0036]特定の態様が本明細書で説明されるけれども、これらの態様の多くのバリエーションおよび置換が、本開示の範囲内に含まれる。好まれる態様のいくつかの利益および利点に言及されるけれども、本開示の範囲は、特定の利益、使用、または目的に限定されるように意図されていない。むしろ、本開示の態様は、異なるワイヤレス技術、システム構成、ネットワーク、および送信プロトコルに広く適用可能であるように意図されており、それらのうちのいくつかは、好まれる態様の以下の説明において、および図において、例として例示される。詳細な説明および図面は単に、限定ではなく本開示を例示するものであり、本開示の範囲は、添付の請求項およびそれらの均等物によって定義される。
[0037]添付の図面は例を例示する。添付の図面において参照番号によって示される要素は、以下の説明において同様の参照番号によって示される要素に対応する。本開示では、順序を示す言葉(たとえば、「第1の」、「第2の」、「第3の」、等)で始まる名前を有する要素は、該要素が特定の順序を有することを必ずしも含意しない。むしろ、そのような順序を示す言葉は単に、同じまたは同様のタイプの異なる要素を指すように使用される。
[0038]図1Aは、本開示で説明される態様にしたがった技法を利用し得る実例的なビデオコーディングシステム10を例示するブロック図である。本明細書で説明されて使用される場合、「ビデオコーダ」または「コーダ」という用語は総称して、ビデオエンコーダとビデオデコーダとの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は総称して、ビデオ符号化およびビデオ復号を指し得る。ビデオエンコーダおよびビデオデコーダに加えて、本願で説明される態様は、トランスコーダ(たとえば、ビットストリームを復号し、別のビットストリームを再符号化することができるデバイス)およびミドルボックス(たとえば、ビットストリームを修正、変換、および/または別の形で操作することができるデバイス)のような他の関連デバイスに拡張され得る。
[0039]図1Aで図示されているように、ビデオコーディングシステム10は、宛先デバイス14によって後の時間に復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。図1Aの例では、ソースデバイス12および宛先デバイス14は、別個のデバイスを構成する。しかしながら、図1Bの例で図示されるように、ソースデバイス12および宛先デバイス14が同じデバイス上にあり得る、または同じデバイスの一部であり得ることに留意されたい。
[0040]図1Aを再度参照すると、ソースデバイス12および宛先デバイス14は、それぞれ、デスクトップコンピュータ、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、いわゆる「スマート」パッド、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、車載コンピュータ、ビデオストリーミングデバイス、アイウェアのような、エンティティ(たとえば、人間、動物、および/または別の制御されるデバイス)によってウェアラブルな(または、エンティティに取り外し可能に取り付けられる)デバイスおよび/またはエンティティ内に配置されている、取り込まれている、または消費されること(consumed)ができるウェアラブルなコンピュータ、デバイス、または装置、ならびに/あるいは同様のものを含む幅広い範囲のデバイスのうちのいずれも備え得る。様々な実施形態において、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0041]宛先デバイス14は、復号されるべき符号化されたビデオデータを、リンク16を介して、受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させる能力を有するいずれのタイプの媒体またはデバイスも備え得る。図1Aの例では、リンク16は、ソースデバイス12が宛先デバイス14に符号化されたビデオデータをリアルタイムに送信することを可能にする通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルのような通信規格にしたがって変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線のような、あらゆるワイヤレスまたは有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットといったグローバルネットワークのような、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに役立ち得るいずれの他の機器も含み得る。
[0042]図1Aの例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。いくつかのケースでは、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12においてビデオソース18は、ビデオカメラといったビデオキャプチャデバイス、前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックデータを生成するためのコンピュータグラフィックシステムのようなソース、あるいはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、図1Bの例で例示されているような、いわゆる「カメラ付電話」または「ビデオ電話」を形成し得る。しかしながら、本開示で説明される技法は、ビデオコーディング全般に適用可能であり得、ワイヤレスおよび/または有線アプリケーションに適用され得る。
[0043]キャプチャされた、前にキャプチャされた、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して、宛先デバイス14に送信され得る。符号化されたビデオデータはまた(または、代わりとして)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために、記憶デバイス31上に記憶され得る。図1Aおよび図1Bで例示されているビデオエンコーダ20は、図2Aで例示されるビデオエンコーダ20または本明細書で説明されるいずれの他のビデオエンコーダも備え得る。
[0044]図1Aの例では、宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。いくつかのケースでは、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介しておよび/または記憶デバイス31から符号化されたビデオデータを受信し得る。リンク16を介して通信されるまたは記憶デバイス31上で提供される符号化されたビデオデータは、ビデオデータを復号する際にビデオデコーダ30のようなビデオデコーダによって使用される、ビデオエンコーダ20によって生成される様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信される、記憶媒体上に記憶される、またはファイルサーバに記憶される符号化されたビデオデータとともに含まれ得る。図1Aおよび図1Bで例示されているビデオデコーダ30は、図2Bで例示されるビデオデコーダ30または本明細書で説明されるいずれの他のビデオデコーダも備え得る。
[0045]ディスプレイデバイス32は、宛先デバイス14と統合され得るか、または宛先デバイス14の外部にあり得る。いくつかの例では、宛先デバイス14は、統合されたディスプレイデバイスを含み得、また外部のディスプレイデバイスとインターフェース接続するように構成され得る。他の例では、宛先デバイス14は、ディスプレイデバイスであり得る。一般にディスプレイデバイス32は、ユーザに復号されたビデオデータをディスプレイし、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスのような、様々なディスプレイデバイスのいずれも備え得る。
[0046]関連する態様で、図1Bは、例となるビデオコーディングシステム10’を図示しており、ここにおいて、ソースデバイス12および宛先デバイス14は、デバイス11上にあるか、またはデバイス11の一部である。デバイス11は、「スマート」フォンなどの電話ハンドセットまたは同様のものであり得る。デバイス11は、ソースデバイス12および宛先デバイス14と有効な(operative)通信状態にある(オプションで存在する)プロセッサ/コントローラデバイス13を含み得る。図1Bのビデオコーディングシステム10’およびそのコンポーネントは、他の点では(otherwise)、図1Aのビデオコーディングシステム10およびそのコンポーネントと同様である。
[0047]ビデオエンコーダ20およびビデオデコーダ30は、DSCのような、ビデオ圧縮規格にしたがってオペレートし得る。代わりとして、ビデオエンコーダ20およびビデオデコーダ30は、MPEG―4、Part10、AVC、HEVC、またはそのような規格の拡張版とも代わりとして称されるITU−T H.264規格のような他の専有または工業規格にしたがってオペレートし得る。しかしながら、本開示の技法は、いずれの特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、MPEG−2およびITU−T H.263を含む。
[0048]図1Aおよび図1Bの例では図示されていないけれども、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリームにおけるオーディオとビデオとの両方の符号化をハンドリングするために、適切なMUX−DEMUXユニットまたは他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU.H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)のような他のプロトコルに準拠し得る(conform to)。
[0049]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェア、またはそれらのあらゆる組合せのような、様々な適したエンコーダ回路のうちのいずれとしても実装され得る。技法がソフトウェアにおいて部分的に実施されるとき、デバイスは、適した非一時的コンピュータ可読媒体にソフトウェアのための命令を記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアにおいて該命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれ得、それらのどちらも、それぞれのデバイスにおける複合エンコーダ/デコーダ(combined encoder/decoder)の一部として統合され得る。
ビデオコーディングプロセス
[0050]上で簡単に言及されたように、ビデオエンコーダ20は、ビデオデータを符号化する。ビデオデータは、1つまたは複数のピクチャを備え得る。ピクチャの各々は、ビデオの一部を形成する静止画像である。いくつかの事例では、ピクチャは、ビデオ「フレーム」と称され得る。ビデオエンコーダ20がビデオデータを符号化するとき、ビデオエンコーダ20は、ビットストリームを生成し得る。ビットストリームは、ビデオデータのコード化表現(coded representation)を形成するビットのシーケンスを含み得る。ビットストリームは、コーディングされたピクチャおよび関連データを含み得る。コーディングされたピクチャは、ピクチャのコード化表現である。
[0051]ビットストリームを生成するために、ビデオエンコーダ20は、ビデオデータ中の各ピクチャに対して符号化オペレーションを実行し得る。ビデオエンコーダ20がピクチャに対して符号化オペレーションを実行するとき、ビデオエンコーダ20は、一連のコーディングされたピクチャおよび関連データを生成し得る。関連データは、QPのようなコーディングパラメータのセットを含み得る。コーディングされたピクチャを生成するために、ビデオエンコーダ20は、ピクチャを、サイズが等しいビデオブロックに区分化し得る。ビデオブロックは、サンプルの2次元アレイであり得る。コーディングパラメータは、ビデオデータの全てのブロックについてコーディングオプション(たとえば、コーディングモード)を定義し得る。コーディングオプションは、所望のレート−歪みパフォーマンスを達成するために選択され得る。
[0052]いくつかの例では、ビデオエンコーダ20は、ピクチャを、複数のスライスに区分化し得る。スライスの各々は、画像(たとえば、フレーム)中の空間的に別々の領域を含み得、それは、画像またはフレーム中の残りの領域からの情報なしに独立して復号されることができる。各画像またはビデオフレームは、単一のスライスにおいて符号化され得るか、あるいは各画像またはビデオフレームは、いくつかのスライスにおいて符号化され得る。DSCでは、各スライスを符号化するために割り振られるターゲットビットは、略一定であり得る。ピクチャに対して符号化オペレーションを実行することの一部として、ビデオエンコーダ20は、ピクチャの各スライスに対して符号化オペレーションを実行し得る。ビデオエンコーダ20がスライスに対して符号化オペレーションを実行するとき、ビデオエンコーダ20は、該スライスに関連付けられた符号化されたデータを生成し得る。スライスに関連付けられた符号化されたデータは、「コード化スライス(coded slice)」と称され得る。
DSCビデオエンコーダ
[0053]図2Aは、本開示で説明される態様にしたがった技法を実施し得るビデオエンコーダ20の例を例示するブロック図である。ビデオエンコーダ20は、本開示の技法のうちのいくつかまたは全てを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオエンコーダ20の様々なコンポーネントの間で共有され得る。いくつかの例では、加えてまたは代わりとして、プロセッサ(図示せず)が、本開示で説明される技法のうちのいくつかまたは全てを実行するように構成され得る。
[0054]説明の目的で、本開示は、ビデオエンコーダ20をDSCコーディングのコンテキストで説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0055]図2Aの例では、ビデオエンコーダ20は、複数の機能コンポーネントを含む。ビデオエンコーダ20の機能コンポーネントは、色空間コンバータ105と、バッファ110と、平坦度検出器115と、レートコントローラ120と、予測器、量子化器、および再構築器コンポーネント125と、ラインバッファ130と、インデックスカラー履歴135と、エントロピーエンコーダ140と、サブストリームマルチプレクサ145と、レートバッファ150とを含む。他の例では、ビデオエンコーダ20は、より多い、より少ない、または異なる機能コンポーネントを含み得る。
[0056]色空間コンバータ105は、入力された色空間を、コーディング実施において使用される色空間にコンバートし得る。たとえば、1つの実例的な実施形態では、入力されたビデオデータの色空間は、赤、緑、青(RGB)色空間にあり、コーディングは、輝度Y、クロミナンス緑Cg、およびクロミナンスオレンジCo(YCgCo)の色空間において実施される。色空間コンバージョンは、ビデオデータへの追加およびシフトを含む方法(複数を含む)によって実行され得る。他の色空間にある入力されたビデオデータが処理され得、他の色空間へのコンバージョンもまた実行され得ることに留意されたい。
[0057]関連する態様で、ビデオエンコーダ20は、バッファ110、ラインバッファ130、および/またはレートバッファ150を含み得る。たとえば、バッファ110は、ビデオエンコーダ20の他の部分によるバッファ110の使用より前に、色空間コンバートされたビデオデータを保持し得る。別の例では、ビデオデータは、RGB色空間に記憶され得、色空間コンバージョンは、色空間コンバートされたデータはより多くのビットを要求し得るため、必要に応じて実行され得る。
[0058]レートバッファ150は、ビデオエンコーダ20におけるレート制御メカニズムの一部として機能し得、これは、レートコントローラ120と関係して以下でより詳細に説明されることになる。各ブロックを符号化するのに費やされるビットは、ブロックの性質に基づいて極めて大きく(highly substantially)変動し得る。レートバッファ150は、圧縮されたビデオにおけるレートバリエーションを滑らかにすることができる。いくつかの実施形態では、ビットが固定ビットレートでバッファから取り出されるCBRバッファモデルまたはオペレーションモードが用いられる。他の実施形態では、ビットが可変(非固定)ビットレートでバッファから取り出されるVBRバッファモデルまたはオペレーションモードが用いられ得る。いくつかの実施形態では、ビデオエンコーダ20は、(たとえば、ビットがバッファから取り出されるレートよりも高いレートで)ビットストリームに過度に多いビットを追加する場合、レートバッファ150はオーバーフローし得る。一方で、ビデオエンコーダ20はまた、レートバッファ150のアンダーフローを防ぐために、十分なビットを追加する必要もあり得る。
[0059]ビデオデコーダ側では、ビットが、固定ビットレートでビデオデコーダ30のレートバッファ155(以下でさらに詳細に説明される図2Bを参照)に追加され得、ビデオデコーダ30は、ブロックごとに可変のビット数(variable numbers of bits)を取り除き得る。適当な復号を確実にするために、ビデオデコーダ30のレートバッファ155は、圧縮されたビットストリームの復号中、「アンダーフロー」も「オーバーフロー」もするべきではない。
[0060]いくつかの実施形態では、バッファフルネス(BF)は、現在バッファ中にあるビット数を表す値BufferCurrentSize、およびレートバッファ150のサイズ、すなわち任意の時点におけるレートバッファ150に記憶されることができる最大ビット数、を表すBufferMaxSizeに基づいて定義され得る。BFは、次の通りに計算され得る:
BF=((BufferCurrentSize*100)/BufferMaxSize)
[0061]BFを計算することに対する上記手法が単なる例であること、および、BFが、特定の実装またはコンテキストに応じて、いずれの数の異なる方法でも計算され得ることに留意されたい。
[0062]平坦度検出器115は、ビデオデータ中の複雑な(すなわち、平坦でない)エリアからビデオデータ中の平坦な(すなわち、シンプルまたは均一の)エリアへの、および/または、その逆への変化を検出することができる。「複雑」および「平坦」という用語は概して、ビデオエンコーダ20がビデオデータのそれぞれの領域を符号化する難しさを指すように本明細書では使用されることになる。したがって、複雑という用語は、本明細書で使用される場合、概して、ビデオデータの領域を、ビデオエンコーダ20が符号化するには複雑であるものとして説明し、たとえば、テキスチャ化されたビデオデータ、高空間周波数、および/または符号化するには複雑である他の特徴を含み得る。平坦という用語は、本明細書で使用される場合、概して、ビデオデータの領域を、ビデオエンコーダ20が符号化するのにはシンプルであるものとして説明し、たとえば、ビデオデータ中の滑らかな勾配、低空間周波数、および/または符号化するにはシンプルである他の特徴を含み得る。複雑領域から平坦領域への遷移は、符号化されたビデオデータ中の量子化アーティファクトを低減するために、ビデオエンコーダ20によって使用され得る。具体的には、レートコントローラ120と、予測器、量子化器、および再構築器コンポーネント125とが、複雑領域から平坦領域への遷移が識別されるときに、そのような量子化アーティファクトを低減することができる。同様に、平坦領域から複雑領域への遷移は、現在のブロックをコーディングするために要求される予定レート(expected rate)を低減するためにQPを増加するよう、ビデオエンコーダ20によって使用され得る。
[0063]レートコントローラ120は、コーディングパラメータ、たとえばQP、のセットを決定する。QPは、レートバッファ150がオーバーフローもアンダーフローもしないことを確実にするターゲットビットレートに対するピクチャ品質を最大にするために、レートバッファ150のバッファフルネスおよびビデオデータの画像アクティビティ(たとえば、複雑領域から平坦領域への遷移またはその逆)に基づいて、レートコントローラ120によって調整され得る。レートコントローラ120はまた、最適なレート歪みパフォーマンスを達成するために、ビデオデータのブロックごとに特定のコーディングオプション(たとえば、特定のモード)を選択する。レートコントローラ120は、再構築された画像の歪みを、それがビットレート制約を満たすように、すなわち実際のコーディングレート全体がターゲットビットレート内に収まるように、最小限にする。したがって、レートコントローラ120の1つの目的は、レート歪みパフォーマンスを最大にしながらレートに対する瞬間的および平均的制約を満たすために、たとえばQP(複数を含む)、コーディングモード(複数を含む)等のコーディングパラメータのセットを決定することである。
[0064]予測器、量子化器、および再構築器コンポーネント125は、ビデオエンコーダ20の少なくとも3つの符号化オペレーションを実行し得る。予測器、量子化器、および再構築器コンポーネント125は、複数の異なるモードで予測を実行し得る。1つの例となる予測モードは、中央値適応予測(median-adaptive prediction)の修正されたバージョンである。中央値適応予測は、ロスレスなJPEG規格(JPEG−LS)によって実施され得る。予測器、量子化器、および再構築器コンポーネント125によって実行され得る中央値適応予測の修正されたバージョンは、3つの連続したサンプル値の並行予測を可能にし得る。別の例となる予測モードは、ブロック予測である。ブロック予測では、上の線または同じ線の左にある、前に再構築されたピクセルからサンプルが予測される。いくつかの実施形態では、ビデオエンコーダ20およびビデオデコーダ30は両方とも、ブロック予測の使用を決定するために、再構築されたピクセルに対して同一の探索を実行し得、そのため、ビットはブロック予測モードでは全く送られる必要はない。他の実施形態では、ビデオエンコーダ20は、探索を実行し、ビデオデコーダ30が別個の探索を実行する必要がないように、ビットストリームにおいてブロック予測ベクトルをシグナリングし得る。成分範囲(component range)の中間点を使用してサンプルが予測される中間点予測モードもまた実施され得る。中間点予測モードは、ワーストケースのサンプルにおいてさえも圧縮ビデオに要求されるビット数を制限すること(bounding)を可能にし得る。
[0065]予測器、量子化器、および再構築器コンポーネント125はまた、量子化も実行する。たとえば、量子化は、シフタを使用して実施され得る2の累乗量子化器(power-of-2 quantizer)を介して実施され得る。2の累乗量子化器の代わりに他の量子化技法が実施され得ることに留意されたい。予測器、量子化器、および再構築器コンポーネント125によって実行される量子化は、レートコントローラ120によって決定されるQPに基づき得る。最後に、予測器、量子化器、および再構築器コンポーネント125はまた、予測された値に逆量子化された残差を追加すること、およびその結果がサンプル値の有効範囲外にならないことを確実にすることを含む再構築を実行する。
[0066]予測器、量子化器、および再構築器コンポーネント125によって実行される予測、量子化、および再構築に対する上で説明された例となる手法が単なる例示であること、および他の手法が実施され得ることに留意されたい。予測器、量子化器、および再構築器コンポーネント125が、予測、量子化、および/または再構築を実行するためのサブコンポーネント(複数を含む)を含み得ることにも留意されたい。予測、量子化、および/または再構築が、予測器、量子化器、および再構築器コンポーネント125の代わりに、いくつかの別個のエンコーダコンポーネントによって実行され得ることにもさらに留意されたい。
[0067]ラインバッファ130は、予測器、量子化器、および再構築器コンポーネント125とインデックスカラー履歴135とが、バッファされたビデオデータを使用することできるように、予測器、量子化器、および再構築器コンポーネント125からの出力を保持する。インデックスカラー履歴135は、最近使用されたピクセル値を記憶する。これらの最近使用されたピクセル値は、専用シンタックスを介して、ビデオエンコーダ20によって直接参照され得る。
[0068]エントロピーエンコーダ140は、インデックスカラー履歴135および平坦度検出器115によって識別された平坦度遷移に基づいて、予測器、量子化器、および再構築器コンポーネント125から受信された予測残差およびあらゆる他のデータ(たとえば、予測器、量子化器、および再構築器コンポーネント125によって識別されたインデックス)を符号化する。いくつかの例では、エントロピーエンコーダ140は、サブストリームエンコーダごとに1クロックあたり3つのサンプルを符号化し得る。サブストリームマルチプレクサ145は、ヘッダレスパケット多重化スキームに基づいて、ビットストリームを多重化し得る。これは、ビデオデコーダ30が、3つのエントロピーデコーダを並行して稼働させることを可能にし、これは、1クロックあたり3ピクセルの復号を容易にする。サブストリームマルチプレクサ145は、パケットがビデオデコーダ30によって効率的に復号されることができるようにパケット順序を最適化し得る。エントロピーコーディングに対する異なる手法が実施され得、これが、1クロックあたり2の累乗ピクセル(たとえば、2ピクセル/クロックまたは4ピクセル/クロック)の復号を容易にし得ることに留意されたい。
DSCビデオデコーダ
[0069]図2Bは、本開示で説明される態様にしたがった技法を実施し得るビデオデコーダ30の例を例示するブロック図である。ビデオデコーダ30は、本開示の技法のうちのいくつかまたは全てを実行するように構成され得る。いくつかの例では、本開示で説明される技法は、ビデオデコーダ30の様々なコンポーネントの間で共有され得る。いくつかの例では、加えてまたは代わりとして、プロセッサ(図示せず)が、本開示で説明される技法のうちのいくつかまたは全てを実行するように構成され得る。
[0070]説明の目的で、本開示は、ビデオデコーダ30をDSCコーディングのコンテキストで説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0071]図2Bの例では、ビデオデコーダ30は、複数の機能コンポーネントを含む。ビデオデコーダ30の機能コンポーネントは、レートバッファ155と、サブストリームデマルチプレクサ160と、エントロピーデコーダ165と、レートコントローラ170と、予測器、量子化器、および再構築器コンポーネント175と、インデックスカラー履歴180と、ラインバッファ185と、色空間コンバータ190とを含む。ビデオデコーダ30の例示されているコンポーネントは、図2Aにおけるビデオエンコーダ20と関係して上で説明された対応するコンポーネントに類似する。このように、ビデオデコーダ30のコンポーネントの各々は、上で説明されたようなビデオエンコーダ20の対応するコンポーネントと同様の方式でオペレートし得る。
量子化パラメータ(QP)
[0072]上で説明されたように、エンコーダ20の予測器、量子化器、および再構築器コンポーネント125は、ビデオデータのブロックにおいて歪みをもたらし得る量子化を実行し得る。歪みの量は、ブロックの量子化パラメータ(QP)によって制御され得る。たとえば、エンコーダ20は、ブロックのビデオデータの色成分の値を量子化するための量子化ステップサイズを決定するために、ブロックについてのQPを使用し得る。いくつかの実施形態では、エンコーダ20が各QPについての量子化ステップサイズを記憶する代わりに、エンコーダ20は、QPの関数としてスケーリング行列を指定し得る。各QPについての量子化ステップサイズは、スケーリング行列から導かれることができ、ここにおいて、該導かれた値は、必ずしも2の累乗であるわけではなく、たとえば、導かれた値は、2の累乗でない(non-power of two)こともあり得る。
[0073]DSCテストモデルのいくつかの実施形態では、輝度チャンネルについての最小および最大それぞれのQPは、8bpcのために、16および56に設定される。各輝度QPに対して、オンザフライ(on the fly)で導かれ得るか、またはルックアップテーブルから推測され得る関連するクロミナンスQPが存在し得る。
スキップモード
[0074]ビデオデータの所与のブロックにおける単一の成分の全ての値が0である場合、エンコーダ20は、スキップモードを使用してブロックを効果的にコーディングし得る。スキップモードコーディングのいくつかの実施形態では、エンコーダ20は、デコーダ30によって読み出され得る1ビットフラグをシグナリングし得、これは、現在のブロックが、スキップモードを使用してコーディングされているのか(全ての値が0である場合)、またはスキップモードではコーディングされていないか(ブロックにおける少なくとも1つの値が非0である場合)を示す。
デルタサイズユニット可変長コーディング
[0075]図3は、デルタサイズユニット可変長コーディング(DSU−VLC)を使用してビデオデータをコーディングする例を図示する。いくつかの実施形態では、エンコーダ20は、(「グループ」とも称される)K長サンプルベクトル302の量子化された残差値を、コーディングされたビットのシーケンス306にコーディングするためにDSU−VLCプロセッサ304を使用し得る。コーディングされたビットのシーケンス306は、プレフィックス308およびサフィックス310を備え得、ここにおいて、サフィックス310は、複数のサフィックス部分を備える。DSU−VLCプロセッサ304は、図2Aで例示されたエントロピーエンコーダ140に対応し得る。本明細書で使用される場合、サンプルは、単一の色成分における値を指し得、たとえばRGB444では、各ピクセルは3つのサンプルを有する。
[0076]プレフィックス308は、サフィックス310のサフィックス部分の各々の残差値のサイズ(たとえばビット長)(該サイズはBビットと表示される)を示す。いくつかの実施形態では、プレフィックス308は可変長であり得、単進コード(unary code)を使用してコーディングされ得る。サフィックス310は、サンプルベクトル302における全てのサンプルの実際の残差値を示す(たとえば、サフィックス310の各サフィックス部分は、サンプルベクトル302の1つのサンプルに対応し得る)。エンコーダ20は、特定のフォーマット(たとえば2の補数)を使用しておよび各残差値に対して同じビット数(たとえばBビット)を使用してサフィックス310を形成するために、サンプルベクトル302におけるK個全ての残差値をコーディングし得る。
[0077]例として、サンプルベクトル302が、値[1,−2,−1,0]をもつ4つのサンプルを備える場合、エンコーダ20は、2の補数表現を使用してサンプルベクトル302の各々のサンプルをコーディングするためにB=2ビットを必要とし得る。このように、プレフィックス308は、値B=2の単進コードを表す値001を有し得る。サフィックス310は、[01,10,11,00]の値を有するサフィックス部分を備え得、それらはそれぞれ、B=2ビットを使用してサンプルベクトル302のコーディングされたサンプル値の各々を表している。プレフィックス308を復号することであって、これは大抵単一のクロックサイクルで行われる、によって、デコーダ30は、サフィックス310の4つ全てのサンプルを並行して復号できることがある。
DSCにおけるエントロピーコーディング
[0078]図4は、いくつかの実施形態にしたがった、ビデオデータの所与のP×Qブロックのサンプルを複数のサンプルベクトル(グループ)に区分化する例を例示する。図4で例示されているように、ブロック402は、16個のサンプルを備える2×8ブロックであり得る。ブロック402の各サンプルは、ブロック402に対応するビデオデータの特定の色成分の量子化された残差値に対応し得る。サンプルがDSU−VLCプロセッサ304を使用してコーディングされる前に、エンコーダ20は、サンプルを複数のサンプルベクトルに区分化し得る。たとえば、図4は、各々が4つのサンプルを備える4つのサンプルベクトル404(たとえば、サンプルベクトル404A、404B、404C、および404D)に区分化されたブロック402の16個のサンプルを例示している。DSU−VLCプロセッサ304は、各々が(たとえば、図3で例示されたような)プレフィックスおよびサフィックスを有するコード(図示せず)を作り出すようにサンプルベクトル404A−404Dをコーディングし得る。上で説明されたように、(図2Bで例示されたような)デコーダ30は、コードの各々のプレフィクスおよびサフィックスを並行して復号できることがあり、これにより、デコーダ30は、クロックサイクルごとに4つのサンプルを復号することが可能になる。
[0079]ブロック402のサンプルをグループに区分化するためにエンコーダ20を使用することによって、クロックごとの複数のサンプルのスループットが、コーディングされたグループを復号するときにデコーダ30によって達成され得る。図4は、ブロック402のサンプルがサンプルベクトル404に均一に区分化されることを例示しているものの、エンコーダ20が、サンプルのブロックをN個のサンプルベクトルに均一にまたは不均一に区分化し得ることは理解される。均一グループ化方法では、N個全てのサンプルベクトル404が等しい数のサンプルを有することになる。一方で、各サンプルベクトル404におけるサンプルの数は、不均一グループ化方法を使用するとき、異なり得る。
[0080]いくつかの実施形態では、ブロック402の区分化が均一であるか、不均一であるかは、ブロック402に関連付けられたコーディングモードに基づき得る。たとえば、エンコーダ20は、ブロック予測およびDPCMモードでは均一グループ化方法を使用し得るのに対し、変換モードでは不均一グループ化方法を使用し得る。
QP計算
[0081]いくつかの実施形態では、レートコントローラ120が、(currQPと表示される)ビデオデータの現在のブロックについてのQPを導き得る、または計算し得る。QPを計算するための技法は、2015年4月13日付で出願され、現在では米国出願公開第2015/0296206号として公開されている、米国出願第14/685,430号において開示されており、これは、参照によって全体として本明細書に組み込まれている。そこで説明されているように、レートコントローラ120は、以下の数式を使用して、ビデオデータの前のブロック(たとえば、ビデオデータの、コーディング順序で前のブロック)のQPに基づいて、現在のブロックについてのQP(currQP)を導き得る:

currQP=prevQP+QpAdj*(diffBits>0?1:−1)

ここで、prevQPは、前ブロックに関連付けられたQPであり、diffBitsは、previousBlockBitsとtargetBitsとの間の差分を表し、QpAdjは、diffBitsの大きさに基づいて計算されるQPオフセット値である。previousBlockBitsは、前ブロックをコーディングするために使用されたビット数に対応するのに対し、targetBitsは、現在のブロックを符号化するためのターゲットビット数に対応する。
[0082]上記数式で見られるように、previousBlockBits>targetBitsであるとき、diffBitsは正であり、レートコントローラ120は、prevQPにオフセットQpAdjを加えることによって現在のブロックQPを導く。言い換えると、QP値は、prevQPと比べて、減少することは許されない。previousBlockBits<targetBitsであるとき、diffBitsは負であり、currQPは、prevQPと比べて、増加することは許されない。
[0083]図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」を上回るdiffBits値に対応する「範囲k+1」まで、その後も同様に続く(and so forth)。
[0084]diffBits範囲(たとえば、範囲1、範囲2、...範囲k+1)の各々は、特定のQpAdj値(たとえば、QpAdj、QpAdj、...QpAdjk+1)に関連付けられ得る。QpAdj〜QpAdjk+1の値は、範囲が増加するにつれて増加し得る(たとえば、QpAdj≦QpAdj≦QpAdj...≦QpAdjk+1)。このように、いくつかの実施形態では、レートコントローラ120は、diffBitsの大きさが増加するにつれてQpAdjが単調に増加するような形で、diffBitsの関数としてオフセット値QpAdjを計算し得る。
[0085]一方で、diffBits<=0(図示せず)であるとき、diffBitsの絶対値は、j個のしきい値を使用してj+1個の範囲に分類され得、ここにおいて、jは整数値に対応する。加えて、特定のQpAdj値は、各範囲に関連付けられ得る。いくつかの実施形態では、j+1個の範囲の各々に関連付けられたQpAdj値は、diffBitsの絶対値が増加するにつれて増加し得る。本明細書で使用される際、QpAdjを計算するためのこの方法は、「デフォルトの方法」と称される。
[0086]さらに、いくつかの実施形態では、レートコントローラ120は、レートバッファ150(以下、バッファ150とも称される)の状態に基づいて、該バッファ150のアンダーフローおよびオーバーフローを防ぐために、currQPを調整し得る。バッファ150の状態は、バッファ150に記憶され得る総ビット数に対するバッファ150に現在記憶されているビット数を測定する、バッファフルネスBFの観点から表され得る。たとえば、いくつかの実施形態では、BFがある特定のしきい値(たとえばP)を超えるとき、レートコントローラ120は、固定のオフセット(たとえばp)分だけcurrQPをインクリメントすることによって、currQP+=pになるように、currQPの値を調整し得る。一方で、BFがある特定のしきい値(たとえばQ)を下回るとき、レートコントローラ120は、固定のオフセット(たとえばq)分だけデクリメントすることによって、currQP+=qになるように、currQPを調整し得る。いくつかの実施形態では、単一のしきい値P(またはQ)の代わりに、レートコントローラ120は、複数のバッファフルネスしきい値に基づいて、currQPを調整し得、ここにおいて、各バッファフルネスしきい値は、currQPを調整するための異なる対応するオフセット値に関連付けられ得る。
[0087]いくつかの実施形態では、レートコントローラ120はさらに、ビデオデータの現在のブロックが、複雑領域から平坦領域への遷移、または平坦領域に関連付けられているか否かに基づいて、currQP値を決定し得る。たとえば、平坦度検出器115は、複雑領域から平坦領域への遷移がビデオデータのブロック内で生じると決定し得るか、またはビデオデータのブロックが平坦領域を備えると決定する。平坦度検出器115による決定に応答して、レートコントローラ120は、currQPを所定の値に設定し得る。
DSCにおけるQP更新モード
[0088]DSCでは、バッファ150のバッファフルネスに基づいて、ビデオデータの現在のブロックのQPを更新するために、レートコントローラ120によって様々なモードが使用され得る。たとえば、いくつかの実施形態では、バッファ150のバッファフルネスがある特定のしきい値に下回る、またはしきい値を超えるとき、QpAdjを計算するためにデフォルトの方法を使用する代わりに、currQPを決定するようQpAdjを計算するために、レートコントローラ120によって様々な方法が使用され得る。
バッファがしきい値制限を超える
[0089]上で説明されたように、いくつかの実施形態では、レートコントローラ120は、バッファ150のバッファフルネスの量に応じて、様々に(differently)QpAdjの値を計算し得る。たとえば、いくつかの実施形態では、レートコントローラ120は、単調な降順で配列されたn個のしきい値に対応し得る、複数のしきい値[P、P、...P]を維持し得る。加えて、レートコントローラ120は、QpAdjを計算するために使用され得る複数のそれぞれの方法[方法P、方法P、...方法P]を維持し得る。レートコントローラ120は、バッファ150のバッファフルネスと複数のしきい値との間の関係に基づいて、QpAdjを計算するための特定の方法を選択し得る。たとえば、いくつかの実施形態では、

If(バッファフルネス>=P
方法PがQpAdjを計算するために使用される;
else if(バッファフルネス>=P
方法PがQpAdjを計算するために使用される;

else if(バッファフルネス>=P
方法PがQpAdjを計算するために使用される;

である。
[0090]いくつかの実施形態では、diffBits>0であるとき、diffBitsの所与の値について、方法Pを使用して計算されたQpAdjの値>=方法Pを使用して計算されたQpAdj値>=...方法Pを使用して計算されたQpAdj値>=デフォルトの方法を使用して計算されたQpAdj値である。
[0091]一方で、diffBits<0であるとき、方法Pを使用して計算されたQpAdj値<=方法Pを使用して計算されたQpAdjの値<=...方法Pを使用して計算されたQpAdj値<=デフォルトの方法を使用して計算されたQpAdj値である。言い換えると、いくつかの実施形態にしたがうと、レートコントローラ120によって計算されるとき、バッファ150がフルである程、currQPの値はより高くなり得る。
[0092]図6は、デフォルトの方法および(たとえば、バッファフルネスのしきい値の量に対応する)方法PについてのdiffBitsの関数としてのデルタQpの関係を例示するグラフを図示する。本明細書で使用される場合、デルタQPは概して、currQPがprevQPとどれ程異なっているかを指す。たとえば、デルタQPは、QpAdj*(diffBits>0?1:−1)として定義され得る。言い換えると、QpAdjは、デルタQPの絶対値と考えられ得る。いくつかの実施形態では、デルタQPは、diffBitsが正の値を有するときに正になり、diffBitsが負の値を有するときに負になる。
[0093]図6のグラフは、diffBitsの値に対応するx軸、およびデルタQPの値に対応するy軸を図示する。グラフは、バッファ150のバッファフルネスがPしきい値より小さいときに応答する、デフォルトの関数を使用してレートコントローラ120によって決定されるようなデルタQPに対応する第1の低い方の(lower)曲線602を図示する。加えて、グラフは、バッファ150のバッファフルネスがPしきい値を満たすか、またはPしきい値を超えるがPしきい値よりも小さいときに使用される、方法Pを使用してレートコントローラ120によって決定されるようなデルタQPに対応する第2の上方の曲線604を図示する。第1の低い方の曲線602および第2の上方の曲線604は、実質的に階段関数の形態にあり得る。
[0094]図6のグラフで例示されているように、0よりも大きいdiffBitsの所与の値について、方法Pを使用してレートコントローラ120によって計算されるようなQpAdjの値は、デフォルトの方法を使用して計算されるようなQpAdjの値以上になる。一方で、diffBits<=0では、方法Pを使用して計算されるような(デルタQPの絶対値である)QpAdjの値は、デフォルトの方法を使用して計算されるようなQpAdjの値より小さくなる。言い換えると、diffBitsの所与の値について、デルタQP(および結果としてcurrQP)は概して、バッファ150のバッファフルネスがPのしきい値の量を超えるときは、バッファフルネスがPを超えないときと比べてより高くなる。
バッファがしきい値制限を下回る
[0095]いくつかの実施形態では、レートコントローラ120は、バッファ150のバッファフルネスが1つまたは複数のしきい値未満であることに基づいて、QpAdj(および結果としてcurrQP)の値を計算するために異なる方法を使用し得る。たとえば、いくつかの実施形態では、レートコントローラ120は、単調な昇順で配列されたm個のしきい値[Q、Q、...Q]、およびQpAdjを計算するためにレートコントローラ120によって使用されるそれぞれの方法[方法Q、方法Q、...方法Q]を維持し得る。たとえば、いくつかの実施形態では、レートコントローラ120は、以下に基づいて、QpAdjを計算するための特定の方法を選択し得る:

If(バッファフルネス<=Q
方法QがQpAdjを計算するために使用される;
else if(バッファフルネス<=Q
方法QがQpAdjを計算するために使用される;

else if(バッファフルネス<=Q
方法QがQpAdjを計算するために使用される;
[0096]いくつかの実施形態では、diffBits>0の所与の値について、デフォルトの方法を使用して計算されたQpAdj値>=方法Qを使用して計算されたQpAdj値>=...方法Qを使用して計算されたQpAdj値>=方法Qを使用して計算されたQpAdj値である。一方で、diffBits<=0の所与の値について、デフォルトの方法を使用して計算されたQpAdjの値<=方法Qを使用して計算されたQpAdj値<=...方法Qを使用して計算されたQpAdj値<=方法Qを使用して計算されたQpAdj値である。言い換えると、いくつかの実施形態にしたがうと、レートコントローラ120によって計算されるとき、バッファ150のバッファフルネスが低い程、currQPの値はより低くなり得る。
[0097]図7は、いくつかの実施形態にしたがった、デフォルトの方法、方法Q1、および方法Q2についてのdiffBitsの関数としてのデルタQpの関係を例示するグラフを図示する。図6にあるように、図7で例示されているグラフは、diffBitsの値に対応するx軸、およびデルタQPの値に対応するy軸を図示する。グラフは、バッファ150のバッファフルネスがQ1しきい値より大きいときに使用される、デフォルトの関数を使用して決定されるようなデルタQPに対応する(実線で例示されている)第1の上方の曲線702を図示する。グラフはさらに、方法Q1および方法Q2を使用して決定されるようなデルタQPにそれぞれ対応する、(破線として例示されている)第2の中間曲線704および(点線として例示されている)第3の低い方の曲線706を図示する。上で説明されたように、レートコントローラ120は、バッファ150のバッファフルネスがQ1しきい値とQ2しきい値との間にあるとき、QpAdj(および故にデルタQP)を計算するために方法Q1を使用し得る。レートコントローラは、バッファフルネスがQ2しきい値とQ3しきい値との間にあるとき、デルタQPを計算するために方法Q2を使用し得る。図6と同様に、曲線702、704、および706の各々は、実質的に階級関数の形状にあり得る。
[0098]図7のグラフで例示されているように、0よりも大きいdiffBitsの所与の値について、方法Qを使用してレートコントローラ120によって計算されるようなQpAdjの値は、デフォルトの方法を使用して計算されるようなQpAdjの値以下になり、方法Qを使用して計算されるQpAdjの値以上になる。一方で、diffBits<=0では、方法Qを使用して計算されるような(デルタQPの絶対値である)QpAdjの値は、デフォルトの方法を使用して計算されるようなQpAdjの値以下になり、方法Qを使用して計算されるQpAdjの値以上になる。言い換えると、diffBitsの所与の値について、デルタQP(および結果としてcurrQP)は概して、バッファ150のバッファフルネスがQ1のしきい値の量より低いときは、バッファフルネスがQ1のしきい値の量より高いときと比べてより低くなる。
バッファフルネス計算
[0099]いくつかの実施形態では、バッファ150の状態に基づいてビデオデータの現在のブロックのQP値(currQP)を調整できるために、レートコントローラ120がバッファ150についての正確なバッファフルネス(BF)値を決定できることが必要であり得る。いくつかの実施形態では、バッファ150において利用可能な最大ビット数は、エンコーダ20がビデオデータのブロックを符号化すると、調整され得る。たとえば、スライスの終了時、バッファ150のサイズ(たとえば、スライスの終了時にバッファ150に含まれることができる最大ビット数)がmaxBufferBitsAtSliceEndによって表示され得るような形で、バッファ150のサイズは、スライス中の何らかの固定数のブロックをコーディングした後に一定レートで線形に減少し得る。このように、ビデオデータの所与のスライスの終了時に、バッファ150のBFは、BufferCurrentSize=maxBufferBitsAtSliceEndである場合、100%である。
[0100]特定の時間におけるバッファ150のサイズは、bufAdjSizeによって表示され得、スライス中のビデオデータのブロックがコーディングされるにつれてバッファ150のサイズが減少するレートは、bufferRateReductionPerBlockによって表示され得る。このように、レートコントローラ120は、

BF=(((BufferCurrentSize*100)+(bufAdjSize>>1))/bufAdjSize) (1)

の通りにバッファ150のBFを計算し得、ここで、bufferAdjSize=BufferMaxSize-offset,offset=((bufferRateReductionPerBlock)*(numBlocksCoded-numBlocksTh))である。本明細書で使用される場合、numBlocksCodedは、それまでのスライス中の、エンコーダ20によってコーディングされたブロックの数を表し得、numBlocksThは、エンコーダ20によって設定可能であるしきい値パラメータに対応し得る。
[0101]いくつかの実施形態では、バッファ150は、コーディングされるビデオデータのブロックごとにそのサイズを線形に調整し得る。いくつかの実施形態では、バッファ150がブロックごとにそのサイズを調整したレートは、bufferRateReductionPerBlock=diffSize/(TotalnumberofBlocksInSlice-numBlocksTh)の通りに計算され得、ここで、diffSize=BufferMaxSize−maxBufferBitsAtSliceEnd、即ちバッファ150の最大サイズとスライスの終了時におけるバッファ150の最大サイズとの間の総差分、である。参照によって全体として本明細書に組み込まれている、2015年8月6日付で出願された米国出願第14/820,404号は、バッファフルネス(BF)を計算するための方法が説明されることを説明している。
[0102]いくつかの実施形態では、レートコントローラ210は、ハードウェアおよび/またはソフトウェアを通じて、上記数式(1)に基づいてバッファ150のバッファフルネスを計算し得る。しかしながら、数式(1)は、スライス中の現在のブロックの位置に応じて数式(1)の分母における値が変化する除算演算を含み、これは、該計算を潜在的にコスト多大に(expensive)させる。バッファフルネスを計算するための代替の方法が、参照によって全体として本明細書に組み込まれている2016年3月8日付で出願された米国出願第第62/305,314号で提案されている。いくつかの実施形態では、分母がbufAdjSizeからBufferMaxSizeに変更されるように、数式(1)において、分母から分子にオフセット値が移動される。BufferMaxSizeが、スライス中の現在のブロックの位置に関わらず一定のままであるので、結果として得られる数式は、レートコントローラ120にとって計算するのにずっと簡単であり得る。このように、数式(1)は、

BF=(((BufferCurrentSize+offset)*100)+(BufferMaxSize>>1))/BufferMaxSize) (2)

の通りに修正され得る。
[0103]数式(2)におけるオフセット値は、上で説明されたものと同じ方法で計算され得る。数式(2)における分母は、スライス全体で一定値であるため、レートコントローラ120は、数式(2)における分母を予め算出し得、それは、(たとえば、ルックアップテーブル(LUT)または他のデータ構造のような)コデックのパラメータセットに記憶され得る。
最大QP値を設定する
[0104]いくつかの実施形態では、レートコントローラ120は、ビデオデータの現在のブロックについてのQP値を計算するとき、最大QP値を強要し得る。(QPしきい値(threshold QP value)とも称される)最大QP値は、ビデオデータをコーディングするときの、量子化ロスまたは歪みの許容可能な量を示す上限の役割を果たし得る。たとえば、いくつかの実施形態では、レートコントローラ120は、上で説明された技法のうちの任意のものを使用して、ビデオデータの現在のブロックについてのcurrQP値を計算し得る。レートコントローラ120はその後、該計算されたcurrQPを最大QP値と比較し得る。該計算されたcurrQPが最大QP値を超える場合、レートコントローラ120は、最大QP値以下になるようにcurrQPを設定し得る。
[0105]いくつかの実施形態では、レートコントローラ120によって強要された最大QPは、所定の固定値に設定され得る。しかしながら、最大QPを単一の固定値に設定することは、全てのタイプのビデオコンテンツに対して効果的に機能しないことがある。いくつかの実施形態では、固定の最大QP値を強要するレートコントローラ120は、高いQP値が不必要であるとき、ビデオデータのブロックについてのQP値を無理に(artificially)高め得る。たとえば、バッファ150が空に近いケースでは、レートコントローラ120がより低い最大QP値を強要することが望ましくあることがある。このことは、量子化に起因したロスまたは歪みを低減し、バッファ150が、ビデオデータのブロックをコーディングするためにエンコーダ20によって使用されるビット数を増加させることによって空になることを防ぐこととなることがある。一方で、バッファ150がフルに近い場合、ビデオデータのブロックをコーディングするためにエンコーダ20によって使用されるビット数を低減することによる潜在的なオーバーフローを防ぐために、強要された最大QP値がより高くなる必要があり得る。
[0106]いくつかの実施形態では、バッファ150は、エンコーダ20によって符号化されたコーディングされたビデオデータを受信および記憶し、該コーディングされたビデオデータをビデオデータビットストリームに出力する。このように、いずれの所与の時間でも、バッファ150のビット数は、コーディングされたビデオデータ(たとえば、エンコーダ20によって既にコーディングされているが、未だビデオデータビットストリーム中に出力されていないビデオデータ)によって占有され得る。上で説明されたように、バッファ150のバッファフルネスは、バッファ150中で現在占有されているビット数と、バッファ150の現在の容量との比を示し得る。バッファ150のバッファフルネスは、ビデオデータの前のブロックをコーディングするためにエンコーダ20によって使用されたビット数と、バッファ150に記憶されたコーディングされたビデオデータがビットストリームに出力されるレートとの間の関係に基づいて変化し得る。
[0107]いくつかの実施形態では、エンコーダ20は、バッファ150がビデオデータビットストリームを形成するために特定の(たとえば、一定)レートでビデオデータのビットを出力するように構成されるよう、固定レートコデックを使用してビデオデータをコーディングし得る。たとえば、エンコーダがビデオデータのブロックをコーディングできる時間期間中に、バッファ150は、ビットストリームに固定ビット数を出力するように構成され得る。したがって、エンコーダ20が平均して固定ビット数より多いビット数を使用してビデオデータのブロックをコーディングしている場合、バッファ150は、満タンになり始め(たとえば、バッファフルネスを増加させ)、潜在的にオーバーフローし得る。一方で、エンコーダ20が平均して固定ビット数より少ないビット数を使用してビデオデータのブロックをコーディングしている場合、バッファ150は、バッファフルネスが減少し得、潜在的に空になり得る。
[0108]いくつかの実施形態では、レートコントローラ120は、「オンザフライ」で(たとえば、オペレーション中に)最大QP値を調整するように構成され得る。オペレーション中に最大QP値を動的に調整できることによって、エンコーダ20は、レートバッファ150がオーバーフローもせず、空にもならないことを確実にしながら、より低い平均的QP値(結果として、量子化を通じたロスが少なくなる)を使用してビデオデータをコーディングできる。
[0109]図8Aは、低複雑度画像データと高複雑度画像データとの混合を有する実例的な画像800を例示する。たとえば、図8Aで例示されているように、画像800は、実質的に平坦なバックグラウンド802(低複雑度)および複雑なフォアグラウンド804(高複雑度)を有する。
[0110]図8Bは、固定の最大QP値を使用して、画像800の異なる空間エリアをコーディングする際にエンコーダ20によって使用され得るQP値を図示するQP値マップ810を例示する。QP値マップ810は、画像800の空間エリアであって、エンコーダ20が、それらのエリアに関連付けられたビデオデータのブロックをコーディングする際により高いQP値を使用する空間エリア、に対応するより明るいエリア812を含み得る。加えて、QP値マップ810の減光(dimmer)エリア814は、画像800の空間エリアであって、エンコーダ20が、画像800のエリアをコーディングすることにおいてより低いQP値を使用する空間エリアに対応する。たとえば、QP値マップ810のより明るいエリア812は、画像800の複雑なフォアグラウンド804に対応し得、より高いQP値を使用してエンコーダ20によってコーディングされ得、これは、より大量の量子化ロスに繋がる。一方で、QP値マップ810の減光エリア814は、画像800の実質的に平坦なバックグラウンド802に対応し得、ここで、エンコーダ20は、ビデオデータをコーディングするためにより低いQP値を使用する。
[0111]図8Cは、画像800の異なる空間エリアをコーディングする際にエンコーダ20によって使用され得るQP値を示す別のQP値マップ820を例示し、ここで、エンコーダ20は、最大QP値を動的に調整できる。図8Cで例示されているように、最大QP値を動的に調整することによって、画像全体にわたった平均QP値が低減され得、これが、潜在的に画像品質を向上させ、歪みを低減する。たとえば、画像の(QP値マップ810のエリア812に対応する)エリア822をコーディングする際にエンコーダ20によって使用されるQP値は、(たとえば、図8Bで例示されたような)固定の最大QP値が使用されるときと比べて、エンコーダ20が最大QP値を動的に調整できるときは、より低くなり得る。
[0112]いくつかの実施形態では、最大QPは、輝度チャンネルにのみ対応する値を指し得るか、または輝度チャンネルとクロミナンスチャンネルとの両方を指し得る。代わりとして、最大QPは、マスタ最大QP値であって、そこから、それぞれの輝度およびクロミナンス最大QP値が、(たとえば、ルックアップテーブル(LUT)または他のデータ構造から)計算または推測されるマスタ最大QP値を指し得る。
[0113]いくつかの実施形態では、レートコントローラ120は、(たとえば、バッファ150のバッファフルネスとして測定される)バッファ150中のビット数に基づいて、最大QPを調整し得る。いくつかの実施形態では、レートコントローラ120は、ビデオデータの前にコーディングされたブロックの複雑度情報(たとえば、複雑度値)に基づいて、最大QPを計算し得る。たとえば、ビデオデータの前にコーディングされたブロックが高複雑度値を有する場合、レートコントローラ120は、ビデデータの後続のブロックが、より少ないビットを使用してコーディングされ得るように、最大QP値をより高い値に調整し得る。一方、ビデオデータの前にコーディングされたブロックが低複雑度値を有する場合、レートコントローラ120は、ビデオデータの後続のブロックがより多いビット数を使用してコーディングされ得るように、より低い値に最大QP値を調整し得る。いくつかの実施形態では、レートコントローラ120は、ビデオデータの1つまたは複数の前にコーディングされたブロックの複雑度値が1つまたは複数のしきい値を満たすかどうかの決定に基づいて、ビデオデータの現在のブロックをコーディングするための最大QP値を調整すべき量を決定し得る。いくつかの実施形態では、複雑度情報は、平坦度検出器115によって計算され得る。
[0114]いくつかの実施形態では、ビデオデータのブロックについての複雑度値は、たとえばアダマール、DCT、および/または同様のものといった変換を使用して、ブロックから導かれ得る。いくつかの実施形態では、ブロックについての複雑度値は、ブロックをコーディングするのに費やされるビット数、ならびにブロックに関連付けられたQP値およびモード情報(たとえば、ブロックをコーディングするために使用されるコーディングモード)に基づいて導かれ得る。
[0115]いくつかの実施形態では、ビデオデータの1つまたは複数の前にコーディングされたブロックの複雑度値は、バッファ150のバッファフルネスから推測され得る。たとえば、いくつかの実施形態では、バッファ150のバッファフルネスが高い(たとえば、バッファ150がほとんどフルである)とき、1つまたは複数の前にコーディングされたブロックは高複雑度値を有することが推測され得る。一方で、バッファ150のバッファフルネスが低いとき、1つまたは複数の前にコーディングされたブロックは低複雑度値を有することが推測され得る。
[0116]いくつかの実施形態では、レートコントローラ120は、最大QP値を調整するために、バッファ150の状態(たとえば、バッファフルネス)と前にコーディングされたブロックの複雑度値との両方を使用し得る。
[0117]いくつかの実施形態にしたがうと、maxFixedQpが、エンコーダ20によって維持されるデフォルトの最大QP値(たとえば、所定の値)を表し得るのに対し、maxCalQpは、(たとえば、レートコントローラ120によって)調整された最大QP値を表し得る。δは、maxCalQpを決定するようにmaxFixedQpを調整するために使用されるオフセット値(調整値とも称される)を表示する。すなわち、調整された最大QPは、maxCalQp=maxFixedQp−δの通りに調整され得る。いくつかの実施形態では、δは、バッファ150のバッファフルネス(BF)にのみ基づいて決定される。別の実施形態では、レートコントローラ120は、δオフセット値を導くために、BFと1つまたは複数の前にコーディングされたブロックの複雑度値との両方を組み合わせ得る。
[0118]いくつかの実施形態では、BFが、第1のより小さいしきい値(S)と第2のより大きいしきい値(L)との間に、S<BF<Lになるようにあるとき、レートコントローラ120は、maxCalQpを計算するためにデフォルトの非ゼロの正のオフセット値δ=δdefault>0を使用し得る。たとえば、maxFixedQpのより高い値を使用する代わりに、レートコントローラ120は、より低い値maxCalQpを決定するために固定オフセット分だけmaxFixedQpを減少させ、より低い値maxCalQpは、スライス中の連続ブロックを符号化するために使用され得る(たとえば、スライス中の連続ブロックを符号化するために使用されるQP値は、より高いmaxFixedQpの代わりに、より低いmaxCalQpによって制限され得る。
[0119]上で説明されたように、バッファ150のバッファフルネスは、ビデオデータのブロックをコーディングするためにエンコーダ20によって使用されるビット数によって影響され得る。たとえば、エンコーダ20が平均ビット数を使用してビデオデータのブロックをコーディングしているとき、バッファ150のフルネスは、実質的に一定のままであり得る。一方で、エンコーダ20が、平均ビット数より少ないビット数を使用してビデオデータのブロックをコーディングしているとき、バッファ150のフルネスは減少し始め得る。エンコーダ20が、ビデオデータのブロックをコーディングするために平均ビット数より多いビット数を使用しているとき、バッファ150のフルネスは増加し得る。
[0120]いくつかの実施形態では、エンコーダ20がビデオデータの連続ブロックにおける視覚情報を、たとえば該連続ブロック中のテキスチャ化された/複雑な視覚情報に起因して、平均ビット数より多いビット数を使用して効果的にコーディングするのに十分な程、計算されたmaxCalQpが低いとき、バッファ150のバッファフルネスはしきい値Lを超えて増加し得る。バッファフルネスがLのしきい値を超えるとき、レートコントローラ120はδdefaultの値を低減し、ビデオデータの次の連続ブロックをコーディングする際にエンコーダ20にとって新たなmaxCalQpを導くために該低減されたオフセット値を使用し得る。このように、maxCalQpは高くなり、これにより、エンコーダ20は、より高いQP値でビデオデータのブロックを符号化することが可能になる。この新たな最大値が結果としてバッファフルネスの更なる増加をもたらす場合、低減されたオフセット値はさらに低減される。レートコントローラ120は、バッファ150がオーバーフローするのを防ぐために、バッファフルネスが所定のしきい値よりも小さくなるまで、オフセット値を連続的に低減し、maxCalQpを計算するステップを繰り返し得る。ある特定のケースでは、負のオフセットがバッファオーバーフローを防ぐために許され得る。
[0121]一方で、maxCalQpが結果として、(たとえば、エンコーダ20が平均ビット数よりも少ないビット数を使用してビデオデータの連続ブロックにおける視覚情報をコーディングするのに十分な程、maxCalQpが高いことに起因して)バッファフルネスがしきい値Sを超えて減少することをもたらすとき、レートコントローラ120は、オフセット値を増加させ得、結果としてmaxCalQpのより低い値をもたらす。より低いmaxCalQp値は、エンコーダ20により低いQP値、そのため、平均してより高いビット数を使用してビデオデータのブロックをコーディングさせ得る。いくつかの実施形態では、オフセット値は、バッファフルネスがしきい値S未満に減少するとき、変更されないことがある。
[0122]図9は、バッファフルネス(BF)の異なる範囲に対するオフセットデルタ値を選ぶための実例的なスキームのグラフを図示する。いくつかの実施形態では、レートコントローラ120は、複数の異なるバッファフルネスしきい値に基づいてmaxCalQpを決定するためにオフセットδを調整し得る。図9は、バッファ150のバッファフルネス値に対応する横軸を例示しており、軸の左側の最小値(Min BF)から軸の右側の最大値(Max BF)まで範囲が広がっている。複数のしきい値は、n個の小さい方の(smaller)バッファ値[S、S、...S]およびm個の大きい方の(larger)バッファ値[L、L、...L]を含みながら、横軸に沿って位置する。しきい値は、S≦S≦、...≦SおよびL≧L≧、...≧L≧Sになるように配列されている。
[0123]隣接するしきい値[S、S、...S]および[L、L、...L]の各ペアは、maxCalQpを決定するためにレートコントローラ120によって使用され得る特定のオフセット値に関連付けられたバッファフルネス範囲を定義し得る。たとえば、SとLとの間のバッファフルネス値の範囲は、デフォルトのオフセット値δdefaultに関連付けられ得る。隣接する小さい方のしきい値[S、S、...S]によって定義された各範囲は、それぞれのオフセット値[δ ’’、δ ’’、...、δ ’’]に関連付けられ得、ここにおいて、δ ’’≧δ ’’≧...≧δ ’’≧δdefaultである。たとえば、図9で例示されているように、オフセット値δ ’’は、Min BFとSとの間のBF値の範囲に関連付けられるのに対し、オフセット値δ ’’は、Sn−1とSとの間のBF値の範囲に関連付けられる。
[0124]加えて、隣接する大きい方のしきい値[L、L、...L]によって定義されている各範囲は、それぞれのオフセット値[δ 、δ 、...、δ ]に関連付けられ得、ここにおいて、δ ≦δ ≦...≦δ ≦δdefaultである。たとえば、図9で例示されているように、オフセット値δ は、LとMax BFとの間のBF値の範囲に関連付けられるのに対し、オフセット値δ は、LとLm−1との間のBF値の範囲に関連付けられる。
[0125]いくつかの実施形態では、レートコントローラ120は、バッファ150のバッファフルネスBFに基づいて最大QPを調整するために、以下の擬似コードに基づいて、オフセット値δを計算し得る:

δ=δdefault

if(BF>=L
δ=δ
else if(BF>=L
δ=δ

else if(BF>=L
δ=δ
if(BF<=S
δ=δ ’’
else if(BF<=S
δ=δ ’’

else if(BF<=S
δ=δ ’’

[0126]上で説明されたように、レートコントローラ120は、maxCalQp=maxFixedQp−δの通りに最大QP値を調整するためにオフセット値δを使用し得る。上記実施では、「以下(less than and equal to)」という指定は、厳密には「より小さい(less than)」によって置き換えられることができる。同様に、「以上(greater than and equal to)」という指定は、厳密には「より大きい(greater than)」によって置き換えられることができる。いくつかの実施形態では、nおよびmは同じであり得るか、または同じでないことがある。
[0127]このように、図9において上で説明されたように、バッファ150のバッファフルネスが低い(たとえば、Sより低い)とき、レートコントローラ120は、オフセットδの値をδdefaultよりも高い値に設定し得、結果としてより低いmaxCalQpをもたらす。このように、エンコーダ20は、より多いビット数を使用してビデオデータの連続ブロックをコーディングし得、このことが、潜在的にバッファ150のフルネスを増加させる。
[0128]一方で、バッファ150のバッファフルネスが高い(たとえば、Lを超える)とき、レートコントローラ120は、オフセットδの値をδdefaultよりも低い値に設定し得、結果としてより高いmaxCalQpをもたらす。このように、エンコーダ20は、より小さいビット数を使用してビデオデータの連続ブロックをコーディングし得、このことが、潜在的にバッファ150のフルネスを減少させる。
[0129]いくつかの実施形態では、バッファしきい値[L、L、...L]および/または[S、S、...S]は、ルーマ成分とクロマ成分との両方にとって同じであり得る。別の実施では、それらはルーマ成分およびクロマ成分にとって異なり得る。別の例では、各バッファしきい値についてのオフセット値δは、ルーマ成分およびクロマ成分にとって同じまたは異なり得る。
[0130]しきい値[L、L、...L]は、上で説明されたようなQPモード[Q、Q、...Q]を決定するために使用される同一のm個のしきい値[Q、Q、...Q]であり得るか、または同じでないことがある。同様に、しきい値[S、S、...S]は、QPモード[P、P、...P]を決定するために使用される同一のn個のしきい値であり得るか、または同じでないことがある。
[0131]いくつかの実施形態では、1つまたは複数のバッファフルネスしきい値に基づいて最大QPを調整するためにオフセットデルタ値を決定する代わりに、レートコントローラ120は、所定の関数または数式に基づいて、バッファ150の現在のバッファフルネス(BF)からオフセットデルタ値を決定し得る。
[0132]いくつかの実施形態では、最大QPを調整するために使用されるオフセットデルタ値は、周期的に(たとえば、ある特定の時間インターバルで、ある特定の数のブロックがコーディングされ終わった後で、および/または同様のもので)決定され得る。たとえば、レートコントローラ120は、バッファ150の現在のバッファフルネスに基づいて、エンコーダ20によってコーディングされるべきビデオデータの各ブロックについての最大QPを調整するためにオフセットデルタ値を決定し得る。
[0133]ここで開示されている技法は、エンコーダ20でのみ適用され得る。たとえば、エンコーダ20は、最大QPを調整するためのオフセット値を決定し、該決定されたオフセットを(たとえば、リンク16を通じてデコーダ30に送信されるコーディングされたビデオデータビットストリームの一部として)デコーダ30にシグナリングし得る。別の代案では、ここで提案されている技法は、エンコーダ20とデコーダ30との両方に適用され得る。エンコーダ20とデコーダ30との両方に適用された後に技法が本明細書で提案されるいくつかの実施形態では、エンコーダ20は、デコーダ30にオフセット値をシグナリングする必要がない。
例となる実施形態
[0134]図10は、バッファフルネス(BF)の異なる範囲に対するオフセットデルタ値を選ぶための実例的なスキームのグラフを例示する。図10で例示されているグラフは、図9で例示されているものと類似しており、ここにおいて、バッファ150のバッファフルネス値は、軸の左側の最小BF(Min BF)から軸の右側の最大BF(Max BF)までの範囲に広がる横軸上で示されている。いくつかの実施形態では、軸上で表されているBF値は、パーセンテージの値に対応し得る。たとえば、Min BFは0%に対応し得るのに対し、Max BFは100%に対応し得る。加えて、図9にあるように、図10のグラフは、横軸に沿って位置する複数のしきい値を示している。図10で例示されているスキームでは、レートコントローラ120は、(横軸の左側に示されている)[12、24]の値を有するn=2つの小さい方のしきい値[S、S]、および(横軸の右側に示されている)[88、76]の値を有するm=2つの大きい方のしきい値[L、L]を維持し得る。
[0135]バッファフルネスを表す横軸に沿った隣接するしきい値の各ペアは、最大QPを調整するためにレートコントローラ120によって使用可能な特定のオフセット値に対応し得る。たとえば、バッファ150のバッファフルネスが24%と76%との間にあるとき、レートコントローラ120は、δdefault=4のオフセット分だけ最大QPを調整し得る。バッファフルネスが76%と88%との間にあるとき、オフセットはδ =2であり得る。バッファフルネスが88%を上回るとき、レートコントローラ120は、δ =0のオフセットを使用し得る。
[0136]一方で、図9で例示された実施形態では、バッファフルネスが24のしきい値未満に減少するとオフセット値は減少しないことがある。たとえば、それぞれ12未満および12と24との間のバッファフルネス範囲に対応し得る、オフセットδ ’’およびδ ’’は、両方とも4の値に対応し得る。しきい値[L、L]および[S、S]は、ルーマ成分とクロマ成分との両方にとって同じであり得る。
ピクチャパラメータに基づく最大QPに対する調整
[0137]いくつかの実施形態では、レートコントローラ120はさらに、コーディングされるべきビデオデータに関連付けられた1つまたは複数のピクチャパラメータ(たとえば、ソースビット深度(source bit depth)、圧縮ビットレート(compressed bitrate)、および/または同様のもの)に基づいて、最大QP(max QP)を調整し得る。たとえば、いくつかの実施形態では、ビデオデータのソースビット深度についてのデフォルトの値は、たとえば、成分ごとに8ビットであり得る。そのようなケースでは、最大QPは、以下の通りに調整され得る:

maxQp=maxQp+((bitDepth−8)≪a)

ここで、パラメータaは、チューニングされ得る(たとえば、パラメータaは、レートコントローラ120によって修正され得る)。たとえば、アドバンスドDSC(A−DSC)では、a=2のデフォルトの値が使用され得る。
[0138]他の実施形態では、最大QPについての上記数式は、ソースビット深度についてのデフォルトの値の変化に基づいて修正され得ることが理解される。たとえば、数式は、下記の通りに修正され得、ここにおいて、パラメータbdは、デフォルトのビット深度値(たとえば、成分ごとのデフォルトのビット数)を示し得る。

maxQp=maxQp+((bitDepth−bd)≪a)
[0139]いくつかの実施形態では、レートコントローラ120は、圧縮ビットレート値に基づいて最大QPを調整し得る。他の実施形態では、レートコントローラ120は、ビット深度または圧縮ビットレートのうちの少なくとも1つに基づいて、最大QPを調整し得る。
[0140]いくつかの実施形態では、デフォルトの圧縮ビットレートは6bpp(8bpcソースコンテンツに対して4:1の圧縮)であり得る。A−DSCコデックでは、圧縮ビットレートは、m個の少数ビット(fractional bits)を使用して定義され得、これは、6bppの圧縮ビットレートが(6≪m)としてコデックに内蔵される(stored internally)だろうことを意味する。たとえば、m=4であるとき、内蔵された値は、6<<4=96であり得る。
[0141]デフォルトの圧縮ビットレートが6bppに等しいことを前提とするいくつかの実施形態では、6bpp未満の値を有する圧縮ビットレートについて、レートコントローラ120は、以下の通りに最大QPを調整し得る:

maxQp=maxQp+(((96−bpp)≫m)≪b
[0142]逆に、6bppを上回るビットレートについて、レートコントローラ120は、以下の通りに最大QPを調整し得る:

maxQp=maxQp−(((bpp−96)≫m)≪b

ここで、bおよびbは、maxQpにオフセット量をスケーリングするための所定の固定値に対応し得る。いくつかの実施形態では、m、b、およびbの値は、m=4、b=3、b=2であり得る。他の実施形態では、最大QPについての上記数式が、デフォルトの圧縮ビットレート値の変化に基づいて修正され得ることは理解される。
[0143]ソースビット深度と圧縮ビットレートとの両方がそれらのデフォルトの値(たとえば、8bpcおよび6bppそれぞれ)とは異なるいくつかの実施形態では、レートコントローラ120は、以下の通りに2回、最大QPを調整し得る(必ずしも順序通りでないことがある):

・ソースビット深度に基づいて最大QPを修正する。
・圧縮ビットレートに基づいて最大QPをさらに修正する。
[0144]いくつかの実施形態では、ピクチャパラメータに基づいて最大QPを調整した後に、レートコントローラ120は、前章で説明された技法を使用して(たとえば、バッファ150のバッファフルネスに基づいて)コーダによってオンザフライで動的に最大QPをさらに調整し得る。たとえば、いくつかの実施形態では、レートコントローラ120は最初に、ソースビット深度および圧縮ビットレートのようなピクチャパラメータに基づいて最大QP値を調整し得る。調整された最大QP値は、バッファ150のバッファフルネスに基づいてオンザフライで最大QP値を調整する目的でmaxFixedQp値として使用され得る。
プロセスの流れ
[0145]図11は、ビデオデータのブロックをコーディングするための最大QP値を調整することについての実例的なプロセスのフローチャートを図示する。ブロック1102で、レートコントローラ120は、デフォルトの最大QP値を決定し得る。いくつかの実施形態では、最大QP値は、所定の値であり得る。
[0146]ブロック1104で、レートコントローラ120は、1つまたは複数のピクチャパラメータに基づいて最大QP値を調整し得る。いくつかの実施形態では、ピクチャパラメータは、ソースビット深度または圧縮ビットレートに対応し得る。いくつかの実施形態では、レートコントローラ120は、まずソースビットレートに基づいて、そしてその後圧縮ビットレートに基づいて最大QP値を調整し得る。いくつかの実施形態では、レートコントローラ120は、ソースビット深度にのみ基づいて、または圧縮ビットレートにのみ基づいて、最大QP値を調整し得る。いくつかの実施形態では、ソースビット深度または圧縮ビットレートがデフォルトの値から外れる場合のみ、レートコントローラ120は、ソースビット深度または圧縮ビットレートに基づいて最大QP値を調整する。いくつかの実施形態では、調整された最大QP値は、maxFixedQpと称され得る。
[0147]ブロック1106で、レートコントローラ120は、バッファ150のバッファフルネスの量のインジケーションを受信し得る。ブロック1108で、レートコントローラは、バッファのバッファフルネスに基づいて最大QPオフセットを決定し得る。いくつかの実施形態では、レートコントローラ120は、オフセット値を決定するために1つまたは複数のしきい値に対してバッファフルネス値を比較する。たとえば、1つまたは複数のしきい値は、1つまたは複数のバッファフルネス範囲を定義し得、ここにおいて、異なるオフセット値は、異なるバッファフルネス範囲に関連付けられ得る。ブロック1110で、レートコントローラ120は、調整された最大QP(たとえば、ブロック1104で決定されたようなmaxFixedQp)および決定されたオフセット値に基づいて最大QP値を決定し得る。たとえば、レートコントローラ120は、maxFixedQpと決定されたオフセット値との間の差分として最大QP値maxCalQpを決定し得る。決定された最大QP値はその後、ビデオデータのブロックをコーディングする際にエンコーダ20によって使用される。
[0148]いくつかの実施形態では、ブロック1106〜1110は、エンコーダ20がビデオデータの連続ブロックをコーディングするとき、繰り返し得る。たとえば、いくつかの実施形態では、レートコントローラ120は、周期的なインターバルで(たとえば、ある特定の時間インターバルで、またはある特定の数のブロックがコーディングされ終わった後で)、バッファフルネスのインジケーションを受信し得る(ブロック1106)。レートコントローラ120はその後、ビデオデータの後続のブロックをコーディングするためにエンコーダ20によって使用されるべき新たなオフセットおよび最大QP値を決定し得る(ブロック1108、1110)。このループは、エンコーダ20がビデオデータの全てのブロックをコーディングし終えるまで繰り返し得る。
[0149]バッファフルネスに基づいてビデオデータのブロックをコーディングするために使用される最大QP値を動的に調整することによって、レートコントローラ120は、ビデオデータのブロックをコーディングするために使用される最大QP値を、バッファ150が空になることまたはオーバーフローすることを防ぎながら、潜在的に制限し得る。たとえば、バッファフルネスが低い(たとえば、ある特定のしきい値未満)ときにオフセット値を増加させること(および、そのため最大QP値を減少させること)によって、エンコーダ20は、それが別の方法をとった場合には(otherwise)使用したかもしれないQP値よりも小さいQP値を使用してビデオデータのブロックを符号化し、それにより、量子化ロスを減少させ、バッファが空になるのを防ぎ得る。
[0150]本明細書で開示されている情報および信号は、様々な異なる技術および技法のうちのいずれを使用しても表わされ得る。たとえば、上記説明全体を通して参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光学場もしくは光学粒子、またはそれらのいずれの組合せによっても表され得る。
[0151]本明細書で開示されている実施形態と関係して説明されている様々な例示的な論理ブロックおよびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実施され得る。このハードウェアとソフトウェアとの互換性を明確に例示するために、様々な例示的なコンポーネント、ブロック、およびステップが、概してそれらの機能性の観点から上で説明されてきた。そのような機能が、ハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定のアプリケーションおよびシステム全体に課せられる設計制約に依存する。当業者は、特定のアプリケーションごとに様々な方法で説明されている機能性を実装し得るが、そのような実装決定は本開示の範囲からの逸脱を引き起こすと解釈されるべきでない。
[0152]本明細書で説明されている技法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらのいずれの組合せでも実施され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、あるいはワイヤレス通信デバイスハンドセット、自動車、電気器具、ウェアラブル、および/または他のデバイスにおける用途(applications)を含む複数の使途(uses)を有する集積回路デバイスのような様々なデバイスのいずれにおいても実施され得る。デバイスまたはコンポーネントとして説明されているいずれの特徴も、集積論理デバイスにおいて一緒に、または、ディスクリートではあるが相互動作可能な論理デバイスとして別個に実装され得る。ソフトウェアにおいて実施される場合、技法は、少なくとも部分的に、命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって実現され得、該命令は、実行されると、上で説明された方法のうちの1つまたは複数を実行する。コンピュータ可読データ記憶媒体は、パッケージングマテリアルを含み得る、コンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、同期動的ランダムアクセスメモリ(SDRAM)のようなランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、不揮発ランダムアクセスメモリ(NVRAM)、電気的消去可能なプログラマブル読取専用メモリ(EEPROM(登録商標))、FLASHメモリ、磁気または光学データ記憶媒体、等のようなメモリまたはデータ記憶媒体を備え得る。技法は、加えてまたは代わりとして、少なくとも部分的に、伝播される信号または波のような、コンピュータによってアクセス、読み取り、および/または実行されることができ、かつ、データ構造または命令の形態のプログラムコードを搬送または通信するコンピュータ可読通信媒体によって実現され得る。
[0153]プログラムコードは、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等の集積またはディスクリート論理回路のような1つまたは複数のプロセッサを含み得るプロセッサによって実行され得る。そのようなプロセッサは、本開示で説明されている技法のうちのいずれも実行するように構成され得る。汎用プロセッサは、マイクロプロセッサであり得るが、代わりとして、該プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンでもあり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つまたは複数のマイクロプロセッサ、またはいずれの他のそのような構成としても実装され得る。したがって、「プロセッサ」という用語は、本明細書で使用される場合、前述の構造のうちのいずれも、前述の構造のいずれの組合せも、または本明細書で説明されている技法の実装に適したいずれの他の構造または装置も指し得る。加えて、いくつかの態様では、本明細書で説明されている機能性は、符号化および復号のために構成された専用のソフトウェアまたはハードウェア内に提供され得るか、または複合ビデオエンコーダ−デコーダ(CODEC)に組み込まれ得る。また、技法は、1つまたは複数の回路または論理要素において完全に実施されることができるだろう。
[0154]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、幅広い種類のデバイスまたは装置において実施され得る。様々なコンポーネントまたはユニットが、開示されている技法を実行するように構成されたデバイスの機能的な態様を強調するために本開示において説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上で説明されたように、様々なユニットが、コデックハードウェアユニットにおいて組み合わせられ得るか、または、適したソフトウェアおよび/またはファームウェアと併せて、上で説明されたような1つまたは複数のプロセッサを含む相互動作するハードウェアユニットのコレクションによって提供され得る。
[0155]前述は、様々な異なる実施形態と関係して説明されてきたけれども、一実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられ得る。しかしながら、それぞれの実施形態間の特徴の組合せは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されてきた。これらの実施形態および他の実施形態は、以下に続く請求項の範囲内にある。
[0155]前述は、様々な異なる実施形態と関係して説明されてきたけれども、一実施形態からの特徴または要素は、本開示の教示から逸脱することなく、他の実施形態と組み合わせられ得る。しかしながら、それぞれの実施形態間の特徴の組合せは、必ずしもそれらに限定されるわけではない。本開示の様々な実施形態が説明されてきた。これらの実施形態および他の実施形態は、以下に続く請求項の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオ情報をコーディングするための装置であって、
コーディングされたビデオ情報を記憶するように構成されたバッファユニットと、
ハードウェアプロセッサとを備え、前記プロセッサは、
前記バッファユニットのバッファフルネスを決定することと、前記バッファフルネスは、前記バッファユニット中で現在占有されているビット数と、前記バッファユニットの現在の容量との間の比を示す、
初期最大量子化パラメータ(QP)値を決定することと、
前記バッファユニットの前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定することと、
前記決定された調整値を使用して前記初期最大QP値を調整することと、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングすることと、
を行うように構成される、
装置。
[C2] 前記ハードウェアプロセッサは、前記バッファユニットの前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定するようにさらに構成され、前記デフォルトの調整値は0より大きい、C1に記載の装置。
[C3] 前記ハードウェアプロセッサは、前記デフォルトの調整値よりも高い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第2のフルネスしきい値より低い、C2に記載の装置。
[C4] 前記ハードウェアプロセッサは、前記デフォルトの調整値よりも低い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第1のフルネスしきい値より高い、C2に記載の装置。
[C5] 前記ハードウェアプロセッサは、ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定するようにさらに構成され、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、C1に記載の装置。
[C6] 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、C1に記載の装置。
[C7] 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、C1に記載の装置。
[C8] 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、C1に記載の装置。
[C9] 前記バッファユニットは、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、C1に記載の装置。
[C10] ビデオ情報をコーディングするための方法であって、
コーディングされたビデオ情報を記憶するように構成されたバッファユニットのバッファフルネスを決定することと、前記バッファフルネスは、前記バッファユニット中で現在占有されているビット数と、前記バッファユニットの現在の容量との間の比を示す、
初期最大量子化パラメータ(QP)値を決定することと、
前記バッファユニットの前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定することと、
前記決定された調整値を使用して前記初期最大QP値を調整することと、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングすることと、
を備える、方法。
[C11] 前記バッファユニットの前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定することをさらに備え、前記デフォルトの調整値は0より大きい、C10に記載の方法。
[C12] 前記デフォルトの調整値よりも高い値に前記調整値を設定することをさらに備え、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第2のフルネスしきい値より低い、C11に記載の方法。
[C13] 前記デフォルトの調整値よりも低い値に前記調整値を設定することをさらに備え、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第1のフルネスしきい値より高い、C11に記載の方法。
[C14] ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定することをさらに備え、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、C10に記載の方法。
[C15] 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、C10に記載の方法。
[C16] 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、C10に記載の方法。
[C17] 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、C10に記載の方法。
[C18] 前記バッファユニットは、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、C10に記載の方法。
[C19] ビデオ情報をコーディングするための装置であって、
コーディングされたビデオ情報を記憶するためのバッファ手段と、
前記バッファ手段のバッファフルネスを決定するための手段と、前記バッファフルネスは、前記バッファ手段中で現在占有されているビット数と、前記バッファ手段の現在の容量との間の比を示す、
初期最大量子化パラメータ(QP)値を決定するための手段と、
前記バッファ手段の前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定するための手段と、
前記決定された調整値を使用して前記初期最大QP値を調整するための手段と、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングするための手段と、
を備える、装置。
[C20] 前記調整値を決定するための前記手段は、前記バッファ手段の前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定するように構成され、前記デフォルトの調整値は0より大きい、C19に記載の装置。
[C21] 前記調整値を決定するための前記手段は、前記デフォルトの調整値よりも高い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファ手段の前記バッファフルネスは前記第2のフルネスしきい値より低い、C20に記載の装置。
[C22] 前記調整値を決定するための前記手段は、前記デフォルトの調整値よりも低い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファ手段の前記バッファフルネスは前記第1のフルネスしきい値より高い、C20に記載の装置。
[C23] ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定するための手段をさらに備え、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、C19に記載の装置。
[C24] 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、C19に記載の装置。
[C25] 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、C19に記載の装置。
[C26] 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、C19に記載の装置。
[C27] 前記バッファ手段は、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、C19に記載の装置。

Claims (27)

  1. ビデオ情報をコーディングするための装置であって、
    コーディングされたビデオ情報を記憶するように構成されたバッファユニットと、
    ハードウェアプロセッサとを備え、前記プロセッサは、
    前記バッファユニットのバッファフルネスを決定することと、前記バッファフルネスは、前記バッファユニット中で現在占有されているビット数と、前記バッファユニットの現在の容量との間の比を示す、
    初期最大量子化パラメータ(QP)値を決定することと、
    前記バッファユニットの前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定することと、
    前記決定された調整値を使用して前記初期最大QP値を調整することと、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
    ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングすることと、
    を行うように構成される、
    装置。
  2. 前記ハードウェアプロセッサは、前記バッファユニットの前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定するようにさらに構成され、前記デフォルトの調整値は0より大きい、請求項1に記載の装置。
  3. 前記ハードウェアプロセッサは、前記デフォルトの調整値よりも高い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第2のフルネスしきい値より低い、請求項2に記載の装置。
  4. 前記ハードウェアプロセッサは、前記デフォルトの調整値よりも低い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第1のフルネスしきい値より高い、請求項2に記載の装置。
  5. 前記ハードウェアプロセッサは、ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定するようにさらに構成され、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、請求項1に記載の装置。
  6. 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、請求項1に記載の装置。
  7. 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、請求項1に記載の装置。
  8. 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、請求項1に記載の装置。
  9. 前記バッファユニットは、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、請求項1に記載の装置。
  10. ビデオ情報をコーディングするための方法であって、
    コーディングされたビデオ情報を記憶するように構成されたバッファユニットのバッファフルネスを決定することと、前記バッファフルネスは、前記バッファユニット中で現在占有されているビット数と、前記バッファユニットの現在の容量との間の比を示す、
    初期最大量子化パラメータ(QP)値を決定することと、
    前記バッファユニットの前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定することと、
    前記決定された調整値を使用して前記初期最大QP値を調整することと、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
    ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングすることと、
    を備える、方法。
  11. 前記バッファユニットの前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定することをさらに備え、前記デフォルトの調整値は0より大きい、請求項10に記載の方法。
  12. 前記デフォルトの調整値よりも高い値に前記調整値を設定することをさらに備え、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第2のフルネスしきい値より低い、請求項11に記載の方法。
  13. 前記デフォルトの調整値よりも低い値に前記調整値を設定することをさらに備え、ここにおいて、前記バッファユニットの前記バッファフルネスは前記第1のフルネスしきい値より高い、請求項11に記載の方法。
  14. ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定することをさらに備え、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、請求項10に記載の方法。
  15. 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、請求項10に記載の方法。
  16. 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、請求項10に記載の方法。
  17. 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、請求項10に記載の方法。
  18. 前記バッファユニットは、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、請求項10に記載の方法。
  19. ビデオ情報をコーディングするための装置であって、
    コーディングされたビデオ情報を記憶するためのバッファ手段と、
    前記バッファ手段のバッファフルネスを決定するための手段と、前記バッファフルネスは、前記バッファ手段中で現在占有されているビット数と、前記バッファ手段の現在の容量との間の比を示す、
    初期最大量子化パラメータ(QP)値を決定するための手段と、
    前記バッファ手段の前記決定されたバッファフルネスに少なくとも部分的に基づいて、調整値を決定するための手段と、
    前記決定された調整値を使用して前記初期最大QP値を調整するための手段と、ここにおいて、前記調整された最大QP値は、前記ビデオ情報の前記現在のブロックをコーディングするために使用され得る最大QP値を指定する、
    ディスプレイまたは送信のためにビデオデータビットストリームを形成するようにQP値に基づいて、前記QP値が前記調整された最大QP値を超えないことがあるという制限に従い、ビデオ情報の前記現在のブロックをコーディングするための手段と、
    を備える、装置。
  20. 前記調整値を決定するための前記手段は、前記バッファ手段の前記バッファフルネスが、より高い第1のフルネスしきい値とより低い第2のフルネスしきい値との間のレベルにあるとき、デフォルトの調整値に前記調整値を設定するように構成され、前記デフォルトの調整値は0より大きい、請求項19に記載の装置。
  21. 前記調整値を決定するための前記手段は、前記デフォルトの調整値よりも高い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファ手段の前記バッファフルネスは前記第2のフルネスしきい値より低い、請求項20に記載の装置。
  22. 前記調整値を決定するための前記手段は、前記デフォルトの調整値よりも低い値に前記調整値を設定するようにさらに構成され、ここにおいて、前記バッファ手段の前記バッファフルネスは前記第1のフルネスしきい値より高い、請求項20に記載の装置。
  23. ビデオ情報の前のブロックをコーディングするのに費やされたビット数に少なくとも部分的に基づいて導かれる複雑度値を決定するための手段をさらに備え、前記調整値はさらに、前記決定された複雑度値に少なくとも部分的に基づく、請求項19に記載の装置。
  24. 前記QP値はさらに、前記バッファユニットの前記バッファフルネスに少なくとも部分的に基づく、請求項19に記載の装置。
  25. 前記調整値はさらに、コーディングされるべき前記ビデオ情報のビット深度に少なくとも部分的に基づく、請求項19に記載の装置。
  26. 前記調整値はさらに、コーディングされるべき前記ビデオ情報の圧縮ビットレートに少なくとも部分的に基づく、請求項19に記載の装置。
  27. 前記バッファ手段は、固定レートで前記ビデオデータビットストリームにコーディングされたビデオデータのビットを出力するようにさらに構成される、請求項19に記載の装置。
JP2018549570A 2016-03-22 2017-03-22 ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法 Pending JP2019512970A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662311586P 2016-03-22 2016-03-22
US62/311,586 2016-03-22
US201662329160P 2016-04-28 2016-04-28
US62/329,160 2016-04-28
US15/465,328 2017-03-21
US15/465,328 US20170280139A1 (en) 2016-03-22 2017-03-21 Apparatus and methods for adaptive calculation of quantization parameters in display stream compression
PCT/US2017/023604 WO2017165529A1 (en) 2016-03-22 2017-03-22 Apparatus and methods for adaptive calculation of quantization parameters in display stream compression

Publications (2)

Publication Number Publication Date
JP2019512970A true JP2019512970A (ja) 2019-05-16
JP2019512970A5 JP2019512970A5 (ja) 2020-04-09

Family

ID=59899111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018549570A Pending JP2019512970A (ja) 2016-03-22 2017-03-22 ディスプレイストリーム圧縮における量子化パラメータの適応計算のための装置および方法

Country Status (9)

Country Link
US (1) US20170280139A1 (ja)
EP (1) EP3434017B1 (ja)
JP (1) JP2019512970A (ja)
KR (1) KR20180122354A (ja)
CN (1) CN108702513B (ja)
BR (1) BR112018069086A2 (ja)
CA (1) CA3014931A1 (ja)
TW (1) TWI743098B (ja)
WO (1) WO2017165529A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7447258B2 (ja) 2020-06-11 2024-03-11 テンセント・アメリカ・エルエルシー 修正された量子化器

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10638133B2 (en) 2018-01-31 2020-04-28 Qualcomm Incorporated Delta quantization parameter (QP) coding options for video
US10924739B2 (en) * 2018-10-31 2021-02-16 Ati Technologies Ulc Efficient quantization parameter prediction method for low latency video coding
KR102621118B1 (ko) * 2018-11-01 2024-01-04 삼성전자주식회사 영상 적응적 양자화 테이블을 이용한 영상의 부호화 장치 및 방법
JP7434545B2 (ja) * 2019-10-28 2024-02-20 エルジー エレクトロニクス インコーポレイティド 色空間変換を用いる画像符号化/復号化方法、装置、及びビットストリームを伝送する方法
CN113038136B (zh) * 2019-12-25 2022-10-11 成都鼎桥通信技术有限公司 一种视频自适应调整方法和装置
CN117676141A (zh) * 2022-09-08 2024-03-08 华为技术有限公司 图像编解码方法、装置、编码器、解码器和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313318B2 (en) * 1998-06-17 2007-12-25 Victor Company Of Japan, Limited Video signal encoding and recording apparatus with variable transmission rate
US6535251B1 (en) * 1999-10-26 2003-03-18 Sharplabs Of America, Inc. Video encoder and method for adjusting quantization step in real time
JP4492777B2 (ja) * 2001-08-28 2010-06-30 日本電気株式会社 動画像符号化装置
US20090310672A1 (en) * 2008-06-13 2009-12-17 W&W Communications, Inc. Method and System for Rate Control in a Video Encoder
US8879623B2 (en) * 2009-09-02 2014-11-04 Sony Computer Entertainment Inc. Picture-level rate control for video encoding a scene-change I picture
US8483272B2 (en) * 2010-09-24 2013-07-09 Intel Corporation System and method for frame level bit rate control without pre-analysis
US20130142250A1 (en) * 2011-12-06 2013-06-06 Broadcom Corporation Region based classification and adaptive rate control method and apparatus
CN102724510B (zh) * 2012-06-21 2014-05-28 中科开元信息技术(北京)有限公司 一种基于虚拟编码缓冲区充盈度的码率控制算法
US9883180B2 (en) * 2012-10-03 2018-01-30 Avago Technologies General Ip (Singapore) Pte. Ltd. Bounded rate near-lossless and lossless image compression
EP2952003B1 (en) * 2013-01-30 2019-07-17 Intel Corporation Content adaptive partitioning for prediction and coding for next generation video
GB2516021A (en) * 2013-07-05 2015-01-14 Canon Kk Method, device, and computer program for pre-encoding and post-decoding high bit-depth content in video encoder and decoder
US9848193B2 (en) 2014-04-15 2017-12-19 Qualcomm Incorporated System and method for selecting quantization parameter (QP) in display stream compression (DSC)
US9979970B2 (en) * 2014-08-08 2018-05-22 Qualcomm Incorporated System and method for determining buffer fullness for display stream compression

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7447258B2 (ja) 2020-06-11 2024-03-11 テンセント・アメリカ・エルエルシー 修正された量子化器

Also Published As

Publication number Publication date
CN108702513A (zh) 2018-10-23
EP3434017C0 (en) 2024-02-28
EP3434017B1 (en) 2024-02-28
TW201737708A (zh) 2017-10-16
TWI743098B (zh) 2021-10-21
WO2017165529A1 (en) 2017-09-28
US20170280139A1 (en) 2017-09-28
EP3434017A1 (en) 2019-01-30
CA3014931A1 (en) 2017-09-28
CN108702513B (zh) 2022-06-07
BR112018069086A2 (pt) 2019-01-22
KR20180122354A (ko) 2018-11-12

Similar Documents

Publication Publication Date Title
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
EP3284257B1 (en) Quantization parameter (qp) calculation for display stream compression (dsc) based on complexity measure
CN108702513B (zh) 用于在显示流压缩中量化参数的适应性计算的设备及方法
JP6449329B2 (ja) ディスプレイストリーム圧縮(dsc)において量子化パラメータ(qp)を選択するためのシステムおよび方法
EP3132605B1 (en) System and method for lagrangian parameter calculation for display stream compression (dsc)
US10631005B2 (en) System and method for coding in block prediction mode for display stream compression (DSC)
CN111726628B (zh) 用于在显示流压缩(dsc)中固定点近似的系统和方法
JP2018515016A (ja) 表示ストリーム圧縮のための複雑領域検出
US20160301939A1 (en) Quantization parameter (qp) update classification for display stream compression (dsc)
KR102175662B1 (ko) 디스플레이 스트림 압축 (dsc) 에서의 왜곡을 계산하기 위한 시스템 및 방법들
KR102112942B1 (ko) 디스플레이 스트림 압축에 대한 지각적 양자화 파라미터 (qp) 가중을 위한 장치 및 방법들
EP3135034A1 (en) System and method for coding in pattern mode for display stream compression (dsc)
US10123045B2 (en) Modification to block size for transform mode in display stream compression

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210629

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211012