(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023164875
(43)【公開日】2023-11-14
(54)【発明の名称】量子化器設計
(51)【国際特許分類】
H04N 19/124 20140101AFI20231107BHJP
H04N 19/46 20140101ALI20231107BHJP
【FI】
H04N19/124
H04N19/46
【審査請求】未請求
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023136622
(22)【出願日】2023-08-24
(62)【分割の表示】P 2022523235の分割
【原出願日】2021-05-24
(31)【優先権主張番号】63/035,642
(32)【優先日】2020-06-05
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/098,825
(32)【優先日】2020-11-16
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.SMALLTALK
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】クリシュナン,マドゥー ペリンガーサリー
(72)【発明者】
【氏名】ジャオ,シン
(72)【発明者】
【氏名】リィウ,シャン
(57)【要約】
【課題】ビデオコーディングのための方法、コンピュータプログラム、及びコンピュータシステムが提供される。
【解決手段】1つ以上の量子化係数を含むビデオデータが受信される。量子化係数と関連付けられる1つ以上のインデックス値が、指数関数的マッピングに基づいて1つ以上のステップ値にマッピングされる。ビデオデータは、1つ以上のステップ値に基づいてデコードされる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサによって実行可能な、ビデオデータをデコードする方法であって、
1つ以上の量子化係数を含むビデオデータを受信することと、
指数関数的マッピングに基づいて、前記量子化係数と関連付けられる1つ以上のインデックス値を、1つ以上のステップ値にマッピングすることと、
前記1つ以上のステップ値に基づいて、前記ビデオデータをデコードすることと、を含み、
前記ステップ値は、区分的線形マッピング及び指数関数的マッピングに基づいて、前記インデックス値にマッピングされ、前記インデックス値と関連付けられる範囲が、1つ以上のサブ範囲に分割され、前記線形マッピング及び指数関数的マッピングの中からの1つが、前記サブ範囲の各々について使用される、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の参照)
この出願は、米国特許商標庁に2020年6月5日に出願された米国仮特許出願第63/035,642号及び2020年11月16日に出願された米国仮特許出願第17/098,825号からの優先権を主張し、それらの全文を参照により本明細書に援用する。
【0002】
本開示は、一般的には、データ処理の分野に関し、より具体的には、ビデオ処理に関する。
【背景技術】
【0003】
AOMedia Video 1(AV1)は、半導体企業、ビデオオンデマンドプロバイダ、ビデオコンテンツ制作者、ソフトウェア開発会社、ウェブブラウザ業者を含む、2015年に創立されたコンソーシアムであるAlliance for Open Media(AOMedia)によって、VP9の後継者として開発された。AV1プロジェクトのコンポーネントの多くは、アライアンス構成員による従前の研究努力から供給された。個々の寄与者は、何年も前に実験的な技術プラットフォームを開始した。すなわち、Xiph/MozillaのDaalaが2010年に既にコードを公開し、Googleの実験的なVP9進化プロジェクトVP10が2014年9月12日に発表され、CiscoのThorが2015年8月11日に発表された。VP9のコードベースを基にして、AV1は追加の技術を組み込み、それらのうちの幾つかは、これらの実験フォーマットにおいて開発された。AV1参照コーデックの最初のバージョン0.1.0は、2016年4月7日に発表された。アライアンスは、2018年3月28日に、ソフトウェアベースのエンコーダ及びデコーダという参照と共に、AV1ビットストリーム仕様のリリースを公表した。2018年6月25日に、検証済みのバージョン1.0.0の仕様がリリースされた。2019年1月8日に、Errata1の仕様を備える検証済みのバージョン1.0.0がリリースされた。AV1ビットストリーム仕様は、参照ビデオコーデックを含む。AOMedia Video2(AV2)が現在開発中である。
【発明の概要】
【0004】
実施形態が、ビデオデータをコーディング(コード化)する方法、コンピュータプログラム、及びコンピュータシステムに関する。1つの態様によれば、ビデオデータをコーディング(コード化)する方法が提供される。方法は、1つ以上の量子化係数を含むビデオデータを受信することを含むことがある。1つ以上の量子化係数と関連付けられる1つ以上のインデックス値が、指数関数的マッピングに基づいて1つ以上のステップ値にマッピングされる。ビデオデータは、1つ以上のステップ値に基づいてデコードされる。
【0005】
別の態様によれば、ビデオデータをコーディング(コード化)するコンピュータシステムが提供される。コンピュータシステムは、1つ以上のプロセッサと、1つ以上のコンピュータ可読メモリと、1つ以上のコンピュータ可読有形記憶デバイスと、1つ以上のメモリのうちの少なくとも1つのメモリを介して1つ以上のプロセッサのうちの少なくとも1つのプロセッサによる実行のために1つ以上の記憶デバイスのうちの少なくとも1つの記憶デバイスに格納されるプログラム命令を含みことがあり、それによって、コンピュータシステムは、方法を実行することができる。方法は、1つ以上の量子化係数(量子化された計数)を含むビデオデータを受信することを含むことがある。1つ以上の量子化係数と関連付けられる1つ以上のインデックス値は、指数関数的マッピングに基づいて1つ以上のステップ値にマッピングされる。ビデオデータは、1つ以上のステップ値に基づいてデコードされる。
【0006】
更に別の態様によれば、ビデオデータをコーディング(コード化)するコンピュータ可読媒体が提供される。コンピュータ可読媒体は、1つ以上のコンピュータ読取り可能記憶デバイスと、1つ以上の有形記憶デバイスのうちの少なくとも1つの有形記憶デバイスに格納されるプログラム命令とを含むことがあり、プログラム命令は、プロセッサによって実行可能である。プログラム命令は、1つ以上の量子化係数を含むビデオデータを相応して受信することを含むことがある方法を実行するためのプロセッサによって実行可能である。1つ以上の量子化係数と関連付けられる1つ以上のインデックス値は、指数関数的マッピングに基づいて1つ以上のステップ値にマッピングされる。ビデオデータは、1つ以上のステップ値に基づいてデコードされる。
【0007】
これらの及び他の目的、構成及び利点は、添付の図面に関連して読まれるべき例示的な実施形態の以下の詳細な記述から明らかになるであろう。図面の様々な構成は、縮尺通りでない。何故ならば、図示は、詳細な記述と共に当業者の理解を容易にする際の明瞭性のためのものであるからである。
【図面の簡単な説明】
【0008】
【
図1】少なくとも1つの実施形態に従ったネットワーク化されたコンピュータ環境を図示している。
【0009】
【
図2A】少なくとも1つの実施形態に従ったAV1におけるDC&AC係数についてのQ_index対Qstepマッピングの図である。
【0010】
【
図2B】少なくとも1つの実施形態に従ったAV2についての統一されたQ_index対Qstep線形マッピングの図である。
【0011】
【
図2C】少なくとも1つの実施形態に従ったAV2についての統一されたQ_index対QstepLog2マッピングの図である。
【0012】
【
図3】少なくとも1つの実施形態に従ったニューラルネットワークモデルを圧縮するプログラムによって実行されるステップを図示する動作フローチャートである。
【0013】
【
図4】少なくとも1つの実施形態に従った
図1に示すコンピュータ及びサーバの内部コンポーネント及び外部コンポーネントのブロック図である。
【0014】
【
図5】少なくとも1つの実施形態に従った
図1に示すコンピュータシステムを含む例示的なクラウドコンピューティング環境のブロック図である。
【0015】
【
図6】少なくとも1つの実施形態に従った
図5の例示的なクラウドコンピューティング環境の機能層のブロック図である。
【発明を実施するための形態】
【0016】
特許請求する構造及び方法の詳細な実施形態が本明細書に開示されるが、開示の実施形態は、様々な形態で具現されることがある特許請求する構造及び方法を例示しているに過ぎないことを理解することができる。しかしながら、それらの構造体及び方法は、多くの異なる形態で具現されることがあり、本明細書に記載する例示的な実施形態に限定されるものと解釈されるべきではない。むしろ、これらの例示的な実施形態は、この開示が網羅的かつ完全であり、当業者に範囲を完全に伝えるように提供される。記述では、よく知られている構成及び技術の詳細は、提示の実施形態を不必要に不明瞭にすることを避けるために省略されることがある。
【0017】
実施形態は、一般的には、データ処理の分野に関し、より具体的には、ビデオエンコーディング(符号化)(encoding)及びデコーディング(復号化)(decoding)に関する。以下に記載する例示的な実施形態は、とりわけ、ビデオデータをエンコード(符号化)する/デコード(復号化)するシステム、方法、及びコンピュータプログラムを提供する。従って、幾つかの実施形態は、AV2の使用を通じて改良されたビデオコーディング(coding)効率を可能にすることによって、コンピューティング(計算)の分野を向上させる能力を有する。
【0018】
前述のように、AOMedia Video 1(AV1)は、半導体企業、ビデオオンデマンドプロバイダ、ビデオコンテンツ制作者、ソフトウェア開発会社、ウェブブラウザ業者を含む、2015年に設立されたコンソーシアムである、Alliance for Open Media(AOMedia)によって、VP9の後継として開発されたものである。AV1プロジェクトのコンポーネントの多くは、アライアンス構成員による従前の研究努力から供給された。個々の寄与者は、何年も前に実験的な技術プラットフォームを開始した。すなわち、Xiph/MozillaのDaalaが2010年に既にコード(code)を公開し、Googleの実験的なVP9進化プロジェクトVP10が2014年9月12日に公表され、CiscoのThorが2015年8月11日に発表された。VP9のコードベースに基づいて、AV1は、追加の技術を組み込んでおり、それらのうちの幾つかは、これらの実験的フォーマットにおいて開発された。AV1参照コーデック(codec)の最初のバージョン0.1.0は、2016年4月7日に発表された。アライアンスは、2018年3月28日に、ソフトウェアベースのエンコーダ及びデコーダである参照と共に、AV1ビットストリーム仕様のリリースを発表した。2018年6月25日に、検証済みのバージョン1.0.0の仕様がリリースされた。2019年1月8日に、Errata1の仕様を備える検証済みバージョン1.0.0がリリースされた。AV1ビットストリーム仕様は、参照ビデオコーデックを含む。現在、AOMedia Video 2(AV2)が開発中である。
【0019】
AV1において、変換係数(transform coefficients)の量子化は、DC及びAC変換係数について異なる量子化ステップサイズ(quantization step)を適用することがあり、輝度(luma)及び彩度(chroma)変換係数について異なる量子化ステップサイズを適用することがある。量子化ステップサイズを指定するために、フレームヘッダでは、最初に、base_q_idx構文要素が信号送信され(signaled)、それは輝度AC係数についての量子化ステップサイズを指定する8ビットの固定長コードである。base_q_idxの有効範囲は[0,255]である。その後、DeltaQYDcとして示される、輝度DC係数についてのbase_q_idxに対するデルタ値が、更に信号送信される。更に、1つよりも多くのカラープレーン(color plane)があるならば、Cb及びCr色成分(color components)が異なる量子化インデックス値(quantization index values)を適用するかどうかを示すために、フラグdiff_uv_deltaが信号送信される。diff_uv_deltaが0として信号送信されるならば、(DeltaQUDcとして示される)彩度DC係数及び(DeltaQUAcとして示される)AC係数についてのbase_q_idxに対するデルタ値のみが信号送信される。さもなければ、(DeltaQUDc及びDeltaQVDcとして示される)Cb及びCrのDC係数及び(DeltaQUAc及びDeltaQVACとして示される)AC係数の両方についてのbase_q_idxに対するデルタ値が信号送信される。しかしながら、AV1量子化ステップサイズは、限られた分解能(resolution)を有する。
【0020】
従って、量子化ステップサイズの分解能を増加させることが有利なことがある。進行中のAV2開発プロセスでは、幾つかのツールが量子化器(quantizer)設計において使用されることがある。例えば、Dc_Qlookup[3][256]及びAc_Qlookup[3][256]という別個のルックアップテーブルが統合されることがある。Ac_Qlookup[3][256]は保持され、DC量子化ステップサイズは、それからのオフセットを用いて得られる。初期設定(デフォルト)のオフセットは8に設定される。加えて、8ビット、10ビット及び12ビットの内部ビット深度の量子化器ステップサイズを得るために、別個のルックアップテーブルが使用され、ステップサイズは、如何なる数学的関係も示さなかった。これは8ビットの内部ビット深度のための修正ルックアップテーブルと置き換えられてよい。量子化ステップサイズ生成プロセスは、10ビット及び12ビットの内部ビット深度のために、(Q_indexを使用して得られる)対応する8ビットのステップサイズがそれぞれ4及び16でスケーリングされるような方法において統合される。その上、サポートされるステップサイズの範囲は、Q_indexの範囲内で増加することなく、増加させられてよい。
【0021】
様々な実施形態に従った方法、装置(システム)、及びコンピュータ可読媒体のフロー図及び/又はブロック図を参照して、態様が本明細書において記載される。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0022】
ここで
図1を参照すると、ニューラルネットワークモデルを圧縮するためのビデオコーディングシステム100(以下「システム」という)を図示するネットワーク化されたコンピュータ環境の機能ブロック図が示されている。
図1は、1つの実装の例示を提供するに過ぎず、異なる実施形態が実装されることがある環境に関する如何なる制限も暗示しないことが理解されるべきである。図示の環境に対する多くの修正が、設計及び実装要件に基づいて行われてよい。
【0023】
システム100は、コンピュータ102と、サーバコンピュータ114とを含むことがある。コンピュータ102は、通信ネットワーク110(以下「ネットワーク」という)を介してサーバコンピュータ114と通信することがある。コンピュータ102は、プロセッサ104と、データ記憶デバイス106に格納され、ユーザとインターフェースしてサーバコンピュータ114と通信することを可能にする、ソフトウェアプログラム108とを含むことがある。
図4を参照して以下に議論するように、コンピュータ102は、内部コンポーネント800A及び外部コンポーネント900Aをそれぞれ含んでよく、サーバコンピュータ114は、内部コンポーネント800B及び外部コンポーネント900Bをそれぞれ含んでよい。コンピュータ102は、例えば、モバイルデバイス、電話、携帯情報端末、ネットブック、ラップトップコンピュータ、タブレットコンピュータ、デスクトップコンピュータ、又はプログラムを実行し、ネットワークにアクセスし、データベースにアクセスすることができる任意のタイプのコンピューティングデバイスであってよい。
【0024】
サーバコンピュータ114は、
図5及び
図6に関して以下に議論するように、サービスとしてのソフトウェア(SaaS)、サービスとしてのプラットフォーム(PaaS)、又はサービスとしてのインフラストラクチャ(IaaS)のような、クラウドコンピューティングサービスモデルにおいて作動することもある。サーバコンピュータ114は、プライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウドのような、クラウドコンピューティング展開モデル内に配置されることもある。
【0025】
ニューラルネットワークモデルを圧縮するために使用されることがあるサーバコンピュータ114は、データベース112と対話することがあるビデオコーディングプログラム116(以下「プログラム」という)を実行するために有効にされる。ビデオコーディングプログラム方法は、
図3に関して以下により詳細に説明される。1つの実施形態において、コンピュータ102は、ユーザインターフェースを含む入力デバイスとして作動することがある一方で、プログラム116は、主としてサーバコンピュータ114上で動作することがある。代替的な実施形態において、プログラム116は、主として1つ以上のコンピュータ102上で動作することがある一方で、サーバコンピュータ114は、プログラム116によって使用されるデータの処理及び格納のために使用されることがある。プログラム116は、スタンドアローンのプログラムであってよく、或いはより大きなビデオコーディングプログラムに統合されてよいことが留意されるべきである。
【0026】
しかしながら、プログラム116のための処理は、ある場合には、コンピュータ102及びサーバコンピュータ114の間で任意の比率で共有されてよいことが留意されるべきである。別の実施形態において、プログラム116は、1つよりも多くのコンピュータ、サーバコンピュータ、又はコンピュータとサーバコンピュータとの幾つかの組み合わせ、例えば、ネットワーク110に亘って単一のサーバコンピュータ114と通信する複数のコンピュータ102で作動してよい。別の実施形態において、例えば、プログラム116は、ネットワーク110に亘って複数のクライアントコンピュータと通信する複数のサーバコンピュータ114で作動してよい。代替的に、プログラムは、ネットワークに亘ってサーバ及び複数のクライアントコンピュータと通信するネットワークサーバで作動してよい。
【0027】
ネットワーク110は、有線接続、無線接続、光ファイバ接続、又はそれらの組み合わせを含んでもよい。一般的に、ネットワーク110は、コンピュータ102とサーバコンピュータ114との間の通信をサポートする接続とプロトコルとの任意の組み合わせであることができる。ネットワーク110は、例えば、ローカルエリアネットワーク(LAN)、インターネットのようなワイドエリアネットワーク(WAN)、公衆交換電話ネットワーク(PSTN)のような電気通信ネットワーク、無線ネットワーク、公衆交換ネットワーク、衛星ネットワーク、セルラネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上移動ネットワーク(PLMN)、メトロポリタンエリアネットワーク(MAN)、専用ネットワーク、アドホックネットワーク、イントラネット、光ファイバベースネットワーク、もしくは同等のもの、及び/又はこれらのもしくは他のタイプのネットワークの組み合わせのような、様々なタイプのネットワークを含むことがある。
【0028】
図1に示すデバイス及びネットワークの数及び配置は、一例として提供されている。実際には、
図1に示されたものよりも、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、又は異なる配置のデバイス及び/又はネットワークが存在することがある。更に、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてよく、或いは
図1に示す単一のデバイスは、複数の分散デバイスとして実装されてよい。追加的に又は代替的に、システム100のデバイスのセット(例えば、1つ以上のデバイス)は、システム100のデバイスの別のセットによって実行されるものとして記載される1つ以上の機能を実行してよい。
【0029】
次に、
図2Aを参照すると、AV1におけるDC及びAC係数についてのQstepに対するQ_indexマッピングの
図200Aが示されている。デコードされたDeltaQYDc、DeltaQUAc、DeltaQUDc、DeltaQVAc、及びDeltaQVDc値は、量子化インデックスQ_indexを導出するためにbase_q_idxに追加されてよい。これらのQ_indexは、2つのテーブルに従って量子化ステップサイズに更にマッピングされる。DC係数について、8ビット、10ビット及び12ビットの内部ビット深度についての量子化インデックスから量子化ステップサイズへのマッピングは、ルックアップテーブルDc_Qlookup[3][256]によって指定され、8ビット、10ビット及び12ビットについての量子化インデックスから量子化ステップサイズへのマッピングは、ルックアップテーブルAc_Qlookup[3][256]によって指定される。
【0030】
次に、
図2Bを参照すると、AV2のための統合されたQstepに対するQ_index線形マッピングの
図200Bが示されている。Q_indexの有効範囲は[0,255]であり、これらはステップサイズ範囲[4,6879]にマッピングする。ステップサイズ範囲は増加しているが、Q_indexの有効範囲は同じである。量子化ステップ分解能におけるこの制限は、10ビット及び12ビットの内部ビット深度でより明白であり、(q_idxを使用して得られる)対応する8ビットのステップサイズは、それぞれ4及び16だけスケーリングされる。これはコーデックによって達成され得るビットレートの粒度に影響を与え得る。
【0031】
次に
図2Cを参照すると、AV2についての統合されたQstepに対するQ_indexLog2マッピングの
図200Cが示されている。Q_indexから量子化ステップサイズへのマッピングは、一貫した数学的関係を示さないことがある。ステップサイズの初期エントリは、Q_indexとの線形関係を示す一方で、マッピングの残りは、殆ど指数関数的である。線形マッピングから指数関数的マッピングへの切り替えは滑らかでない。その上、より低いQ_indexでは、ステップサイズに突然のジャンプがあり、それは10ビット及び12ビットの内部ビット深度コーディングについてより明白である。何故ならば、それらはそれぞれ4及び16だけ増大される(scaled up)からである。
【0032】
Qstepに対するQ_indexの指数関数的マッピングを以下のように表現できる一方で、
【数1】
線形マッピングを以下のように表現できる。
【数2】
ここで、a、b及びcは、ある範囲のQ_indexについての定数である。1つの実施形態において、a、b及びcは、全範囲のQ_indexについて一定に保たれる。1つの実施形態において、bについての値は、2を含むことができるが、これに限定されない。1つの実施形態において、aについての値は、4,8,16,19,24,32を含むことができるが、これらに限定されない。1つの実施形態において、cは、Q_indexの範囲又は上限の因数(factor)であり得るが、これらに限定されない。AV1において適用されるようなQ_indexの範囲の例は、256である。1つの実施形態において、cについての値は、3,4,5,6,7,8,9,10,11,...,32,...,64を含むことができるが、これらに限定されない。
【0033】
1つの実施形態において、Q_indexは、複数の範囲に分割されることができ、各範囲において、a、b及びcは、一定に(区分的指数関数的)に維持される。1つの実施形態において、bについての値は、2を含むことができるが、これに限定されない。1つの実施形態において、aについての値は、4,8,16,19,24,32を含むことができるが、これらに限定されない。1つの実施形態において、cは、Q_indexの範囲又は上限の因数であり得るが、これらに限定されない。AV1において適用されるQ_indexの範囲の例は、256である。1つの実施形態において、cについての値は、3,4,5,6,7,8,9,10,11,...、32,...,64を含むことができるが、これらに限定されない。
【0034】
1つ以上の実施形態によれば、Qstepに対するQ_indexの区分的線形マッピングと指数関数的マッピングとの組み合わせが使用されてよい。1つの実施形態において、Q_indexの全範囲(例えば、[0,TN])は、複数の範囲、例えば、[0,T0]、[T0+1,T1],...,[TN-1+1,TN])に分割されることができ、各範囲において、線形又は指数関数的マッピングが使用されることができる。1つの実施形態において、bについての値は、2を含むことができるが、これに限定されない。1つの実施形態において、aについての値は、4,8,16,19,24,32を含むことができるが、これらに限定されない。1つの実施形態において、cは、Q_indexの範囲又は上限の因数であることができるが、これらに限定されない。AV1において適用されるQ_indexの範囲の例は、256である。1つの実施形態において、xについての値は、1,2,4,8を含むことができるが、これらに限定されない。1つの実施形態において、yについての値は、4,8,16,32を含むことができるが、これらに限定されない。
【0035】
1つ以上の実施形態によれば、拡張されたQstepに対するQ_indexマッピングスキームが使用されてよい。1つの実施形態において、Q_index範囲は、Qstep範囲を増加させることなく増加させられることができる。1つの実施形態において、拡張されたQ_index範囲は、8、10、12、16ビットの内部ビット深度コーデック構成のために利用可能である。1つの実施形態において、8ビットの内部ビット深度コーデック構成は、拡張されたQ_indexのサブセットを使用する。1つの実施形態において、拡張されたQ_index範囲は、量子化ステップサイズ範囲のサブセットに柔軟に割り当てられて、その範囲に亘ってより大きな粒度が達成されることができる。1つの実施形態では、拡張されたQ_index範囲を使用して、非常に高いビットレート(より低い量子化ステップサイズ)についてより多くの粒度を達成することができる。1つの実施形態では、拡張されたQ_index範囲を使用して、非常に低いビットレート(より高い量子化ステップサイズ)についてより多くの粒度を達成することができる。1つの実施形態では、拡張されたQ_index範囲を使用して、非常に高いビットレート及び非常に低いビットレート以外のビットレートでより多くの粒度を達成することができる。1つの実施形態では、Q_index及びQstep範囲の両方が増加される。
【0036】
1つ以上の実施形態によれば、Q_index値の範囲は、コーデックの内部ビット深度に依存する。1つの実施形態では、より大きな内部ビット深度について、Q_index値の範囲はより大きい。1つの実施形態では、Qstepに対するQ_indexの指数関数的マッピングが使用されるとき、内部ビット深度a及び内部ビット深度bについて、bは、aよりも大きく、内部ビット深度a及びbについてのQ_index値の範囲は、それぞれ[0,QA]及び[0,QB]として示され、その場合、QB=QA+(b-a)*cとなる。一例において、Q_index値の範囲は、8ビットの内部ビット深度について、[0,255]であり、その場合、Q_index値の範囲は、10ビット及び12ビットの内部ビット深度について、それぞれ、[0,255+2*c]及び[0,255+4*c]である。cの例示的な値は、4,5,6,7,8,9,10,11,...,32,...,64を含むが、これらに限定されない。1つの実施形態において、1つの内部ビット深度設定aについて利用可能なQstep値は、より大きな内部ビット深度設定bについて利用可能なQstep値のサブセットである(bはaよりも大きい)。1つの実施形態において、1つの内部ビット深度設定aについて利用可能なQstep値は、[Q0,Q1,...,QNA-1]であり、1つの内部ビット深度設定bについて利用可能なQstep値は、[Q0,Q1,...、QNA-1,...,QNB-1]である。
【0037】
1つの例において、1つの内部ビット深度設定8について使用可能なQstep値は、以下の通りである。
【数3】
【0038】
1つの例において、1つの内部ビット深度設定10について使用可能なQstep値は、以下の通りである。
【数4】
【0039】
次に
図3を参照すると、ビデオコーディングのための方法300のステップを図示する動作フローチャートが示されている。幾つかの実装において、
図3の1つ以上のプロセスブロックは、コンピュータ102(
図1)及びサーバコンピュータ114(
図1)によって実行されることがある。幾つかの実装において、1つ以上のプロセスブロックは、コンピュータ102及びサーバコンピュータ114とは別個の又はそれらを含む別のデバイス又はデバイス群によって実行されることがある。
【0040】
302で、方法300は、1つ以上の量子化係数(量子化された係数)を含むビデオデータを受信することを含む。
【0041】
304で、方法300は、指数関数的マッピングに基づいて、1つ以上の量子化係数(量子化された係数)に関連する1つ以上のインデックス値を1つ以上のステップ値にマッピングすることを含む。
【0042】
306で、方法300は、1つ以上のステップ値に基づいて、ビデオデータをデコードすることを含む。
【0043】
図3は、1つの実装の例示を提供するに過ぎず、異なる実施形態がどのように実装されることがあるかに関する如何なる制約も暗示しないことが理解されてよい。図示の環境に対する多くの修正が、設計及び実装要件に基づいて行われることがある。
【0044】
図4は、例示的な実施形態に従った、
図1に示すコンピュータの内部及び外部コンポーネント(構成要素)のブロック
図400である。
図4は、1つの実装の例示を提供するに過ぎず、異なる実施形態が実装されることがある環境に関する如何なる制約も暗示しないことが理解されるべきである。図示の環境に対する多くの修正が、設計及び実装要件に基づいて行われることがある。
【0045】
コンピュータ102(
図1)及びサーバコンピュータ114(
図1)は、
図4に示す内部コンポーネント800A、B及び外部コンポーネント900A、Bのそれぞれのセットを含むことがある。内部コンポーネント800のセットの各々は、1つ以上のプロセッサ820と、1つ以上のコンピュータ可読RAM822と、及び1つ以上のバス826上の1つ以上のコンピュータ可読ROM824と、1つ以上のオペレーティングシステム828と、1つ以上のコンピュータ可読有形記憶デバイス830を含む。
【0046】
プロセッサ820は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせにおいて実装される。プロセッサ820は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は別のタイプの処理コンポーネントである。幾つかの実施態様において、プロセッサ820は、機能を実行するようにプログラムされ得る1つ以上のプロセッサを含む。バス826は、内部コンポーネント800A、Bの間の通信を可能にするコンポーネントを含む。
【0047】
サーバコンピュータ114(
図1)上の1つ以上のオペレーティングシステム828、ソフトウェアプログラム108(
図1)、及びビデオコーディングプログラム116(
図1)は、(典型的にはキャッシュメモリを含む)それぞれのRAM822のうちの1つ以上のRAMを介してそれぞれのプロセッサ820のうちの1つ以上のプロセッサによる実行のために、1つ以上のコンピュータ可読有形記憶デバイス830に格納される。
図4に示す実施形態において、コンピュータ可読有形記憶デバイス830の各々は、内部ハードドライブの磁気ディスク記憶デバイスである。代替的に、コンピュータ可読有形記憶デバイス830の各々は、ROM824、EPROM、フラッシュメモリ、光ディスク、光磁気ディスク、ソリッドステートディスク、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、カートリッジ、磁気テープ、及び/又はコンピュータプログラム及びデジタル情報を格納することができる別のタイプの非一時的コンピュータ可読有形記憶デバイスのような、半導体記憶デバイスである。
【0048】
内部コンポーネント800A、Bの各セットは、CD-ROM、DVD、メモリスティック、磁気テープ、磁気ディスク、光ディスク、又は半導体記憶デバイスのような、1つ以上のポータブルコンピュータ可読有形記憶デバイス936から読み出し、且つそのような1つ以上のポータブルコンピュータ可読有形記憶デバイス936に書き込むための、R/Wドライブ又はインターフェース832も含む。ソフトウェアプログラム108(
図1)及びビデオコーディングプログラム116(
図1)のようなソフトウェアプログラムは、それぞれのポータブルコンピュータ可読有形記憶デバイス936の1つ以上に格納され、それぞれのR/Wドライブ又はインターフェース832を介して読み込まれ、それぞれのハードドライブ830にロードされることができる。
【0049】
内部コンポーネント800A、Bの各セットは、TCP/IPアダプタカード、無線Wi-Fiインターフェースカード、又は3G、4G、又は5G無線インターフェースカード、又は他の有線又は無線通信リンクのような、ネットワークアダプタ又はインターフェース836も含む。サーバコンピュータ114(
図1)上のソフトウェアプログラム108(
図1)及びビデオコーディングプログラム116(
図1)は、ネットワーク(例えば、インターネット、ローカルエリアネットワーク又は他のワイドエリアネットワーク)及びそれぞれのネットワークアダプタ又はインターフェース836を介して、外部コンピュータからコンピュータ102(
図1)及びサーバコンピュータ114にダウンロードされることができる。ネットワークアダプタ又はインターフェース836から、サーバコンピュータ114上のソフトウェアプログラム108及びビデオコーディングプログラム116は、それぞれのハードドライブ830にロードされる。ネットワークは、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含むことがある。
【0050】
外部コンポーネント900A、Bのセットの各々は、コンピュータディスプレイモニタ920、キーボード930、及びコンピュータマウス934を含むことができる。外部コンポーネント900A、Bは、タッチスクリーン、仮想キーボード、タッチパッド、ポインティングデバイス、及び他のヒューマンインターフェースデバイスも含むことができる。内部コンポーネント800A、Bのセットの各々は、コンピュータディスプレイモニタ920、キーボード930、及びコンピュータマウス934にインターフェースするためのデバイスドライバ840も含む。デバイスドライバ840、R/Wドライブ又はインターフェース832、及びネットワークアダプタ又はインターフェース836は、ハードウェア及び(記憶デバイス830及び/又はROM824に格納される)ソフトウェアを含む。
【0051】
この開示は、クラウドコンピューティングに関する詳細な記述を含むが、本明細書に記載される教示の実装は、クラウドコンピューティング環境に限定されないことが、前もって理解される。むしろ、幾つかの実施形態は、いま知られているか或いは後に開発される任意の他のタイプのコンピューティング環境と共に実装可能である。
【0052】
クラウドコンピューティングは、最小限の管理努力又はサービスのプロバイダ(提供者)とのやりとりで迅速に提供し且つ解放することができる、構成可能なコンピューティングリソースの共有プール(ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、サービス)への便利なオンデマンド型のネットワークアクセスを可能にするためのサービス送達のモデルである。このクラウドモデルは、少なくとも5つの特徴、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含むことがある。
【0053】
特徴は、以下の通りである。
オンデマンドセルフサービス(on-demand self-service):クラウド消費者は、必要に応じて、サービスプロバイダとの人的なやりとりを必要とせずに自動的に、サーバ時間やネットワークストレージのような、コンピューティング能力を一方的に提供することができる。
広域ネットワークアクセス(broad network access):能力は、ネットワークを通じて利用可能であり、異種の薄型又は厚型クライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準メカニズムを通じてアクセスされる。
リソースプーリング(resource pooling):プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の消費者にサービスを提供するためにプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当てられ、再割り当てされる。消費者は、一般的には、提供されるリソースの正確な場所に対する制御又は知識を持たないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)で場所を特定し得ることがあるという点において、場所の独立性の感覚(sense of location independence)がある。
迅速な弾力性(rapid elasticity):能力は、場合によっては自動的に、急速にスケールアウトし、急速にスケールインするよう急速に解放されるために、急速に且つ弾力的に提供されることができる。消費者にとって、プロビジョニング(provisioning)のために利用可能な能力は、しばしば無制限であるように思われ、任意のときに任意の量において購入されることができる。
測定されたサービス(measured service):クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザアカウント)に適した何らかのレベルの抽象化で計測能力(metering capability)を活用することによって、リソースの使用を自動的に制御し且つ最適化する。リソースの使用をモニタリング(監視)し、制御し、報告して、利用されるサービスのプロバイダ及び消費者の両方のために透明性を提供することができる。
【0054】
サービスモデルは、以下の通りである。
サービスとしてのソフトウェア(SaaS:Software as a Service):消費者に提供される能力は、クラウドインフラストラクチャ上で動作するプロバイダのアプリケーションを利用することである。アプリケーションは、ウェブブラウザのようなシンクライアント(thin client)インターフェース(例えば、ウェブベースの電子メール)を通じて様々なクライアントデバイスからアクセス可能である。消費者は、ユーザ固有のアプリケーション構成の設定を可能な例外として、ネットワーク、サーバ、オペレーティングシステム、ストレージを含む、個々のアプリケーション能力さえも含む、基盤となるインフラストラクチャを管理又は制御しない。
サービスとしてのプラットフォーム(PaaS:Platform as a Service):消費者に提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、消費者作成又は取得されたアプリケーションを展開する(deploy)ことである。消費者は、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基盤となるクラウドインフラストラクチャを管理又は制御しないが、展開されるアプリケーションに対する制御を有し、場合によってはアプリケーションをホストする環境構成に対する制御を有する。
サービスとしてのインフラストラクチャ(laaS:Infrastructure as a Service):消費者に提供される能力は、消費者が、オペレーティングシステム及びアプリケーションを含み得る、任意のソフトウェアを展開し且つ実行することができる、処理、ストレージ、ネットワーク、及びその他の基本的なコンピューティングリソースを提供することである。消費者は、基盤となるクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御を有し、場合によっては選択されたネットワークコンポーネント(例えば、ホストファイアウォール)の限定的な制御を有する。
【0055】
展開モデルは、以下の通りである。
プライベートクラウド:クラウドインフラストラクチャは、組織専用に運用される。それは組織又は第三者によって管理されることがあり、敷地内又は敷地外に存在することがある。
コミュニティクラウド:クラウドインフラストラクチャは、幾つかの組織によって共有され、共通の関心事(例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアンスの考慮事項)を持つ特定のコミュニティをサポートする。それは組織又は第三者によって管理されることがあり、敷地内又は敷地外に存在することがある。
パブリッククラウド:クラウドインフラストラクチャは、一般市民又は大きな業界団体に利用可能にされてよく、クラウドサービスを販売する組織によって所有される。
ハイブリッドクラウド:クラウドインフラストラクチャは、ユニークなエンティティのままであるが、データ及びアプリケーション可搬性(portability)を可能にする標準化された又は独自の技術(例えば、クラウド間の負荷均平衡(load-balancing)のためのクラウドバースト(bursting))によって結合される、2つ以上のクラウド(プライベート、コミュニティ又はパブリック)から構成される。
【0056】
クラウドコンピューティング環境は、ステートレス性(statelessness)、低結合(low coupling)、モジュール性(modularity)、及び意味論的相互運用性(semantic interoperabilityに焦点を当てたサービス指向である。クラウドコンピューティングの核心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0057】
図5を参照すると、例示的なクラウドコンピューティング環境500が示されている。図示のように、クラウドコンピューティング環境500は、1つ以上のクラウドコンピューティングノード10を含み、例えば、携帯情報端末(PDA)又は携帯電話54A、デスクトップコンピュータ54B、ラップトップコンピュータ54C、及び/又は自動車コンピュータシステム54Nのような、クラウド消費者によって使用されるローカルコンピューティングデバイスが、クラウドコンピューティングノード10を用いて通信することがある。クラウドコンピューティングノード10は、互いに通信することがある。クラウドコンピューティングノード10は、上述のようなプライベート、コミュニティ、公共、又はハイブリッドクラウド、又はそれらの組み合わせのような、1つ以上のネットワーク内で、物理的に又は仮想的にグループ化されることがある(図示せず)。これは、クラウドコンピューティング環境500が、クラウド消費者がローカルコンピューティングデバイス上のリソースを維持する必要のないサービスとしての、インフラストラクチャ、プラットフォーム及び/又はソフトウェアを提供することを可能にする。
図5に示すコンピューティングデバイス54A~54Nのタイプは、単に例示的であることが意図されており、クラウドコンピューティングノード10及びクラウドコンピューティング環境500は、(例えば、ウェブブラウザを使用して)任意のタイプのネットワーク及び/又はネットワークアドレス指定可能な接続を通じて任意のタイプのコンピュータかされたデバイスと通信し得ることが理解されよう。
【0058】
図6を参照すると、クラウドコンピューティング環境500(
図5)によって提供される機能抽象化層600(functional abstraction layers)のセットが示されている。
図6に示すコンポーネント、層、及び機能は、単に例示的であることが意図されており、実施形態はこれに限定されないことが前もって理解されるべきである。図示のように、以下の層及び対応する機能が提供される。
【0059】
ハードウェア及びソフトウェア層60は、ハードウェアコンポーネント及びソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例は、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレードサーバ64、ストレージデバイス65、及びネットワーク及びネットワークコンポーネント66を含む。幾つかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーション・サーバソフトウェア67及びデータベースソフトウェア68を含む。
【0060】
仮想化層70は、以下の仮想エンティティの例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベートネットワークを含む仮想ネットワーク73、仮想アプリケーション及びオペレーティングシステム74、及び仮想クライアント75を提供することがある、抽象化層を提供する。
【0061】
一例において、管理層80は、以下に記載する機能を提供することがある。リソースプロビジョニング81は、クラウドコンピューティング環境内のタスクを実行するために利用されるコンピューティングリソース及びその他のリソースの動的な調達(procurement)を提供する。計測(metering)及び価格設定(pricing)82は、クラウドコンピューティング環境内でリソースが利用されるときのコスト追跡、及びこれらのリソースの消費についての請求(billing)又は請求書発行(invoicing)を提供する。一例において、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウド消費者及びタスクのための身元検証、並びにデータ及び他のリソースのための保護を提供する。ユーザポータル83は、消費者及びシステム管理者のためにクラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理84は、要求されるサービスレベルが満たされるように、クラウドコンピューティングリソースの割当て及び管理を提供する。サービスレベル合意(SLA:Service Level Agreement)の企画及び充足85は、将来の要件がSLAに従って予測されるクラウドコンピューティングリソースの事前の準備(arrangement)及び調達を提供する。
【0062】
ワークロード層90は、クラウドコンピューティング環境が利用されることがある機能性の例を提供する。この層から提供されることがあるワークロード及び機能の例は、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想教室教育送達93、データ分析処理94、トランザクション処理95、及びビデオコーディング96を含む。ビデオコーディング96は、ビデオデータをエンコード及び/又はデコードすることがある。
【0063】
幾つかの実施形態は、あらゆる可能な技術的詳細レベルの集積でシステム、方法、及び/又はコンピュータ可読媒体に関することがある。コンピュータ可読媒体は、プロセッサに動作を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読非一時的記憶媒体(又は複数の媒体)を含むことがある。
【0064】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持し且つ格納することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、又はこれらの適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、以下のもの、すなわち、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROM又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード又は記録された命令をその上に有する溝内の隆起構造のような機械的に符号化されたデバイス、又はそれらの任意の適切な組み合わせを含む。本明細書で使用するとき、コンピュータ可読記憶媒体は、電波又は他の自由に伝搬する電磁波、導波管又は他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通じて伝送される電気信号のような、それ自体が一時的な信号であると解釈されるべきではない。
【0065】
本明細書に記載のコンピュータ可読プログラム命令は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドネットワーク及び/又は無線ネットワークを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティングデバイス/処理デバイスに、或いは外部コンピュータ又は外部記憶デバイスにダウンロードされることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含むことがある。各コンピューティングデバイス/処理デバイス内のネットワークアダプタカード又はネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティングデバイス/処理デバイス内のコンピュータ可読記憶媒体における格納のためにコンピュータ可読なプログラム命令を転送する。
【0066】
演算を実行するためのコンピュータ可読プログラムコード/命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又はSmalltalk、C++又は同等のもののようなオブジェクト指向プログラミング言語、及び「C」プログラミング言語又は類似のプログラミング言語のような手続プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれたソースコード又はオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアローンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上で且つ部分的にリモートコンピュータ上で、或いは全体的に遠隔コンピュータ又はサーバ上で実行されてよい。後者のシナリオにおいて、遠隔コンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてよく、或いは、接続は、外部コンピュータ(例えば、インターネットサービスプロバイダを使用してインターネットを通じて)行われてよい。幾つかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む、電子回路構成は、態様又は動作を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路構成をパーソナライズすることによって、コンピュータ可読プログラム命令を実行してよい。
【0067】
これらのコンピュータ可読プログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令が、フローチャート及び/又はブロック図のブロック又は複数のブロックにおいて特定される機能/行為を実装する手段を生成するように、機械を製造するために、汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供されてよい。これらのコンピュータ可読プログラム命令は、格納される命令をその中に有するコンピュータ可読記憶媒体が、フローチャート及び/又はブロック図のブロック又は複数のブロックにおいて特定される機能/行為の態様を実装する命令を含む製造物品を含むように、コンピュータ、プログラマブルデータ処理装置、及び/又は他のデバイスに指令して、特定の方法で機能させることができる、コンピュータ可読記憶媒体に格納されてもよい。
【0068】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置又は他のデバイスで実行される命令が、フローチャート及び/又はブロック図のブロック又は複数のブロックにおいて特定される機能/行為を実装するように、一連の動作ステップをコンピュータ、他のプログラマブル装置、又は他のデバイスで実行させて、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされてもよい。
【0069】
図におけるフローチャート及びブロック図は、様々な実施形態に従ったシステム、方法、及びコンピュータ可読媒体の可能な実装のアーキテクチャ、機能性、及び動作を示す。この点に関して、フローチャート又はブロック図中の各ブロックは、特定される論理機能を実装するための1つ以上の実行可能な命令を含む、モジュール、セグメント、又は命令の一部を表すことがある。方法、コンピュータシステム、及びコンピュータ可読媒体は、図面に示されたものよりも、追加のブロック、より少ないブロック、異なるブロック、又は異なって配置されたブロックを含んでよい。幾つかの代替的な実装において、ブロックに示す機能は、図に示す順序から外れて生じてよい。例えば、連続して示される2つのブロックは、実際には、同時に又は実質的に同時に実行されてよく、或いは、ブロックは、関与する機能に依存して、逆の順序で実行されてよい。なお、ブロック図及び/又はフローチャート図示の各ブロック、並びにブロック図及び/又はフローチャート図示中のブロックの組み合わせは、特定された機能又は行為を実行する或いは特定目的のハードウェア及びコンピュータ命令の組み合わせを実行する特定目的のハードウェアベースのシステムによって実装されることができる。
【0070】
本明細書に記載するシステム及び/又は方法は、異なる形態のハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせにおいて実装されてよいことが明らかであろう。これらのシステム及び/又は方法を実装するために使用される実際の特殊化された制御ハードウェア又はソフトウェアコードは、実装を限定するものでない。よって、システム及び/又は方法の動作及び挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェア及びハードウェアは、本明細書の記載に基づいてシステム及び/又は方法を実装するように設計されてよいことが理解される。
【0071】
本明細書中で使用される如何なる要素、行為、又は命令も、明示的にそのように記載されない限り、重要又は必須と解釈されるべきではない。また、本明細書で使用されるとき、単数形の物品は、1つ以上の品目を含むことが意図されており、「1つ以上(one or more)」と互換的に使用されることがある。更に、本明細書で使用されるとき、「セット(set)」という用語は、1つ以上の品目(例えば、関連する品目、関連しない品目、関連する品目と関連しない品目との組み合わせなど)を含むことが意図されており、「1つ以上」と互換的に使用されることがある。1つの品目のみが意図される場合には、「1つ(one)」又は類似の用語が使用される。また、本明細書で使用されるとき、「有する(has)」、「有する(have)」、「有する(having)」という用語、又は同等の用語は、開放端(オープンエンド)の用語であることが意図されている。更に、「~に基づく(based on)」は、明示的に別段の記載がない限り、「少なくとも部分的に基づく(based, at least in part, on)」を意味することが意図されている。
【0072】
様々な態様及び実施形態の記述が例示の目的のために提示されているが、開示の実施形態を網羅することや開示の実施形態に限定されることを意図しない。構成の組み合わせが請求項に列挙され且つ/或いは明細書に開示されているとしても、これらの組み合わせは可能な実装の開示を限定することを意図しない。実際には、これらの構成の多くは、請求項に具体的に列挙されていない及び/又は明細書に開示されていない方法で組み合わされることがある。以下に列挙される各従属項は1つの請求項にのみ直接的に従属することがあるが、可能な実装の開示は、請求項のセット中のあらゆる他の請求項との組み合わせにおける各従属項を含む。多くの修正及び変形が、記載の実施形態の範囲から逸脱することなく当業者に明らかであろう。本明細書で使用する用語法は、実施形態の原理、市場で見出される技術に対する実際的な適用又は技術的な改良を最もよく説明するために、或いは当業者が本明細書で開示する実施形態を理解することを可能にするために選択された。
【外国語明細書】