以下、本発明の一実施形態を、図面を参照しながら説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態における動画像符号化装置10の構成を示すブロック図である。
動画像符号化装置10は、マルチレート符号化を行う装置である。具体的には、動画像符号化装置10は、符号化・配信パラメータと、符号化対象の映像コンテンツデータ(以下「映像データ」という。)とを入力し、入力した映像データの解像度を、符号化・配信パラメータに基づいて2つ以上の解像度に変換する。なお、動画像符号化装置10は、入力した映像データの解像度をそのまま利用する場合には、入力した映像データの解像度を変換しなくてもよい。次に、動画像符号化装置10は、変換後の映像データそれぞれに対して、符号化・配信パラメータに基づいてそれぞれの映像に対応するビットレートで符号化を行う。そして、動画像符号化装置10は、符号化後の映像データを、出力ストリームを用いてABR向け配信用コンテンツとして出力する。
動画像符号化装置10は、制御部11、動画像変換部12、複数の符号化部13−1〜13−N(Nは2以上の整数)及び配信処理部14を備える。なお、以下の説明において、符号化部13−1〜13−Nを特に区別しない場合には総称して符号化部13と記載する。
制御部11は、各機能部を制御する。具体的には、制御部11は、外部から符号化・配信パラメータを入力し、入力した符号化・配信パラメータを動画像変換部12及び符号化部13に設定する。ここで、符号化・配信パラメータは、解像度及び目標ビットレートである。解像度として、例えば2160p、1080p、480p等の情報が制御部11に入力される。なお、解像度は、上記に限定される必要はない。
目標ビットレートとして、例えば10M、7M、1M等の情報が制御部11に入力される。なお、目標ビットレートは、上記に限定される必要はない。また、目標ビットレートとして、映像データの入力初期時には、入力された目標ビットレートが用いられる。そして、映像データにおける次フレーム(例えば、t+1フレーム)以降のフレームにおいては、各符号化部13による符号化の結果から得られる画質の指標を加味した目標ビットレートが用いられる。
制御部11は、解像度を動画像変換部12に設定し、目標ビットレートを符号化部13に設定する。以下の説明では、制御部11は、解像度として、2160p、1080p及び480pを動画像変換部12に設定し、符号化部13−1に対して目標ビットレート10M、符号化部13−2に対して目標ビットレート7M、符号化部13−Nに対して目標ビットレート1Mを設定したとする。この場合、符号化部13−1が最もビットレートが高く、符号化部13−Nが最もビットレートが低くなる。また、制御部11は、チャンク長及び配信先を配信処理部14に設定する。
動画像変換部12は、制御部11によって設定された解像度に基づいて、映像データを1つ以上の解像度に変換する。一例として、以下の説明では、動画像変換部12は、映像データを3つの解像度(例えば、2160p、1080p、480p)に変換したとする。動画像変換部12は、2160pの解像度の映像データを符号化部13−1に出力し、1080pの解像度の映像データを符号化部13−2に出力し、480pの解像度の映像データを符号化部13−Nに出力する。なお、動画像変換部12は、映像データに対して入力時と同じ解像度のまま変換しなくてもよいし、フレームレートを変換してもよい。また、動画像変換部12は、映像データに対して解像度とフレームレートの両方を変換してもよい。
符号化部13は、制御部11によって設定された目標ビットレートと、動画像変換部12から出力された映像データとに基づいて、映像データの符号化を行ない、映像ストリームを配信処理部14に出力する。具体的には、符号化部13−1は、制御部11によって設定された目標ビットレート(例えば、10M)と、動画像変換部12から出力された映像データ(例えば、2160pの解像度の映像データ)とに基づいて映像データの符号化を行う。また、符号化部13−2は、制御部11によって設定された目標ビットレート(例えば、7M)と、動画像変換部12から出力された映像データ(例えば、1080pの解像度の映像データ)とに基づいて映像データの符号化を行う。また、符号化部13−3は、制御部11によって設定された目標ビットレート(例えば、1M)と、動画像変換部12から出力された映像データ(例えば、480pの解像度の映像データ)とに基づいて映像データの符号化を行う。
また、符号化部13−1〜13−Nそれぞれは、過去一定時間分の符号化により得られた量子化パラメータ(以下「QP」(Quantization Parameter)という。)の平均値と、画質の指標と、QPとを制御部11に出力する。符号化部13は、例えばSSE(sum of squared errors of prediction:残差二乗和)により画質の指標を算出する。なお、符号化部13は、MSE(Mean Square Error:平均二乗誤差)、SSIM(structural similarity)、MS−SSIM(Multiscale - Structural Similarity)、知覚均等モデルを用いたCIE1976L*a*b*色差ΔE等の手法を用いて画質の指標を算出してもよい。平均値を算出する時間は、1GOP(Group Of Picture)にあたる時間や、ABR配信時に指定される動画のセグメント長の時間、またはこれらの間の時間とする。
配信処理部14は、各符号化部13から出力された映像ストリームを入力とし、制御部11によって設定されたチャンク長に基づいて、ABR配信向けにある一定時間長に映像ストリームをセグメント(分割)化する。また、配信処理部14は、セグメント化されたデータを元に配信用のプレイリストとなるマニフェストファイルを生成する。その後、配信処理部14は、制御部11によって設定された配信先にマニフェストファイルを配信する。
図2は、第1の実施形態における制御部11の構成を示すブロック図である。制御部11は、画像劣化度判定部111、量子化パラメータオフセット算出部112、ビットレートオフセット算出部113及び目標ビットレート設定部114を備える。
制御部11は、過去M(Mは1以上の整数)フレーム分の各チャネル(解像度)の映像を符号化する符号化部13−1〜13−Nの符号化により得られた符号化済み画像と原画像のSSEと、QPの平均値とを入力し、入力したSSEと、QPの平均値とに基づいて、チャネル毎の新たな目標ビットレートを算出する。その後、制御部11は、算出したチャネル毎の新たな目標ビットレートをそれぞれ出力する。
画像劣化度判定部111は、入力データとして、各チャネル(chn)(n=1,・・・,N)のSSEd_nを入力とし、入力したSSEd_nに、各チャネルにおける映像データの解像度に応じたスケーリング係数s_nを乗算した値(d’_n=s_n×d_n)を画像劣化度として算出する。なお、画像劣化度は、値が高いほど画像が劣化している、すなわち画質が悪いことを表す。スケーリング係数s_nは、解像度の違いによるSSEの値を補正するために使用される係数である。
ここで、s_nは、解像度毎に事前に定められた定数値でもよいし、映像データの隣接画素間差分値やフレーム間差分値、QPの平均値に応じて決定されてもよい。画像劣化度判定部111は、各チャネル(chn)の画像劣化度を算出する。なお、以下の説明では、nの値が小さいほど、すなわちチャネル番号が小さいものほど、解像度及びビットレートの高い上位のチャネルを表す。
その後、画像劣化度判定部111は、算出した各チャネル(chn)の画像劣化度に基づいて、上位チャネルの画質が下位チャネルの画質よりも劣化しているか否かを判定する。
量子化パラメータオフセット算出部112は、上位チャネルの画質が下位チャネルの画質よりも劣化している場合に、各符号化部13−1〜13−Nにおいて調整する量子化パラメータオフセット値を算出する。具体的には、量子化パラメータオフセット算出部112は、各符号化部13−1〜13−Nにおける目標ビットレートと、量子化パラメータオフセット算出部112から出力された画質劣化度と、各符号化部13−1〜13−Nから得られた量子化パラメータ平均値とを入力とし、各符号化部13−1〜13−Nにおいて調整する量子化パラメータオフセット値QPOFFSETを算出する。量子化パラメータオフセット算出部112は、算出した量子化パラメータオフセット値QPOFFSETを、ビットレートオフセット算出部113に出力する。
ビットレートオフセット算出部113は、各符号化部13−1〜13−Nに現在設定されているビットレートと、量子化パラメータオフセット値QPOFFSETとを入力とし、符号化部13−1〜13−N毎のビットレートオフセット値BROFFSETを算出する。ビットレートオフセット算出部113は、算出した符号化部13−1〜13−N毎のビットレートオフセット値BROFFSETを目標ビットレート設定部114に出力する。
目標ビットレート設定部114は、ビットレートオフセット算出部113から出力されたビットレートオフセット値BROFFSETと、現在設定されているビットレートとを入力として、符号化部13−1〜13−N毎の新たな目標ビットレート値を算出する。目標ビットレート設定部114は、算出した符号化部13−1〜13−N毎の新たな目標ビットレート値を各符号化部13−1〜13−Nに設定する。
上記のように、目標ビットレート設定部114が、符号化部13−1〜13−N毎の新たな目標ビットレート値を各符号化部13−1〜13−Nに設定することによって、各符号化部13−1〜13−Nは、設定された新たな目標ビットレートで符号化を行う。その後、符号化部13−1〜13−Nは、再度符号化結果を制御部11に入力することで、符号化ビットレートを逐次更新する。
図3は、第1の実施形態における制御部11の処理の流れを示すフローチャートである。なお、図3では、制御部11が、各チャネルにおける符号化結果をもとに、各符号化部13−1〜13−Nの目標ビットレートを算出する処理動作について説明する。ここで、チャネル番号が小さいものほど、解像度及びビットレートの高い上位のチャネルを表すことを前提とする。また、図3において、矢印(「←」)は代入を表す。
画像劣化度判定部111は、変数nに最上位のチャネル番号、すなわち1を設定する(ステップS101)。ここで、総チャネル数はNであり、図3では例としてN=3における動作を説明する。
画像劣化度判定部111は、チャネルnの符号化部13−n及びチャネル(n+1)の符号化部13−(n+1)それぞれに現在設定されているビットレートを取得する(ステップS102)。n=1の場合、画像劣化度判定部111は、チャネル1(ch1)の符号化部13−1及びチャネル2(ch2)の符号化部13−2それぞれに現在設定されているビットレートを取得する。
そして、画像劣化度判定部111は、チャネルnの符号化部13−nに現在設定されているビットレートを変数BR[n]に設定し、チャネル(n+1)の符号化部13−(n+1)に現在設定されているビットレートをBR[n+1]に設定する。
さらに、画像劣化度判定部111は、チャネルnの符号化部13−n及びチャネル(n+1)の符号化部13−(n+1)それぞれの過去Mフレーム分のQPの平均値を取得する(ステップS103)。n=1の場合、画像劣化度判定部111は、チャネル1(ch1)の符号化部13−1及びチャネル2(ch2)の符号化部13−2それぞれの過去Mフレーム分のQPの平均値を取得する。
そして、画像劣化度判定部111は、チャネルnの符号化部13−nの過去Mフレーム分のQPの平均値を変数aveQP[n]に設定し、チャネル(n+1)の符号化部13−(n+1)の過去Mフレーム分のQPの平均値をaveQP[n+1]に設定する。
さらに、画像劣化度判定部111は、チャネルnの符号化部13−n及びチャネル(n+1)の符号化部13−(n+1)それぞれのSSEを取得する(ステップS104)。n=1の場合、画像劣化度判定部111は、チャネル1(ch1)の符号化部13−1及びチャネル2(ch2)の符号化部13−2それぞれのSSEを取得する。
その後、画像劣化度判定部111は、取得した各SSEに、各チャネルにおける映像データの解像度に応じたスケーリング係数を乗算した値を画像劣化度として算出する。具体的には、画像劣化度判定部111は、符号化部13−nから取得したSSEに、チャネルnにおける映像データの解像度に応じたスケーリング係数s_nを乗算することによって、チャネルnの画像劣化度を算出する。
また、画像劣化度判定部111は、符号化部13−(n+1)から取得したSSEに、チャネル(n+1)における映像データの解像度に応じたスケーリング係数s_(n+1)を乗算することによって、チャネル(n+1)の画像劣化度を算出する。
そして、画像劣化度判定部111は、チャネル(n)の画像劣化度を変数D’[n]に設定し、チャネル(n+1)の画像劣化度をD’[n+1]に設定する。
画像劣化度判定部111は、取得した各値を用いて以下の(式1)に基づいて、(式1)の条件を満たすか否かを判定する(ステップS105)。
(式1)における「&&」は、左項と右項の論理積を表す。また、n=1の場合、(式1)は以下の(式2)のように表される。
(式1)の条件が満たされている場合(ステップS105−YES)、上位チャネルの設定ビットレートが高いにも関わらず、映像の劣化が下位チャネルよりも大きいことになる。これは、上位チャネルと下位チャネルでビットレートと画質の大小関係が逆転していることになる。この場合、動画像符号化装置10は、上位チャネルの方が、相対的に画質劣化が小さくなるように、下位チャネルのビットレートを減少させるように下位チャネルに対してビットレートオフセットを設定する処理を行う。
具体的には、量子化パラメータオフセット算出部112は、チャネルnの符号化部13−n及びチャネル(n+1)の符号化部13−(n+1)それぞれから得られたQPの平均値と、チャネル全体でのQPの平均値とに基づいて、チャネル(n+1)のビットレートオフセットを算出するための量子化パラメータオフセットQPOFFSET[n+1]を、以下の(式3)に基づいて算出する(ステップS106)。
(式3)における[1,...,N]は、チャネル1からチャネルNまで、すなわちチャネル全体を表す。また、(式3)における|...|は、内部の値の絶対値を表す。また、n=1の場合、(式3)は以下の(式4)のように表される。
上記の(式3)の意味するところは、下位チャネルのQPに対して上位チャネルのQPの平均値が大きくなるほど、下位チャネルのビットレートをより減少させるように、下位チャネルに設定する量子化パラメータオフセットを正の方向に大きくするとともに、チャネル全体間でのQPの平均値のばらつきが大きくなりすぎないようにするものである。すなわち、制御部11は、上位チャネルのビットレートである第1の映像に係る主観画質が、下位チャネルのビットレートである第2の映像に係る主観画質よりも高くない場合、上位チャネルのQPと下位チャネルのQPの差が小さくなるように制御する。
QPは、符号化の際の量子化の強度を調整するパラメータであり、QPの値が大きいほど粗い量子化となり、ビットレートの削減効果は大きくなるが、主観画質は低下する。そのため、ビットレートを下げるには高いQP値を用いる。逆に、主観画質を上げるには低いQPで量子化を行うのが望ましいが、その反面ビットレートは上がってしまう。なお、映像の複雑さによって所望のビットレートを達成可能なQP値は異なるため、目標ビットレートが同じでも映像が異なれば利用するQP値は異なる。
上記の上位チャネルのQPと下位チャネルのQPの差が小さくなるように制御は、各チャネルのQPが同じであれば、解像度が大きいチャネルnの方がチャネル(n+1)よりも高画質となることが期待されるが、チャネルnよりもチャネル(n+1)の方が高画質となる場合(D’[n+1]<D’[n]の場合)、aveQP[n]>aveQP[n+1]となっていることが想定される。そのため、一例にはaveQP[n]=aveQP[n+1]となるまでチャネル(n+1)のaveQPを大きくすれば、チャネル間での画質の逆転現象は回避できるためである。
また、なぜQPの差が小さくなるように制御するかについては、QPを用いて画質制御を行う際、それぞれQPをどのように調整したらよいか(上位チャネルのQP(第1QP)を上げる/下げる、下位チャネルのQP(第2QP)を上げる/下げる、どの程度上げ下げするか)といった点が課題になる。マルチレート符号化では、上位チャネルの映像と下位チャネルの映像との主観品質差は許容するが、QPを用いて画質制御を行う際に上位チャネルの映像と下位チャネルの映像とで主観品質の関係が逆転してしまうと、高速度回線ユーザに対して低画質な映像を配信することになってしまい、映像視聴のQoEが低下してしまうため、逆転現象が発生しないようにする制御が必要となる。
上記のようにQPは、量子化の強度を調整するパラメータであるため、高ければ画質が悪く、低ければ画質が良いという傾向が一般にある。同じ映像、同じ映像サイズ(解像度、フレームレート)で、QPが同じであれば両者の画質は同じになる。マルチレート符号化では、一般に上位チャネルの映像と下位チャネルの映像とで画像サイズも変える(例えば、第1は4Kで第2は2K)ため、QPが同じでも、下位チャネルの映像は上位チャネルの映像に対して画像サイズが小さい(画像が荒い)分、主観品質は「上位チャネル>下位チャネル」になる。すなわち、この場合に主観品質を揃えようとすると、上位チャネルの映像のQPは下位チャネルの映像のQPよりも高く指定する必要がある。逆に、主観品質差を「上位チャネル>下位チャネル」にするには、上位チャネルの映像のQPと下位チャネルの映像のQPとの差を小さくする(上位チャネルの映像のQPが低く、下位チャネルの映像のQPが高い状況を想定。これらのQPを近づける)ようにすれば、少なくともこの主観品質差の関係を達成できるためである。
ビットレートオフセット算出部113は、チャネル(n+1)の量子化パラメータオフセットQPOFFSET[n+1]及び現在設定されているビットレートBR[n+1]を用いて、ビットレートオフセットBROFFSET[n+1]を以下の(式5)に基づいて算出する(ステップS107)。
(式5)におけるBRUNITは、ビットレートの調整幅を表す定数であり、値が大きいほど、ビットレートオフセットの変化量が大きくなる。BRUNITは、0〜0.1の範囲で設定される。
目標ビットレート設定部114は、ビットレートオフセットBROFFSET[n+1]を用いて、チャネル(n+1)の新たな目標ビットレートBR’[n+1]を以下の(式6)に基づいて算出する(ステップS108)。
その後、画像劣化度判定部111は、変数nを1増加させる(ステップS109)。画像劣化度判定部111は、変数nが総チャネル数N以上になったか否か判定する(ステップS110)。変数nが総チャネル数N以上になった場合(ステップS110−YES)、動画像符号化装置10は処理を終了する。
一方、変数nが総チャネル数N以上になっていない場合(ステップS110−NO)、動画像符号化装置10はステップ102〜109の処理を繰り返し実行する。このように、動画像符号化装置10は、最下位チャネルNの符号化部13−Nまで処理を繰り返し実行する。上記の処理によって得られた新たな目標ビットレートによって各符号化部13は符号化処理を行う。そして、各符号化部13による符号化結果を再度制御部11に入力させていくことで、目標ビットレートを動的に更新していく。
ステップS105の処理において、(式1)の条件が満たされていない場合(ステップS105−NO)、動画像符号化装置10はチャネル(n+1)における量子化パラメータオフセット算出処理及びビットレートオフセット算出処理は行わず、変数nを1増加させ、変数nが総チャネル数Nに達成するまでステップS102〜S109の処理を繰り返す。
次に、図3の処理について、一具体例を挙げて説明する。前提条件として、ch[n]とch[n+1]が同一QPの場合、常に画質はch[n]>ch[n+1]であり、画質がch[n]<ch[n+1]となりうる場合、チャネル間のQPはch[n]>ch[n+1]と仮定する。
チャネル数N=3(n=1,2,3)、n=1が最大解像度、n=3が最低解像度。以下、[]内の数字はチャネル番号である。また、aveQP[1]=45、aveQP[2]=42、aveQP[3]=40、BR[1]=5M、BR[2]=4M、BR[3]=1Mとする。aveQP[1]は、ch[1]の符号化部13−1から得られたQPの平均値である。aveQP[2]は、ch[2]の符号化部13−1から得られたQPの平均値である。aveQP[3]は、ch[3]の符号化部13−1から得られたQPの平均値である。BR[1]は、チャネル1の符号化部13−1に現在設定されているビットレートである。BR[2]は、チャネル2の符号化部13−2に現在設定されているビットレートである。BR[3]=1Mは、チャネル3の符号化部13−3に現在設定されているビットレートである。
MSE[1]>MSE[2]の場合:動画像符号化装置10は、チャネル2のビットレートを下げる。下げ幅は、aveQPの差を元に決定される。なお、MSEは、SSEを、計算で用いた画素数で除算した値である。
量子化パラメータオフセット算出部112は、(式3)に基づいて、QPOFFSET[2]を以下のように算出する。
QPOFFSET[2]=(45−42)−|42−(45+42+40)/3)|=2.7
次に、ビットレートオフセット算出部113は、BR[2]=4Mbps、BRUNIT=0.05とし、(式5)に基づいて、BROFFSET[2]を以下のように算出する。
BROFFSET[2]=BRUNIT×QPOFFSET[2]×BR[2]=0.05×2.7×4=0.54(Mbps)
そして、目標ビットレート設定部114は、n=1、BR[2]=4Mbps、BROFFSET[2]=0.54Mbpsとし、(式6)に基づいて、BR’[2]を以下のように算出する。
BR’[2]=BR[2]−BROFFSET[2]=4−0.54=3.46(Mbps)
MSE[2]>MSE[3]の場合:動画像符号化装置10は、チャネル3のビットレートを下げる。下げ幅は、aveQPの差を元に決定される。
量子化パラメータオフセット算出部112は、(式3)に基づいて、QPOFFSET[3]を以下のように算出する。
QPOFFSET[3]=(aveQP[2]−aveQP[3])−|aveQP[3]−aveQP[1,2,3]|=(42−40)−|40−(45+42+40)/3|=2−|42−42.3|=1.7
次に、ビットレートオフセット算出部113は、BR[3]=1Mbps、BRUNIT=0.05とし、(式5)に基づいて、BROFFSET[3]を以下のように算出する。
BROFFSET[3]=BRUNIT×QPOFFSET[3]×BR[3]=0.05×1.7×1=0.085(Mbps)
そして、目標ビットレート設定部114は、n=2、BR[3]=1Mbps、BROFFSET[3]=0.085Mbpsとし、(式6)に基づいて、BR’[3]を以下のように算出する。
BR’[3]=BR[3]−BROFFSET[3]=1−0.085=0.915(Mbps)
以上のように構成された動画像符号化装置10によれば、上位チャネルのビットレートである第1の映像と、上位チャネルのビットレートよりも低いビットレートである下位チャネルのビットレートである映像とに符号化を行い、第1の映像の主観画質が第2の映像の主観画質よりも高くなるようにビットレートを制御する。したがって、各チャネルでの初期設定ビットレート値やビットレート制御方式の違いによらずにチャネル間での画質差の関係を維持することができる。そのため、ビットレートと画質との関係を維持するビットレートの制御を行うことが可能になる。
また、目標ビットレートの更新処理は所定のフレーム枚数時間毎に逐次行われていくため、一度の処理で上位チャネルと下位チャネルの画質の逆転が解消できなくとも、一定時間経過後には解消される。また、ゆるやかにビットレート調整量を設定する、例えばBRUNITの値を小さく設定することで、ビットレート更新前後でのビットレート変動量に起因する画質変化による主観画質の低下を防ぐことも可能である。
1つの映像ソースから複数解像度の映像を生成して平行して符号化を行うABR用符号化を行う際に、各チャネルでの初期設定ビットレート値やビットレート制御方式の違いによらずにチャネル間での画質差の関係を維持することができるとともに、主観画質を維持したまま、各チャネルの映像データ量を削減して配信を行うことが可能となる。
<変形例>
本実施形態では、下位チャネル側(チャネル(n+1)側)のビットレートを減少させる処理について説明をしたが、動画像符号化装置10はビットレートオフセット値を上位チャネル側(チャネルn側)に加算させることによって、相対的に下位チャネル側のビットレートを減少させるようにしてもよい。
(第2の実施形態)
第2の実施形態において、動画像符号化装置10の構成は、制御部11及び符号化部13が制御部11a及び符号化部13aに代わった点以外は第1の実施形態の各機能と同様である。以下、異なる構成について説明する。
図4は、第2の実施形態における動画像符号化装置10aの構成を示すブロック図である。なお、図4では、第1の実施形態と異なる構成である制御部11a及び符号化部13aのみを示している。
符号化部13aは、制御部11aによって設定された目標ビットレートと、動画像変換部12から出力された映像データとに基づいて、映像データの符号化を行ない、映像ストリームを配信処理部14に出力する。また、符号化部13a−1〜13a−Nそれぞれは、QPの平均値と、QPを制御部11aに出力する。
制御部11aは、画像劣化度判定部111a、ビットレートオフセット算出部113a及び目標ビットレート設定部114aを備える。制御部11aは、画像劣化度判定部111、ビットレートオフセット算出部113及び目標ビットレート設定部114に代えて画像劣化度判定部111a、ビットレートオフセット算出部113a及び目標ビットレート設定部114aを備える点、量子化パラメータオフセット算出部112を備えない点で制御部11と構成が異なる。以下、画像劣化度判定部111a、ビットレートオフセット算出部113a及び目標ビットレート設定部114aについて説明する。
画像劣化度判定部111aは、各符号化部13aより得られたQPの平均値を入力とし、QPの平均値の差分値ΔQPを算出する。画像劣化度判定部111aは、算出した差分値ΔQPをビットレートオフセット算出部113aに出力する。
ビットレートオフセット算出部113aは、各符号化部13a−1〜13a−Nにおける現在設定されているビットレートと、差分値ΔQPを入力とし、符号化部13a−1〜13a−N毎のビットレートオフセット値BROFFSETを算出する。ビットレートオフセット算出部113aは、算出した符号化部13a−1〜13a−N毎のビットレートオフセット値BROFFSETを目標ビットレート設定部114aに出力する。
目標ビットレート設定部114aは、ビットレートオフセット算出部113aから出力されたビットレートオフセット値BROFFSETと、各符号化部13a−1〜13a−Nにおける現在設定されているビットレートとを入力とし、符号化部13−1〜13−N毎の新たな目標ビットレート値を算出する。
図5は、第2の実施形態における制御部11aの処理の流れを示すフローチャートである。なお、図5では、制御部11aが、各チャネルにおける符号化結果をもとに、各符号化部13−1〜13−Nの目標ビットレートを算出する処理動作について説明する。ここで、チャネル番号が小さいものほど、解像度及びビットレートの高い上位のチャネルを表すことを前提とする。また、図5において、矢印(「←」)は代入を表す。
画像劣化度判定部111aは、変数nに最上位のチャネル番号、すなわち1を設定する(ステップS201)。ここで、総チャネル数はNであり、図5では例としてN=3における動作を説明する。
画像劣化度判定部111aは、チャネルnの符号化部13a−nの初期のビットレートを取得する(ステップS202)。n=1の場合、画像劣化度判定部111aは、チャネル1(ch1)の符号化部13a−1の初期のビットレートを取得する。そして、画像劣化度判定部111aは、チャネルnの符号化部13a−nの初期のビットレートを変数BR_init[n]に設定する。
さらに、画像劣化度判定部111aは、チャネルnの符号化部13a−n及びチャネル(n+1)の符号化部13a−(n+1)それぞれに現在設定されているビットレートを取得する(ステップS203)。n=1の場合、画像劣化度判定部111aは、チャネル1(ch1)の符号化部13a−1及びチャネル2(ch2)の符号化部13a−2それぞれに現在設定されているビットレートを取得する。
そして、画像劣化度判定部111aは、チャネルnの符号化部13a−nに現在設定されているビットレートを変数BR[n]に設定し、チャネル(n+1)の符号化部13a−(n+1)に現在設定されているビットレートをBR[n+1]に設定する。
さらに、画像劣化度判定部111aは、チャネルnの符号化部13a−n及びチャネル(n+1)の符号化部13a−(n+1)それぞれの過去Mフレーム分のQPの平均値を取得する(ステップS204)。n=1の場合、画像劣化度判定部111aは、チャネル1(ch1)の符号化部13a−1及びチャネル2(ch2)の符号化部13a−2それぞれの過去Mフレーム分のQPの平均値を取得する。
そして、画像劣化度判定部111aは、チャネルnの符号化部13a−nの過去Mフレーム分のQPの平均値を変数aveQP[n]に設定し、チャネル(n+1)の符号化部13a−(n+1)の過去Mフレーム分のQPの平均値をaveQP[n+1]に設定する。
画像劣化度判定部111aは、取得した各値を用いて以下の(式7)に基づいて、(式7)の条件を満たすか否かを判定する(ステップS205)。
(式7)における「&&」は、左項と右項の論理積を表す。(式7)中のTH1、TH2、TH3は、それぞれQPの閾値を表す。なお、TH1、TH2、TH3は、TH2≧TH3≧TH1の関係である。また、n=1の場合、(式7)は以下の(式8)のように表される。
(式7)の意味するところは、上位チャネルと下位チャネルそれぞれのQPがある所定の値以上で、かつ、上位チャネルのQPが下位チャネルのQPよりも所定の値以上大きいか否かを判定するものである。これは、上位チャネルと下位チャネルでそれぞれQPが大きい領域では、解像度が高くデータ量が大きい上位チャネルを高いQPで符号化処理を行うことによって、上位チャネルの方が下位チャネルよりも画質が低下するという画質の逆転が起きうるためである。
(式7)の条件が満たされている場合(ステップS205−YES)、画像劣化度判定部111aは、以下の(式9)に基づいて、各チャネル間のQPの平均値の差分値ΔQPを算出する(ステップS206)。
画像劣化度判定部111aは、算出した差分値ΔQPをビットレートオフセット算出部113aに出力する。ビットレートオフセット算出部113aは、差分値ΔQP及び各チャネルの現在設定されているビットレート値を用いて、各チャネルに対するビットレートオフセットBROFFSET[n]及びBROFFSET[n+1]を以下の(式10)に基づいて決定する(ステップS207)。
(式10)におけるBROFFSET_TBL(…)は、BROFFSETテーブルに基づいて得られる。BROFFSETテーブルは、差分値ΔQPと、チャネルnの符号化部13a−nに現在設定されているビットレートとの関係に基づくビットレートオフセットの値が複数登録されている。BROFFSETテーブルの具体例を図6に示す。図6に示すように、ビットレートオフセットは、差分値ΔQPの値が大きいほど大きな値が設定され、チャネルnの符号化部13a−nに現在設定されているビットレートが大きいほど、大きな値が設定されるように設定することで、上位チャネルでビットレートが大きいものには大きく作用し、下位チャネルでビットレートが小さいものには小さく作用する。
ビットレートオフセット算出部113aは、決定したBROFFSET[n]及びBROFFSET[n+1]を目標ビットレート設定部114aに出力する。目標ビットレート設定部114aは、ビットレートオフセット算出部113aから出力されたBROFFSET[n]及びBROFFSET[n+1]と、チャネルnの符号化部13a−n及びチャネル(n+1)の符号化部13a−(n+1)それぞれに現在設定されているビットレートとを用いて、上位チャネルnおよび下位チャネル(n+1)それぞれの新しい目標ビットレートBR[n]、BR[n+1]を以下の(式11)に基づいて算出する(ステップS208)。
ここで、(式11)におけるα、βは、スケーリング係数であり正の定数ある。(式11)の意味するところは、(式10)で得られたビットレートオフセットを現在設定されているビットレートに加算または減算することで、上位チャネルおよび下位チャネルの新しい目標ビットレートを算出するものである。上位チャネルのQPが下位チャネルのQPよりも大きくなるほど、上位チャネルの画質を改善する方向に、ビットレートオフセットの値を正方向に大きくし、下位チャネルのビットレートは上位ビットレートとの差がより広がるように、ビットレートを減少させる方向に、ビットレートオフセットは大きな負の値が設定される。
次に、画像劣化度判定部111aは、第1の条件を満たすか否かを判定する(ステップS209)。第1の条件は、(式11)で得られた上位チャネルの新たな目標ビットレートが、初期のビットレートを上回るビットレートであるといった条件である。n=1の場合、画像劣化度判定部111aは、上位チャネルであるチャネル1(ch1)の符号化部13a−1の新たな目標ビットレートが、初期のビットレートを上回るビットレートであるか否かを判定する。
第1の条件を満たす場合(ステップS209−YES)、画像劣化度判定部111aは上位チャネルの新たな目標ビットレートの上限を初期のビットレートとする(ステップS210)。
次に、画像劣化度判定部111aは、第2の条件を満たすか否かを判定する(ステップS211)。第2の条件は、n+2≦Nを満たし、かつ、(式11)で得られた下位チャネル(n+1)の新たな目標ビットレートBR[n+1]が、下位チャネル(n+2)のビットレートBR[n+2]を下回るといった条件である。第2の条件を満たす場合(ステップS211−YES)、画像劣化度判定部111aは下位チャネル(n+2)のビットレートBR[n+2]をビットレート値の下限とする(ステップS212)。
その後、画像劣化度判定部111aは、変数nを1増加させる(ステップS213)。画像劣化度判定部111aは、変数nが総チャネル数N以上になったか否か判定する(ステップS214)。変数nが総チャネル数N以上になった場合(ステップS214−YES)、動画像符号化装置10は処理を終了する。
一方、変数nが総チャネル数N以上になっていない場合(ステップS214−NO)、動画像符号化装置10はステップ202〜213の処理を繰り返し実行する。このように、動画像符号化装置10は、最下位チャネルNの符号化部13a−Nまで処理を繰り返し実行する。上記の処理によって得られた新たな目標ビットレートによって各符号化部13aは符号化処理を行う。そして、各符号化部13aによる符号化結果を再度制御部11aに入力させていくことで、目標ビットレートを動的に更新していく。
また、ステップS205の処理において、(式7)の条件が満たされていない場合(ステップS205−NO)、画像劣化度判定部111aは、変数nが総チャネル数N以上になったか否か判定する(ステップS214)。
また、ステップS209の処理において、第1の条件を満たさない場合(ステップS209−NO)、画像劣化度判定部111aは第2の条件を満たすか否かを判定する(ステップS211)。
また、ステップS211の処理において、第2の条件を満たさない場合(ステップS211−NO)、画像劣化度判定部111aは変数nを1増加させる(ステップS213)。
以上の処理を、所定の時間間隔で実行していくことで、入力される映像特徴に応じた符号化ビットレートの制御が可能となり、映像複雑度の小さい符号化が簡単な映像については、符号化ビットレートを下げることで、映像配信時の伝送帯域を節約することが可能となる。ここで所定の時間間隔とは、GOP単位や、ABR配信時に指定される動画のセグメント長の時間、またはこれらの間の時間とする。
次に、図5の処理について、一具体例を挙げて説明する。チャネル数N=3(n=1,2,3)、n=1が最大解像度、n=3が最低解像度。以下、[]内の数字はチャネル番号である。また、aveQP[1]=47、aveQP[2]=42、aveQP[3]=40、BR[1]=10M、BR[2]=5M、BR[3]=4Mとする。aveQP[1]は、ch[1]の符号化部13a−1から得られたQPの平均値である。aveQP[2]は、ch[2]の符号化部13a−1から得られたQPの平均値である。aveQP[3]は、ch[3]の符号化部13a−1から得られたQPの平均値である。BR[1]は、チャネル1の符号化部13a−1に現在設定されているビットレートである。BR[2]は、チャネル2の符号化部13a−2に現在設定されているビットレートである。BR[3]=1Mは、チャネル3の符号化部13a−3に現在設定されているビットレートである。また、α=β=1とする。
まずチャネル1及びチャネル2について説明する。
画像劣化度判定部111aは、ch[1]の符号化部13a−1から得られたQPの平均値と、ch[2]の符号化部13a−2から得られたQPの平均値とを用いて(式9)に基づいて、差分値ΔQPを以下のように算出する。
差分値ΔQP=aveQP[1]−aveQP[2]=47−42=5
そして、ビットレートオフセット算出部113aは、算出された差分値ΔQPと、チャネル1の符号化部13a−1に現在設定されているビットレート及びチャネル2の符号化部13a−2に現在設定されているビットレートとを用いて(式10)に基づいて、BROFFSET[1]及びBROFFSET[2]を以下のように決定する。
BROFFSET[1]=+BROFFSET_TBL(ΔQP,BR[1])=+BROFFSET_TBL(5,10M)=2.0
BROFFSET[2]=−BROFFSET_TBL(ΔQP,BR[2])=−BROFFSET_TBL(5,5M)=−1.0
そして、目標ビットレート設定部114aは、決定されたBROFFSET[1]及びBROFFSET[2]と、チャネル1の符号化部13a−1に現在設定されているビットレート及びチャネル2の符号化部13a−2に現在設定されているビットレートとを用いて(式11)に基づいて、BR[1]及びBR[2]を以下のように算出する。
BR[1]=BR[1]+α×BROFFSET_TBL(ΔQP,BR[1])=10+(1×2.0)=12M
BR[2]=BR[2]−β×BROFFSET_TBL(ΔQP,BR[2])=5−(1×(−1.0))=6M
目標ビットレート設定部114aは、上記のように算出した新たなビットレートBR[1]を符号化部13a−1に設定し、BR[2]を符号化部13a−2に設定する。
次にチャネル2及びチャネル3について説明する。
画像劣化度判定部111aは、ch[2]の符号化部13a−2から得られたQPの平均値と、ch[3]の符号化部13a−3から得られたQPの平均値とを用いて(式9)に基づいて、差分値ΔQPを以下のように算出する。
差分値ΔQP=aveQP[2]−aveQP[3]=42−40=2
そして、ビットレートオフセット算出部113aは、算出された差分値ΔQPと、チャネル2の符号化部13a−2に現在設定されているビットレート及びチャネル3の符号化部13a−3に現在設定されているビットレートとを用いて(式10)に基づいて、BROFFSET[2]及びBROFFSET[3]を以下のように決定する。
BROFFSET[2]=+BROFFSET_TBL(ΔQP,BR[2])=+BROFFSET_TBL(2,4M)=0.1
BROFFSET[3]=−BROFFSET_TBL(ΔQP,BR[3])=−BROFFSET_TBL(2,4M)=−0.1
そして、目標ビットレート設定部114aは、決定されたBROFFSET[2]及びBROFFSET[3]と、チャネル2の符号化部13a−2に現在設定されているビットレート及びチャネル3の符号化部13a−3に現在設定されているビットレートとを用いて(式11)に基づいて、BR[2]及びBR[3]を以下のように算出する。
BR[2]=BR[2]+α×BROFFSET_TBL(ΔQP,BR[2])=5+(1×0.1)=5.1M
BR[3]=BR[3]−β×BROFFSET_TBL(ΔQP,BR[3])=4−(1×(−0.1))=4.1M
目標ビットレート設定部114aは、上記のように算出した新たなビットレートBR[2]を符号化部13a−2に設定し、BR[3]を符号化部13a−3に設定する。
以上のように構成された動画像符号化装置10aによれば、上位チャネルのビットレートと下位チャネルのビットレートとの差を大きくするようにビットレートを制御する。これにより、第1の実施形態より確実に上位チャネルのビットレートの映像と下位チャネルのビットレートの映像との画質差の逆転が起こらなくなる。そのため、ビットレートと画質との関係を維持するビットレートの制御を行うことが可能になる。
(第3の実施形態)
第3の実施形態において、動画像符号化装置10の構成は、制御部11及び符号化部13が制御部11b及び符号化部13bに代わった点以外は第1の実施形態及び第2の実施形態の各機能と同様である。以下、異なる構成について説明する。
図7は、第3の実施形態における動画像符号化装置10bの構成を示すブロック図である。なお、図7では、第1の実施形態及び第2の実施形態と異なる構成である制御部11b及び符号化部13bのみを示している。
符号化部13bは、制御部11bによって設定された目標ビットレートと、動画像変換部12から出力された映像データとに基づいて、映像データの符号化を行ない、映像ストリームを配信処理部14に出力する。また、符号化部13b−1〜13b−Nそれぞれは、QPの平均値と、QPと、発生符号量とを制御部11bに出力する。
制御部11bは、ビットレートオフセット算出部113b、目標ビットレート設定部114及びビットレート調整モード決定部115を備える。
制御部11bは、ビットレートオフセット算出部113に代えてビットレートオフセット算出部113bを備える点、ビットレート調整モード決定部115を新たに備える点、画像劣化度判定部111及び量子化パラメータオフセット算出部112を備えない点で制御部11と構成が異なる。以下、ビットレートオフセット算出部113及びビットレート調整モード決定部115について説明する。
ビットレート調整モード決定部115は、各符号化部13bにおける解像度、現在設定されているビットレート、QPの平均値及び発生符号量をそれぞれ入力として、QPの平均値、又は、QPの平均値と発生符号量の積で表される複雑さ指標を取得する。そして、ビットレート調整モード決定部115は、取得した複雑さ指標に基づいて、ビットレート調整モードを決定し、そのビットレート調整モード、およびQPの平均値の差分ΔQPをビットレートオフセット算出部113bに出力する。
ここで、QPの平均値、又は、QPの平均値と発生符号量に基づいて複雑さ指標を取得する理由は以下の通りである。
一般的に、符号量のみでも画像のある程度の複雑さは得られるが、符号量のみで複雑さの指標を取得する場合、大きなQPで(荒く)量子化をした結果、符合量が小さくなったのか、元々符号化を行うにはやさしい映像(例えば、ほとんど静止している映像)のため符号量が小さいのかの区別がつきにくくなる。それに対し、QPの平均値から複雑さの指標を取得する場合には、ある目標ビットレートを達成するにあたり、映像が簡単であれば小さいQPで符号化が可能で、映像が複雑であれば発生符号量を押さえ込むために大きいQPで量子化することになるため、複雑さ指標として利用可能であるためである。また、QPの平均値と発生符号量に基づいた複雑さの指標については、従来MPEG2のころより、QPの平均値と符号量の積の関係を複雑さ指標と利用している通り、QPが小さくかつ符号量も少なければ簡単な映像、QPが大きくかつ符号量も多ければ複雑な映像として扱えるためである。
本実施形態において、ビットレート調整モードは、mode1、mode2及びmode3がある。mode1は、各チャネルで複雑さ指標がそれぞれ十分に低い場合に決定されるモードである。mode1の場合、動画像符号化装置10bは各チャネル間の画質関係を維持するように、各チャネルのビットレートを下げる。mode1では、主観画質が大きく変化しないようにビットレートを削減する。ただし、画質は上位ch>下位chとなっていると想定である。
mode2は、上位チャネルの複雑さ指標が所定の閾値より高く、下位チャネルの複雑さ指標が所定の閾値より低い場合に決定されるモードである。mode2の場合、動画像符号化装置10bは各チャネル間の画質関係を維持するように、上位チャネルのビットレートを上げ、下位チャネルのビットレートを下げる。
mode3は、各チャネルの複雑さ指標それぞれ所定の閾値より高い場合に決定されるモードである。mode3の場合、動画像符号化装置10bは各チャネルのビットレートを上げる。例えば、動画像符号化装置10bは、上位チャネルほど、大きくビットレートを上げる。
ビットレートオフセット算出部113bは、ビットレート調整モード決定部115から出力されたビットレート調整モード及びQPの平均値の差分ΔQPを入力とし、各符号化部13bのビットレートオフセット値を算出し、目標ビットレート設定部114に出力する。
図8及び9は、第3の実施形態における制御部11bの処理の流れを示すフローチャートである。なお、図8及び9では、制御部11bが、各チャネルにおける符号化結果をもとに、各符号化部13b−1〜13b−Nの目標ビットレートを算出する処理動作について説明する。ここで、チャネル番号が小さいものほど、解像度及びビットレートの高い上位のチャネルを表すことを前提とする。また、図8及び9において、矢印(「←」)は代入を表す。
まず、ビットレート調整モード決定部115は、は、変数nに最上位のチャネル番号、すなわち1を設定する(ステップS301)。ここで、総チャネル数はNであり、図8では例としてN=3における動作を説明する。
ビットレート調整モード決定部115は、チャネルnの符号化部13a−nの初期のビットレートを取得する(ステップS302)。n=1の場合、ビットレート調整モード決定部115は、チャネル1(ch1)の符号化部13b−1の初期のビットレートを取得する。そして、ビットレート調整モード決定部115は、チャネルnの符号化部13a−nの初期のビットレートを変数BR_init[n]に設定する。
さらに、ビットレート調整モード決定部115は、チャネルnの符号化部13b−n及びチャネル(n+1)の符号化部13b−(n+1)それぞれに現在設定されているビットレートを取得する(ステップS303)。n=1の場合、ビットレート調整モード決定部115は、チャネル1(ch1)の符号化部13b−1及びチャネル2(ch2)の符号化部13b−2それぞれに現在設定されているビットレートを取得する。
そして、ビットレート調整モード決定部115は、チャネルnの符号化部13b−nに現在設定されているビットレートを変数BR[n]に設定し、チャネル(n+1)の符号化部13b−(n+1)に現在設定されているビットレートをBR[n+1]に設定する。
さらに、ビットレート調整モード決定部115は、チャネルnの符号化部13b−n及びチャネル(n+1)の符号化部13b−(n+1)それぞれの過去Mフレーム分のQPの平均値を取得する(ステップS304)。n=1の場合、ビットレート調整モード決定部115は、チャネル1(ch1)の符号化部13b−1及びチャネル2(ch2)の符号化部13b−2それぞれの過去Mフレーム分のQPの平均値を取得する。
そして、ビットレート調整モード決定部115は、チャネルnの符号化部13b−nから得られたQPの平均値を変数aveQP[n]に設定し、チャネル(n+1)の符号化部13b−(n+1)から得られたQPの平均値を変数aveQP[n+1]に設定する。
さらに、ビットレート調整モード決定部115は、チャネルnの符号化部13b−n及びチャネル(n+1)の符号化部13b−(n+1)それぞれの過去Mフレーム分の複雑さを表す指標を取得する(ステップS305)。n=1の場合、ビットレート調整モード決定部115は、チャネル1(ch1)の符号化部13b−1及びチャネル2(ch2)の符号化部13b−2それぞれの過去Mフレーム分の複雑さを表す指標を取得する。
そして、ビットレート調整モード決定部115は、チャネルnの符号化部13b−nの過去Mフレーム分の複雑さを表す指標を変数aveX[n]に設定し、チャネル(n+1)の符号化部13b−(n+1)の過去Mフレーム分の複雑さを表す指標を変数aveX[n+1]に設定する。
ビットレート調整モード決定部115は、取得した各値を用いて以下の(式12)に基づいて、(式12)の条件を満たすか否かを判定する(ステップS306)。
(式12)における「&&」は、左項と右項の論理積を表す。(式12)中のTH1、TH2は、それぞれQPの閾値を表す。(式12)の意味するところは、上位チャネルと下位チャネルそれぞれのQPがある所定の値以下であるかを判定するものである。これは、上位チャネルと下位チャネルでそれぞれQPが小さい領域では、各符号化部13bで符号化した映像の画質が十分に高画質であり、それぞれビットレートを多少削減しても主観的な画質には影響がない可能性が高いことを判定するためのものである(ビットレート調整モード決定部115が決定するMODE1に相当する)。
(式12)の条件を満たす場合(ステップS306−YES)、ビットレート調整モード決定部115は調整モードをMODE1に決定する(ステップS307)。その後、ビットレート調整モード決定部115は、各チャネルのQPの平均値aveQP[n]、aveQP[n+1]を用いて、ビットレート削減目安となる量子化パラメータオフセット値QPOFFSET[n]及びQPOFFSET[n+1]を以下の(式13)に基づいて取得する(ステップS308)。
(式13)におけるQPOFFSET_TBL(…)は、QPOFFSETテーブルに基づいて得られる。QPOFFSETテーブルは、QPの平均値aveQPと、量子化パラメータオフセットの値とが対応付けて複数登録されている。QPOFFSETテーブルの具体例を図10に示す。図10に示すように、量子化パラメータオフセットは、aveQP値が小さいほど大きな値が設定される。ビットレート調整モード決定部115は、QPOFFSETテーブルを参照して取得した量子化パラメータオフセット値QPOFFSET[n]及びQPOFFSET[n+1]をビットレートオフセット算出部113bに出力する。
ビットレートオフセット算出部113bは、各チャネルの量子化パラメータオフセットの値及び各チャネルの現在設定されているビットレート値を用いて、各チャネルに対するビットレートオフセットBROFFSET[n]及びBROFFSET[n+1]を以下の(式14)に基づいて決定する(ステップS309)。
(式14)の通り、各チャネルのビットレートオフセットは、それぞれのチャネルのビットレートを減少させるように、負の値が設定される。ビットレートオフセット算出部113bは、決定したビットレートオフセットBROFFSET[n]及びBROFFSET[n+1]を目標ビットレート設定部114に出力する。
また、ステップS306の処理において、(式12)の条件を満たさない場合(ステップS306−NO)、ビットレート調整モード決定部115は各チャネルのQPの平均値aveQP[n]、aveQP[n+1]を用いて、以下の(式15)を満たすか否かを判定する(ステップS310)。(式15)中のTH2、TH3は、それぞれQPの閾値を表す。
(式15)の意味するところは、上位チャネルのQPがある所定の値以上で、下位チャネルのQPがある所定の値以下の場合には、上位チャネルの方が下位チャネルよりも画質が低下するという画質の逆転が起きうるため、それを判定するためのものである。(式15)の条件を満たす場合(ステップS310−YES)、ビットレート調整モード決定部115は調整モードをMODE2に決定する(ステップS311)。その後、ビットレート調整モード決定部115は、取得した各チャネルのQPの平均値を用いて、以下の(式16)に基づいて、各チャネル間のQPの平均値の差分ΔQPを算出する(ステップS312)。
ビットレート調整モード決定部115は、算出した各チャネル間のQPの平均値の差分ΔQPをビットレートオフセット算出部113bに出力する。ビットレートオフセット算出部113bは、ビットレート調整モード決定部115から出力されたQPの平均値の差分ΔQPをと、各チャネルの現在設定されているビットレート値とを用いて、(式10)に基づいて各チャネルに対するビットレートオフセットBROFFSET[n]、BROFF[n+1]を決定する(ステップS313)。ビットレートオフセット算出部113bは、決定したビットレートオフセットBROFFSET[n]及びBROFFSET[n+1]を目標ビットレート設定部114に出力する。
また、ステップS310の処理において、(式15)の条件を満たさない場合(ステップS310−NO)、ビットレート調整モード決定部115は各チャネルのQPの平均値aveQP[n]、aveQP[n+1]を用いて、以下の(式17)を満たすか否かを判定する(ステップS314)。
(式17)の意味するところは、上位チャネルおよび下位チャネルのQPがともにある所定の値以上であり、それぞれ画質劣化が大きくなっていると想定されるため、それを判定するためのものである。(式17)の条件を満たす場合(ステップS314−YES)、ビットレート調整モード決定部115は調整モードをMODE3に決定する(ステップS315)。その後、ビットレート調整モード決定部115は、各チャネルのQPの平均値aveQP[n]、aveQP[n+1]を用いて、ビットレート削減目安となる量子化パラメータオフセット値QPOFFSET[n]及びQPOFFSET[n+1]を(式13)に基づいて取得する(ステップS316)。ビットレート調整モード決定部115は、QPOFFSETテーブルを参照して取得した量子化パラメータオフセット値QPOFFSET[n]及びQPOFFSET[n+1]をビットレートオフセット算出部113bに出力する。
ビットレートオフセット算出部113bは、各チャネルの量子化パラメータオフセットと、各チャネルの現在設定されているビットレート値とを用いて、各チャネルに対するビットレートオフセットBROFFSET[n]、BROFF[n+1]を以下の(式18)に基づいて決定する(ステップS317)。
(式18)の通り、各チャネルのビットレートオフセットは、それぞれのチャネルのビットレートを増加させるように、正の値が設定される。ビットレートオフセット算出部113bは、決定したビットレートオフセットBROFFSET[n]及びBROFFSET[n+1]を目標ビットレート設定部114に出力する。
ステップS309の処理後、又は、ステップS313の処理後、又は、ステップS317の処理後において、目標ビットレート設定部114は、ビットレートオフセット算出部113bから出力されたBROFFSET[n]及びBROFFSET[n+1]と、チャネルnの符号化部13b−n及びチャネル(n+1)の符号化部13b−(n+1)それぞれに現在設定されているビットレートとを用いて、上位チャネルnおよび下位チャネル(n+1)それぞれの新しい目標ビットレートBR[n]、BR[n+1]を(式11)に基づいて算出する(ステップS318)。
次に、ビットレート調整モード決定部115は、第1の条件を満たすか否かを判定する(ステップS319)。第1の条件を満たす場合(ステップS319−YES)、ビットレート調整モード決定部115は上位チャネルの新たな目標ビットレートの上限を初期のビットレートとする(ステップS320)。次に、ビットレート調整モード決定部115は、第2の条件を満たすか否かを判定する(ステップS321)。第2の条件を満たす場合(ステップS321−YES)、ビットレート調整モード決定部115は下位チャネル(n+2)のビットレートBR[n+2]をビットレート値の下限とする(ステップS322)。
その後、ビットレート調整モード決定部115は、変数nを1増加させる(ステップS323)。ビットレート調整モード決定部115は、変数nが総チャネル数N以上になったか否か判定する(ステップS324)。変数nが総チャネル数N以上になった場合(ステップS324−YES)、動画像符号化装置10bは処理を終了する。
一方、変数nが総チャネル数N以上になっていない場合(ステップS324−NO)、動画像符号化装置10bはステップ302〜323の処理を繰り返し実行する。このように、動画像符号化装置10bは、最下位チャネルNの符号化部13b−Nまで処理を繰り返し実行する。上記の処理によって得られた新たな目標ビットレートによって各符号化部13bは符号化処理を行う。そして、各符号化部13bによる符号化結果を再度制御部11bに入力させていくことで、目標ビットレートを動的に更新していく。
また、ステップS314の処理において、(式17)の条件が満たされていない場合(ステップS314−NO)、ビットレート調整モード決定部115は、変数nが総チャネル数N以上になったか否か判定する(ステップS324)。
また、ステップS319の処理において、第1の条件を満たさない場合(ステップS319−NO)、ビットレート調整モード決定部115は第2の条件を満たすか否かを判定する(ステップS321)。
また、ステップS321の処理において、第2の条件を満たさない場合(ステップS321−NO)、ビットレート調整モード決定部115は変数nを1増加させる(ステップS323)。
以上のように構成された動画像符号化装置10bによれば、上位チャネルの映像のQPの平均であるQPの平均値と、下位チャネルの映像のQPの平均であるQPの平均値との関係、もしくは、上位チャネルの映像のQPの平均値及び上位チャネルの映像の符号量と、下位チャネルの映像のQPの平均値及び下位チャネルの映像の符号量との関係の何れか一方に基づいてビットレートの制御を行う。これにより、映像の複雑さを加味したビットレート制御ができる。そのため、ビットレートと画質との関係を維持するビットレートの制御を行うことが可能になる。
また、動画像符号化装置10bによれば、演算されて得られた新たな目標ビットレートによって各符号化部13bは符号化処理を行い、各符号化部13bでの処理結果を改めて全体制御部に入力させていくことで、必要以上に高いビットレートで符号化している場合にはビットレートを減少されることで、NW帯域を削減して映像配信が可能なビットレート制御を行いつつ、各チャネル間での画質の逆転が起きないような映像符号化装置の実現が可能となる。
<変形例>
本実施形態では、動画像符号化装置10bは、各チャネルのQPの平均値を用いたが、これに加えて、各符号化部13bから得られる発生符号量を元にした複雑さ指標を用いて、映像複雑度を判定し、同様の処理を行ってもよい。
上述した実施形態における動画像符号化装置10、10a、10bをコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、FPGA(Field Programmable Gate Array)等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。