【文献】
Wei Ding et al.,Rate Control of MPEG Video Coding andRecording by Rate-Quantization Modeling,IEEE Trans. on Circuits and Systems for Video Technology,IEEE,1996年 2月,Vol.6, No.1,pp.12-20
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
本明細書では、「ピクチャ」という用語はフレームまたはフレームのフィールドを指す。フレームは、既知のタイムインタバル中に取得される全体イメージである。ビデオシーケンスがプログレッシブフォーマットである場合、ピクチャという用語は全体フレームを指す。ビデオシーケンスがインターレースフォーマットである場合、各フレームは奇数走査線フィールドと、それに続く偶数走査線フィールドとからなる。これらのフィールドがひとつのピクチャになる。さらに、Iピクチャはイントラ符号化ピクチャであり、Pピクチャは、別のIピクチャまたはPピクチャ、例えば、前のIピクチャまたはPピクチャ、から予測されるインター符号化ピクチャであり、Bピクチャは2枚のピクチャ、例えば、前のIピクチャまたはPピクチャおよび後続のIピクチャまたはPピクチャ、を用いて予測されるインター符号化ピクチャである。一般に、一グループのピクチャ(GOP)はビデオシーケンス内の一群の連続ピクチャであり、GOP構造が、GOP内の各ピクチャをどのように符号化するか、すなわち、所与のピクチャをIピクチャ、Pピクチャ、またはBピクチャとして符号化するかどうか、を指定する。
【0013】
GOP構造が非階層構造の場合、各GOPはIピクチャで始まり、次のIピクチャまでにすべてのピクチャを含む。これら2枚のIピクチャ間のピクチャは、この特定のGOP構造によって決まる何らかの定義されたPピクチャおよび/またはBピクチャのシーケンスとし得る。このようなGOPの例を
図1A〜1Cに示す。GOP構造が階層構造、例えば、階層B構造の場合、GOPは、キーピクチャおよびこのキーピクチャと前のキーピクチャとの間に時間的に存在するすべてのピクチャになるように定義される。キーピクチャは、イントラ符号化ピクチャ、すなわちIピクチャ、または前のキーピクチャを用いるインター符号化ピクチャ、すなわちPピクチャとし得る。GOP内の他のピクチャは階層的に予測される。階層B符号化構造を有するGOPでは、このGOP内の他のピクチャはBピクチャである。階層P符号化構造を有するGOPでは、このGOP内の他のピクチャはPピクチャである。階層Pおよび階層B符号化構造を有するGOPの例をそれぞれ
図1Dおよび
図1Eに示す。
【0014】
ビデオ符号化に用いられる多くのレート制御手法、例えば、H.263 TMN5(test model near−term 5)に基づくレート制御手法では、ビデオシーケンス内にIピクチャおよびPピクチャだけが現れると仮定する。さらに、このような手法では、ピクチャレベルでベース量子化ステップサイズ(Qs)を変調し得る。つまり、Pピクチャ用のベースQsは、前のPピクチャの符号化に用いられたQsの平均値になるように設定される。次いで、このベースQsは、ピクチャを符号化する前に、前のPピクチャを符号化するために用いられたビット数が目標ビット数よりも大きかったか小さかったかに基づいて変調される。次いで、得られたベースQsは、ピクチャ内の各符号化ブロックを符号化するために用いられる実際のQsを決定するための開始点として用いられる。さらに、ピクチャの符号化中に、このピクチャの推定符号化サイズがピクチャの目標符号化サイズにどのくらい近いかに基づいてQsを周期的に増減し得る。
【0015】
このようなレート制御手法は、一グループのピクチャ(GOP)の構造が、Iピクチャの後に何枚かのPピクチャが続き、ピクチャからピクチャに複雑さが大きく変化しない、(ピクチャがビデオシーケンスのフレームである)プログレッシブ符号化では、良好な結果を得ることができる。しかし、このようなレート制御手法は、GOP構造がBピクチャを含み、かつ/または階層符号化構造を有する場合には、十分でないことがある。
【0016】
本発明の実施形態は、各ピクチャの開始時ではなく、ピクチャのシーケンスの開始時にベースQsを決定および変調するレート制御を提供する。さらに、シーケンスベースQsは、ピクチャのシーケンスの先頭ピクチャの種類(例えば、IピクチャまたはPピクチャ)に基づいて異なって決定および変調される。次いで、シーケンスベースQsを用いて、シーケンス内の各ピクチャに対しベースQsが決定される。或るピクチャについてのピクチャベースQsは、このピクチャの種類およびレート制御階層におけるこのピクチャのレベルに基づいてシーケンスベースQsから適合され得る。さらに、1つまたは複数の実施形態では、ピクチャを符号化する前に、様々な基準に基づいてこのピクチャについて最小および最大符号化サイズを演算する。次いで、サブピクチャレベルでのレート制御、すなわち、或るピクチャにおける符号化ブロックのシーケンスについて、例えば、行など、このピクチャにおける符号化ブロックのシーケンスについてのベースQsが、ピクチャベースQsと最小および最大符号化サイズとに基づいて決定される。より具体的には、このピクチャの符号化サイズは符号化ブロックのシーケンスの開始時に推定され、このサブピクチャベースQsは、このピクチャの推定符号化サイズが最小または最大符号化サイズから外れる場合に適宜増減され得る。特定のGOP構造は必要とされず、GOPは、Bピクチャを含むことができ、かつ/または階層符号化構造を有し得る。
【0017】
ビデオシーケンスにおいてシーン変化が生じるときに起こり得る質の劣化を低減するために、いくつかの実施形態では、シーン変化が生じた時点を認識し、シーン変化が検出された後で先頭のシーン変化なしピクチャにおけるQsを管理する処置を取る。本明細書においてより詳細に説明するように、レート制御では、各符号化ブロックシーケンスの開始時に、前のピクチャでシーン変化が検出され、この時点で符号化中のピクチャではシーン変化が検出されなかったときに、最小および最大符号化サイズを適合させ得る。次いで、このシーン変化なしピクチャからの、符号化ブロックシーケンスに用いられる平均Qs値が、このシーン変化なしピクチャを含むピクチャのシーケンスについてのシーケンスベースQsとなるように設定される。
【0018】
本明細書では、レート制御の実施形態で用いられるフレームシーケンスをサブGOPと称する。サブGOPを決定するために、ビデオシーケンス内の各フレームは、レート制御階層において異なるレベルにあると見なされる。レート制御階層におけるこれらのレベルは次のように定義される。レベル0フレームは、キーフレームとも呼ばれ、他のレベル0フレームを予測するために使用し得る。さらに、予測されたレベル0フレームは、基準フレームとして他のレベル0ピクチャのみを使用し得る。レベルn(n>0)のピクチャは、(n−1)およびそれよりも低い(n>0)レベルのフレームから予測され得、n+1およびそれよりも高い(n>0)レベルのフレームを予測するために用いられ得る。サブGOPは、レベル0フレーム、すなわちキーフレーム、で始まり、次のレベル0ピクチャの前の最終フレームで終わるフレームシーケンスである。これにより、サブGOPにはレベル0フレームが1つしかないことが保証され、このレベル0フレームがこのサブGOPにおける最初のフレーム(符号化順であり、表示順ではない)になる。
【0019】
図1A〜
図1Eは、様々なGOP構造の例を示し、これらのGOP構造に関連するサブGOPを特定している。
図1A〜
図1Cは非階層GOP構造の例であり、
図1Dおよび
図1Eは階層GOP構造の例である。より具体的には、
図1AはIPPP符号化構造の例であり、
図1BはIBP符号化構造の例であり、
図1CはIBBP符号化構造の例であり、
図1Dは階層P符号化構造の例であり、
図1Eは階層B符号化構造の例である。これらの各図では、ピクチャが表示順で示されており、各ピクチャの上または下の番号はそのピクチャの符号化順を識別するものである。
【0020】
レート制御階層には2種類のサブGOPがある。IサブGOPとPサブGOPである。IサブGOPは、先頭ピクチャがIピクチャであるサブGOPであり、PサブGOPは、先頭ピクチャがPピクチャであるサブGOPである。本明細書においてより詳細に説明するように、1つまたは複数の実施形態では、IサブGOPとPサブGOPではシーケンスベースQsの決定のしかたが異なる。
【0021】
図2は、1つまたは複数の実施形態に従ったデジタルシステムのブロック図を示す。このシステムは、ソースデジタルシステム200および送信先デジタルシステム202を含み、前者から後者に通信チャネル216を介して符号化されたビデオシーケンスを送信する。ソースデジタルシステム200は、ビデオ取得構成要素204、ビデオエンコーダ構成要素206、およびトランスミッタ構成要素208を含む。ビデオ取得構成要素204は、ビデオエンコーダ構成要素206によって符号化されるビデオシーケンスを提供するように構成される。ビデオ取得構成要素204は、例えば、ビデオカメラ、ビデオアーカイブ、またはビデオコンテンツプロバイダからのビデオフィードとし得る。いくつかの実施形態では、ビデオ取得構成要素204は、ビデオシーケンスとしてのコンピュータグラフィックスや、ライブビデオとコンピュータ生成ビデオの組合せを生成し得る。
【0022】
ビデオエンコーダ構成要素206は、ビデオ取得構成要素204からビデオシーケンスを受け取り、トランスミッタ構成要素208による送信のため、かつ/またはストレージ構成要素(図示せず)への記憶のため、それを符号化する。一般に、ビデオエンコーダ構成要素206は、ビデオ取得構成要素204からピクチャのシーケンスとしてビデオシーケンスを受け取り、ピクチャ全体またはピクチャの一部であり得る符号化ブロックにピクチャを分割し、符号化ブロックを予測ブロックに分割し、予測ブロックに基づいて符号化ブロック内のビデオデータを符号化する。符号化プロセスの間、本明細書に記載するようなレート制御のための方法を実施し得る。ビデオエンコーダ構成要素206の実施形態の機能性は、
図3Aおよび
図3Bを参照して以下でより詳細に説明する。
【0023】
トランスミッタ構成要素208は、符号化されたビデオデータを送信先デジタルシステム202に通信チャネル216を介して送信する。通信チャネル216は、例えば、有線または無線通信媒体、ローカルエリアネットワーク、またはワイドエリアネットワークなど、符号化されたビデオシーケンスの送信に適した任意の通信媒体または通信媒体の組み合せとし得る。
【0024】
送信先デジタルシステム202は、レシーバ構成要素210、ビデオデコーダ構成要素212、および表示構成要素214を含む。レシーバ構成要素210は、ソースデジタルシステム200から通信チャネル216を介して符号化されたビデオデータを受け取り、符号化されたビデオデータを、復号化のためビデオデコーダ構成要素212に提供する。一般に、ビデオデコーダ構成要素212は、ビデオエンコーダ構成要素206によって行われた符号化プロセスの逆を行って、ビデオシーケンスの符号化ブロックを再構築する。次いで、再構築されたビデオシーケンスは、表示構成要素214に表示され得る。表示構成要素214は、例えば、プラズマディスプレイ、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイなどの任意の適切な表示デバイスとし得る。
【0025】
いくつかの実施形態では、ビデオストリーミング、ビデオ放送、およびビデオ電話通信のためのビデオシーケンスの双方向送信のために、ソースデジタルシステム200が、レシーバ構成要素およびビデオデコーダ構成要素も含んでよく、かつ/または送信先デジタルシステム202が、トランスミッタ構成要素およびビデオエンコーダ構成要素を含んでもよい。また、ビデオエンコーダ構成要素206およびビデオデコーダ構成要素212は、例えば、MPEG−1、MPEG−2、およびMPEG−4などの動画像符号化専門家グループ(MPEG)ビデオ圧縮規格、H.263、H.264、およびHEVCなどのITU−Tビデオ圧縮規格、映画テレビ技術者協会(SMPTE)の421 Mビデオコーデック規格(通称「VC−1」)、中国オーディオビデオスタンダードワークグループ(通称「AVS」)によって定義されたビデオ圧縮規格、ITU−T/ISO高効率ビデオ符号化(HEVC)規格など、1つまたは複数のビデオ圧縮規格に従って符号化および復号化を実施し得る。ビデオエンコーダ構成要素206およびビデオデコーダ構成要素212は、ソフトウェア、ファームウェア、および例えば1つまたは複数のデジタル信号プロセッサ(DSP)、マイクロプロセッサ、離散ロジック、特殊用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などのハードウェアの任意の適切な組み合せで実装され得る。
【0026】
図3は、1つまたは複数の実施形態に従ってレート制御を実施するように構成されるビデオエンコーダ、例えば、
図2のビデオエンコーダ206など、のブロック図を示す。見やすくするために、図に示すブロック符号化アーキテクチャはH.264ビデオエンコーダのものとする。
図3に示すように、符号化に供する入力ピクチャ300が、例えばマクロブロックなどの符号化ブロックに分割され、符号化ブロックは、動き推定構成要素320の1つの入力として、イントラ予測構成要素324の1つの入力として、およびコンバイナ302(例えば、加算器または減算器など)の正の入力に、供給される。さらに、具体的には示さないが、各入力フレームについて、予測モード、すなわち、インター予測またはイントラ予測、が選択され、モードセレクタ構成要素およびエントロピエンコーダ334に提供される。
【0027】
ストレージ構成要素318が、動き推定構成要素320および動き補償構成要素322に基準データを提供する。基準データは、前に符号化および復号化された1つまたは複数のピクチャ、すなわち、再構成されたピクチャを含み得る。いくつかの実施形態では、ストレージ構成要素318は、外部メモリ、すなわち、オフチップメモリである。
【0028】
動き推定構成要素320は、動き推定情報を動き補償構成要素322におよびエントロピエンコーダ334に提供する。より具体的には、動き推定構成要素320は、ストレージ318からの基準データを用いる複数の時間予測モードに基づいて符号化ブロックに対してテストを実施して、符号化コストに基づいて最良の動きベクトル/予測モードを選ぶ。予測モードをテストするために、動き推定構成要素320は、予測モードのブロックサイズに従って符号化ブロックを予測ブロックに分割し得る。動き推定構成要素320は、選択された1つまたは複数の動きベクトル(MV)および選択された予測モードを動き補償構成要素322に提供し、選択された動きベクトル(MV)をエントロピエンコーダ334に提供する。動き補償構成要素322は、動き補償されたインター予測ブロックおよび選択された時間予測モードを含む動き補償されたインター予測情報をセレクタスイッチ326に提供する。インター予測ブロックの符号化コストもモードセレクタ構成要素に提供される。
【0029】
イントラ予測構成要素324は、イントラ予測ブロックおよび対応する空間予測モードを含むイントラ予測情報をセレクタスイッチ326に提供する。つまり、イントラ予測構成要素324は空間予測を実施し、この空間予測では、複数の空間予測モードに基づくテストが符号化ブロックに対して、バッファ328からの前に符号化されたこのフレームの近隣のブロックを用いて実施されて、符号化コストに基づいてイントラ予測ブロックを生成するための最良の空間予測モードが選ばれる。空間予測モードをテストするために、イントラ予測構成要素324は、予測モードのブロックサイズに従って符号化ブロックを予測ブロックに分割し得る。具体的には示さないが、セレクタスイッチ326に提供される各イントラ予測ブロックの空間予測モードは、変換構成要素304にも提供される。また、具体的には示さないが、イントラ予測ブロックの符号化コストもモードセレクタ構成要素に提供される。
【0030】
セレクタスイッチ326は、動き補償構成要素322からの動き補償されたインター予測ブロックと、イントラ予測構成要素324からのイントラ予測ブロックの間で、これらのブロックの計量値の差およびモードセレクタ構成要素によって提供されるフレーム予測モードに基づいて選択する。セレクタスイッチ326の出力、すなわち、予測された予測ブロックは、コンバイナ302の負の入力におよび遅延構成要素330に提供される。遅延構成要素330の出力は、別のコンバイナ(すなわち加算器)338に提供される。コンバイナ302は、この予測された予測ブロックを現在の符号化ブロックの現在の予測ブロックから減算して、残余予測ブロックを変換構成要素304に提供する。得られた残余予測ブロックは、元の予測ブロックと予測された予測ブロックとの画素値間の差分を定量化した1セットの画素差分値である。
【0031】
変換構成要素304は、残余予測ブロックに対してブロック変換を実施して、残余画素値を変換係数に変換し、これらの変換係数を出力する。変換構成要素304からの変換係数は、量子化された変換係数を出力する量子化構成要素306に提供される。より具体的には、量子化構成要素306は、レート制御構成要素340が提供する量子化パラメータ(Qp)から導出される量子化スケール(Qs)によって残余予測ブロックの変換係数の値を分割する。一般に、量子化構成要素306は、所望の数の量子化ステップを用いることによって係数を表し、用いられるステップ数(あるいはこれに対応してQs値またはスケーリングマトリックス内の値)により、残余を表すために用いられるビット数が決定される。
【0032】
レート制御構成要素340は、本明細書に記載するようなレート制御の方法に従って各符号化ブロックについてベースQsを演算し、このベースQsを、量子化構成要素306が使用するために適切なQp値に変換する。
図4Aおよび
図4Bを参照して以下でより詳細に説明するように、レート制御方法のいくつかの実施形態では、ビデオバッファ336の現在の充足状況を含むいくつかの因子に鑑みて、符号化ブロックについてベースQsを、この符号化ブロックを含むサブGOPについてのベースQsを目標ビットレートに適合させることによって生成する。
【0033】
DCT変換により残余信号のエネルギーが周波数ドメインに再配分されるので、量子化された変換係数は、走査構成要素308でそれらのラスター走査順序から取り出され、有意性により、例えば、より有意の係数から始まりより有意でない係数がそれに続くように配される。順序付けられた量子化された変換係数は、走査構成要素308を介してヘッダ情報とともに提供され、エントロピエンコーダ334によって符号化される。エントロピエンコーダ334は、圧縮されたビットストリームを送信または記憶のためビデオバッファ336に提供する。エントロピエンコーダ334によって実施されるエントロピ符号化は、例えば、コンテキスト適合型可変長符号化(CAVLC)、コンテキスト適合型2値算術符号化(CABAC)、ランレングス符号化などの任意の適切なエントロピ符号化手法とし得る。
【0034】
どのエンコーダの中にも埋め込みデコーダがある。いかなる準拠したデコーダも圧縮されたビットストリームからイメージを再構築すると見込まれているので、埋め込みデコーダは同じ役目をビデオエンコーダに与えている。再構築された入力がわかると、ビデオエンコーダは、適切な残余エネルギーを伝えて後続のフレームを構成することができる。再構築された入力、すなわち、基準データ、を決定するために、走査構成要素308を介して提供される順序付けられた量子化された変換係数は、逆走査構成要素310によって元の変換後配列に戻される。逆走査構成要素310の出力は、逆量子化構成要素312に提供され、逆量子構成要素312は、推定された変換された情報、すなわち、変換構成要素304からの変換結果を推定または再構築したもの、を出力する。推定された変換された情報は逆変換構成要素314に提供され、逆変換構成要素314は、残余予測ブロックを再構築したものを表す、推定された残余情報を出力する。再構築された残余予測ブロックは、コンバイナ338に提供される。
【0035】
コンバイナ338は、再構築された残余予測ブロックに、遅延された選択された予測ブロックを加算して、フィルタリングされていない再構築された予測ブロックを生成する。この予測ブロックは、再構築されたフレーム情報の一部になる。再構築されたフレーム情報は、バッファ328を介してイントラ予測構成要素324に提供され、フィルタ構成要素316にも提供される。フィルタ構成要素316は、再構築されたフレーム情報をフィルタリングし、フィルタリングされた再構築された符号化ブロック、すなわち、基準データ、をストレージ構成要素318に提供するループ内フィルタである。
【0036】
図4Aおよび
図4Bは、1つまたは複数の実施形態に従ったレート制御のための方法のフローチャートを示す。説明を簡単にするために、サブピクチャレベルでのレート制御は符号化ブロック行に基づいて行われると仮定してこれらの方法を説明する。サブピクチャレベルでのレート制御が、ピクチャの行よりも短いことも長いこともあり、ピクチャ内で長さが変化し得る、符号化ブロックシーケンスに基づいて行われる実施形態が当業者には理解されよう。
【0037】
レート制御方法の1つまたは複数の実施形態では、ビデオシーケンスの各サブGOPの開始時にベースQsを演算する(402)。次いで、このサブGOPベースQsを用いて、サブGOP内の各ピクチャに対しベースQsを演算する(404)。最小および最大符号化サイズも各ピクチャに対し演算される(420)。次いで、ピクチャベースQsと最小および最大ピクチャサイズとを用いて、ピクチャの符号化ブロックの各行に対しベースQsを決定する(430〜438)。より具体的には、或る行についての行ベースQsは、ピクチャの推定符号化サイズが最小または最大ピクチャサイズから外れる場合、必要に応じて増減され得る(430〜434)。さらに、ピクチャの符号化中にシーン変化が検出された場合、最小および最大ピクチャサイズは、シーン変化検出後の最初のシーン変化なしピクチャの各行に対し適合され(424〜428)て、このピクチャに対する特別なサイズ制約が有効になる。本明細書ではこのサイズ制約をシーン変化サイズ制約と称することがある。シーン変化なしピクチャを符号化した後、次のピクチャを符号化する前に、サブGOPベースQsをこのピクチャについての平均行ベースQsに設定する(408)。
【0038】
シーン変化の前後ではピクチャの複雑さが大きく異なり得、この複雑さは、この複雑さの変化の影響を低減するために何らかの対策が取られない限り、シーン変化後いくらか時間が経ってから符号化されるピクチャの質に悪影響を及ぼす恐れがあるので、シーン変化の特別な処理が実施される。例えば、ピクチャの複雑さがシーン変化前は極めて小さいが、シーン変化後に極めて大きい場合、新たなシーンの最初の数ピクチャについてのQs値は極めて小さくなる。これは、前のピクチャの複雑さが極めて小さいために目標ビットレートを満足するためシーン変化前のQs値が極めて小さくなるからである。このため、新たなシーンにおける最初の数ピクチャの符号化は、目標ビットレートと比較してかなり多くのビット数を消費することになる。そのため、後続の数ピクチャにわたってQs値をかなり大きな値に増加させて目標ビットレートを満足させる。これにより、新たなシーンの開始時に極めて良好な画質のピクチャが数枚得られるが、その後、画質の悪いピクチャが多数続くことになる。
【0039】
別の例では、ピクチャの複雑さがシーン変化前は極めて大きいが、シーン変化後に極めて小さい場合、新たなシーンにおける最初の数ピクチャで用いられるQs値は極めて大きくなる。これは、前のピクチャの複雑さが極めて大きいために目標ビットレートを満足するためシーン変化前のQs値が極めて大きくなるからである。このため、新たなシーンにおける最初の数ピクチャは、或るピクチャについての目標ビット数と比較してかなり少ないビット数しか取らないことになる。このため、新たなシーンの開始時に画質の悪いピクチャが多くなる。
【0040】
シーン変化サイズ制約が課されるように、シーン変化後の最初のシーン変化なしピクチャにおける行レベルでの最小および最大ピクチャサイズを適合させて、シーン変化後のより迅速な安定を提供するサブGOPベースQsの新たな値を生成する。以下でより詳細に説明するように、この特定の適合は、サブGOPベースQsの新たな値を生成するために経験的に導出される最小および最大サイズ閾値に基づく。
【0041】
ここで
図4Aおよび
図4Bの方法のステップをより詳細に説明する。本方法のステップを説明では、本方法の実施形態の例示実装形態の態様を記述する疑似コードの形式で例を提供する。この疑似コードは説明の目的にのみ提供されるものであり、限定的なものと解釈すべきではない。レート制御方法は様々の異なる方式で実施し得ることが当業者には理解されよう。この疑似コードは、Cプログラミング言語の構文で表現され、本明細書の最後に示す表10で定義される様々な変数および定数を引用している。従って、この疑似コードは、実行される特定の命令および演算を詳細に説明しなくても当業者には理解可能なはずである。
【0042】
例示の疑似コードの一部は、量子化パラメータ(Qp)ドメインで動作し、Qp値をQs値に変換するか、あるいは、Qpのデルタ変化に基づいてQs値を調整する。疑似コードでは、これらの演算は、サブルーチンQp2QsおよびaddDelta2Quantとしてそれぞれ参照される。いくつかのビデオ符号化規格では、量子化ステップサイズは、整数値を有する整数値量子化パラメータに関連付けられている。Qp値からQs値への変換の手法およびQpデルタ変化に基づくQs値の調整の手法は、当技術分野ではよく知られている。例えば、或るQp値に対するQs値は、ルックアップテーブルを用いて、かつ/または計算による導出によって決定し得る。
【0043】
図4Aに示すように、ビデオシーケンスの開始時に、このビデオシーケンス内の最初のピクチャについての初期Qsが演算される(400)。理想的には、初期QsはQsの安定状態値に近く、それによって、そうでない場合にビデオシーケンスの開始時、すなわちコールドスタート時、に生じ得るビデオ品質劣化が低減される。つまり、コールドスタート時に用いられるQsは、適切に設定されていない場合、このQsが安定状態に落ち着く前に多数のピクチャの符号化にわたって調整が必要とされることがある。例えば、初期ランプ期間(立ち上がり時間)中、開始時のQsが安定状態に到達したQsより大きい場合、知覚/測定される画質は、このランプ期間中のほうが安定化後よりも悪い。また、開始時のQsが安定状態に到達したQsより小さい場合、ランプ期間中にピクチャを符号化するために必要以上のビットが消費されることになり、ランプ期間後に符号化されるピクチャのビデオ画質が、ランプ期間中のビットの過剰消費を補うためにしばらくの間劣化することがある。
【0044】
従って、ビデオシーケンスの初期Qsは、目標ビットレートに基づいて、低い目標ビットレートに対しては大きな初期Qsが用いられ、高い目標ビットレートに対しては小さな初期Qsが用いられるように演算される。いくつかの実施形態では、初期Qsは、ビデオシーケンスの目標ビットレート、低いビットレートに対して経験的に決定されるデフォルトQs値、およびより高いビットレート、例えば、高ビットレートおよび中ビットレート、を表す1つまたは複数の経験的に決定される閾値に基づいて決定される。用いられる閾値の数は、所与のビデオエンコーダが提供するビットレートの範囲によって決まり得る。ビデオシーケンスの目標ビットレートが高いビットレートを表す閾値より低い場合、初期QsがデフォルトQsに設定される。そうでない場合、デフォルトQs値は、目標ビットレートが高いほどデフォルトQs値が小さくなるように、それが超える最高ビットレート閾値に応じていくらか下げられる。初期Qsは、符号化効率に影響を及ぼすビデオエンコーダで用いられる特定の符号化手法に基づいて決定されてもよい。
【0045】
表1の疑似コードは、初期Qs、seqInitQsの動的決定の例を示す。この例では、2つの経験的に決定される閾値が用いられる。一つは高ビットレートを表す閾値であり、もう一つは中ビットレートを表す閾値である。また、高ビットレートおよび中ビットレートに対する目標ビットレートの比較解析は、目標ビットレートから導出されるマクロブロック(MB)目標ビットレートtargetBitsMBに基づく。この疑似コードは、初期量子化パラメータ(Qp)を決定し、次いで、このQpをQs値に変換する(Qp2Qs)ことに留意されたい。デフォルトQp値は、経験的に決定され、マクロブロック目標ビットレートがこれらの閾値の一方よりも高くない場合に限り初期Qsを決定するために用いられる。
【表1】
【0046】
次いで、ビデオシーケンス内の各サブGOPが符号化される(402〜412)。サブGOPの開始時に、そのサブGOPについてのベースQsが演算される(402)。さらに、このサブGOPについてのベースQsが、サブGOPがIサブGOPかPサブGOPかに基づいて決定される。サブGOPがIサブGOPである場合、サブGOPベースQsが、ビデオシーケンスにおける各前に符号化されたピクチャの平均行ベースQsに基づいて演算される。つまり、現在のサブGOPより前に符号化されたビデオシーケンス内の各ピクチャの平均行ベースQsが、現在のサブGOPについてのベースQsの値に寄与する。いくつかの実施形態では、サブGOPベースQは、前のピクチャの平均行ベースQs値の移動(running)重み平均として演算される。この移動重み平均は、各ピクチャが次のように符号化された後で演算され得る。
curQsI=weightedAvg(modQs,curQsI)
ここで、weightedAvg(qa,qb)=qa×w1+qb×w2であり、modQs=fun(avgQsCurPic)である。これら2つの重みの値は経験的に決定され得る。いくつかの実施形態では、w1=0.75およびw2=0.25である。
【0047】
サブGOPがPサブGOPである場合、サブGOPベースQsは、ビデオシーケンスにおける前のPサブGOPの符号化からの様々なレート制御統計値に基づいて演算される。いくつかの実施形態では、サブGOPベースQsは、前のPサブGOP内のピクチャによって消費される平均ビット数とピクチャ当たりの目標ビットとの間の不一致の調整因子によって適合される、前のPサブGOP内の先頭ピクチャの平均Qsである。
【0048】
いくつかの実施形態では、PサブGOPについてのサブGOPベースQsの演算は、ビデオバッファの充足状況に基づく。より具体的には、レート制御は、バッファ充足状況を公称バッファレベル近くに維持することによって、フレーム飛ばしを減らし、バッファアンダーフローが生じないようにビデオバッファの充足状況を管理しようとする。PサブGOPの開始時にバッファ充足状況がこの公称バッファレベルよりも高い場合、サブGOPベースQsの演算は、Qsを大きくするようにバイアスされ得る。また、バッファ充足状況が低すぎる場合、この演算はQsを小さくするようにバイアスされ得る。
【0049】
PサブGOPについてのサブGOPベースQsの演算は、VBRまたはCBRのいずれの符号化が実施されているかも考慮し得る。さらに、この演算は、サブGOPベースQsが連続するサブGOP間で変化し得る度合いを制限し得る。
【0050】
表2の疑似コードは、或るサブGOPについてのベースQsの決定例を示す。この疑似コードでは、サブGOPベースQs baseQsCurSubGopは、IサブGOPの場合はcurQsIに設定され、PサブGOPの場合は前のPサブGOP内の先頭ピクチャの平均Qs baseQsAvePrevPSubGopに調整因子globalAdjを適用することによって演算される。調整因子globalAdjの値は、前のPサブGOP内のピクチャによって消費された平均ビット数prevPtypeSubGopBitsと、ピクチャ当たりの目標ビットtargetBitsPerPicとの間の不一致、および充足状況の所望のレベルvbUseLevelと比較したビデオバッファの充足状況の現在のレベルvbLevelに基づいて決定されるバイアス値vbconvergeに基づいて演算される。また、サブGOPベースQsの値baseQsCurSubGopは、VBRまたはCBR符号化のいずれが使用されているかによって決まる最大Qs maxQsLimitよりも大きくなれない。
【0051】
curQsIの値baseQsPrevPSubGop、baseQsCurSubGop、およびbaseQsAvePrevPSubGopは、ビデオシーケンス内の最初のサブGOPについてのサブGOPベースQsを演算するために、このビデオシーケンスの初期QsであるseqInitQsに基づいて初期化される。より具体的には、baseQsPrevPSubGop=baseQsCurSubGop=baseQsAvePrevPSubGop=addDelta2Quant(seqInitQs,+rcIQPBoost and curQsI=baseQsPrevPSubGopである。rcIQPBoostの値は、得られる視覚的な質に基づいて経験的に決定され得る。prevPtypeSubGopBitsの値も初期化される。
【表2】
【0052】
再び
図4Aを参照して、サブGOPベースQsが演算されると(402)、このサブGOPベースQsを用いてサブGOP内の各ピクチャが符号化される(404〜410)。ピクチャの開始時に、このピクチャのベースQsがサブGOPベースQsを用いて演算される(404)。ピクチャベースQsは、ピクチャの種類およびレート制御階層におけるピクチャのレベルに基づいてサブGOPベースQsを調整することによって演算される。一般に、Iピクチャは、サブGOPベースQsより小さいピクチャベースQsを有し、レート制御階層のレベル0のPピクチャは、サブGOPベースQsと等しいピクチャベースQsを有し、レート制御階層のレベルがより高いピクチャは、サブGOPベースQsより高いピクチャベースQsを有する。さらに、レート制御階層のレベルnのピクチャは、レート制御階層のレベルn−1のピクチャより高いピクチャベースQsを有する。
【0053】
表3の疑似コードは、或るピクチャについてのベースQsをサブGOPベースQsを用いて決定する例を示す。このピクチャがIピクチャである場合、サブGOPベースQsは固定量−rcIQPBoostだけ上げられる。このピクチャがレート制御階層でレベル0のPピクチャである場合、サブGOPベースQsは変更されない。レート制御階層でのレベルがレベル0より低いピクチャについては、サブGOPベースQsは、固定量deltaQpPBだけ下げられ、このピクチャのレート制御階層レベルgopLevelに従ってさらに下げられる。
【表3】
【0054】
ピクチャベースQsが演算されると(404)、ピクチャベースQsを用いてピクチャが符号化される(406)。
図4Bを参照して以下にピクチャの符号化をより詳細に説明する。ピクチャが符号化された後、シーン変化が検出され、符号化されたばかりのピクチャがシーン変化後の最初のシーン変化なしピクチャであった場合、次のピクチャについてのピクチャベースQsを演算する前にサブGOPベースQsが調整され得る(408)。上述したように、この調整は、シーン変化の前後でピクチャの複雑さがかなり異なる場合に生じ得る符号化品質の劣化を低減するように成される。上記条件が満足される場合、シーン変化なしピクチャについての平均行ベースQsに基づいてサブGOPベースQsが調整される。平均行ベースQsは、ピクチャの符号化に用いられる行ベースQs値の和をこのピクチャ内の行数で除算することによって演算し得る。
【0055】
この調整は、シーン変化なしピクチャ後の次のピクチャについてのピクチャベースQsを演算する前に実施される。さらに、この調整は、シーン変化なしピクチャの種類に依存し得る。いくつかの実施形態では、シーン変化なしピクチャがPピクチャである場合、サブGOPベースQsは、シーン変化なしピクチャの平均行ベースQsに設定される。また、シーン変化なしピクチャがBピクチャである場合、サブGOPベースQsは、レート制御階層におけるこのピクチャのレベルに対して調整される平均行ベースQsに設定される。すなわち、サブGOPベースQsが平均行ベースQsよりも大きくなり、平均行ベースQsに対するデルタ変化がレート制御階層における各連続レベルに対し大きくなるようにする。PサブGOPについてのサブGOPベースQsの演算に用いられる様々な統計値も必要に応じて調整される。
【0056】
表4の疑似コードは、シーン変化に対してサブGOPベースQsを必要に応じて調整する例を示す。フラグupdateBaseQsAfterSceneChangeは、シーン変化のため、サブGOPベースQs baseQsCurSubGopを更新すべきかどうかを示すために用いられる。フラグisNewSceneは、符号化されたばかりのピクチャにシーン変化があったか否かを示す。この値isNewSceneは、レート制御と同時に行われるシーン検出手法によって更新される。任意の適切なレート制御手法を用いることができる。サブGOPベースQsの演算に用いられる他の変数も、現在のサブGOPについてのベースQsの変化が次のPサブGOPについてのベースQsの演算に反映されるように更新されることに留意されたい。
【0057】
この疑似コードでは、updateBaseQsAfterSceneChangeが真である場合、現在のサブGOPにおける前に符号化されたピクチャでシーン変化が検出されている。isNewSceneが偽である場合、符号化されたばかりのピクチャでシーン変化は検出されておらず、すなわち、符号化されたばかりのピクチャはシーン変化なしピクチャである。baseQsCurSubGopの値は、これらの条件両方が満たされる場合にのみ変更される。サブGOP内のシーン変化なしピクチャがPピクチャである場合、baseQsCurSubGopは、シーン変化なしピクチャの符号化に用いられる平均行QsであるbaseQsAvgCurPicに設定される。このシーン変化なしピクチャがBピクチャである場合、baseQsCurSubGopは、固定量deltaQpPBだけ下げられたbaseQsAvgCurPicに設定され、このピクチャのレート制御階層のレベルgopLevelに従ってさらに下げられる。
【表4】
【0058】
サブGOP内のすべてのピクチャが符号化された(410)後、現在のサブGOPがPサブGOPである場合、PサブGOPについてのサブGOPベースQsの演算に用いられる様々な統計値が更新される。例えば、このサブGOP内の先頭ピクチャの平均Qsが記憶され得、ピクチャの符号化に用いられる平均ビット数が演算され得る。表5の疑似コードは、PサブGOPについてのサブGOPベースQsの演算に用いられる統計値を更新する例を示す。
【表5】
【0059】
図4Bは、
図4Aのステップ406を実施するための方法、すなわち、サブGOPベースQsを用いてピクチャベースQsが演算されるとピクチャを符号化するための方法を示す。ピクチャの開始時に、このピクチャについて最大ピクチャサイズおよび最小ピクチャサイズが演算される(420)。最大ピクチャサイズはピクチャを符号化するために用いられる最大ビット数を示し、最小ピクチャサイズはピクチャを符号化するために用いられる最小ビット数を示す。一般に、最大ピクチャサイズは、ピクチャ当たりの目標ビットより大きく設定される。最大ピクチャサイズはVBR符号化とCBR符号化で異なることもあり、VBR符号化ではより大きい最大ピクチャサイズがより望ましく、CBR符号化ではより小さい最大ピクチャサイズがより望ましい。下にあるハードウェアの性能などの他の因子も、最大ピクチャサイズの演算に際して考慮され得る。いくつかの実施形態では、最大ピクチャサイズは、ピクチャ当たりの目標ビットの倍数として演算され、VBR符号化で用いられる倍率はCBR符号化で用いられるものよりも大きい。倍率は経験的に決定され得る。
【0060】
最小ピクチャサイズは、VBR符号化では典型的には0である。CBR符号化では、最小ピクチャサイズは、起こり得る経時的ビット消費変動が小さくなるように設定される。さらに、最小ピクチャサイズと最大ピクチャサイズは、互いにあまり近い値とすべきではない。近くすると、ピクチャ内でQsが過度の振動をきたすことがあるからである。そのために、いくつかの実施形態では、最小ピクチャサイズは、ピクチャ当たりの目標ビットの半分よりも小さく、または最大ピクチャサイズの1/4に設定される。
【0061】
表6の疑似コードは、最大ピクチャサイズmaxPicSizeの演算例を示し、表7の疑似コードは、最小ピクチャサイズminPicSizeの演算例を示す。
【表6】
【表7】
【0062】
再び
図4Bを参照して、最小および最大ピクチャサイズが演算された(420)後、ピクチャ内の符号化ブロックの各行がピクチャベースQsと最小および最大ピクチャサイズとを用いて符号化すされ(422〜438)。まず、行ベースQsがピクチャベースQsになるように設定される(422)。前のピクチャにシーン変化がなく(424)、行ベースQsの現在の値が用いられる場合、この時点でピクチャを符号化するために必要とされるビット数が推定される(430)。推定されたサイズが最大ピクチャサイズよりも大きいか、または最小ピクチャサイズよりも小さい場合(432)、行ベースQsが調整される(434)。より具体的には、現在の行についての行ベースQsが、ピクチャサイズ制約を満足するように必要に応じて増減される。推定されたサイズがピクチャサイズ制約から外れない場合(432)、行ベースQsは変更されない。次いで、この行における符号化ブロックがこの行ベースQsを用いて符号化される。
【0063】
前のピクチャでシーン変化があった場合(424)、現在のピクチャでシーン変化が検出されたかを判断するために検査がなされる(426)。シーン変化検出はレート制御と同時に実施され、ピクチャが符号化される一方でシーン変化インジケータを設定することによってシーン変化を知らせることができる。シーン変化が検出された場合(426)、最大ピクチャサイズおよび最小ピクチャサイズの現在の値を用いて行が符号化される(430〜436)。これらの値は、このピクチャの開始時に演算された値(420)と同じでないことがある。このピクチャでシーン変化が検出される前にこれらの値が適合された(428)かもしれないからである。
【0064】
シーン変化が検出されなかった場合(426)、最大および最小ピクチャサイズがこの行に対して適合される(428)。この適合は、サイズ閾値に従って最大及び最小ピクチャサイズを制約する。このサイズ閾値は、サブGOPベースQsが順方向に進むときに用いるために適した、このピクチャについての平均行ベースQsが得られるように、すなわち、シーン変化後のより早い安定となるサブGOPベースQsの新たな値が得られるように、選択される。最大及び最小ピクチャサイズの適合に用いられる特定のサイズ閾値は、現在のピクチャの種類に基づいて選択される。より具体的には、Iピクチャの場合の適合される最大ピクチャサイズは、Pピクチャの場合の適合される最大ピクチャサイズよりも大きくなり、Pピクチャの場合の適合される最大ピクチャサイズは、Bピクチャの場合の適合される最大ピクチャサイズよりも大きくなる。同様に、Iピクチャの場合の適合される最小ピクチャサイズは、Pピクチャの場合の適合される最小ピクチャサイズよりも大きくなり、Pピクチャの場合の適合される最小ピクチャサイズは、Bピクチャの場合の適合される最小ピクチャサイズよりも大きくなる。
【0065】
さらに、いくつかの実施形態では、適合される最大ピクチャサイズは、ピクチャの種類にかかわらず、ピクチャ当たりの目標ビットの倍数である。つまり、最大サイズの閾値は、適合される最大ピクチャサイズを演算するためにピクチャ当たりの目標ビットに適用される、経験的に決定される倍率である。同様に、適合される最小ピクチャサイズは、ピクチャの種類にかかわらず、ピクチャ当たりの目標ビットに基づいている。Iピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットを、GOP内のPおよび/またはBピクチャの数に基づいて決定される約数で除算したものである。Pピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットである。Bピクチャの場合、適合される最小ピクチャサイズは、ピクチャ当たりの目標ビットの半分である。
【0066】
表8の疑似コードは、行レベルで最大ピクチャサイズmaxPicSizeを演算する例を示し、表9の疑似コードは、行レベルで最小ピクチャサイズminPicSizeを演算する例を示す。
【表8】
【表9】
【0067】
再び
図4Bを参照して、最小および最大ピクチャサイズが適合された(428)後、最大ピクチャサイズおよび最小ピクチャサイズの適合された値を用いて行が符号化される(430〜436)。
【0068】
ピクチャ内のすべての行が符号化された(438)後、IサブGOPについてのサブGOPベースQsの値を設定するために用いられる移動重み平均が、このピクチャを符号化するために用いられた平均Qsで更新される。前のピクチャでシーン変化が検出されたことを知らせるために用いられるインジケータもこのレベルで管理される。現在のピクチャの符号化においてシーン変化が検出されると、インジケータは、シーン変化が検出されたことを知らせるように設定される。また、このピクチャが、シーン変化が検出された後の最初のシーン変化なしピクチャである場合、インジケータは、シーン変化が検出されていないことを知らせるように設定される。このピクチャの符号化が開始されピクチャの符号化中にシーン変化が検出されなかったときこのインジケータが前のピクチャでシーン変化を知らせる場合、このピクチャは最初のシーン変化なしピクチャであることに留意されたい。このインジケータは、疑似コードの例では、updateBaseQsAfterSceneChangeと呼ばれる。
【0069】
ビデオシーケンスの開始時、すなわち、コールドスタート時に、シーン変化について上述したものと同様の理由で、ビデオ品質劣化となり得ることを理解されたい。つまり、何らかの方式で緩和しない限り、コールドスタート時に用いられるQsは、安定状態に落ち着く前に、多数のピクチャの符号化にわたって調整を必要とし得る。いくつかの実施形態では、ビデオシーケンスの開始時のコールドスタートは、ビデオシーケンス内の最初のピクチャを新たなシーンの最初のピクチャ、すなわち、シーン変化が生じたピクチャ、として扱うようにレート制御を初期化することによって処理される。そのため、上述したように、レート制御は、最初のピクチャ後の先頭のシーン変化なしピクチャにおけるQsを管理する処置を取る。
【0070】
本開示に記載したレート制御手法は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合せで実施され得る。レート制御手法の任意の一部または全部がソフトウェア内にある場合、このソフトウェアは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはデジタル信号プロセッサ(DSP)など、1つまたは複数のプロセッサにおいて実行され得る。ソフトウェアは、まず、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、または任意の他のコンピュータ可読ストレージデバイスなど、コンピュータ可読媒体に記憶され、プロセッサにロードされ実行され得る。場合によっては、このソフトウェアは、コンピュータ可読媒体およびこのコンピュータ可読媒体用のパッケージ材料を含むコンピュータプログラム製品として販売され得る。場合によっては、ソフトウェア命令が、着脱可能なコンピュータ可読媒体(例えば、フロッピーディスク、光ディスク、フラッシュメモリ、USBキー)を介して、別のデジタルシステム上のコンピュータ可読媒体から送信経路を介する等の方式で配信され得る。
【0071】
本明細書に記載したようなレート制御のための方法およびシステムの実施形態は、事実上いかなる種類のデジタルシステム(例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話(すなわちセルホン)またはMP3プレーヤなどのハンドヘルドデバイス、パーソナルデジタルアシスタント(PDA)、デジタルビデオカメラ、セットトップボックス、デジタルビデオレコーダ(DVR)など)に対して、デジタルビデオシーケンスを取得するかまたは別の方法で生成する機能性を備えて実装され得る。
図5〜
図7は、例示のデジタルシステムのブロック図である。
【0072】
図5は、1つまたは複数の実施形態に従った、埋め込みシステム(例えばデジタルカメラ)に適したデジタルシステムを示す。このデジタルシステムは、構成要素の中でもとりわけ、DSPに基づくイメージコプロセッサ(ICP)502、RISCプロセッサ504、および本明細書に記載したレート制御方法を実施するように構成され得るビデオ処理エンジン(VPE)506を含む。RISCプロセッサ504は、任意の適切に構成されるRISCプロセッサとし得る。VPE506は、イメージセンサ、ビデオデコーダなどのイメージング周辺機器からのビデオ取得用に用いられる入力インターフェースを備えた、構成可能なビデオ処理フロントエンド(ビデオVE)508、SDTVディスプレイ、デジタルLCDパネル、HDTVビデオエンコーダなどの表示デバイス用に用いられる出力インターフェースを備えた、構成可能なビデオ処理バックエンド(ビデオBE)510、ならびにビデオFE508とビデオBE510に共有されるメモリインターフェース524を含む。このデジタルシステムは、マルチメディアカード、オーディオシリアルポート、ユニバーサルシリアルバス(USB)コントローラ、シリアルポートインターフェースなどを含み得る様々な周辺機器用の周辺機器インターフェース512も含む。
【0073】
ビデオVE508は、イメージ信号プロセッサ(ISP)516および3A統計生成器(3A)518を含む。ISP516は、イメージセンサおよびデジタルビデオソースにインターフェースを提供する。より具体的には、ISP516は、センサ(CMOSまたはCCD)から未処理イメージ/ビデオデータを受け取ることができ、数多くのフォーマットのYUVビデオデータを受け取ることもできる。ISP516は更に、未処理CCD/CMOSデータからカラーフォーマット(例えばRGB)のイメージデータを生成する機能性を備えたパラメータ化イメージ処理モジュールを含む。ISP516は、センサの種類毎にカスタム化が可能であり、取得したデジタルイメージのプレビュー表示用かつビデオ記録モード用のビデオフレームレートをサポートする。ISP516は更に、他の機能性の中でもとりわけ、イメージリサイザ、統計収集機能性、および境界信号計算機を含む。3Aモジュール518は、ISP516または外部メモリからの未処理イメージデータに関する計量値を収集することによって、オートフォーカス、オートホワイトバランス、および自動露出用のための制御ループをサポートする機能性を含む。
【0074】
ビデオBE510は、オンスクリーンディスプレイエンジン(OSD)520およびビデオアナログエンコーダ(VAC)522を含む。OSDエンジン520は、いくつかの異なる種類のハードウェアディスプレイウィンドウ用の様々なフォーマットの表示データを管理する機能性を含み、また、ビデオデータおよび表示/ビットマップデータを収集し、単一のディスプレイウィンドウに合成した後、このデータをYCbCrフォーマットでVAC522に提供する。VAC522は、OSDエンジン520から表示フレームを取り込み、それを所望の出力フォーマットにフォーマットし、表示デバイスにインターフェースするために必要とされる信号を出力する機能性を含む。VAC522は、コンポジットNTSC/PALビデオデバイス、Sビデオデバイス、デジタルLCDデバイス、高精細ビデオエンコーダ、DVI/HDMIデバイスなどにインターフェースし得る。
【0075】
メモリインターフェース524は、外部メモリにデータを要求しかつ/または外部メモリからデータを送信している、ビデオFE508およびビデオBE510内のモジュールへのプライマリソースおよびシンクとして機能する。メモリインターフェース524は、読出しおよび書込みバッファおよびアービトレーションロジックを含む。
【0076】
ICP502は、取得イメージのビデオ符号化に必要とされる計算演算を実施する機能性を含む。サポートされるビデオ符号化規格は、例えば、JPEG規格、MPEG規格、およびH.26x規格の1つまたは複数を含み得る。1つまたは複数の実施形態では、ICP502は、本明細書に記載したレート制御方法の計算演算をビデオ符号化中に実施するように構成される。
【0077】
図6は、本明細書に記載したようなレート制御を実施するように構成され得るデジタルシステム(例えば、携帯電話)600のブロック図である。信号処理ユニット(SPU)602は、埋め込みメモリ及びセキュリティ機能を含むデジタル処理プロセッサシステム(DSP)を含む。アナログベースバンドユニット604は、ハンドセットマイクロホン613aから音声データストリームを受け取り、ハンドセットモノラルスピーカ613bに音声データストリームを送る。アナログベースバンドユニット604は更に、マイクロホン614aから音声データストリームを受け取り、モノラルハンドセット614bに音声データストリームを送る。アナログベースバンドユニット604とSPU602とは別々のICとし得る。多くの実施形態では、アナログベースバンドユニット604は、プログラマブルプロセッサコアを埋め込まないが、SPU602上で動作するソフトウェアによって設定されるオーディオ経路、フィルタ、利得などの構成に基づいて処理を実行する。いくつかの実施形態では、アナログベースバンド処理は、通話処理または他の処理中のデジタルシステム600のユーザとの相互作用のため、同じプロセッサ上で実行され、かつ、このプロセッサに情報を送ることができる。
【0078】
ディスプレイ620は、ネットワークから、ローカルカメラ628から、またはUSB626やメモリ612などの他のソースから受け取ったピクチャや符号化されたビデオストリームも表示し得る。SPU602は、RFトランシーバ606を介してセルラネットワークなどの様々なソースから、またはカメラ628から受け取ったビデオストリームをディスプレイ620に送ることもできる。SPU602は更に、エンコーダ622を経由しコンポジット出力端子624で外部ビデオディスプレイユニットへビデオストリームを送ることもできる。エンコーダユニット622は、PAL/SECAM/NTSCビデオ規格に従って符号化を提供し得る。
【0079】
SPU602は、ビデオ符号化および復号化に必要とされる計算演算を実施する機能性を含む。サポートされるビデオ符号化規格は、例えば、JPEG規格、MPEG規格、H.26x規格、および新たに出てきたHEVC規格の1つまたは複数を含み得る。1つまたは複数の実施形態では、SPU602は、本明細書に記載したようにビデオ符号化中にレート制御の計算演算を実施するように構成される。レート制御の全部または一部を実施するソフトウェア命令がメモリ612に記憶され得、例えばピクチャやビデオストリームなどのデジタルイメージデータの符号化の一部としてSPU602によって実行し得る。
【0080】
図7は、プロセッサ702、関連するメモリ704、ストレージデバイス706、およびデジタルシステムに典型的な数多くの他の要素および機能性(図示せず)を含むデジタルシステム700(例えば、パーソナルコンピュータ)を示す。1つまたは複数の実施形態では、デジタルシステムが複数のプロセッサを含み得、かつ/または、これらのプロセッサの1つまたは複数をデジタル信号プロセッサとし得る。デジタルシステム700は更に、キーボード708およびマウス710(または他のカーソル制御デバイス)などの入力手段、およびモニタ712(または他の表示デバイス)などの出力手段を含み得る。これらの入力および出力手段は他の形態を取り得ることが当業者には理解されよう。デジタルシステム700は更に、ビデオシーケンスを取得するための回路(例えば、光学素子、センサ、読出し電子機器)を含むイメージ取得デバイス(図示せず)を含み得る。デジタルシステム700は、本明細書に記載したようなレート制御を実施する機能性を備えたビデオエンコーダを含み得る。
【0081】
デジタルシステム700は、ネットワークインターフェース接続(図示せず)を介して、ネットワーク(図示せず)(例えば、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、セルラネットワーク、任意の他の類似の種類のネットワーク、および/またはこれらの任意の組み合せ)に接続され得る。デジタルシステム700は、ストレージデバイス706からおよび/または着脱可能な記憶媒体から、ネットワークインターフェース接続を介して、符号化されたビデオシーケンスを受け取る機能性を含み得る。
【0082】
また、上述したデジタルシステム700の1つまたは複数の要素は、離れた場所に配置され得、ネットワークを介して他の要素に接続され得ることが当業者には理解されよう。また、複数のノードを有する分散システムで実施形態を実施し得、このシステムの各部分およびソフトウェア命令が、分散システム内の異なるノードに位置していてもよい。一実施形態では、ノードをデジタルシステムとし得る。あるいは、ノードは、関連する物理メモリを備えたプロセッサとし得る。あるいは、ノードは、共有されるメモリおよび/またはリソースを備えたプロセッサとし得る。
【0083】
本明細書に記載したようなレート制御の計算演算を実施するソフトウェア命令は、コンパクトディスク(CD)、ディスケット、テープ、ファイル、メモリ、または任意の他のコンピュータ可読ストレージデバイスなど、コンピュータ可読媒体に記憶され得る。ソフトウェア命令は、着脱可能なコンピュータ可読媒体(例えば、フロッピーディスク、光ディスク、フラッシュメモリ、USBキー)を介する、別のデジタルシステム上のコンピュータ可読媒体から送信経路を介する等の方式で、デジタルシステム700に配信され得る。
【0084】
例示の実施形態の文脈で説明したような特徴またはステップの全てまたはその幾つかを有する例示の実施形態の文脈で説明した一つ又は複数の特徴又はステップの異なる組合せを有する実施形態も、本明細書に包含されることを意図している。当業者には、本発明の特許請求の範囲内で多くの他の実施形態および変形も可能であることが理解されよう。
【表10】