特許第6704932号(P6704932)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ リアルネットワークス,インコーポレーテッドの特許一覧

特許6704932ビデオコーディングシステムにおける残差変換及び逆変換方法
<>
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000016
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000017
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000018
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000019
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000020
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000021
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000022
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000023
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000024
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000025
  • 特許6704932-ビデオコーディングシステムにおける残差変換及び逆変換方法 図000026
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6704932
(24)【登録日】2020年5月15日
(45)【発行日】2020年6月3日
(54)【発明の名称】ビデオコーディングシステムにおける残差変換及び逆変換方法
(51)【国際特許分類】
   H04N 19/122 20140101AFI20200525BHJP
   H04N 19/136 20140101ALI20200525BHJP
   H04N 19/176 20140101ALI20200525BHJP
   H04N 19/46 20140101ALI20200525BHJP
【FI】
   H04N19/122
   H04N19/136
   H04N19/176
   H04N19/46
【請求項の数】9
【全頁数】25
(21)【出願番号】特願2017-550886(P2017-550886)
(86)(22)【出願日】2015年3月31日
(65)【公表番号】特表2018-517317(P2018-517317A)
(43)【公表日】2018年6月28日
(86)【国際出願番号】CN2015075597
(87)【国際公開番号】WO2016154928
(87)【国際公開日】20161006
【審査請求日】2018年3月23日
(73)【特許権者】
【識別番号】515152812
【氏名又は名称】リアルネットワークス,インコーポレーテッド
(74)【代理人】
【識別番号】110002295
【氏名又は名称】特許業務法人森脇特許事務所
(72)【発明者】
【氏名】ツァイ チャ−ヤン
(72)【発明者】
【氏名】ディン ウェンペン
(72)【発明者】
【氏名】ウー ガン
【審査官】 岩井 健二
(56)【参考文献】
【文献】 国際公開第2013/158656(WO,A2)
【文献】 国際公開第2013/116081(WO,A2)
【文献】 国際公開第2013/067922(WO,A1)
【文献】 Krit Panusopone, Xue Fang and Limin Wang,Efficient Transform Unit Representation,Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,4nd Meeting: Daegu, KR,2011年 1月,JCTVC-D250_r2,pp.1-3
【文献】 High efficiency video coding,Recommendation ITU-T H.265,ITU-T,2013年 4月,H.265(04/2013),pp.49-50,89-91,140-145
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 − 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオエンコーダーに実装され、少なくとも一つのフレームヘッダと動画像データのペイロードとを含む符号化されたビットストリームを生成するための未符号化ビデオフレームの符号化方法であって、
最大の水平及び垂直符号化ブロックサイズにより決定される、前記未符号化ビデオフレームの最大符号化ブロックサイズ及び
最大の水平及び垂直予測ブロックサイズにより決定される、前記未符号化ビデオフレームの最大変換ブロックサイズ、
をそれぞれ求めるステップと、
前記未符号化ビデオフレームを、
前記最大の水平符号化ブロックサイズ以下の水平符号化ブロックサイズと、
前記最大の垂直符号化ブロックサイズ以下の垂直符号化ブロックサイズとを有する第1の符号化ブロックを含む複数の符号化ブロックに分けるステップと、
前記第1の符号化ブロックを、
水平及び垂直予測ブロックサイズを有する少なくとも一つの予測ブロックに分けるステップと、
前記第1の符号化ブロックを、前記最大の水平予測ブロックサイズ以下の水平変換ブロックサイズと、前記最大垂直予測ブロックサイズ以下の垂直変換ブロックサイズとを有する第1の変換ブロックを含む複数の変換ブロックに分けるステップと、
前記未符号化ビデオフレームを符号化し、前記符号化されたビットストリームからなる前記動画像データのペイロードを生成するステップと、を備え、
前記水平変換ブロックサイズ及び前記垂直変換ブロックサイズは、
少なくとも一部が、前記水平及び垂直符号化ブロックサイズと、前記水平及び垂直予測ブロックサイズとに依存すると共に、
前記ペイロードを生成するステップは、
前記未符号化ビデオフレームの符号化の間、前記水平及び垂直変換ブロックサイズの各々が8画素又は16画素に等しいと判定するステップと、その結果として、
第1の変換により、前記第1の変換ブロックから第1の一組の整数変換係数を得るステップと、
前記第1の一組の整数変換係数各々を右へ2ビットシフトさせることにより、前記第1の一組の整数変換係数から第2の一組の整数変換係数を得るステップと、
第2の変換により、前記第2の一組の整数変換係数から第3の一組の整数変換係数を得るステップと、
前記第3の一組の整数変換係数各々を右へ2ビットシフトさせることにより、前記第3の一組の整数変換係数から第4の一組の整数変換係数を得るステップと
を順次実行することにより、16ビット整数値で表される整数変換係数を取得する
ことを特徴とする、方法。
【請求項2】
ビデオエンコーダーに実装される請求項1記載の方法であって、
前記複数の変換ブロックの各々は、一組の変換係数を含み、そして、
前記複数の変換ブロックの各々に、対応する変換ブロックパターンフラグを変換ブロックヘッダにセットするステップを更に備え、
前記一組の変換係数が、ゼロ以外の値を有する少なくとも一つの変換係数を含む場合、
前記対応する変換ブロックパターンフラグには、第1のフラグ値が与えられ、
それ以外の場合、
前記対応する変換ブロックパターンフラグには、第2のフラグ値が与えられる
ことを特徴とする、方法。
【請求項3】
ビデオエンコーダーに実装される請求項1記載の方法であって、
前記第1の変換及び前記第2の変換は、方程式y = T_8x8*xによって表され、そして、T_8x8は、以下によって表されることを特徴とする、方法。
【請求項4】
ビデオエンコーダーに実装される請求項1記載の方法であって、
前記前記水平及び垂直変換ブロックサイズの各々が16画素に等しいと判定された場合
前記第1及び前記第2の変換は、方程式y = T_16x16*xによって表され、そして、T_16x16は、係数t0 … t15を有する行列であり、
式中、t0…t15は以下により定義されることを特徴とする、方法。
【請求項5】
ビデオエンコーダーに実装される請求項1記載の方法であって
前記水平及び垂直符号化ブロックサイズと前記水平及び垂直予測ブロックサイズとが各々8画素に等しい場合、
前記未符号化ビデオフレームの輝度特性のために前記水平及び垂直変換ブロックサイズをセットするステップを更に備えることを特徴とする、方法。
【請求項6】
ビデオエンコーダーに実装される請求項1記載の方法であって
前記水平及び垂直符号化ブロックサイズと、前記水平及び垂直予測ブロックサイズとが各々16画素に等しい場合、
前記未符号化ビデオフレームの輝度特性のために前記水平及び垂直変換ブロックサイズをセットするステップを更に備えることを特徴とする、方法。
【請求項7】
ビデオエンコーダーにより実装される請求項1記載の方法であって
前記ビデオエンコーダーにより実装される方法は、前記水平及び垂直符号化ブロックサイズが各々31画素を超える場合、前記未符号化ビデオフレームの輝度特性のために各々16画素に等しいように、前記水平及び垂直変換ブロックサイズをセットするステップを更に備えることを特徴とする、方法。
【請求項8】
ビデオエンコーダーにより実装される請求項1記載の方法であって
前記水平及び垂直符号化ブロックサイズと、前記水平及び垂直予測ブロックサイズとが各々16画素に等しい場合、
前記ビデオエンコーダーにより実装される方法は、前記未符号化ビデオフレームの色度特性のために各々8画素に等しいように、前記水平変換ブロックサイズ及び前記垂直変換ブロックサイズをセットするステップを更に備えることを特徴とする、方法。
【請求項9】
ビデオエンコーダーにより実装される請求項1記載の方法であって
前記水平及び垂直符号化ブロックサイズが各々31画素を超える場合、
前記ビデオエンコーダーにより実装される方法は、前記未符号化ビデオフレームの色度特性のために各々8画素に等しいように、前記水平及び垂直変換ブロックサイズをセットするステップを更に含むことを特徴とする、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動画像データ信号の符号化及び復号化に関し、より詳しくは、劣化を補償する、コードブックを利用したアダプティブフィルタによる符号化及び復号化に関する。
【背景技術】
【0002】
デジタル画像、音声/オーディオ、グラフィクス、及びビデオ(動画像)等のデジタルマルチメディアの登場により、コンテンツの信頼性の高い格納、通信(communication)、送信(transmission)、検索及びアクセスが比較的容易にできるようになったので、様々なアプリケーションの性能が顕著に向上し、また、新しいアプリケーションが作成された。
一般的に、デジタルマルチメディアのアプリケーションは数多くあり、娯楽、情報、医学、及びセキュリティを含む幅広い分野を網羅しており、数多くの方法で社会に貢献している。
カメラやマイクロホンのようなセンサにより取得されるマルチメディアはアナログである場合も多く、パルス符号変調(PCM)方式によるデジタル化プロセスによりデジタル化される。しかし、デジタル化の直後のデータ量は、スピーカ及び/またはTVディスプレイで必要となるアナログ表示を再形成するために必要であるので、非常に大きくなる。したがって、大容量のデジタルマルチメディアコンテンツを効率を良く通信、蓄積(格納)、または送信するためには、生のPCM形式から圧縮された表現形式に変換する必要がある。このように、マルチメディア(コンテンツ)の圧縮のために数多くの技術が発明されてきた。
近年、動画像データの圧縮技術は、圧縮されていないデジタル動画像に匹敵するほどの高い心理視覚品質(psycho−visual quality)を維持しつつ、多くの場合は高い圧縮率(10〜100)を達成するほど極めて高性能となっている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
数多くの標準機関による動画像符号化規格(例えばMPEG―1、MPEG―2、H.263、MPEG−4 part2、MPEG―4 AVC/H.264、MPEG―4 SVC及びMVC)、産業界主導のデファクト・スタンダード(例えばWindows Media Video、RealVideo、On2 VP等)に代表されるように、動画像圧縮技術において今日まで驚異的な進歩が見られるが、さらに高品質な、より高い解像度の、今では三次元(立体)の動画像をいつでもどこでも見たいという、さらに高まる消費者の欲求により、幅広いクライアント・デバイス(PC/ラップトップ、TV、セットトップボックス、ゲームコンソール、携帯メディアプレーヤ/デバイス、スマートフォン及びウェアラブルなコンピューター等)に、DVD/BDを介して、あるいは無線放送、ケーブル/衛星、有線及びモバイルネットワークを通じて等、さまざまな手段により動画像を配信する必要があり、さらに高いレベルの動画像圧縮が求められている。
このことは、標準化団体による規格において、ISO MPEGによる、High Efficiency Video Coding(HEVC)の近年始まった取り組みからも明らかであり、そして、ITU−T規格委員会によるH.265の動画像圧縮に対する長年の調査研究の技術をベースに新たな技術が組み合わせられることが期待されている。
【0004】
上述した規格は全て、動画像のフレーム間の動きを補償することにより時間的冗長性を削減する、一般的なフレーム間予測符号化の枠組みを採用する。基礎概念は、ブロックマッチング法を用いて隣接した動画像間の時間的依存を取り除くことである。
符号化プロセスの開始時に、未符号化動画像シーケンスで各フレームは、3つのカテゴリ(Iタイプフレーム、Pタイプフレーム、Bタイプフレーム)のうちの1つに分類される。Iタイプフレームはイントラコード化される。すなわち、動画像の符号化のためにフレームそのものからの情報だけを用い、フレーム間動き補償技術は使用されない(フレーム内動き補償技術を適用できるにもかかわらず)。
【0005】
その他、2つのタイプのフレーム(Pタイプ及びBタイプ)は、フレーム間の動き補償技術を使用して符号化される。PフレームピクチャとBフレームピクチャの違いは、動き補償のために使用する参照動画像の時間的方向である。Pフレームピクチャは過去の動画像(表示順序)からの情報を利用するが、Bフレームピクチャは過去及び未来両方の動画像(表示順序)からの情報を利用することができる。
【0006】
フレーム予測タイプがPタイプ及びBタイプの場合、各フレームは各画素の輝度成分と色度成分の係数により表現される画素ブロックに分けられ、ブロックごとに一つ以上の動きベクトルが得られる。(なぜなら、Bフレームピクチャは、未来と過去の符号化フレーム両方からの情報を利用することができるので、2つの動きベクトルがそれぞれのブロックごとに符号化できるからである。)
動きベクトル(MV)は、現ブロックの位置から、もう一方の過去に符号化されたフレーム(表示順序においての過去または未来のフレームでもよい)の類似のブロックの位置までの空間変位を表す。そしてそれぞれ、参照ブロック及び参照フレームと呼ばれる。参照ブロックと現ブロックとの差が求められ(もしあれば)、そしてそこから残差(「残差信号」とも呼ばれる)が得られる。従って、ブロックの全コンテンツではなく、残差及び動きベクトルだけを、インター符号化フレームのブロックごとに符号化することが必要とされる。動画像シーケンスのフレーム間のこの種の時間的冗長性を取り除くことにより、動画像シーケンスを圧縮することができる。
【0007】
動画像データを更に圧縮するために、フレーム間予測またはフレーム内予測技術を適用した後、残差信号の係数は大抵の場合は空間領域から周波数領域へ変換される(例えば離散型コサイン変換(「DCT」)または離散サイン変換(「DST」)を使用して)。普通の動画像(人間が認識できる通常の動画像シーケンスを構成するタイプの動画像)では、常に高周波成分より低周波成分の方が強い。
従って、残差信号のエネルギー圧縮は、空間領域でするよりも周波数領域でする方が効率がよい。順方向変換の後、係数及び動きベクトルは、パケット化の前、または、例えばインターネットのようなネットワークを介した伝送のための処理前に、量子化及びエントロピー符号化され得る。
【0008】
復号化装置側では、空間残差信号を復元させるために逆量子化及び逆変換が適用される。これらは、多くの動画像圧縮規格において、典型的な変換/量子化プロセスである。それから、最初の未符号化動画像シーケンスの再形成されたバージョンを生成するために、逆予測処理を行うことができる。
【0009】
従前の規格では、符号化で使用されるブロックは、通常16×16画素であった(多くの動画像符号化規格においてマクロブロックと呼ばれる)。しかし、これらの規格の開発により、フレームサイズは更に大きくなり、そして多くのデバイスに、「高解像度」(または「HD」)フレームサイズ(例えば2048×1530画素)より高度な高解像度で表示する機能が備わった。
従って、これらのフレームサイズのための動きベクトルを効率的に符号化するために、より大きいブロック(例えば64×64画素)を有することは望ましいと言える。空間領域から周波数領域へ変換される残差信号のブロックのサイズを増大させることも望ましいこととなる。

【図面の簡単な説明】
【0010】
図1】一実施例に従う、典型的な動画像符号化/復号化システムを図示する。
図2】一実施例に従う、典型的な符号化デバイスのいくつかのコンポーネントを図示する。
図3】一実施例に従う、典型的な復号化デバイスのいくつかのコンポーネントを図示する。
図4】少なくとも一つの実施例に従う、典型的なビデオエンコーダーのブロック図を図示する
図5】少なくとも一つの実施例に従う、典型的な動画像復号化装置のブロック図を図示する。
図6】少なくとも一つの実施例に従う、変換ブロック処理ルーチンを図示する。
図7】少なくとも一つの実施例に従う、変換ブロックサイズ選択サブルーチンを図示する。
図8】少なくとも一つの実施例に従う、順方向整数変換サブルーチンを図示する。
図9】少なくとも一つの実施例に従う、二重変換サブルーチンを図示する。
図10】少なくとも一つの実施例に従う、変換ブロック復元ルーチンを図示する。
図11】少なくとも一つの実施例に従う、逆整数変換サブルーチンを図示する。
【発明を実施するための形態】
【0011】
続く詳細な説明は、主に、プロセッサと、プロセッサ用のメモリ記憶デバイスと、被接続ディスプレイ装置と、入力装置とを含む従来のコンピューター・コンポーネントによるプロセスと演算の記号表現とにより表現される。さらにまた、これらのプロセス及び演算では、リモート・ファイルサーバーと、サーバーコンピューターと、メモリ記憶デバイスとを含む、異機種分散コンピューター環境において従来のコンピューター構成要素を利用することができる。これらの従来の各分散コンピューター構成要素は、ネットワークを介してプロセッサにアクセス可能である。
【0012】
フレーズ「一実施例において」、「少なくとも一つの実施例において」、「各種実施形態において」、「いくつかの実施例において」等が、繰り返し本願明細書において使用され得る。この種のフレーズは同じ実施例を必ず示すというわけではない。
文脈から判断して明らかにそうでないと分かる以外は、用語「備える」、「有する」、及び「含む」は同義である。動画像間/動画像内予測及び変換符号化を使用するという点で、一般的に上記した典型的な「複合型」動画像符号化アプローチにおいて各種実施形態が記載される。
【0013】
これより、図面にて図示したような発明を実施するための形態が詳細に参照される。実施例が図面及び図面に関する説明に関連して記載される一方、本開示内容の要旨を逸脱しない範囲で、明示的に図示及び/または記載されているか否かを問わず、すべての代替物、変形例、均等物を含み、代替及び/または等価な実施態様が、図を用いて記載される特定の実施例と置換されることができると当業者により認められる。さまざまな別の実施例において、本願明細書にて開示される実施例の範囲を制限せずに、補助装置または図示のデバイスの組合せが、追加または組み合わせられ得る。
【0014】
[典型的な動画像符号化/復号化システム]
図1は、少なくとも一つの実施例に従う、典型的な動画像符号化/復号化システム100を図示する。
符号化デバイス200(図2にて図示・後述)及び復号化デバイス300(図3にて図示・後述)は、ネットワーク104を介してデータ通信する。
号化デバイス200は、ストレージ・エリア・ネットワーク(「SAN」)、高速シリアルバス、または他の適切な通信技術といった直接のデータ接続を介してか、またはネットワーク104(図1の破線により示される)を介して、未符号化動画像ソース108とデータ通信し得る。同様に、号化デバイス300は、記憶領域ネットワーク(「SAN」)、高速シリアルバス、または他の適切な通信技術といった直接のデータ接続を介してか、またはネットワーク104(図1の破線によって示される)を介して、任意の符号化動画像ソース112とデータ通信し得る。
いくつかの実施例において、符号化デバイス200、復号化デバイス300、符号化動画像ソース112及び/または未符号化動画像ソース108は、一つ以上の複製及び/または配信された、物理的または論理的なデバイスを備えることができる。多くの実施例において、図示されるより多くの符号化デバイス200、復号化デバイス300、未符号化動画像ソース108及び/または符号化動画像ソース112があってもよい。
【0015】
各種実施形態において、符号化デバイス200は通常、ネットワーク104を介して、例えば復号化デバイス300から要求を受け、それに応答できるネットワークに接続されたコンピューターであってもよい。
各種実施形態において、復号化デバイス300は、ネットワークに接続されたフォームファクタを有するコンピューター(例えば携帯電話;腕時計、ハンズアップディスプレイまたは他の着用できるコンピューター;専用のメディアプレーヤ;タブレット型コンピューター;自動車両ヘッドユニット;オーディオビデオオンデマンド(AVOD)システム;専用のメディアコンソール;ゲームデバイス;「セットトップボックス」;デジタルビデオテープレコーダ;テレビ;汎用コンピューター)であってもよい。
各種実施形態において、ネットワーク104は、インターネット、一つ以上のローカルエリアネットワーク(「LAN」)、一つ以上の広域ネットワーク(「WAN」)、セルラーデータネットワーク及び/または他のデータネットワークを含むことができる。ネットワーク104は、さまざまな点で、有線でも無線ネットワークでもよい。
【0016】
[典型的な符号化デバイス]
図2には、典型的な符号化デバイス200のいくつかのコンポーネントが図示される。いくつかの実施例において、符号化デバイスは、図2に示されるより多くのコンポーネントを含むことができる。しかしながら、実施例を開示するために、これら通常の従来コンポーネント全てを示す必要はない。
図2に示すように典型的な符号化デバイス200は、ネットワーク(例えばネットワーク104)に接続するためのネットワークインターフェース204を含む。典型的な符号化デバイス200はまた、処理ユニット208と、メモリ212と、任意のユーザー入力214(例えば英数字キーボード、キーパッド、マウスまたは他のポインティングデバイス、タッチスクリーン及び/またはマイクロホン)と、任意のディスプレイ216とを含む。そして、全てがバス220を介してネットワークインターフェース204に相互接続される。メモリ212は通常、RAMと、ROMと、大容量永久(不揮発性)記録装置(例えばディスクドライブ、フラッシュメモリ等)とを備える。
【0017】
典型的な符号化デバイス200のメモリ212は、多くのソフトウェアサービスのためのプログラムコードだけでなく、オペレーティングシステム224も格納する。例えばソフトウエアサービスは、変換ブロック処理ルーチン600(図6を参照し後述)を実行するための指示を備える、ソフトウェア実装のフレーム間ビデオエンコーダー400(図4を参照し後述)である。メモリ212は、音声/視覚のメディア作品(例えば、映画及び/またはテレビエピソード)の符号化されていないコピーを表現することができる動画像データファイル(図示せず)を保存することもできる。
これらの、そしてまた他の、ソフトウェアコンポーネントを、非一時的なコンピューター読み取り可能な記録媒体232(例えばフロッピーディスク、テープ、DVD/CD―ROMドライブ、USBドライブ、メモリーカード等)と連動するドライブメカニズム(図示せず)を用いて、符号化デバイス200のメモリ212へロードすることができる。
【0018】
運用においてオペレーティングシステム224は、符号化デバイス200のハードウェア及び他のソフトウェアリソースを管理して、そして、ソフトウエア実装のフレーム間ビデオエンコーダー400といった、ソフトウェアアプリケーションに共通のサービスを提供する。
様々なソフトウェアアプリケーション(例えばソフトウエア実装のフレーム間ビデオエンコーダー400)のための、ネットワークインターフェース204を介したネットワーク通信、入力214を介したデータの受信、任意のディスプレイ216を介したデータの出力、及びメモリ212の割り当て等といった、ハードウェア機能のために、オペレーティングシステム224は符号化デバイスで実行されているソフトウェアと、ハードウェアとの間で仲介役として機能する。
【0019】
いくつかの実施例において符号化デバイス200は、未符号化動画像ソース108と通信を行うための特殊な未符号化ビデオインターフェース236(例えば高速シリアルバス等)を更に備えることができる。いくつかの実施例において、符号化デバイス200は、ネットワークインターフェース204を介して未符号化動画像ソース108と通信することができる。他の実施態様においては、未符号化動画像ソース108を、メモリ212またはコンピューター読み取り可能な記録媒体232に常駐させることができる。
【0020】
典型的な符号化デバイス200は、従来の汎用コンピューターに通常適合すると記載されているが、符号化デバイス200は、各種実施形態に従って動画像を符号化するための指示を実行することができる多くのデバイスのいずれかでもよい(例えば典型的なソフトウエア実装のビデオエンコーダー400及び変換ブロック処理ルーチン600)。そして例えば、ビデオ録画装置、ビデオ・コプロセッサ及び/またはアクセラレータ、パーソナルコンピューター、ゲーム機、セットトップボックス、携帯またはウェアラブルなコンピューター、スマートフォン、または他のいかなる好適な装置でもよい。
【0021】
一つの例として、符号化デバイス200をオンデマンドのメディアサービス(図示せず)を促進するために作動させることができる。少なくとも一つの典型的な実施形態において、オンデマンドのメディアサービスは、メディア作品(例えば動画像コンテンツ)のデジタルコピーを作品ごと及び/または購読料ベースでユーザーに提供するオンラインオンデマンドのメディアストアを促進するために、符号化デバイス200を作動させることができる。オンデマンドのメディアサービスは、未符号化動画像ソース108からこの種のメディア作品のデジタルコピーを得ることができる。
【0022】
[典型的な復号化デバイス]
図3には、典型的な復号化デバイス300のいくつかのコンポーネントが図示される。いくつかの実施例において復号化デバイスは、図3に示されるより多くのコンポーネントを含むことができる。しかしながら、通常これらの従来のコンポーネント全てを、実施例を開示するために示す必要はない。
図3に示すように、典型的な復号化デバイス300は、ネットワーク(例えばネットワーク104)に接続するためのネットワークインターフェース304を含む。典型的な復号化デバイス300はまた、処理ユニット308と、メモリ312と、任意のユーザー入力314(例えば英数字キーボード、キーパッド、マウスまたは他のポインティングデバイス、タッチスクリーン及び/またはマイクロホン)と、任意のディスプレイ316と、任意のスピーカ318とを含む。そして、全てがバス320を介してネットワークインターフェース304に相互接続される。メモリ312は通常、RAMと、ROMと、大容量永久記録装置(例えばディスクドライブ、フラッシュメモリ等)とを備える。
【0023】
典型的な復号化デバイス300のメモリ312は、多くのソフトウェアサービスのためのプログラムコードだけでなく、オペレーティングシステム324も格納することができる。ソフトウェアサービスは例えば変換ブロック復元ルーチン1000(図10を参照して後述)を実行するための指示を備えたソフトウエア実装の動画像復号化装置500(図5を参照して後述)である。
メモリ312は、例えば映画及び/またはテレビエピソードといった音声/視覚のメディア作品を符号化したコピーといった動画像データファイル(図示せず)を格納することもできる。これらの、そしてまた他の、ソフトウェアコンポーネントは、非一時的なコンピューター読み取り可能な記録媒体332(例えば、フロッピーディスク、テープ、DVD/CDROMドライブ、メモリーカード等)を伴う駆動機構(図示せず)を用いた復号化デバイス300のメモリ312へロードされる。
【0024】
運用においてオペレーティングシステム324は、復号化デバイス300のハードウェア及び他のソフトウェアリソースを管理して、そして、例えばソフトウエア実装の動画像復号化装置500といった、ソフトウェアアプリケーションのための共通のサービスを提供する。例えばネットワークインターフェース304を介するネットワーク通信、入力314を介したデータの受信、任意のディスプレイ316及び/または任意のスピーカ318を介した出力データの出力、及びメモリ312の割り当て等といった、ハードウェア機能のために、オペレーティングシステム324は、符号化デバイスで実行されるソフトウェアと、ハードウェアとの間で仲介役として動作する。
【0025】
いくつかの実施例において、例えば符号化動画像ソース11と通信するために、復号化デバイス300は、高速シリアルバス等のような、任意の符号化ビデオインターフェース336を更に備えることができる。いくつかの実施例において復号化デバイス300は、ネットワークインターフェース304を介して符号化動画像ソース(例えば符号化動画像ソース11)と通信することができる。他の実施態様において、符号化動画像ソース11は、メモリ312またはコンピューター読み取り可能な記録媒体332内に常駐させてもよい。
【0026】
復号化デバイス300の典型例として、従来の汎用コンピューターを示しているが、典型的なソフトウエア実装の動画像復号化装置500及び変換ブロック復元ルーチン00といった、各種実施形態に従う動画像データを復号化するためのプログラムを実行できる多くのデバイスであれば、いずれのものでもよい。例えば、ビデオ録画装置、ビデオ・コプロセッサ及び/またはアクセラレータ、パーソナルコンピューター、ゲーム機、セットトップボックス、携帯またはウェアラブルなコンピューター、スマートフォンまたはその他のいかなる好適な装置であってもよい。
【0027】
例えば、復号化デバイス300はオンデマンドのメディアサービスと協同して動作させることができる。少なくとも一つの典型的な実施形態において、オンデマンドのメディアサービスは、復号化デバイス300を操作するユーザーに、作品ごと及び/または購読料ベースでメディア作品(例えば動画像コンテンツ)のデジタルコピーを提供することができる。復号化デバイスは、未符号化動画像ソース108から、例えば、ネットワーク104を介した符号化デバイス200を介して、この種のメディア作品のデジタルコピーを得ることができる。
【0028】
[ソフトウエア実装のフレーム間ビデオエンコーダー]
図4は、少なくとも一つの実施例に従う残差変換技術を採用するソフトウエア実装のフレーム間ビデオエンコーダー400(以降「符号化装置400」)の一般的な機能ブロック図を示す。表示順にある動画像シーケンスの一つ以上の未符号化ビデオフレーム(vidfrms)を、シーケンサ404に提供することができる。
【0029】
シーケンサ404は、予測符号化(predictive coding)のピクチャタイプ(例えばI、PまたはB)を各未符号化ビデオフレームに割り当てると共に、動き予測のためフレームシーケンスまたはフレームシーケンス・グループを符号化順に並べ替えることができる(例えばIタイプフレームにPタイプフレームが続き、更にBタイプフレームが続くというように)。並べ替えられた未符号化ビデオフレーム(seqfrms)は、その後ブロックインデクサ408に符号化順に入力されることができる。
【0030】
各々の並べられた未符号化ビデオフレーム(seqfrms)のためにブロックインデクサ408は、現フレームの最大符号化ブロックサイズ(「LCB」)(例えば64×64画素)めることができ、そして、その未符号化ビデオフレームを符号化ブロック(blks)の配列に分けることができる。与えられたフレームの範囲内の個々の符号化ブロックは、例えば4×4画素から現フレームのLCBサイズまで、サイズが変化し得る。
【0031】
各符号化ブロックは、それから一つずつ差分器412に入力され、そして、先に符号化された符号化ブロックから生成された、対応する予測信号ブロック(pred)を用いて、各符号化ブロックの差分が算出され得る。符号化ブロック(cblks)は、予測ブロック(pred)を生成するために、動き推定器416にも送られる。
差分器412で差分を算出した後、得られた残差ブロック(res)は変換器420(後述)により、周波数領域表現に順方向変換され得る。そして、変換係数(tcof)のブロックとなる。変換係数(tcof)のブロックはそれから量子化器424に送られ得る。そして、変換係数(tcof)のブロックは、エントロピー符号化器428と局部復号化ループ430と両方に送られることができる量子化係数(qcf)のブロックとなる。
【0032】
局部復号化ループ430の先頭で、変換係数(tcof´)のブロックは、逆量子化器432により逆量子化され、そして逆量子化された残差ブロック(res´)を生成するために、逆量子化した変換係数(tcof´)のブロックを逆変換器436に渡すことができる。
局部復号ブロック(rec)を生成するために、動き補償予測器442からの予測ブロック(pred)を、加算器440で、逆量子化された残差ブロック(res´)に追加することができる。それから局部復号ブロック(rec)は、フレームアセンブラ及びデブロックフィルタリングプロセッサ444に送られ得る。そして、そこではブロックノイズが低減され、復元フレーム(recd)が組み立てられる。そしてその復元フレーム(recd)は、動き推定器416及び動き補償予測器442のための参照フレームとして使用され得る。
【0033】
エントロピー符号化器428は、量子化変換係数(qcf)、差分動きベクトル(dmv)、及び他のデータを符号化し、そして、符号化された動画像ビットストリーム448を生成する。符号化された動画像ビットストリーム448は未符号化動画像シーケンスのフレームごとに、符号化動画像データ(例えば、符号化量子化変換係数(qcf)及び差分動きベクトル(dmv))及び、符号化フレームヘッダ(例えば、現フレームのLCBサイズといった構文情報)を含むことができる。
【0034】
[順方向整数変換手順]
変換器420の機能についていうと、変換器は、各符号化ブロックの輝度値及び色度値のための残差値のブロックを受け取り、残差値のブロックを一つ以上の輝度変換ブロック及び色度変換ブロックに分ける。
【0035】
少なくとも一つの実施例において、符号化ブロックは、現符号化ブロックサイズならびに、符号化ブロックの動き予測のために使用される予測ブロックのサイズに従いサイズ設定される変換ブロックに分けられる。例えば、変換ブロックサイズは、以下のテーブル1に示される組合せに従い割り当てられることができる。変換器420は、最大変換ブロックサイズフラグを現フレームのピクチャヘッダにセットすることもできる。
【0036】
[テーブル1]
【0037】
符号化ブロックが変換ブロックに分割されたあと、変換ブロックの残差値は空間領域から周波数領域へ、例えば順方向DCT変換演算により変換される。少なくとも一つの実施例において、符号化効率を高めるために、変換ブロックの残差値の整数の相当値が求められ、そして、順方向整数DCT変換演算を行うことができる。更に符号化効率を高めるために、動画像符号化プロセスの単一命令多重データ(SIMD)命令アーキテクチャを利用することは、有利であってもよい。
しかし、最も一般的なSIMD命令アーキテクチャの実装には、16ビットのビット幅が必要である。従って少なくとも一つの実施例では、16ビット整数で残差値及び変換係数を表すことができるのを確実にするために、いくつかの順方向変換演算後の残差値に対して、ビットシフト演算を行うことができる(そして、復号化装置側では、いくつかの逆変換演算後の変換係数に対して行うことができる)。
【0038】
少なくとも一つの実施例において変換器420は、4×4変換ブロックに対して、以下の方程式に従い順方向整数DCT変換演算を行うことができる。
【0039】
少なくとも一つの実施例において変換器420は、8×8変換ブロックの場合、以下の方程式に従い順方向整数DCT変換演算を行うことができる。
【0040】
8×8順方向整数DCT変換演算の後、16ビット演算を確実にするために変換器420は、変換係数の値を2ビット右にビットシフトさせることができる。
【0041】
少なくとも一つの実施例において変換器420は、16×16変換ブロックの場合、以下の方程式に従い順方向整数DCT変換演算を実行することができる。
式中、t,t,t…t14,t15は、以下のテーブル2で定義される。
【0042】
16×16順方向整数DCT変換演算の後、16ビット演算を確実にするために、変換器420は、変換係数の値を2ビット右にビットシフトさせることができる。
【0043】
[テーブル2]
【0044】
符号化ブロック当たりの変換ブロックの数に応じて、各変換ブロックのDC係数に対して付加的な変換演算を行うことにより、更に符号化効率を高めることができるかもしれない。DC係数は例えば上記の順方向整数DCT変換演算の1つに従い、DC整数変換ブロックに集められ、再び変換される。このプロセスは、二重変換と呼ばれている。
【0045】
[ソフトウエア実装のフレーム間復号化装置]
図5は、少なくとも一つの実施例に従い、対応するソフトウエア実装のフレーム間動画像復号化装置500(以降「復号化装置500」)逆残差変換技術の通常の機能ブロック図を示す。そして、復号化デバイス(例えば復号化デバイス300)での使用に適している。復号化装置500は、符号化装置400での局部復号化ループ430と同じように機能することができる。
【0046】
具体的には、符号化された動画像ビットストリーム504を、エントロピー復号化装置508に供給することができる。そしてエントロピー復号化装置508は、量子化係数のブロック(qcf)、差分動きベクトル(dmv)、付随的なメッセージデータパケット(msg―データ)、及び他のデータを復号化することができる。それから量子化係数ブロック(qcf)は、逆量子化器512によって逆量子化されることができ、結果、逆量子化係数(tcof´)となる。それから、逆量子化係数(tcof´)は逆変換器516(後述)によって周波数領域から逆変換されることができ、結果、復号化残差ブロック(res´)となる。
加算器520は、対応する動きベクトル(mv)を用いて、得られた、運動補償予測ブロック(pred)を追加することができる。得られた復号化動画像(dv)には、フレームアセンブラ及びデブロックフィルタリングプロセッサ524においてデブロックフィルタをかけられることができる。
フレームアセンブラ及びデブロックフィルタリングプロセッサ52の出力のブロック(recd)は、動画像シーケンスの再構成されたフレームを形成する。そして、それは復号化装置500から出力されることができ、また、次の符号化ブロックを復号化するための動き補償予測器530のための参照フレームとして使用されることもできる。
【0047】
[逆整数変換手順]
逆変換器516の機能性については、逆変換器は、逆量子化器512から、逆量子化された16ビット整数変換係数のブロックを得る。変換器420(上記)によって行われる順方向整数DCT変換演算を逆にし、残差値を復元させるために、逆変換器516は逆量子化器512から得られる変換係数に対して逆整数DCT変換演算を行う。
【0048】
現符号化ブロックの変換係数が二重変換された場合、後述のように、逆変換器は逆二重変換手順を行う。DC変換係数が逆変換されて、その対応する変換ブロックに挿入されたあと、逆変換器は、逆整数DCT変換演算の実行に進む。
【0049】
例えば少なくとも一つの実施例で、4×4変換ブロックに対応する16ビット整数変換係数のブロックでは、逆変換器516は、以下の方程式に従い逆整数DCT変換演算を行うことができる.

【0050】
4×4逆整数DCT変換演算の後、16ビット演算を確実にするために、逆変換器は、得られた残差値の値を5ビット右にビットシフトさせることができる。
【0051】
少なくとも一つの実施例において、8×8変換ブロックに対応する16ビット整数変換係数のブロックでは、逆変換器516は、以下の方程式に従い逆整数DCT変換演算を行うことができる。
【0052】
8×8逆整数DCT変換演算の後、16ビット演算を確実にするために、逆変換器は、得られた残差値の値を7ビット右にビットシフトさせることができる。
【0053】
少なくとも一つの実施例において、16×16変換ブロックに対応する16ビット整数変換係数のブロックでは、逆変換器516は、以下の方程式に従い逆整数DCT変換演算を行うことができる。
【0054】
16×16逆整数DCT変換演算の後、16ビット演算を確実にするために、逆変換器は、得られた残差値の値を7ビット右にビットシフトさせることができる。
【0055】
[変換ブロック処理ルーチン]
図6は、少なくとも一つの実施例(例えば符号化装置00)での使用に適した変換ブロック処理ルーチン600を図示する。当業者が認識するように、符号化プロセスのすべてのイベントが図6に図示されるというわけではない。むしろ明確にするため、例示の実施例を説明するのに合理的に関連するステップだけが示される。
【0056】
変換ブロック処理ルーチン600は実行ブロック604で、符号化されている現フレームの整数残差値の符号化ブロックを得る。
それから変換ブロック処理ルーチン600は、変換ブロックサイズ選択サブルーチン700(図7を参照し後述)に、現符号化ブロックのサイズと、動き予測で使用される対応する予測ブロックのサイズと、を提供する。そして、現符号化ブロックサイズ及び予測ブロックサイズの現組合せに対する、適切な色度及び輝度の変換ブロックサイズを返す。
【0057】
それから変換ブロック処理ルーチン600は実行ブロック608で、現符号化ブロックを、変換ブロックサイズ選択サブルーチン700(上記)が返す色度及び輝度変換ブロックサイズに従う、16ビット整数の残差値の一つ以上の変換ブロックに分ける。
【0058】
現符号化ブロックの各変換ブロックは開始ループブロック612で、順番に処理される。
【0059】
判断ブロック616において現変換ブロックの各々の残差値がゼロ値を有する場合、変換ブロック処理ルーチン600は実行ブロック620で、対応する変換ブロックパターンフラグを現変換ブロックの変換ブロックヘッダにセットする。
【0060】
そうでなければ判断ブロック616において、現変換ブロックの残差値の一つ以上がゼロ以外の値を有する場合、変換ブロック処理ルーチン600は順方向整数変換サブルーチン800(図8を参照し後述)を呼び出す。そして、順方向整数変換サブルーチン800は対応ブロックの16ビット整数変換係数を返す。
【0061】
変換ブロック処理ルーチン600は終了ループブロック624で、現符号化ブロック次の変換ブロックを処理するために(もしあれば)、開始ループブロック612へ戻って繰り返す。
【0062】
判断ブロック628において現符号化ブロックの変換ブロックが二重変換され得る(例えば、16または64変換ブロックが、現符号化ブロックにある)場合、変換ブロック処理ルーチン600は、現符号化ブロックの変換ブロックのDC整数変換係数に対して付加的な変換演算を行い、16ビット整数変換係数の対応する二重変換されたブロックを返す二重変換サブルーチン900(図9を参照して後述)を呼び出すことができる。
【0063】
二重変換サブルーチン900が16ビット整数変換係数の二重変換されたブロックを返したあとか、または、判断ブロック628を再度参照して、現符号化ブロックが二重変換ができない場合、変換ブロック処理ルーチン600は、終端ブロック699で現符号化ブロックの終了とする。
【0064】
[変換ブロックサイズ選択サブルーチン]
図7は、少なくとも一つの実施例(例えば変換ブロック処理ルーチン600)での使用に適した変換ブロックサイズ選択サブルーチン700を図示する。
【0065】
変換ブロックサイズ判定サブルーチン700は実行ブロック704で、符号化ブロックサイズと、現符号化ブロックの動き予測プロセスで使用される予測ブロックサイズとを得る。
【0066】
判断ブロック712において現符号化ブロックの符号化ブロックサイズが8×8画素である場合、変換ブロックサイズ判定サブルーチン700は判断ブロック716へ進む。
【0067】
判断ブロック716において現符号化ブロックの予測ブロックサイズが8×8画素である場合、変換ブロックサイズ判定サブルーチン700は実行ブロック720で、8×8輝度変換係数に現符号化ブロックの輝度変換ブロックサイズをセットし、そして実行ブロック724で変換ブロックサイズ判定サブルーチンは4×4色度変換係数に現符号化ブロックの色度変換ブロックサイズをセットする。
それから変換ブロックサイズ判定サブルーチンは戻りブロック799で、現符号化ブロックの輝度変換ブロックサイズ及び色度変換ブロックサイズを返す。
【0068】
判断ブロック716を再度参照する。現符号化ブロックのための予測ブロックサイズが8×8画素でない場合、変換ブロックサイズ判定サブルーチン700は実行ブロック728で、4×4輝度変換係数に現符号化ブロックの輝度変換ブロックサイズをセットする。それから、変換ブロックサイズ判定サブルーチン700は、実行ブロック724へと進む。
上述のように、変換ブロックサイズ判定サブルーチンは実行ブロック724で、4×4色度変換係数に現符号化ブロックの色度変換ブロックサイズをセットする。それから、変換ブロックサイズ判定サブルーチンは戻りブロック799で、現符号化ブロックの輝度変換ブロックサイズ及び色度変換ブロックサイズを返す。
【0069】
判断ブロック712を再度参照する。現符号化ブロックの符号化ブロックサイズが8×8画素でない場合、変換ブロックサイズ判定サブルーチン700は判断ブロック736へと進む。
【0070】
判断ブロック736において、現符号化ブロックの符号化ブロックサイズが16×16画素である場合、変換ブロックサイズ判定サブルーチン700は判断ブロック740へ進む。
【0071】
判断ブロック740において、現符号化ブロックのための予測ブロックサイズが16×16画素である場合、変換ブロックサイズ判定サブルーチン700は実行ブロック744で、16×16輝度変換係数に現符号化ブロックの輝度変換ブロックサイズをセットし、それから、実行ブロック748で変換ブロックサイズ判定サブルーチンは、8×8色度変換係数に現符号化ブロックの色度変換ブロックサイズをセットする。それから、変換ブロックサイズ判定サブルーチンは、戻りブロック799で、現符号化ブロックの輝度変換ブロックサイズ及び色度変換ブロックサイズを返す。
【0072】
判断ブロック740を再度参照する。現符号化ブロックの予測ブロックサイズが16×16画素でない場合、変換ブロックサイズ判定サブルーチン700は、実行ブロック728へ進む。
上述のように、変換ブロックサイズ判定サブルーチン700は実行ブロック728で、4×4輝度変換係数に現符号化ブロックの輝度変換ブロックサイズをセットする。それから、変換ブロックサイズ判定サブルーチン700は、実行ブロック724へ進む。
上述のように、変換ブロックサイズ判定サブルーチンは実行ブロック724で、4×4色度変換係数に現符号化ブロックの色度変換ブロックサイズをセットする。それから、変換ブロックサイズ判定サブルーチンは、戻りブロック799で、現符号化ブロックの輝度変換ブロックサイズ及び色度変換ブロックサイズを返す。
【0073】
判断ブロック736を再度参照する。現符号化ブロックの符号化ブロックサイズが16×16画素でない場合、変換ブロックサイズ判定サブルーチン700は実行ブロック744へ進む。
上述のように、変換ブロックサイズ判定サブルーチン700は実行ブロック744で、16×16輝度変換係数に現符号化ブロックの輝度変換ブロックサイズをセットし、それから、実行ブロック748で、変換ブロックサイズ判定サブルーチンは、8×8色度変換係数に現符号化ブロックの色度変換ブロックサイズをセットする。それから変換ブロックサイズ判定サブルーチンは、戻りブロック799で、現符号化ブロックの輝度変換ブロックサイズ及び色度変換ブロックサイズを返す。
【0074】
[順方向整数変換サブルーチン]
図8は、図9を参照して後述するが、少なくとも一つの実施例(例えば変換ブロック処理ルーチン600または二重変換サブルーチン900)での使用に適した順方向整数変換サブルーチン800を図示する。
【0075】
順方向整数変換サブルーチンは実行ブロック804で、例えば変換ブロック処理ルーチン600から変換ブロックを得る。
【0076】
判断ブロック808において、現変換ブロックが整数変換係数の4×4ブロックである場合、順方向整数変換サブルーチン800は実行ブロック812で、4×4順方向変換(例えば上記の4×4順方向整数変換演算)を行う。それから順方向整数変換サブルーチン800は、戻りブロック899で4×4整数変換で得た変換係数を返す。
【0077】
判断ブロック808を再度参照する。現変換ブロックが整数変換係数の4×4ブロックでない(例えば整数変換係数の8×8、16×16、32×32または64×64ブロックである)場合、順方向整数変換サブルーチン800は判断ブロック816へ進む。
【0078】
判断ブロック816において、現変換ブロックが整数変換係数の8×8ブロックである場合、順方向整数変換サブルーチン800は実行ブロック820で、8×8順方向変換(例えば上記の8×8順方向整数変換演算)を行う。順方向整数変換サブルーチン800は実行ブロック824で、実行ブロック820で8×8整数変換を介して得られた変換係数を処理し、変換係数が16ビット以下となることを確実にするために変換係数を右に二回ビットシフトさせる。順方向整数変換サブルーチン800は、戻りブロック899でビットシフトさせられた変換係数を返す。
【0079】
判断ブロック816を再度参照する。現変換ブロックが8×8ブロックの整数変換係数でない場合(例えば、16×16、32×32または64×64ブロックの整数変換係数である場合)、順方向整数変換サブルーチン800は判断ブロック826へ進む。
【0080】
判断ブロック826において、現変換ブロックが16×16ブロックの整数変換係数である場合、順方向整数変換サブルーチン800は実行ブロック828で、16×16順方向変換(例えば上記の16×16順方向整数変換演算)を行う。それから順方向整数変換サブルーチン800は、実行ブロック824へ進む。
上述のように、順方向整数変換サブルーチン800は実行ブロック824で、実行ブロック820で8×8整数変換を介して得られた変換係数を処理し、変換係数が16ビット以下となることを確実にするために変換係数を右に二回ビットシフトさせる。順方向整数変換サブルーチン800は、戻りブロック899でビットシフトさせられた変換係数を返す。
【0081】
判断ブロック826を再度参照する。現変換ブロックが16×16ブロックの整数変換係数より大きい(例えば32×32または64×64ブロックの整数変換係数である)場合、順方向整数変換サブルーチン800は実行ブロック832で、大きな変換手順を行う。順方向整数変換サブルーチン800は、戻りブロック899で大きな整数変換手順の結果を戻す。
【0082】
[二重変換サブルーチン]
図9は、少なくとも一つの実施例(例えば変換ブロック処理ルーチン600)で使用するのに適した二重変換サブルーチン900を図示する。
【0083】
二重変換サブルーチン900は実行ブロック904で、現符号化ブロックのための中間整数変換係数の変換ブロックを得る。
【0084】
二重変換サブルーチン900は実行ブロック908で、中間の整数変換係数の各ブロックから中間のDC係数を抽出する。
【0085】
二重変換サブルーチン900は実行ブロック912で、中間のDC係数の変換ブロックを生成する。
【0086】
それから二重変換サブルーチン900は、順方向変換サブルーチン800に中間のDC係数を渡し、そして、順方向変換サブルーチン800は、(たった今、二重変換された)ブロックの16ビット整数変換係数を返す。
【0087】
二重変換サブルーチン900は、戻りブロック999で、二重変換された変換ブロックを返す。
【0088】
[変換ブロック復元ルーチン]
図10は、少なくとも一つの実施例(例えば復号化装置500)で使用するのに適した変換ブロック復元ルーチン1000を図示する。
当業者によって認識されるように、復号プロセスのすべてのイベントが図10に図示されるというわけではない。
むしろ明確にするため、変換ブロック復元ルーチン1000を説明するのに、合理的に関連するステップだけが示される。
【0089】
変換ブロック復元ルーチン1000は実行ブロック1004で、例えば逆量子化器512から、逆量子化された変換係数のブロックを得る。
【0090】
変換ブロック復元ルーチン1000は実行ブロック1005で、現符号化ブロックのサイズを求める。
【0091】
変換ブロック復元ルーチン1000は実行ブロック1006で、現符号化ブロックのための、動き予測用の予測ブロックのサイズを求める。
【0092】
変換ブロック復元ルーチン1000は実行ブロック1007で、現符号化ブロックサイズと、現符号化ブロックの動き予測用の予測ブロックのサイズと、の対応する組合せの予測ブロックのサイズを検索する。
【0093】
変換ブロック復元ルーチン1000はそれから実行ブロック1008で、実行ブロック1007(上記)で得た変換ブロックサイズに従い、逆量子化された変換係数を組み立て、16ビット整数変換係数の一つ以上の変換ブロックとする。
【0094】
判断ブロック1028において、現符号化ブロックの変換ブロックが二重変換されていない場合、変換ブロック復元ルーチン1000は開始ループブロック1032へ進む(後述)。
現符号化ブロックの変換ブロックが二重変換されている(例えば16ビット整数DC変換係数の二重変換されたブロックを含む)場合、変換ブロック復元ルーチン1000は、逆整数変換サブルーチン1100(図11を参照して後述)を呼び出す。そして逆整数変換サブルーチン1100は、現符号化ブロックの変換ブロックの16ビット整数変換係数の二重変換されたブロックに対して最初の逆変換演算を行い、中間の16ビット整数DC変換係数の対応するブロックを返す
【0095】
変換ブロック復元ルーチン1000は実行ブロック1030で、適切な16ビット整数DC変換係数を16ビット整数変換係数の対応ブロックに挿入して、開始ループブロック1032へ進む(後述)。
【0096】
開始ループブロック1032を開始し、変換ブロック復元ルーチン1000は、順番に16ビット整数変換係数の各変換ブロックを処理する。
【0097】
判断ブロック1036で、対応する変換ブロックのための変換ブロックパターンフラグが変換ブロックヘッダにセットされる場合、変換ブロック復元ルーチン1000は終了ループブロック1040で、現符号化ブロックの16ビット整数変換係数の次のブロック(あれば)を処理するために、開始ループブロック1032に戻り繰り返す。
【0098】
判断ブロック1036で、対応する変換ブロックのための変換ブロックパターンフラグが変換ブロックヘッダにセットされない場合、変換ブロック復元ルーチン1000は、復元された残差値のブロックを返す逆整数変換サブルーチン1100(図11を参照し後述)を呼び出す。
【0099】
変換ブロック復元ルーチン1000は終了ループブロック1040で、現符号化ブロックの次の変換ブロック(あれば)を処理するために、開始ループブロック1032に戻り、繰り返す
【0100】
変換ブロック復元ルーチン1000は、終端ブロック1099で終了する。
【0101】
[逆整数変換サブルーチン]
図11は、少なくとも一つの実施例(例えば変換ブロック復元ルーチン1000)で使用するのに適した逆整数変換サブルーチン1100を図示する。
【0102】
逆整数変換サブルーチン1100は実行ブロック1104で、例えば変換ブロック復元ルーチン1000から、変換ブロックを得る。
【0103】
判断ブロック1108において、変換ブロックが4×4変換ブロックである場合、逆整数変換サブルーチン1100は実行ブロック1110で、4×4逆整数変換(例えば上記の4×4逆整数変換)を実行する。逆整数変換サブルーチン1100は実行ブロック1112で、得られた整数変換係数を5ビット右にビットシフトさせる。
逆整数変換サブルーチン1100は、戻りブロック1199でビットシフトされた整数変換係数を返す。
【0104】
判断ブロック1108を再度参照する。変換ブロックが4×4変換ブロックでない場合、逆整数変換サブルーチン1100は判断ブロック1116へ進む。
【0105】
判断ブロック1116において、変換ブロックが8×8変換ブロックである場合、逆整数変換サブルーチン1100は実行ブロック1118で、8×8逆整数変換(例えば上記の8×8逆の整数変換)を実行する。逆整数変換サブルーチン1100は実行ブロック1120で、得られた整数変換係数を7ビット右にビットシフトさせる。
逆整数変換サブルーチン1100は、戻りブロック1199でビットシフトさせられた整数変換係数を返す。
【0106】
判断ブロック1116を再度参照する。変換ブロックが8×8変換ブロックでない場合、逆整数変換サブルーチン1100は判断ブロック1126へ進む。
【0107】
判断ブロック1126で、変換ブロックが16×16変換ブロックである場合、逆整数変換サブルーチン1100は実行ブロック1127で、16×16逆整数変換(例えば上記の16×16逆整数変換)を実行する。逆整数変換サブルーチン1100は実行ブロック1128で、得られた整数変換係数を7ビット右にビットシフトさせる。
逆整数変換サブルーチン1100は、戻りブロック1199でビットシフトさせられた整数変換係数を返す。
【0108】
判断ブロック1126を再度参照する。変換ブロックが16×16変換ブロック(例えば32×32または64×64変換ブロック)より大きい場合、逆整数変換サブルーチン1100は実行ブロック1132で、大きな逆変換手順を実行する。
戻りブロック1199で、逆整数変換サブルーチン1100は、大きな整数変換手順の結果を戻す。
【0109】
特定の実施例が図示され、本願明細書において記載されたが、当業者によって、本開示内容の要旨を逸脱しない範囲で、図を用いて記載される特定実施例は、別の及び/または等価な実施態様と置換されることができると認められる。本出願は、本願明細書において記載される実施例のいずれの改作または変形例も含めることを意図する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11