本出願の実施形態は、ビットストリームにおいてピクチャブロックの参照ピクチャインデックスを送信することなく、符号化または復号の間に導出方法に従ってピクチャブロックの参照ピクチャインデックスを決定し、それにより、送信リソースを節約することができ、コーディング圧縮効率をある程度改善することができるようにするための、双方向インター予測方法および装置、ビデオ符号化デバイス、ならびにビデオ復号デバイスを提供する。
前述の目的を達成するために、以下の技術的な解決法が本出願の実施形態において使用される。
第1の態様によれば、本発明は双方向インター予測方法を提供する。方法は、
第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定するステップであって、参照ピクチャインデックスi1に対応するピクチャ順序カウントPOC(picture order count)が現在のピクチャのPOCより小さく、現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCが現在のピクチャのPOCより小さい、ステップと、
第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定するステップであって、参照ピクチャインデックスi2に対応するPOCが現在のピクチャのPOCより大きく、現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCが現在のピクチャのPOCより大きい、ステップと、
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するステップであって、現在のピクチャが現在のブロックを含む、ステップとを含む。
本発明における参照ピクチャインデックスは、簡単にインデックスとも呼ばれ得ることを理解されたい。
第2の態様によれば、本発明は双方向インター予測方法を提供する。方法は、
条件の第1のグループが満たされるとき、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定するステップであって、条件の第1のグループが、以下の条件1および条件2、すなわち
条件1:参照ピクチャインデックスi1に対応するPOCが、現在のピクチャのPOCより小さい、および
条件2:現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差が、現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixが、第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCが、現在のピクチャのPOCより小さい
を少なくとも含む、ステップと、
条件の第2のグループが満たされるとき、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定するステップであって、条件の第2のグループが、以下の条件11および条件12、すなわち
条件11:参照ピクチャインデックスi2に対応するPOCが、現在のピクチャのPOCより大きい、および
条件12:現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差が、現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyが、第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCが、現在のピクチャのPOCより大きい
を少なくとも含む、ステップと、
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するステップであって、現在のピクチャが現在のブロックを含む、ステップとを含む。
本発明の実施形態において、条件1および条件2に加えて、条件の第1のグループはさらに別の条件を含んでもよく、条件11および条件12に加えて、条件の第2のグループはさらに別の条件を含んでもよいことを理解されたい。これらの条件は、従来技術における任意選択の実行条件、または標準的な進化における任意選択の実行条件を含むが、それらに限定されず、本発明の実施形態において網羅的に列挙されない。
第3の態様によれば、本発明は双方向インター予測方法を提供する。方法は、
第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定することを許容するステップであって、参照ピクチャインデックスi1に対応するPOCが現在のピクチャのPOCより小さく、現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCが現在のピクチャのPOCより小さい、ステップと、
第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを許容するステップであって、参照ピクチャインデックスi2に対応するPOCが現在のピクチャのPOCより大きく、現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCが現在のピクチャのPOCより大きい、ステップと、
参照ピクチャインデックスi1が、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定され、参照ピクチャインデックスi2が、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定されるとき、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するステップであって、現在のピクチャが現在のブロックを含む、ステップとを含む。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、第1の参照ピクチャリストは第1の方向に対応してもよく、第2の参照ピクチャリストは第2の方向に対応してもよい。第1の方向および第2の方向は、それぞれ前方の方向および後方の方向であってもよく、または後方の方向および前方の方向であってもよく、または、第1の方向と第2の方向の両方が、前方の方向もしくは後方の方向であってもよい。方向は時系列としても理解されてよく、本発明では限定されない。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、方法は、復号デバイスに対して使用され、それに対応して、方法は、
第1の識別子を取得するステップをさらに含み、第1の識別子の値は、第1のあらかじめ設定された値(これは1または0であり得るが限定はされない)であり、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定すること、および、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを示すために使用される。
任意選択で、第1の識別子の値が第2のあらかじめ設定された値(これは第1のあらかじめ設定された値とは異なり、0または1であり得るが限定はされない)であるとき、第1の識別子は、ビットストリームが構文解析される必要があること、または、現在のブロックの参照ピクチャインデックスを取得するために別の方式が使用される必要があることを示し得る。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、第1の識別子が第1のあらかじめ設定された値(これは1または0であり得るが限定はされない)であるとき、第1の識別子は、現在のブロックの第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を決定することを示すためにさらに使用されてもよく、方法は、
現在のブロックの第1の動きベクトル差分を取得するステップと、
以下の式に従って第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を取得するステップとをさらに含む。
mvd_lY=-mvd_lX
本明細書では、mvd_lYは第2の動きベクトル差分を表し、mvd_lXは第1の動きベクトル差分を表し、第1の動きベクトル差分と第2の動きベクトル差分の一方が第1の参照ピクチャリストに対応し、第1の動きベクトル差分と第2の動きベクトル差分の他方が第2の参照ピクチャリストに対応する。
任意選択で、第1の識別子の値が第2のあらかじめ設定された値(これは第1のあらかじめ設定された値とは異なり、0または1であり得るが限定はされない)であるとき、第1の識別子は、ビットストリームが構文解析される必要があること、または、第1の参照ピクチャリストおよび/もしくは第2の参照ピクチャリストに対応する、現在のブロックの第1の動きベクトル差分および/もしくは第2の動きベクトル差分を取得するために、別の方式が使用される必要があることを示し得る。
つまり、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は第1の動き情報および第2の動き情報が相互に導出され得ることを示し得る。たとえば、第2の動き情報は第1の動き情報に基づいて導出されてもよく、または第1の動き情報は第2の動き情報に基づいて導出されてもよい。より具体的には、第2の動きベクトルは第1の動きベクトルに基づいて導出されてもよく、または第1の動きベクトルは第2の動きベクトルに基づいて導出されてもよい。第2の動きベクトル差分は第1の動きベクトル差分に基づいて導出されてもよく、または第1の動きベクトル差分は第2の動きベクトル差分に基づいて導出されてもよい。
この場合、すべての動き情報(MVDなど)がビットストリームにおいて送信される必要はないので、ビットストリームを送信するためのリソースが減り、それによりビットストリーム送信効率が改善する。
さらに、第1の動きベクトルが第2の動きベクトルに基づいて導出されるとき、または第2の動きベクトルが第1の動きベクトルに基づいて導出されるとき、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスは導出を通じて決定され得る。言い換えると、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスは、ビットストリームを構文解析することなく取得され得る。
結論として、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は、現在のブロックの参照ピクチャインデックスが導出を通じて取得または決定され得ることを示すために使用され得ることがわかり得る。具体的には、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定すること、および、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを示すために使用され得る。この場合、参照ピクチャインデックスは、ビットストリーム送信効率を改善するために、ビットストリームにおいて送信されなくてもよい。
さらに、第1の識別子の値が第2のあらかじめ設定された値であるとき、第1の識別子は、第1の動きベクトルが第2の動きベクトルに基づいて導出されないこと、または第2の動きベクトルが第1の動きベクトルに基づいて導出されないことを示すために使用され得る。この場合、ビットストリームは、現在のブロックの第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを取得するために構文解析される必要がある。
さらに、第1の識別子の値が第2のあらかじめ設定された値であるとき、第1の識別子は、第1の動きベクトル差分が第2の動きベクトル差分に基づいて導出されないこと、または第2の動きベクトル差分が第1の動きベクトル差分に基づいて導出されないことを示すために使用され得る。この場合、ビットストリームは、現在のブロックの第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを取得するために構文解析される必要がある。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、方法は、
第1の予測動きベクトルおよび第2の予測動きベクトルを取得するステップと、
第1の予測動きベクトルおよび第1の動きベクトル差分に基づいて第1の動きベクトルを決定するステップと、
第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップとをさらに含む。
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するステップは、第1の参照ピクチャインデックス、第2の参照ピクチャインデックス、第1の参照ピクチャリスト、第2の参照ピクチャリスト、第1の動きベクトル、および第2の動きベクトルに基づいて現在のブロックを予測するステップを含む。
任意選択で、ある特定の実装プロセスにおいて、第1の予測動きベクトルおよび第2の予測動きベクトルは、本発明の実施形態における構文解析を通じて、および/または導出を通じて取得されてもよく、第1の動きベクトル差分および第2の動きベクトル差分はまた、本発明の実施形態における構文解析を通じて、および/または導出を通じて取得されてもよく、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスは、前述の決定方法に従って決定されてもよく、第1の参照ピクチャリストおよび第2の参照ピクチャリストは、ビットストリームから取得されてもよく、または構築されてもよい。これらの動き情報が完成した後で、現在のブロックが予測され得る。具体的な予測方法は従来技術に従って実施され得る。
前述の方法によれば、1つの方向におけるMVDが別の方向におけるMVDに基づいて導出されてもよく、参照ピクチャインデックスが特定の規則に従って決定されてもよい。このやり方では、現在のブロックの2つの動き情報に対して、少なくとも1つのMVDおよび2つの参照ピクチャインデックスがビットストリームにおいて送信されなくてもよく、それによりビットストリームを送信するためのリソースを節約する。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、第1の識別子を取得する前に、方法はさらに、あらかじめ設定された条件が満たされると決定するステップを含み、あらかじめ設定された条件は、
第1の参照ピクチャリストが第1のインデックスを有すること、第2の参照ピクチャリストが第2のインデックスを有すること、現在のピクチャのPOCが第1のインデックスに対応するPOCと第2のインデックスに対応するPOCとの間にあることを含む。
たとえば、これは、以下の条件が満たされることとしても表され得る。
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0
本明細書では、POC_Curは現在のピクチャのPOCを表すことがあり、POC_listXは第1の参照ピクチャリストにおける参照ピクチャのPOCを表すことがあり、POC_listYは第2の参照ピクチャリストにおける参照ピクチャのPOCを表すことがある。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、第1の識別子を取得する前に、方法はさらに、あらかじめ設定された条件が満たされると決定するステップを含み、あらかじめ設定された条件は、第2の参照ピクチャリストに対応する現在のピクチャの取得された動きベクトル残差識別子が第3のあらかじめ設定された値であることを含む。たとえば、現在のピクチャのmvd_l1_zero_flagは0である。
本発明の第1の態様、第2の態様、または第3の態様によれば、ある考えられる設計において、(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0であるとき、処理されるべきブロック(すなわち、現在のブロック)が位置するピクチャからのPOC差分が最小のピクチャは、処理されるべきブロックの第1の参照ピクチャリストの中の第1の標的参照ピクチャとして決定され、ここで第1の標的参照ピクチャのPOCは、処理されるべきブロックが位置するピクチャのPOCより小さく、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャは、処理されるべきブロックの第2の参照ピクチャリストの中の第2の標的参照ピクチャとして決定され、ここで第2の標的参照ピクチャのPOCは、処理されるべきブロックが位置するピクチャのPOCより大きい。第1の標的参照ピクチャと第2の標的参照ピクチャの両方が存在するとき、第1の参照ピクチャリストにおける第1の標的参照ピクチャの参照ピクチャインデックスはi1であり、第2の参照ピクチャリストにおける第2の標的参照ピクチャの参照ピクチャインデックスはi2である。
任意選択で、第1の標的参照ピクチャまたは第2の標的参照ピクチャが存在しないとき、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャは、処理されるべきブロックの第1の参照ピクチャリストの中の第3の標的参照ピクチャとして決定され、ここで、第3の標的参照ピクチャのPOCは、処理されるべきブロックが位置するピクチャのPOCより大きく、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャは、処理されるべきブロックの第2の参照ピクチャリストの中の第4の標的参照ピクチャとして決定され、ここで、第4の標的参照ピクチャのPOCは、処理されるべきブロックが位置するピクチャのPOCより小さい。第3の標的参照ピクチャと第4の標的参照ピクチャの両方が存在するとき、第2の参照ピクチャリストにおける第4の標的参照ピクチャのインデックスはi2であり、第1の参照ピクチャリストにおける第3の標的参照ピクチャの参照ピクチャインデックスはi1である。
第4の態様によれば、双方向インター予測装置が提供される。装置は、
第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定し、参照ピクチャインデックスi1に対応するPOCが現在のピクチャのPOCより小さく、現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCが現在のピクチャのPOCより小さいことと、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定し、参照ピクチャインデックスi2に対応するPOCが現在のピクチャのPOCより大きく、現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCが現在のピクチャのPOCより大きいことと、を行うように構成される決定ユニットと、
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するように構成される、インター予測処理ユニットであって、現在のピクチャが現在のブロックを含む、インター予測処理ユニットとを含む。
第4の態様によれば、ある考えられる設計において、装置は、第1の識別子を取得するように構成される、取得ユニットをさらに含み、第1の識別子の値は、第1のあらかじめ設定された値であり、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定すること、および、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを示すために使用される。
第4の態様によれば、ある考えられる設計において、第1の識別子が第1のあらかじめ設定された値であるとき、第1の識別子は、現在のブロックの第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を決定することを示すためにさらに使用され、取得ユニットは、現在のブロックの第1の動きベクトル差分を取得するようにさらに構成され、決定ユニットは、以下の式に従って第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を取得するようにさらに構成される。
mvd_lY=-mvd_lX
本明細書では、mvd_lYは第2の動きベクトル差分を表し、mvd_lXは第1の動きベクトル差分を表し、第1の動きベクトル差分と第2の動きベクトル差分の一方が第1の参照ピクチャリストに対応する動き情報に属し、第1の動きベクトル差分と第2の動きベクトル差分の他方が第2の参照ピクチャリストに対応する動き情報に属す。
第4の態様によれば、ある考えられる設計において、取得ユニットは、第1の予測動きベクトルおよび第2の予測動きベクトルを取得するように特に構成され、決定ユニットは、第1の予測動きベクトルおよび第1の動きベクトル差分に基づいて第1の動きベクトルを決定し、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するように構成され、インター予測処理ユニットは、第1の参照ピクチャインデックス、第2の参照ピクチャインデックス、第1の参照ピクチャリスト、第2の参照ピクチャリスト、第1の動きベクトル、および第2の動きベクトルに基づいて現在のブロックを予測するように構成される。
特定の実装形態の間、前述のユニット(仮想モジュール)は、別個の計算モジュールまたは同じ統合された計算モジュールを含むが、それらに限定されない。実装の形式は網羅的に列挙されない。異なる名称は、機能の区別のためだけに使用され、構造を不必要に限定するものではない。
第5の態様によれば、本発明は双方向インター予測方法を提供し、この方法は、
処理されるべきブロックの補助情報があらかじめ設定された条件を満たすとき、ビットストリームを構文解析して指示情報を取得するステップであって、指示情報が、第1の動きベクトルの取得方式および第2の動きベクトルの取得方式を示すために使用され、第1の動きベクトルが、処理されるべきブロックの第1の参照ピクチャリストの中の参照ピクチャを指し示す動きベクトルであり、第2の動きベクトルが、処理されるべきブロックの第2の参照ピクチャリストの中の参照ピクチャを指し示す動きベクトルである、ステップと、
指示情報によって示される取得方式に基づいて第1の動きベクトルおよび第2の動きベクトルを決定するステップと、
第1の動きベクトル、第2の動きベクトル、第1の参照ピクチャインデックス、および第2の参照ピクチャインデックスに基づいて、処理されるべきブロックの予測子を決定するステップとを含み、第1の参照ピクチャインデックスは、第1の動きベクトルが指し示す、第1の参照ピクチャリストの中の参照ピクチャを示すために使用され、第2の参照ピクチャインデックスは、第2の動きベクトルが指し示す、第2の参照ピクチャリストの中の参照ピクチャを示すために使用される。
第6の態様によれば、本発明は双方向インター予測装置を提供し、この装置は、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすとき、ビットストリームを構文解析して指示情報を取得するように構成される、取得ユニットであって、指示情報が、第1の動きベクトルの取得方式および第2の動きベクトルの取得方式を示すために使用され、第1の動きベクトルが、処理されるべきブロックの第1の参照ピクチャリストの中の参照ピクチャを指し示す動きベクトルであり、第2の動きベクトルが、処理されるべきブロックの第2の参照ピクチャリストの中の参照ピクチャを指し示す動きベクトルである、取得ユニットと、指示情報によって示される取得方式に基づいて第1の動きベクトルおよび第2の動きベクトルを決定し、第1の動きベクトル、第2の動きベクトル、第1の参照ピクチャインデックス、および第2の参照ピクチャインデックスに基づいて、処理されるべきブロックの予測子を決定するように構成される、決定ユニットとを含み、第1の参照ピクチャインデックスは、第1の動きベクトルが指し示す、第1の参照ピクチャリストの中の参照ピクチャを示すために使用され、第2の参照ピクチャインデックスは、第2の動きベクトルが指し示す、第2の参照ピクチャリストの中の参照ピクチャを示すために使用される。
第5の態様および第6の態様は、互いに対応する方法と装置を記述する。以下の考えられる設計では、考えられる実装の方策を説明するために方法のみが使用され、装置側では詳細は説明されない。
第5の態様または第6の態様によれば、ある考えられる設計において、指示情報は、第1の識別子および第5の識別子を含み、ビットストリームを構文解析して指示情報を取得するステップは、ビットストリームを構文解析して第1の識別子を取得するステップと、第1の識別子が0であるとき、ビットストリームを構文解析して第5の識別子を取得するステップとを含む。それに対応して、指示情報によって示される取得方式に基づいて第1の動きベクトルおよび第2の動きベクトルを決定するステップは、
第1の識別子が1であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、第1の動きベクトルに基づいて第2の動きベクトルを導出するステップとを含み、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にあり、
第1の識別子が0であり第5の識別子が1であるとき、ビットストリームを構文解析して第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差を取得するステップと、第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差に基づいて第2の動きベクトルを計算するステップと、第2の動きベクトルに基づいて第1の動きベクトルを導出するステップとを含み、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にあり、または、
第1の識別子が0であり第5の識別子が0であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル差分を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、ビットストリームを構文解析して第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差を取得するステップと、第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差に基づいて第2の動きベクトルを計算するステップとを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、指示情報は第2の識別子および第3の識別子を含み、ビットストリームを構文解析して指示情報を取得するステップは、ビットストリームを構文解析して第2の識別子を取得するステップと、第2の識別子が1であるとき、ビットストリームを構文解析して第3の識別子を取得するステップとを含む。それに対応して、指示情報によって示される取得方式に基づいて第1の動きベクトルおよび第2の動きベクトルを決定するステップは、第2の識別子が0であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、ビットストリームを構文解析して第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差を取得するステップと、第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差に基づいて第2の動きベクトルを計算するステップとを含み、または、第2の識別子が1であり第3の識別子が第1の値であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、第1の動きベクトルに基づいて第2の動きベクトルを導出するステップであって、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にある、ステップとを含み、または、第2の識別子が1であり第3の識別子が第2の値であるとき、ビットストリームを構文解析して第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差を取得するステップと、第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差に基づいて第2の動きベクトルを計算するステップと、第2の動きベクトルに基づいて第1の動きベクトルを導出するステップであって、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にあり、第1の値が第2の値に等しくない、ステップとを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、指示情報は第2の識別子を含み、ビットストリームを構文解析して指示情報を取得するステップは、
ビットストリームを構文解析して第2の識別子を取得するステップを含む。
それに対応して、指示情報によって示される取得方式に基づいて第1の動きベクトルおよび第2の動きベクトルを決定するステップは、
第2の識別子が0であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、ビットストリームを構文解析して第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差を取得するステップと、第2の予測動きベクトルインデックスおよび/もしくは第2の動きベクトル残差に基づいて第2の動きベクトルを計算するステップとを含み、または、
第2の識別子が1であるとき、ビットストリームを構文解析して第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差を取得するステップと、第1の予測動きベクトルインデックスおよび/もしくは第1の動きベクトル残差に基づいて第1の動きベクトルを計算するステップと、第1の動きベクトルに基づいて第2の動きベクトルを導出するステップであって、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にある、ステップとを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、第1の動きベクトルおよび第2の動きベクトルがあらかじめ設定された数学的関係にあることは、第1の動きベクトルと第2の動きベクトルの大きさが等しく方向が反対であること、および/または、第1の動きベクトル残差と第2の動きベクトル残差の大きさが等しく方向が反対であることを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、補助情報は、処理されるべきブロックの参照ピクチャの量を含み、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすことは、処理されるべきブロックの参照ピクチャの量が2以上であることを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、補助情報は、処理されるべきブロックが位置するピクチャと処理されるべきブロックの参照ピクチャとの間のピクチャ順序カウント(POC)関係を含み、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすことは、
POC_Cur-POC_listX=POC_listY-POC_Cur
を含む。
本明細書では、POC_Curは、処理されるべきブロックが位置するピクチャのPOCであり、POC_listXは、第1の参照ピクチャリストにおける処理されるべきブロックの参照ピクチャのPOCであり、POC_listYは、第2の参照ピクチャリストにおける処理されるべきブロックの参照ピクチャのPOCである。
第5の態様または第6の態様によれば、ある考えられる設計において、補助情報は、処理されるべきブロックが位置するピクチャと処理されるべきブロックの参照ピクチャとの間のピクチャ順序カウント(POC)関係を含み、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすことは、
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0
を含む。
本明細書では、POC_Curは、処理されるべきブロックが位置するピクチャのPOCであり、POC_listXは、第1の参照ピクチャリストにおける処理されるべきブロックの参照ピクチャのPOCであり、POC_listYは、第2の参照ピクチャリストにおける処理されるべきブロックの参照ピクチャのPOCである。
第5の態様または第6の態様によれば、ある考えられる設計において、補助情報は、処理されるべきブロックが位置するピクチャの時間識別子(Temporal ID)を含み、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすことは、処理されるべきブロックが位置するピクチャの時間識別子があらかじめ設定された値以上であることを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、補助情報は、処理されるべきブロックの動きベクトル残差(mvd_l1_zero_flag)識別子を含み、処理されるべきブロックの補助情報があらかじめ設定された条件を満たすことは、処理されるべきブロックの動きベクトル残差識別子が、処理されるべきブロックの動きベクトル残差が0であることを示すことを含み、この動きベクトル残差は、第1の動きベクトル残差または第2の動きベクトル残差である。
第5の態様または第6の態様によれば、ある考えられる設計において、処理されるべきブロックの予測子を決定する前に、方法は、
第1の動きベクトルが第2の動きベクトルに基づいて導出されるとき、または第2の動きベクトルが第1の動きベクトルに基づいて導出されるとき、補助情報が満たすあらかじめ設定された条件に基づいて第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを決定するステップ、または、
第1の動きベクトルが第2の動きベクトルに基づいて導出されず、第2の動きベクトルが第1の動きベクトルに基づいて導出されないとき、ビットストリームを構文解析して第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを取得するステップをさらに含む。
第5の態様または第6の態様によれば、ある考えられる設計において、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを決定するステップは、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスの各々をあらかじめ設定された定数に設定するステップを含む。あらかじめ設定された定数は0であり得る。
第5の態様または第6の態様によれば、ある考えられる設計において、POC_Cur-POC_listX=POC_listY-POC_Curであるとき、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを決定するステップは、処理されるべきブロックの第1の参照ピクチャリストの中の第1の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第1の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより小さい、ステップと、第2の標的参照ピクチャを求めて処理されるべきブロックの第2の参照ピクチャリストを検索するステップであって、第2の標的参照ピクチャのPOCがPOC_Cur-POC_1=POC_2-POC_Curを満たし、POC_1が第1の標的参照ピクチャのPOCであり、POC_2が第2の標的参照ピクチャのPOCである、ステップと、第1の標的参照ピクチャと第2の標的参照ピクチャの両方が存在するとき、第1の参照ピクチャインデックスを第1の標的参照ピクチャの識別子に設定し、第2の参照ピクチャインデックスを第2の標的参照ピクチャの識別子に設定するステップとを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、方法は、
第1の標的参照ピクチャまたは第2の標的参照ピクチャが存在しないとき、処理されるべきブロックの第1の参照ピクチャリストの中の第3の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第3の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより大きい、ステップと、第4の標的参照ピクチャを求めて処理されるべきブロックの第2の参照ピクチャリストを検索するステップであって、第4の標的参照ピクチャのPOCがPOC_Cur-POC_3=POC_4-POC_Curを満たし、POC_3が第3の標的参照ピクチャのPOCであり、POC_4が第4の標的参照ピクチャのPOCである、ステップと、第1の参照ピクチャインデックスを第3の標的参照ピクチャの識別子に設定し、第2の参照ピクチャインデックスを第4の標的参照ピクチャの識別子に設定するステップとをさらに含む。
第5の態様または第6の態様によれば、ある考えられる設計において、(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0であるとき、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスを決定するステップは、
処理されるべきブロックの第1の参照ピクチャリストの中の第1の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第1の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより小さい、ステップと、
処理されるべきブロックの第2の参照ピクチャリストの中の第2の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第2の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより大きい、ステップと、
第1の標的参照ピクチャと第2の標的参照ピクチャの両方が存在するとき、第1の参照ピクチャインデックスを第1の標的参照ピクチャの識別子に設定し、第2の参照ピクチャインデックスを第2の標的参照ピクチャの識別子に設定するステップとを含む。
第5の態様または第6の態様によれば、ある考えられる設計において、方法は、
第1の標的参照ピクチャまたは第2の標的参照ピクチャが存在しないとき、処理されるべきブロックの第1の参照ピクチャリストの中の第3の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第3の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより大きい、ステップと、処理されるべきブロックの第2の参照ピクチャリストの中の第4の標的参照ピクチャとして、処理されるべきブロックが位置するピクチャからのPOC差分が最小のピクチャを決定するステップであって、第4の標的参照ピクチャのPOCが、処理されるべきブロックが位置するピクチャのPOCより小さい、ステップと、第1の参照ピクチャインデックスを第3の標的参照ピクチャの識別子に設定し、第2の参照ピクチャインデックスを第4の標的参照ピクチャの識別子に設定するステップとをさらに含む。
第7の態様によれば、本発明は双方向インター予測方法を提供し、この方法は、
ビットストリームの中の少なくともあるシンタックス要素が、現在のピクチャの第2の動きベクトル差分が構文解析される必要があることを示すとき、第1の識別子を取得するステップと、現在のブロックの第1の動きベクトル差分を取得するステップと、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を決定するステップとを含み、第1の動きベクトル差分が、第1の方向における現在のブロックの動き情報に属し、第2の動きベクトル差分が、第2の方向における現在のブロックの動き情報に属し、第1の動きベクトル差分および第2の動きベクトル差分が、現在のブロックを予測するために使用される。
第8の態様によれば、双方向インター予測方法が提供され、この方法は、第1の動き情報に基づいて第2の動き情報を決定することを示すために使用される指示情報を取得するステップであって、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第1の動き情報を取得するステップと、取得された第1の動き情報に基づいて第2の動き情報を決定するステップとを含む。このやり方では、現在のブロックの予測サンプルは、取得された第1の動き情報および決定された第2の動き情報に基づいて決定され得る。
本出願において提供される双方向インター予測方法によれば、指示情報が取得された後で、第2の動き情報は第1の動き情報に基づいて決定される。このやり方では、ビットストリームは、指示情報および第1の動き情報しか含む必要がなく、もはや第2の動き情報を含む必要はない。ビットストリームが各方向における各ピクチャブロックの動き情報を含む従来技術と比較すると、本出願において提供される双方向インター予測方法は、ビットストリームに含まれる動き情報を実質的に減らし、送信リソースの実効的な利用率、送信レート、およびコーディングレートを改善する。
任意選択で、本出願のある考えられる実装形態では、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、第1の動き情報の中の第1の参照ピクチャのインデックス値を取得して、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップであって、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号である、ステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定するステップであって、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックスが第2の参照ピクチャリストにおける第2の参照ピクチャの番号である、ステップ、第1の動き情報の中にある第1の動きベクトル差分および第1の動きベクトル予測子フラグに基づいて第1の動きベクトルを決定するステップであって、第1の動きベクトルが第1の方向における現在のブロックの動きベクトルである、ステップ、ならびに、以下の式に従って第2の動き情報の中の第2の動きベクトルを決定するステップである。
この式において、mv_lYは第2の動きベクトルを表し、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、mv_lXは第1の動きベクトルを表し、第2の動きベクトルは第2の方向における現在のブロックの動きベクトルである。
任意選択で、本出願の別の考えられる実装形態では、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、第1の動き情報の中の第1の参照ピクチャのインデックス値を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップであって、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号である、ステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定するステップであって、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号である、ステップ、第1の動き情報の中にある第1の動きベクトル差分および第1の動きベクトル予測子フラグに基づいて第1の動きベクトルを決定するステップであって、第1の動きベクトルが第1の方向における現在のブロックの動きベクトルである、ステップ、ならびに、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または、第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、式mv_lY=-mv_lXに従って第2の動き情報の中の第2の動きベクトルを決定するステップであって、この式において、mv_lYが第2の動きベクトルを表し、mv_lXが第1の動きベクトルを表し、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ステップである。
任意選択で、本出願の別の考えられる実装形態において、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、式mv_lY=-mv_lXに従って第2の動き情報の中の第2の動きベクトルを決定するステップであり、この式において、mv_lYは第2の動きベクトルを表し、mv_lXは第1の動きベクトルを表し、第2の動きベクトルは第2の方向における現在のブロックの動きベクトルである。
「第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャである」ことと「第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0を使用することによって表されてもよく、または、POC_listY=2*POC_Cur-POC_listXを使用することによって表されてもよい。これは本出願では特に限定されない。
加えて、「第1の参照ピクチャおよび第2の参照ピクチャの各々が現在のブロックの前方参照ピクチャである」ことと「第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0を使用することによって表されてもよい。
任意選択で、本出願の別の考えられる実装形態では、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、第1の動き情報の中にある第1の参照ピクチャのインデックス値および第1の動きベクトル差分を取得して、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップであって、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号である、ステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定して、第2の参照ピクチャのインデックス値および第2の予測動きベクトル候補リストに基づいて第2の予測動きベクトルを決定するステップであって、第2の予測動きベクトルが第2の方向における現在のブロックの予測動きベクトルであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号である、ステップ、以下の式に従って第2の動き情報の中の第2の動きベクトル差分を決定するステップであって、
式において、mvd_lYが第2の動きベクトル差分を表し、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第2の参照ピクチャのピクチャ順序カウントを表し、mvd_lXが第1の動きベクトル差分を表す、ステップ、ならびに、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップであって、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ステップである。
任意選択で、本出願の別の考えられる実装形態では、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、第1の動き情報の中にある第1の参照ピクチャのインデックス値および第1の動きベクトルを取得して、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップであって、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号である、ステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定して、第2の参照ピクチャのインデックス値および第2の予測動きベクトル候補リストに基づいて第2の予測動きベクトルを決定するステップであって、第2の予測動きベクトルが第2の方向における現在のブロックの予測動きベクトルであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号である、ステップ、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または、第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、式mvd_lY=-mvd_lXに従って第2の動き情報の中の第2の動きベクトル差分を決定するステップであって、この式において、mvd_lYが第2の動きベクトル差分を表し、mvd_lXが第1の動きベクトル差分を表す、ステップ、ならびに、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップであって、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ステップである。
任意選択で、本出願の別の考えられる実装形態では、「第1の動き情報に基づいて第2の動き情報を決定する」ための方法は、式mvd_lY=-mvd_lXに従って第2の動き情報の中の第2の動きベクトル差分を決定するステップであって、この式において、mvd_lYが第2の動きベクトル差分を表し、mvd_lXが第1の動きベクトル差分を表す、ステップ、ならびに、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップであって、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ステップである。
同様に、「第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャである」ことと「第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0を使用することによって表されてもよく、または、式POC_listY=2*POC_Cur-POC_listXを使用することによって表されてもよい。これは本出願では特に限定されない。
「第1の参照ピクチャおよび第2の参照ピクチャの各々が現在のブロックの前方参照ピクチャである」ことと「第1の参照ピクチャおよび第2の参照ピクチャの各々が現在のブロックの後方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0を使用することによって表されてもよい。
本出願において提供される双方向インター予測方法は、第1の動きベクトルに基づいて第2の動きベクトルを決定することであってもよく、または、第1の動きベクトル差分に基づいて第2の動きベクトル差分を決定し、第2の動きベクトル差分に基づいて第2の動きベクトルを決定することであってもよいことがわかり得る。
任意選択で、本出願の別の考えられる実装形態では、「第2の参照ピクチャのインデックス値を取得する」ための方法は、式POC_listY0=2*POC_Cur-POC_listXに従って現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第1のピクチャ順序カウントを計算するステップであって、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第1のピクチャ順序カウントを表す、ステップ、ならびに、第2の参照ピクチャリストが第1のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第1のピクチャ順序カウントによって表される参照ピクチャの番号を決定するステップである。
任意選択で、本出願の別の考えられる実装形態では、「第2の参照ピクチャのインデックス値を取得する」ための方法は、式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第2のピクチャ順序カウントを計算するステップであって、POC_listY0'が第2のピクチャ順序カウントを表す、ステップ、ならびに、第2の参照ピクチャリストが第2のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第2のピクチャ順序カウントによって表される参照ピクチャの番号を決定するステップである。
任意選択で、本出願の別の考えられる実装形態では、「第2の参照ピクチャのインデックス値を取得する」ための方法は、式POC_listX≠POC_listY0''に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第3のピクチャ順序カウントを計算するステップであって、POC_listY0''が第3のピクチャ順序カウントを表す、ステップ、ならびに、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第3のピクチャ順序カウントによって表される参照ピクチャの番号を決定するステップである。
任意選択で、本出願の別の考えられる実装形態では、「第2の参照ピクチャのインデックス値を取得する」ための方法は、式POC_listY0=2*POC_Cur-POC_listXに従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第1のピクチャ順序カウントを計算するステップであり、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第1のピクチャ順序カウントを表す。第2の参照ピクチャリストが第1のピクチャ順序カウントを含むとき、第2の参照ピクチャリストにおける第1のピクチャ順序カウントによって表される参照ピクチャの番号は、第2の参照ピクチャのインデックス値として決定される。第2の参照ピクチャリストが第1のピクチャ順序カウントを含まないとき、第2のピクチャ順序カウントは、式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて計算され、POC_listY0'は第2のピクチャ順序カウントを表す。第2の参照ピクチャリストが第2のピクチャ順序カウントを含むとき、第2の参照ピクチャリストにおける第2のピクチャ順序カウントによって表される参照ピクチャの番号は、第2の参照ピクチャのインデックス値として決定される。第2の参照ピクチャリストが第2のピクチャ順序カウントを含まないとき、第3のピクチャ順序カウントは、式POC_listX≠POC_listY0''に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて計算され、POC_listY0''が第3のピクチャ順序カウントを表し、第2の参照ピクチャリストにおける第3のピクチャ順序カウントによって表される参照ピクチャの番号は、第2の参照ピクチャのインデックス値として決定される。
任意選択で、本出願の別の考えられる実装形態では、「第2の参照ピクチャのインデックス値を取得する」ための方法は、ビットストリームを構文解析して第2の参照ピクチャのインデックス値を取得するステップである。
本出願において「第2の参照ピクチャのインデックス値を取得する」ための複数の方法があり得ることがわかり得る。第2の参照ピクチャのインデックス値を取得するための具体的な方法は、実際の要件に基づいて決定される必要があり、またはあらかじめ設定される必要がある。
第9の態様によれば、双方向インター予測装置が提供される。双方向インター予測装置は、取得ユニットおよび決定ユニットを含む。
具体的には、取得ユニットは、指示情報を取得し、指示情報が第1の動き情報に基づいて第2の動き情報を決定することを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報であり、第1の動き情報を取得するように構成される。決定ユニットは、取得ユニットによって取得される第1の動き情報に基づいて第2の動き情報を決定し、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するように構成される。
任意選択で、本出願のある考えられる実装形態では、決定ユニットは、第1の動き情報の中の第1の参照ピクチャのインデックス値を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定し、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号であり、第2の参照ピクチャのインデックス値を取得し、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定し、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号であり、第1の動き情報の中にある第1の動きベクトル差分および第1の動きベクトル予測子フラグに基づいて第1の動きベクトルを決定し、第1の動きベクトルが第1の方向における現在のブロックの動きベクトルであり、以下の式に従って第2の動き情報の中の第2の動きベクトルを決定するように特に構成される。
本明細書では、mv_lYは第2の動きベクトルを表し、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、mv_lXは第1の動きベクトルを表し、第2の動きベクトルは第2の方向における現在のブロックの動きベクトルである。
任意選択で、本出願の別の考えられる実装形態において、決定ユニットは、第1の動き情報の中の第1の参照ピクチャのインデックス値を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定し、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号であり、第2の参照ピクチャのインデックス値を取得し、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定し、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号であり、第1の動き情報の中にある第1の動きベクトル差分および第1の動きベクトル予測子フラグに基づいて第1の動きベクトルを決定し、第1の動きベクトルが第1の方向における現在のブロックの動きベクトルであり、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または、第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、式mv_lY=-mv_lXに従って第2の動き情報の中の第2の動きベクトルを決定し、この式において、mv_lYが第2の動きベクトルを表し、mv_lXが第1の動きベクトルを表し、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、決定ユニットは、式mv_lY=-mv_lXに従って第2の動き情報の中の第2の動きベクトルを決定するように特に構成され、この式において、mv_lYは第2の動きベクトルを表し、mv_lXは第1の動きベクトルを表し、第2の動きベクトルは第2の方向における現在のブロックの動きベクトルである。
任意選択で、本出願の別の考えられる実装形態では、決定ユニットは、第1の動き情報の中にある第1の参照ピクチャのインデックス値および第1の動きベクトル差分を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定し、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号であり、第2の参照ピクチャのインデックス値を取得し、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定し、第2の参照ピクチャのインデックス値および第2の予測動きベクトル候補リストに基づいて第2の予測動きベクトルを決定し、第2の予測動きベクトルが第2の方向における現在のブロックの予測動きベクトルであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号であり、以下の式に従って第2の動き情報の中の第2の動きベクトル差分を決定し、
mvd_lYが第2の動きベクトル差分を表し、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第2の参照ピクチャのピクチャ順序カウントを表し、mvd_lXが第1の動きベクトル差分を表し、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定し、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、決定ユニットは、第1の動き情報の中にある第1の参照ピクチャのインデックス値および第1の動きベクトルを取得して、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定し、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャのインデックス値が第1の参照ピクチャリストにおける第1の参照ピクチャの番号であり、第2の参照ピクチャのインデックス値を取得し、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定して、第2の参照ピクチャのインデックス値および第2の予測動きベクトル候補リストに基づいて第2の予測動きベクトルを決定し、第2の予測動きベクトルが第2の方向における現在のブロックの予測動きベクトルであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャのインデックス値が第2の参照ピクチャリストにおける第2の参照ピクチャの番号であり、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または、第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または、第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、式mvd_lY=-mvd_lXに従って第2の動き情報の中の第2の動きベクトル差分を決定し、mvd_lYが第2の動きベクトル差分を表し、mvd_lXが第1の動きベクトル差分を表し、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定し、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、決定ユニットは、式mvd_lY=-mvd_lXに従って第2の動き情報の中の第2の動きベクトル差分を決定し、この式において、mvd_lYが第2の動きベクトル差分を表し、mvd_lXが第1の動きベクトル差分を表し、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定し、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、取得ユニットは、式POC_listY0=2*POC_Cur-POC_listXに従って現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第1のピクチャ順序カウントを計算し、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第1のピクチャ順序カウントを表し、第2の参照ピクチャリストが第1のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第1のピクチャ順序カウントによって表される参照ピクチャの番号を決定するように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、取得ユニットは、式(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第2のピクチャ順序カウントを計算し、POC_listY0'が第2のピクチャ順序カウントを表し、第2の参照ピクチャリストが第2のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第2のピクチャ順序カウントによって表される参照ピクチャの番号を決定するように特に構成される。
任意選択で、本出願の別の考えられる実装形態では、取得ユニットは、式POC_listX≠POC_listY0''に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第3のピクチャ順序カウントを計算し、POC_listY0''が第3のピクチャ順序カウントを表し、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第3のピクチャ順序カウントによって表される参照ピクチャの番号を決定するように特に構成される。
第10の態様によれば、双方向インター予測方法が提供される。双方向インター予測方法のための複数の実装形態がある。
ある実装形態は、ビットストリームを構文解析して第1の識別子を取得するステップであって、第1の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第1の識別子の値が第1のあらかじめ設定された値である場合、第1の動き情報を取得して、第1の動き情報に基づいて第2の動き情報を決定するステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
別の実装形態は、ビットストリームを構文解析して第2の識別子を取得するステップであって、第2の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用される、ステップと、第2の識別子の値が第2のあらかじめ設定された値である場合、第3の識別子を取得するステップであって、第3の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第3の識別子の値が第3のあらかじめ設定された値である場合、第1の動き情報を取得して、第1の動き情報に基づいて第2の動き情報を決定するステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
別の実装形態は、ビットストリームを構文解析して第2の識別子を取得するステップであって、第2の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用される、ステップと、第2の識別子の値が第2のあらかじめ設定された値である場合、第1の動き情報を取得して、第1の動き情報に基づいて第2の動き情報を決定するステップであって、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
別の実装形態は、ビットストリームを構文解析して第4の識別子を取得するステップであって、第4の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用される、ステップと、第4の識別子の値が第4のあらかじめ設定された値である場合、第1の参照ピクチャリストおよび第2の参照ピクチャリストに基づいて、第1の参照ピクチャのインデックス値および第2の参照ピクチャのインデックス値を決定するステップであって、第1の参照ピクチャリストが第1の方向における現在のブロックの参照ピクチャリストであり、第2の参照ピクチャリストが第2の方向における現在のブロックの参照ピクチャリストであり、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャである、ステップと、第1の動きベクトル差分および第1の動きベクトル予測子フラグを取得して、第1の動き情報に基づいて第2の動き情報を決定するステップであって、第1の動き情報が、第1の参照ピクチャのインデックス値、第1の動きベクトル差分、および第1の動きベクトル予測子フラグを含み、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
別の実装形態は、ビットストリームを構文解析して第1の識別子を取得するステップであって、第1の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第1の識別子の値が第8のあらかじめ設定された値である場合、第5の識別子を取得するステップであって、第5の識別子が、第2の動き情報に基づいて第1の動き情報を決定すべきかどうかを示すために使用される、ステップと、第5の識別子の値が第5のあらかじめ設定された値である場合、第2の動き情報を取得して、第2の動き情報に基づいて第1の動き情報を決定するステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
別の実装形態は、ビットストリームを構文解析して第2の識別子を取得するステップであって、第2の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用される、ステップと、第2の識別子の値が第2のあらかじめ設定された値である場合、第3の識別子を取得するステップであって、第3の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報である、ステップと、第3の識別子の値が第6のあらかじめ設定された値である場合、第2の動き情報を取得して、第2の動き情報に基づいて第1の動き情報を決定するステップと、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するステップとを含む。
第1の識別子から第4の識別子の具体的な説明については、以下の説明を参照されたい。
本出願において提供される双方向インター予測方法において、識別子がビットストリームを構文解析することによって取得された後で、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかが、識別子の値に基づいて決定される。第2の動き情報が第1の動き情報に基づいて決定される必要があると決定された後で、第1の動き情報が取得され、次いで、第2の動き情報が取得された第1の動き情報に基づいて決定される。このやり方では、ビットストリームは、対応する識別子および第1の動き情報しか含む必要がなく、第2の動き情報をもはや含む必要はない。ビットストリームが各方向における各ピクチャブロックの動き情報を含む従来技術と比較すると、本出願において提供される双方向インター予測方法は、ビットストリームに含まれる動き情報を実質的に減らし、送信リソースの実効的な利用率、送信レート、およびコーディングレートを改善する。
第11の態様によれば、双方向インター予測装置が提供される。双方向インター予測装置は、取得ユニットおよび決定ユニットを含む。
具体的には、ある実装形態では、取得ユニットは、ビットストリームを構文解析して第1の識別子を取得し、第1の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報であり、第1の識別子の値が第1のあらかじめ設定された値である場合、第1の動き情報を取得するように構成される。決定ユニットは、取得ユニットによって取得される第1の動き情報に基づいて第2の動き情報を決定し、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するように構成される。
別の実装形態では、取得ユニットは、ビットストリームを構文解析して第2の識別子を取得し、第2の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用され、第2の識別子の値が第2のあらかじめ設定された値である場合、第3の識別子を取得し、第3の識別子が、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示すために使用され、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報であり、第3の識別子の値が第3のあらかじめ設定された値である場合、第1の動き情報を取得するように構成される。決定ユニットは、取得ユニットによって取得される第1の動き情報に基づいて第2の動き情報を決定し、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するように構成される。
別の実装形態では、取得ユニットは、ビットストリームを構文解析して第2の識別子を取得し、第2の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用され、第2の識別子の値が第2のあらかじめ設定された値である場合、第1の動き情報を取得するように構成される。決定ユニットは、取得ユニットによって取得される第1の動き情報に基づいて第2の動き情報を決定し、第1の動き情報が第1の方向における現在のブロックの動き情報であり、第2の動き情報が第2の方向における現在のブロックの動き情報であり、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するように構成される。
別の実装形態では、取得ユニットは、ビットストリームを構文解析して第4の識別子を取得するように構成され、第4の識別子が、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算すべきかどうかを示すために使用される。決定ユニットは、取得ユニットによって取得される第4の識別子の値が第4のあらかじめ設定された値である場合、第1の参照ピクチャリストおよび第2の参照ピクチャリストに基づいて、第1の参照ピクチャのインデックス値および第2の参照ピクチャのインデックス値を決定するように構成され、第1の参照ピクチャリストが第1の方向における現在のブロックの参照ピクチャリストであり、第2の参照ピクチャリストが第2の方向における現在のブロックの参照ピクチャリストであり、第1の参照ピクチャが第1の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャが第2の方向における現在のブロックの参照ピクチャである。取得ユニットは、第1の動きベクトル差分および第1の動きベクトル予測子フラグを取得するようにさらに構成される。決定ユニットは、第1の動き情報に基づいて第2の動き情報を決定し、第1の動き情報が、第1の参照ピクチャのインデックス値、第1の動きベクトル差分、および第1の動きベクトル予測子フラグを含み、第2の動き情報が第2の方向における現在のブロックの動き情報であり、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定するようにさらに構成される。
第12の態様によれば、端末が提供される。端末は、1つまたは複数のプロセッサ、メモリ、および通信インターフェースを含む。メモリおよび通信インターフェースは、1つまたは複数のプロセッサに結合される。メモリはコンピュータプログラムコードを記憶するように構成され、コンピュータプログラムコードは命令を含む。1つまたは複数のプロセッサが命令を実行するとき、端末は、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って方法(または装置に対応する方法)を実行する。
第13の態様によれば、不揮発性記憶媒体および中央処理装置を含む、ビデオデコーダが提供される。不揮発性記憶媒体は実行可能プログラムを記憶する。中央処理装置は、不揮発性記憶媒体に接続され、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って方法(または装置に対応する方法)を実施するように実行可能プログラムを実行する。
第14の態様によれば、デコーダが提供される。デコーダは、双方向インター予測装置および再構築モジュールを含む。再構築モジュールは、双方向インター予測装置によって取得される予測サンプルに基づいて現在のブロックの再構築されたサンプル値を決定するように構成される。双方向インター予測装置は、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って方法(または装置に対応する方法)を実施し得る。
第15の態様によれば、エンコーダが提供され、エンコーダは、前述のデコーダに対応する、またはそれに結合される、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って方法(または装置に対応する方法)を実施することができる。
第16の態様によれば、コンピュータ可読記憶媒体が提供される。コンピュータ可読記憶媒体は命令を記憶し、命令が前述の端末で実行されるとき、端末は、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って方法(または装置に対応する方法)を実行することが可能にされる。
第17の態様によれば、命令を含むコンピュータプログラム製品が提供される。コンピュータプログラム製品が前述の端末上で実行されると、端末は、前述の態様および前述の態様の考えられる実装形態のいずれか1つに従って双方向インター予測方法を実行することが可能にされる。
本出願では、双方向インター予測装置という名称は、デバイスまたは機能モジュールに対して制約を課さない。実際の実装形態では、デバイスまたは機能モジュールは他の名称を有し得る。デバイスまたは機能モジュールの機能が本出願における機能と同様である限り、デバイスまたは機能モジュールは、本出願の特許請求の範囲およびそれらの等価な技術の範囲内にある。
第1の態様から第16の態様の具体的な説明、および本出願の第1の態様から第16の態様の様々な実装形態では、自然法則に反しない限り自由な組合せが実施され得る。加えて、いくつかの表現および効果も、様々な解決法において普遍的であり得る。詳細は本明細書において説明されない。
本出願のこれらの態様および他の態様は、以下の説明ではより簡潔であり理解可能である。
本出願の明細書、特許請求の範囲、および添付の図面では、「第1の」、「第2の」、「第3の」、および「第4の」などの用語は、異なる物体を区別することが意図されており、具体的な順序を示さない。
本出願の実施形態では、「例」または「たとえば」などの語は、例、例示、または説明を与えることを表すために使用される。本出願の実施形態において語「例」または「たとえば」として説明されるいずれの実施形態または設計方式も、別の実施形態または設計方式より好ましい、またはより多くの利点を有するものとして説明されるべきではない。まさに、「例」または「たとえば」などの語の使用は、特定の方式で関連する概念を提示することが意図されている。
本出願の実施形態の理解を容易にするために、本出願の実施形態における関連する要素が、本明細書でまず説明される。
ピクチャ符号化(picture encoding):ピクチャシーケンスをビットストリームへと圧縮するプロセス
ピクチャ復号(picture decoding):特定のシンタックス規則および特定の処理方法に従ってビットストリームを再構築されたピクチャへと復元するプロセス
現在、ビデオピクチャ符号化プロセスは次の通りである。エンコーダ側が、重複しない複数の部分へと元のピクチャをまず区分し、各部分がピクチャブロックとして使用され得る。次いで、エンコーダ側が、各ピクチャブロックに対して予測(Prediction)、変換(Transform)、および量子化(Quantization)などの操作を実行して、ピクチャブロックに対応するビットストリームを取得する。予測は、ピクチャブロックとピクチャブロックの予測ブロックとの間の差(または残差または残差ブロックと呼ばれる)だけが符号化され送信されて、それにより送信オーバーヘッドが減り得るように、ピクチャブロックの予測ブロックを取得することである。最後に、エンコーダ側が、ピクチャブロックに対応するビットストリームをデコーダ側に送信する。
それに対応して、ビットストリームを受信した後、デコーダ側がビデオ復号プロセスを実行する。具体的には、デコーダ側が、予測、逆量子化、および逆変換などの操作を受信されたビットストリームに対して実行して、再構築されたピクチャブロック(または再構築の後はピクチャブロックと呼ばれる)を取得する。このプロセスは、ピクチャ再構築プロセス(またはピクチャ再建プロセス)と呼ばれる。次いで、デコーダ側が、元のピクチャの中のすべてのピクチャブロックの再構築されたブロックを集めて、元のピクチャの再構築されたピクチャを取得し、再構築されたピクチャを再生する。
既存のビデオピクチャコーディング技術は、イントラ予測およびインター予測を含む。インター予測は、現在のピクチャと現在のピクチャの参照ピクチャとの間の相関を使用することによって、ピクチャブロックをコーディングすること/ピクチャブロックを復号することによって完成される予測である。現在のピクチャは1つまたは複数の参照ピクチャを有し得る。具体的には、現在のブロックの予測ピクチャブロックは、現在のブロックの参照ピクチャの中のサンプルに基づいて生成される。
通常、現在のブロックの予測ピクチャブロックは1つだけの参照ピクチャブロックに基づいて生成されてもよく、または、現在のブロックの予測ピクチャブロックは少なくとも2つの参照ピクチャブロックに基づいて生成されてもよい。1つの参照ピクチャブロックに基づいて現在のブロックの予測ピクチャブロックを生成することは単方向予測と呼ばれ、少なくとも2つの参照ピクチャブロックに基づいて現在のブロックの予測ピクチャブロックを生成することは双方向インター予測と呼ばれる。双方向インター予測における少なくとも2つの参照ピクチャブロックは、同じ参照ピクチャまたは異なる参照ピクチャからのものであり得る。言い換えると、本出願における「方向」は一般的な定義である。本出願における1つの方向は1つの参照ピクチャブロックに対応する。以下の第1の方向および第2の方向は、異なる参照ピクチャブロックに対応する。2つの参照ピクチャブロックが現在のブロックの前方参照ピクチャ/後方参照ピクチャに含まれてもよく、または、一方の参照ピクチャブロックが現在のブロックの前方参照ピクチャに含まれてもよく、他方の参照ピクチャブロックが現在のブロックの後方参照ピクチャに含まれてもよい。したがって、第1の方向および第2の方向は、異なる参照ブロックに対応し、異なる参照ピクチャにさらに対応し、異なる参照ピクチャリスト(たとえば、L0および/またはL1)にさらに対応することが理解され得る。第1の方向と第2の方向の両方が前方の方向もしくは後方の方向であってもよく、または、第1の方向および第2の方向がそれぞれ前方の方向および後方の方向であってもよく、またはそれぞれ後方の方向および前方の方向であってもよい。
任意選択で、双方向インター予測は、現在のビデオピクチャと、現在のビデオピクチャの前に符号化され再生されるビデオピクチャとの間の相関と、現在のビデオピクチャと、現在のビデオピクチャの前に符号化され現在のビデオピクチャの後に再生されるビデオピクチャとの間の相関とを使用することによって実行される、インター予測であり得る。
双方向インター予測は、前方インター予測および後方インター予測と通常は呼ばれる2つの方向におけるインター予測を含むことがわかり得る。前方インター予測は、現在のビデオピクチャと、現在のビデオピクチャの前に符号化され再生されるビデオピクチャとの間の相関を使用することによって実行される、インター予測であり得る。後方インター予測は、現在のビデオピクチャと、現在のビデオピクチャの前に符号化され現在のビデオピクチャの後に再生されるビデオピクチャとの間の相関を使用することによって実行される、インター予測であり得る。
前方インター予測は、L0(またはL1)などの前方参照ピクチャリストに対応し、後方インター予測は、L1(またはL0)などの後方参照ピクチャリストに対応する。2つの参照ピクチャリストは、同じ量の参照ピクチャまたは異なる量の参照ピクチャを含み得る。
動き補償(Motion Compensation, MC)は、参照ピクチャブロックを使用することによって現在のブロックを予測するプロセスである。
大半のコーディングフレームワークでは、ビデオシーケンスは一連のピクチャ(picture)を含み、ピクチャは少なくとも1つのスライス(slice)へと区分され、各スライスはピクチャブロック(block)へとさらに区分される。ビデオ符号化/復号はピクチャブロックによって実行される。符号化/復号は、ピクチャの左上の位置から、左から右へ、かつ上から下へ、行ごとに実行され得る。本明細書では、ピクチャブロックは、ビデオコーディング規格H.264におけるマクロブロック(macroblock, MB)であってもよく、または、高効率ビデオコーディング(High Efficiency Video Coding, HEVC)規格におけるコーディングユニット(Coding Unit, CU)であってもよい。これは本出願の実施形態では特に限定されない。
本出願では、符号化/復号されているピクチャブロックは現在のピクチャブロックまたは現在のブロック(current block)と呼ばれ、現在のブロックが位置するピクチャは現在のピクチャと呼ばれる。
通常、現在のピクチャは単方向予測ピクチャ(P picture)であってもよく、または双方向予測ピクチャ(Bピクチャ)であってもよい。現在のピクチャがPピクチャであるとき、現在のピクチャは1つの参照ピクチャリストを有する。現在のピクチャがBピクチャであるとき、現在のピクチャは2つの参照ピクチャリストを有し、2つのリストは通常L0およびL1と呼ばれる。各参照ピクチャリストは、現在のピクチャを再構築するために使用される少なくとも1つの参照ピクチャを含む。参照ピクチャは、現在のピクチャに対するインター予測のための参照サンプルを提供するために使用される。
現在のピクチャにおいて、現在のブロックの隣接するピクチャブロック(たとえば、現在のブロックの左側、上側、または右側の)は符号化/復号された可能性があり、再構築されたピクチャが取得される。隣接するピクチャブロックは再構築されたピクチャブロックと呼ばれる。コーディングモードおよび再構築されたピクチャブロックの再構築されたサンプルなどの情報が利用可能(available)である。
現在のピクチャが符号化/復号されるより前に符号化/復号されたピクチャは、再構築されたピクチャと呼ばれる。
動きベクトル(Motion Vector, MV)は、インター予測プロセスにおける重要なパラメータであり、現在のブロックに対する相対的な、符号化されたピクチャブロックの空間変位を表す。通常、動き探索などの動き推定(Motion Estimation, ME)方法が、動きベクトルを取得するために使用され得る。予備的なインター予測技術では、再構築されたブロックを取得するために、デコーダ側が現在のブロックの予測サンプルを再現するように、エンコーダ側がビットストリームにおいて現在のブロックの動きベクトルを送信する。符号化効率をさらに改善するために、参照動きベクトルを使用することによって動きベクトルを差分的に符号化すること、すなわち、動きベクトル差分(Motion Vector Difference, MVD)のみを符号化することがさらに提案される。
デコーダ側およびエンコーダ側が同じ参照ピクチャブロックを使用することを可能にするために、エンコーダ側は、ビットストリームを通じて各ピクチャブロックの動き情報をデコーダ側に送信する必要がある。エンコーダ側が各ピクチャブロックの動きベクトルを直接符号化する場合、大量の送信リソースが消費される。空間的に隣接するピクチャブロックの動きベクトルは強く相関しているので、現在のブロックの動きベクトルは、隣接する符号化されたピクチャブロックの動きベクトルに基づいて予測され得る。予測を通じて取得される動きベクトルはMVPと呼ばれ、現在のブロックの動きベクトルとMVPとの間の差はMVDと呼ばれる。
ビデオコーディング規格H.264では、予測の正確さを改善するために、動き推定プロセスにおいて多参照ピクチャ予測が使用される。具体的には、複数の再構築されたピクチャを記憶するバッファが作成され、バッファの中のすべての再構築されたピクチャが、時間的な冗長性をよりなくすために、動き補償のための最適な参照ピクチャブロックについて探索される。ビデオコーディング規格H.264において、参照ピクチャリスト0(reference list 0/L0)および参照ピクチャリスト1(reference list 1/L1)という2つのバッファがインター予測において使用される。各リストの中の最適な参照ブロックが位置する参照ピクチャは、インデックス値、すなわち、ref_idx_l0またはref_idx_l1によってマークされる。各参照ピクチャリストにおいて、参照ピクチャブロックの動き情報は、参照ピクチャインデックス値(ref_idx_l0またはref_idx_l1)、MVPフラグ(またはMVP)、およびMVDを含む。デコーダ側は、参照ピクチャインデックス値、MVPフラグ、およびMVDに基づいて、選択された参照ピクチャの中で正しい参照ピクチャブロックを見つけ得る。具体的な適用例では、参照ピクチャインデックス値、MVPフラグ(またはMVP)、および/またはMVDは、当業者により総称的に動き情報とも呼ばれ得ることを理解されたい。したがって、動き情報の具体的な意味は、具体的な適用シナリオを参照して解釈され説明される必要があり、概念の理解を制約するものではない。
現在、HEVC規格において頻繁に使用されるインター予測モードは、進化型動きベクトル予測(Advanced Motion Vector Prediction, AMVP)モード、マージ(Merge)モード、および非変換動きモデル予測モードである。
AMVPモードでは、エンコーダ側が、現在のブロックに空間的または時間的に隣り合う符号化されたピクチャブロックの動き情報を使用することによって動きベクトル候補リストを構築し、レート歪みコストに基づいて現在のブロックのMVPとして動きベクトル候補リストの中の最適な動きベクトルを決定する。加えて、エンコーダ側が、MVPを中心とする近隣において動き探索を実行して現在のブロックの動きベクトルを取得する。エンコーダ側が、動きベクトル候補リストの中のMVPのインデックス値(すなわち、MVPフラグ)、参照ピクチャインデックス値、およびMVDをデコーダ側に送信する。
マージモードでは、エンコーダ側が、現在のブロックに空間的または時間的に隣り合う符号化されたピクチャブロックの動き情報を使用することによって動き情報候補リストを構築し、レート歪みコストに基づいて現在のブロックの動き情報として動き情報候補リストの中の最適な動き情報を決定する。エンコーダ側が、動き情報候補リストにおける最適な動き情報の位置のインデックス値をデコーダ側に送信する。
非変換動きモデル予測モードでは、エンコーダ側およびデコーダ側が、同じ動きモデルを使用することによって現在のブロックのすべてのサブブロックの動き情報を導出し、すべてのサブブロックの動き情報に基づいて動き補償を実行して予測ピクチャブロックを取得する。これは予測効率を改善する。エンコーダ側およびデコーダ側によって頻繁に使用される動きモデルは、4パラメータアフィンモデル、6パラメータアフィン変換モデル、または8パラメータ双線形モデルである。
たとえば、4パラメータアフィン変換モデルは、現在のブロックの左上の角にあるサンプルに対する相対的な、2つのサンプルの動きベクトルおよび2つのサンプルの座標を使用することによって表され得る。本明細書では、動きモデルパラメータを表すために使用されるサンプルは制御点と呼ばれる。現在のブロックの左上の角(0,0)におけるサンプルおよび現在のブロックの右上の角(W,0)におけるサンプルが制御点であり、現在のブロックの左上の角および右上の角の動きベクトルがそれぞれ(vx0,vy0)および(vx1,vy1)である場合、現在のブロックの各サブブロックの動き情報が以下の式(1)に従って取得される。以下の式(1)において、(x,y)は現在のブロックの左上の角におけるサンプルに対する相対的なサブブロックの座標であり、(vx,vy)はサブブロックの動きベクトルであり、Wは現在のブロックの幅である。
たとえば、6パラメータアフィン変換モデルは、現在のブロックの左上の角にあるサンプルに対する相対的な、3つのサンプルの動きベクトルおよび3つのサンプルの座標を使用することによって表され得る。現在のブロックの左上の角(0,0)にあるサンプル、現在のブロックの右上の角(W,0)にあるサンプル、および現在のブロックの左下の角(0,H)にあるサンプルが制御点であり、現在のブロックの左上の角、右上の角、および左下の角の動きベクトルがそれぞれ(vx0,vy0)、(vx1,vy1)、および(vx2,vy2)である場合、現在のブロックの各サブブロックの動き情報は以下の式(2)に従って取得される。以下の式(2)において、(x,y)は現在のブロックの左上の角にあるサンプルに対する相対的なサブブロックの座標であり、(vx,vy)はサブブロックの動きベクトルであり、WおよびHはそれぞれ現在のブロックの幅および高さである。
たとえば、8パラメータ双線形モデルは、現在のブロックの左上の角にあるサンプルに対する相対的な、4つのサンプルの動きベクトルおよび4つのサンプルの座標を使用することによって表され得る。現在のブロックの左上の角(0,0)にあるサンプル、現在のブロックの右上の角(W,0)にあるサンプル、現在のブロックの左下の角(0,H)にあるサンプル、および現在のブロックの右下の角(W,H)にあるサンプルが制御点であり、現在のブロックの左上の角、右上の角、左下の角、および右下の角の動きベクトルがそれぞれ(vx0,vy0)、(vx1,vy1)、(vx2,vy2)、および(vx3,vy3)である場合、現在のブロックの各サブブロックの動き情報は以下の式(3)に従って取得される。以下の式(3)において、(x,y)は現在のブロックの左上の角にあるサンプルに対する相対的なサブブロックの座標であり、(vx,vy)はサブブロックの動きベクトルであり、WおよびHはそれぞれ現在のブロックの幅および高さである。
前述のインター予測モードのいずれにおいても、インター予測が双方向インター予測である場合、エンコーダ側が、各方向における各ピクチャブロックの動き情報をデコーダ側に送信する必要があることが容易にわかり得る。その結果、動き情報は、比較的な大量の送信リソースを占有する。これは、送信リソースの実効的な利用率、送信レート、およびコーディング圧縮効率を下げる。
前述の問題を解決するために、本出願は双方向インター予測方法を提供する。双方向インター予測では、エンコーダ側が、第1の方向における現在のブロックの動き情報をデコーダ側に送信し、第1の方向における現在のブロックの動き情報を受信した後、デコーダ側は、第1の方向における現在のブロックの動き情報に基づいて、第2の方向における現在のブロックの動き情報を計算する。このやり方では、現在のブロックの予測サンプルは、第1の方向における現在のブロックの動き情報および第2の方向における現在のブロックの動き情報に基づいて計算され得る。
本出願において提供される双方向インター予測方法は、双方向インター予測装置、ビデオコーディング装置、ビデオコーデック、またはビデオコーディング機能を有する別のデバイスによって実行され得る。
本出願において提供される双方向インター予測方法は、ビデオコーディングシステムに適用可能である。ビデオコーディングシステムにおいて、ビデオエンコーダおよびビデオデコーダは、本出願において提供される双方向インター予測方法の例に従って現在のブロックの動き情報を計算するように構成される。具体的には、第2の方向における現在のブロックの動き情報は、第1の方向における現在のブロックの動き情報に基づいて計算され得るので、現在のブロックの予測サンプルは、第1の方向における現在のブロックの動き情報および第2の方向における現在のブロックの動き情報に基づいて決定される。このやり方では、第1の方向における現在のブロックの動き情報しか、ビデオエンコーダとビデオデコーダとの間で送信される必要がない。これは、送信リソース利用率およびコーディング圧縮効率を実質的に改善する。
図1は、ビデオコーディングシステムの構造を示す。図1に示されるように、ビデオコーディングシステム1は、ソース装置10およびデスティネーション装置20を含む。ソース装置10は符号化されたビデオデータを生成する。ソース装置10は、ビデオ符号化装置またはビデオ符号化デバイスとも呼ばれ得る。デスティネーション装置20は、ソース装置10によって生成される符号化されたビデオデータを復号し得る。デスティネーション装置20は、ビデオ復号装置またはビデオ復号デバイスとも呼ばれ得る。ソース装置10および/またはデスティネーション装置20は、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに結合されるメモリとを含み得る。メモリは、限定はされないが、読取り専用メモリ(Read-Only Memory, ROM)、ランダムアクセスメモリ(Random Access Memory, RAM)、電気的消去可能プログラマブル読取り専用メモリ(Electrically Erasable Programmable Read-Only Memory, EEPROM)、フラッシュメモリ、または、コンピュータによってアクセスされ得る命令もしくはデータ構造の形で必要とされるプログラムコードを記憶するように構成され得る任意の他の媒体を含み得る。これは本出願では特に限定されない。
ソース装置10およびデスティネーション装置20は、デスクトップコンピュータ、モバイルコンピューティング装置、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、「スマート」フォンなどのハンドヘルド電話セット、テレビジョンセット、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車載コンピュータ、および同様の装置を含む、様々な装置を含み得る。
デスティネーション装置20は、リンク30を通じてソース装置10から符号化されたビデオデータを受信し得る。リンク30は、ソース装置10からデスティネーション装置20に符号化されたビデオデータを移すことができる1つまたは複数の媒体および/または装置を含み得る。ある例では、リンク30は、ソース装置10が符号化されたビデオデータをリアルタイムでデスティネーション装置20に直接送信することを可能にする、1つまたは複数の通信媒体を含み得る。この例では、ソース装置10は、通信規格(たとえば、ワイヤレス通信プロトコル)に従って符号化されたビデオデータを変調してもよく、変調されたビデオデータをデスティネーション装置20に送信してもよい。1つまたは複数の通信媒体は、ワイヤレスおよび/または有線通信媒体、たとえば、高周波(Radio Frequency, RF)スペクトルまたは1つまたは複数の物理送信線を含み得る。1つまたは複数の通信媒体は、パケットベースネットワーク(ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット))の一部であり得る。1つまたは複数の通信媒体は、ソース装置10とデスティネーション装置20との間の通信を実施する、ルータ、スイッチ、基地局、または別のデバイスを含み得る。
別の例では、符号化されたビデオデータは、出力インターフェース103を通じて記憶装置40に出力され得る。同様に、符号化されたビデオデータは、入力インターフェース203を通じて記憶装置40からアクセスされ得る。記憶装置40は、Blu-ray(登録商標)ディスク、高密度デジタルビデオディスク(Digital Video Disc, DVD)、コンパクトディスク読取り専用メモリ(Compact Disc Read-Only Memory, CD-ROM)、フラッシュメモリ、または、符号化されたビデオデータを記憶するように構成される別の適切なデジタル記憶媒体などの、複数のタイプのローカルにアクセス可能なデータ記憶媒体を含み得る。
別の例では、記憶装置40は、ソース装置10によって生成される符号化されたビデオデータを記憶する、ファイルサーバまたは別の中間記憶装置に対応し得る。この例では、デスティネーション装置20は、ストリーミング送信またはダウンロードを通じて、記憶装置40から記憶されているビデオデータを取得し得る。ファイルサーバは、符号化されたビデオデータを記憶して符号化されたビデオデータをデスティネーション装置20に送信することができる任意のタイプのサーバであり得る。たとえば、ファイルサーバは、ワールドワイドウェブ(World Wide Web, WWW)サーバ(たとえば、ウェブサイトのために使用される)、ファイル転送プロトコル(File Transfer Protocol, FTP)サーバ、ネットワークアタッチトストレージ(Network Attached Storage, NAS)装置、またはローカルディスクドライブを含み得る。
デスティネーション装置20は、任意の標準的なデータ接続(たとえば、インターネット接続)を通じて符号化されたビデオデータをアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするために使用され得るワイヤレスチャネルもしくは有線接続(たとえば、ケーブルモデム)、またはそれらの組合せを含む。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはこれらの組合せであり得る。
本出願における双方向インター予測方法は、ワイヤレス用途のシナリオには限定されない。たとえば、本出願における双方向インター予測方法は、以下の用途、すなわち、地上波テレビ放送、ケーブルテレビ送信、衛星テレビ送信、ストリーミングビデオ送信(たとえば、インターネットを通じた)、データ記憶媒体に記憶されているビデオデータの符号化、データ記憶媒体に記憶されているビデオデータの復号、または別の用途などの複数のマルチメディア用途をサポートするためのビデオコーディングにおいて使用され得る。いくつかの例では、ビデオコーディングシステム1は、ストリーミングビデオ送信、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話などの用途をサポートするために、単方向または双方向ビデオ送信をサポートするように構成され得る。
図1に示されるビデオコーディングシステム1は、ビデオコーディングシステムの例にすぎず、本出願におけるビデオコーディングシステムを限定しないことに留意されたい。本出願において提供される双方向インター予測方法は、符号化装置と復号装置との間にデータ通信がないシナリオにさらに適用可能である。他の例では、符号化されるべきビデオデータまたは符号化されたビデオデータは、ローカルメモリから取り出されてもよく、ネットワーク上でストリーミング方式で送信されてもよい、などである。ビデオ符号化装置は、符号化されるべきビデオデータを符号化し、符号化されたビデオデータをメモリに記憶し得る。ビデオ復号装置は、メモリから符号化されたビデオデータを取得し、符号化されたビデオデータを復号し得る。
図1において、ソース装置10は、ビデオソース101、ビデオエンコーダ102、および出力インターフェース103を含む。いくつかの例では、出力インターフェース103は、変調器/復調器(モデム)および/または送信機を含み得る。ビデオソース101は、ビデオキャプチャ装置(たとえば、カメラ)、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオ入力インターフェース、および/もしくはビデオデータを生成するためのコンピュータグラフィクスシステム、または前述のビデオデータソースの組合せを含み得る。
ビデオエンコーダ102は、ビデオソース101からのビデオデータを符号化し得る。いくつかの例では、ソース装置10は、出力インターフェース103を通じて、符号化されたビデオデータをデスティネーション装置20に直接送信する。他の例では、符号化されたビデオデータは、記憶装置40に代替的に記憶され得るので、デスティネーション装置20は、復号および/または再生のために符号化されたビデオデータに後でアクセスする。
図1の例では、デスティネーション装置20は、表示装置201、ビデオデコーダ202、および入力インターフェース203を含む。いくつかの例では、入力インターフェース203は受信機および/またはモデムを含む。入力インターフェース203は、リンク30を通じて、および/または記憶装置40から、符号化されたビデオデータを受信し得る。表示装置201は、デスティネーション装置20と統合されてもよく、またはデスティネーション装置20の外側に配設されてもよい。通常、表示装置201は復号されたビデオデータを表示する。表示装置201は、複数のタイプの表示装置、たとえば、液晶ディスプレイ、プラズマディスプレイ、有機発光ダイオードディスプレイ、または別のタイプの表示装置を含み得る。
任意選択で、ビデオエンコーダ102およびビデオデコーダ202はそれぞれ、オーディオエンコーダおよびオーディオデコーダと統合されてもよく、合成されたデータストリームまたは別個のデータストリームにおいてオーディオとビデオの両方を符号化するために、適切なマルチプレクサ-デマルチプレクサユニットまたは他のハードウェアおよびソフトウェアを含んでもよい。
ビデオエンコーダ102およびビデオデコーダ202は、少なくとも1つのマイクロプロセッサ、デジタルシグナルプロセッサ(Digital Signal Processor, DSP)、特定用途向け集積回路(Application-Specific Integrated Circuit, ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array, FPGA)、ディスクリート論理、ハードウェア、またはこれらの任意の組合せを含み得る。本出願において提供される双方向インター予測方法がソフトウェアを使用することによって実施される場合、ソフトウェアのために使用される命令は、適切な不揮発性コンピュータ可読記憶媒体に記憶されてもよく、少なくとも1つのプロセッサが、本出願を実装するようにハードウェアの中の命令を実行するために使用されてもよい。前述の内容(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)のいずれの1つも、少なくとも1つのプロセッサと見なされ得る。ビデオエンコーダ102はエンコーダに含まれてもよく、ビデオデコーダ202はデコーダに含まれてもよく、エンコーダまたはデコーダは対応する装置の中の合成されたエンコーダ/デコーダ(コーデック)の一部であってもよい。
本出願におけるビデオエンコーダ102およびビデオデコーダ202は、ビデオ圧縮規格(たとえば、HEVCまたはVVC)に従って動作を実行してもよく、または、別の産業規格に従って動作を実行してもよい。これは特に、本出願においては限定されない。
ビデオエンコーダ102は、第1の方向において現在のブロックの動き情報を決定し、第1の方向における現在のブロックの動き情報に基づいて第2の方向における現在のブロックの動き情報を計算するために、現在のブロックに対して双方向動き推定を実行するように構成される。このやり方では、ビデオエンコーダ102は、第1の方向における現在のブロックの動き情報および第2の方向における現在のブロックの動き情報に基づいて、現在のブロックの予測ピクチャブロックを決定する。さらに、ビデオエンコーダ102は、現在のブロックと現在のブロックの予測ピクチャブロックとの間の残差に対して変換および量子化などの操作を実行してビットストリームを生成し、ビットストリームをビデオデコーダ202に送信する。ビットストリームは、第1の方向における現在のブロックの動き情報と、第1の動き情報に基づいて第2の動き情報を決定することを示すために使用される指示情報とを含む。指示情報は、異なる識別子を使用することによって表され得る。指示情報を表すための方法については、後続の例の説明を参照されたい。
任意選択で、「ビデオエンコーダ102が第1の方向における現在のブロックの動き情報に基づいて第2の方向における現在のブロックの動き情報を計算する」方法は、ビデオエンコーダ102が第1の方向における現在のブロックの動きベクトルに基づいて第2の方向における現在のブロックの動きベクトルを決定する、または、ビデオエンコーダ102が第1の方向における現在のブロックの動きベクトル差分に基づいて第2の方向における現在のブロックの動きベクトル差分を決定し、第2の方向における現在のブロックの動きベクトル差分および第2の方向における現在のブロックの予測動きベクトルに基づいて第2の方向における現在のブロックの動きベクトルを決定するというものであり得る。
以下で図4を参照すると、ビデオデコーダ202は次のステップを実行するように構成され得る。
S400:第1の動き情報に基づいて第2の動き情報を決定すること、すなわち、一方の方向における動き情報を別の方向における動き情報に基づいて導出して計算することを示すために使用される指示情報を取得するために、ビットストリームを取得し、ビットストリームを構文解析し、第1の動き情報は第1の方向における現在のブロックの動き情報を含み、第2の動き情報は第2の方向における現在のブロックの動き情報を含み、第1の方向は第2の方向と異なる。
S401:第1の動き情報を取得する。
S402:取得された第1の動き情報に基づいて第2の動き情報を決定する。
S403:ビデオデコーダ202が、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定する。
「ビデオデコーダ202が第1の方向における現在のブロックの動き情報に基づいて第2の方向における現在のブロックの動き情報を計算する」方法は、ビデオデコーダ202が第1の方向における現在のブロックの動きベクトルに基づいて第2の方向における現在のブロックの動きベクトルを決定する、または、ビデオデコーダ202が第1の方向における現在のブロックの動きベクトル差分に基づいて第2の方向における現在のブロックの動きベクトル差分を決定し、第2の方向における現在のブロックの動きベクトル差分および第2の方向における現在のブロックの予測動きベクトルに基づいて第2の方向における現在のブロックの動きベクトルを決定するというものであり得る。
図2は、本出願の実施形態によるビデオエンコーダ102の概略構造図である。図2に示されるように、ビデオエンコーダ102は、後処理エンティティ41にビデオを出力するように構成される。後処理エンティティ41は、ビデオエンコーダ102からの符号化されたビデオデータを処理することが可能なビデオエンティティ、たとえば、媒体認識ネットワーク要素(MANE)または統合装置/編集装置の例を表す。いくつかの場合、後処理エンティティ41はネットワークエンティティの例であり得る。いくつかのビデオコーディングシステムでは、後処理エンティティ41およびビデオエンコーダ102は別々の装置のコンポーネントであり得るが、他の場合には、後処理エンティティ41に関して説明される機能は、ビデオエンコーダ102を含む同じ装置によって実装されてもよい。ある例では、後処理エンティティ41は、図1の記憶装置40の例である。
ビデオエンコーダ102は、第1の方向における現在のブロックの動き情報に基づいて第2の方向における現在のブロックの動き情報を導出して計算し、第1の方向における現在のブロックの動き情報および第2の方向における現在のブロックの動き情報に基づいて現在のブロックの予測ピクチャブロックをさらに決定して、双方向インター予測符号化を完了し得る。
図2に示されるように、ビデオエンコーダ102は、変換器301、量子化器302、エントロピーエンコーダ303、フィルタ306、メモリ307、予測処理ユニット308、および加算器312を含む。予測処理ユニット308は、イントラ予測器309およびインター予測器310を含む。ピクチャブロックを再構築するために、ビデオエンコーダ102は、逆量子化器304、逆変換器305、および加算器311をさらに含む。フィルタ306は、1つまたは複数のループフィルタ、たとえば、デブロッキングフィルタ、適応ループフィルタ、およびサンプル適応オフセットフィルタを表すものとして定められる。
メモリ307は、ビデオエンコーダ102のコンポーネントによって符号化されるビデオデータを記憶し得る。メモリ307に記憶されているビデオデータは、ビデオソース101から取得され得る。メモリ307は、イントラコーディングモードまたはインターコーディングモードでビデオデータを符号化するためにビデオエンコーダ102によって使用される参照ビデオデータを記憶する参照ピクチャメモリであり得る。メモリ307は、同期DRAM(synchronous DRAM, SDRAM)を含むランダムアクセスメモリ(dynamic RAM, DRAM)、磁気抵抗性RAM(magnetoresistive RAM, MRAM)、抵抗性RAM(resistive RAM, RRAM(登録商標))、または別のタイプのメモリ装置であり得る。
ビデオエンコーダ102は、ビデオデータを受信し、ビデオデータメモリにビデオデータを記憶する。区分ユニットはビデオデータをいくつかのピクチャブロックに区分し、これらのピクチャブロックはより小さいブロックにさらに区分され得る。たとえば、四分木構造または二分木構造に基づくピクチャブロック区分が実行される。区分は、スライス(slice)、タイル(tile)、または他のより大きい単位へと区分することをさらに含み得る。ビデオエンコーダ102は通常、符号化されるべきビデオスライスにおいてピクチャブロックを符号化するためのコンポーネントである。スライスは、複数のピクチャブロックに区分され得る(タイルと呼ばれるピクチャブロックセットへと区分され得る)。
予測処理ユニット308の中のイントラ予測器309は、空間的な冗長性をなくすために、現在のブロックと同じピクチャまたはスライスの中にある1つまたは複数の隣接するピクチャブロックに対して相対的に、現在のブロックに対するイントラ予測符号化を実行し得る。予測処理ユニット308の中のインター予測器310は、時間的な冗長性をなくすために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ピクチャブロックに対して相対的に、現在のブロックに対するインター予測符号化を実行し得る。
予測処理ユニット308は、取得されたイントラコーディングされたピクチャブロックおよびインターコーディングされたピクチャブロックを加算器312に提供して残差ブロックを生成し、残差ブロックを加算器311に提供して参照ピクチャとして使用されるコーディングブロックを再構築し得る。
予測処理ユニット308がインター予測およびイントラ予測を通じて現在のブロックの予測ピクチャブロックを生成した後で、ビデオエンコーダ102は、符号化されるべき現在のブロックから予測ピクチャブロックを差し引くことによって残差ピクチャブロックを生成する。加算器312は、この減算演算を実行する1つまたは複数のコンポーネントを表す。残差ブロックの中の残差ビデオデータは、1つまたは複数の変換ユニット(transform unit, TU)に含まれ、変換器301によって使用され得る。変換器301は、離散コサイン変換(discrete cosine transform, DCT)または概念的に同様の変換などの変換を通じて、残差ビデオデータを残差変換係数に変換する。変換器301は、サンプル値領域から変換領域、たとえば周波数領域に残差ビデオデータを変換し得る。
変換器301は、取得された変換係数を量子化器302に送信し得る。量子化器302は、ビットレートをさらに下げるために変換係数を量子化する。いくつかの例では、量子化器302は、量子化された変換係数を含む行列をさらに走査し得る。代替として、エントロピーエンコーダ303が走査を実行し得る。
量子化の後、エントロピーエンコーダ303は、量子化された変換係数に対してエントロピー符号化を実行する。たとえば、エントロピーエンコーダ303は、コンテキスト適応可変長コーディング(context-adaptive variable-length coding, CAVLC)、コンテキスト適応バイナリ算術コーディング(context-adaptive binary arithmetic coding, CABAC)、または別のエントロピーコーディング方法もしくは技術を実行し得る。エントロピーエンコーダ303がエントロピー符号化を実行した後、符号化されたビットストリームは、ビデオデコーダ202に送信され、または、ビデオデコーダ202による後の送信もしくは後の取り出しのためにアーカイブされ得る。エントロピーエンコーダ303は、符号化されるべき現在のブロックのシンタックス要素に対してエントロピー符号化をさらに実行し得る。
逆量子化器304および逆変換器305は、たとえば参照ピクチャの参照ブロックとして後で使用されることになるサンプル領域の中の残差ブロックを再構築するために、逆量子化および逆変換をそれぞれ実行する。加算器311は、インター予測器310またはイントラ予測器309によって生成される予測ピクチャブロックに再構築された残差ブロックを加算して、再構築されたピクチャブロックを生成する。ピクチャブロックの予測ピクチャブロックは、ピクチャブロックの参照ピクチャブロックに対して処理(補間など)を実行することによって取得され得る。
ビデオエンコーダ102の他の構造的な変形が、ビデオストリームを符号化するために使用され得ることを理解されたい。たとえば、一部のピクチャブロックまたはピクチャに対して、ビデオエンコーダ102は残差信号を直接量子化してもよく、それに対応して、変換器301および逆変換器305による処理は必要とされない。代替として、一部のピクチャブロックまたはピクチャに対して、ビデオエンコーダ102は残差データを生成せず、それに対応して、変換器301、量子化器302、逆量子化器304、および逆変換器305による処理は必要とされない。代替として、ビデオエンコーダ102は、フィルタ306による処理なしで、再構築されたピクチャブロックを参照ブロックとして直接記憶してもよい。代替として、ビデオエンコーダ102の中の量子化器302および逆量子化器304は組み合わせられてもよい。
図3は、本出願の実施形態によるビデオデコーダ202の概略構造図である。図3に示されるように、ビデオデコーダ202は、エントロピーデコーダ401、逆量子化器402、逆変換器403、フィルタ404、メモリ405、予測処理ユニット406、および加算器409を含む。予測処理ユニット406は、イントラ予測器407およびインター予測器408を含む。いくつかの例では、ビデオデコーダ202は、図2のビデオエンコーダ102に関して説明された符号化プロセスとは概ね逆の復号プロセスを実行し得る。
復号プロセスにおいて、ビデオデコーダ202はビデオエンコーダ102からビットストリームを受信する。ビデオデコーダ202は、ネットワークエンティティ42からビデオデータを受信してもよく、任意選択で、ビデオデータメモリ(図に示されない)にビデオデータをさらに記憶してもよい。ビデオデータメモリは、ビデオデコーダ202のコンポーネントによって復号されるべきビデオデータ、たとえば符号化されたビットストリームを記憶し得る。ビデオデータメモリに記憶されているビデオデータは、ビデオデータの有線ネットワーク通信もしくはワイヤレスネットワーク通信を通じて、または物理データ記憶媒体にアクセスすることによって、たとえば記憶装置40またはカメラなどのローカルビデオソースから取得され得る。ビデオデータメモリは図3に示されないが、ビデオデータメモリおよびメモリ405は、同じメモリであってもよく、または別々に配設されるメモリであってもよい。ビデオデータメモリおよびメモリ405は、複数のタイプのメモリ装置、たとえば、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗性RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または別のタイプのメモリ装置の任意の1つを各々含み得る。様々な例において、ビデオデータメモリは、ビデオデコーダ202の他のコンポーネントと一緒にチップへと統合されてもよく、またはそれらのコンポーネントに対して相対的にチップの外側に配設されてもよい。
ネットワークエンティティ42は、たとえば、サーバ、MANE、ビデオエディタ/クリッパ、または、上で説明された技術の1つまたは複数を実装するように構成される別の装置であり得る。ネットワークエンティティ42は、ビデオエンコーダ、たとえばビデオエンコーダ102を含んでもよく、または含まなくてもよい。ネットワークエンティティ42がビットストリームをビデオデコーダ202に送信する前に、ネットワークエンティティ42が、本出願において説明される技術の一部を実施し得る。いくつかのビデオ復号システムでは、ネットワークエンティティ42およびビデオデコーダ202は、別個の装置のコンポーネントであり得る。他の場合には、ネットワークエンティティ42に関して説明される機能は、ビデオデコーダ202を含む同じ装置によって実装され得る。いくつかの場合、ネットワークエンティティ42は、図1の記憶装置40の例であり得る。
ビデオデコーダ202のエントロピーデコーダ401は、ビットストリームに対してエントロピー復号を実行して、量子化された係数およびいくつかのシンタックス要素を生成する。エントロピーデコーダ401は、シンタックス要素をフィルタ404に転送する。ビデオデコーダ202は、ビデオスライスレベルおよび/またはピクチャブロックレベルで複数のシンタックス要素/1つのシンタックス要素を受信し得る。本出願では、ある例において、本明細書のシンタックス要素は、現在のブロックに関する指示情報を含んでもよく、指示情報は、第1の動き情報に基づいて第2の動き情報を決定することを示すために使用される。加えて、いくつかの例では、ビデオエンコーダ102は、第1の動き情報に基づいて第2の動き情報を決定すべきかどうかを示す特定のシンタックス要素を通知するための信号を送信し得る。
逆量子化器402は、ビットストリームにおいて提供されエントロピーデコーダ401によって復号される、量子化された変換係数に対して逆量子化を実行し、すなわち逆量子化する。逆量子化プロセスは、ビデオスライスの中の各ピクチャブロックに対してビデオエンコーダ102によって計算された量子化パラメータを使用することによって適用されるべき量子化の程度を決定することと、適用されるべき逆量子化の程度を同様に決定することとを含み得る。逆変換器403は、逆変換、たとえば逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、サンプル領域において残差ブロックを生成する。
予測処理ユニット406が現在のブロックまたは現在のブロックのサブブロックに対する予測ピクチャブロックを生成した後、ビデオデコーダ202は、逆変換器403からの残差ブロックと予測処理ユニット406によって生成される対応する予測ピクチャブロックとを加算して、再構築されたブロック、すなわち復号されたピクチャブロックを取得する。加算器409(これは再構築器409とも呼ばれる)は、この加算演算を実行するコンポーネントを表す。必要なとき、フィルタ(復号ループの中または後の)がサンプルを滑らかにするためにさらに使用されてもよく、またはビデオ品質が別の方式で改善されてもよい。フィルタ404は、1つまたは複数のループフィルタ、たとえばデブロッキングフィルタ、適応ループフィルタ(ALF)、およびサンプル適応オフセット(SAO)フィルタであり得る。
ビデオデコーダ202の他の構造的な変形が、ビットストリームを復号するために使用され得ることを理解されたい。たとえば、一部のピクチャブロックまたはピクチャに対して、ビデオデコーダ202のエントロピーデコーダ401は、復号を通じて量子化された係数を取得せず、それに対応して、逆量子化器402および逆変換器403による処理は必要とされない。たとえば、ビデオデコーダ202の中の逆量子化器402および逆変換器403は組み合わせられてもよい。
図1に示されるビデオコーディングシステム1、図2に示されるビデオエンコーダ102、および図3に示されるビデオデコーダ202を参照して、以下では、本出願において提供される双方向インター予測方法を詳しく説明する。
図4は、本出願の実施形態による双方向インター予測方法の概略フローチャートである。図4に示される方法は、双方向インター予測装置によって実行される。双方向インター予測装置は図1のビデオデコーダ202であり得る。図4は、双方向インター予測装置がビデオデコーダ202である例を使用することによって説明される。
図4に示されるように、本出願のこの実施形態における双方向インター予測方法は、以下のステップを含み得る。
S400:(ビデオデコーダ202)が取得されたビットストリームを構文解析し、指示情報を取得する。
任意選択で、ビデオデコーダ202は、ビットストリームを構文解析し、ビットストリームの中のシンタックス要素の値に基づいて、現在のピクチャの中の現在のブロックに対してインター予測を実行するために使用されるインター予測モードを決定し得る。インター予測モードが双方向インター予測モードであるとき、ビデオデコーダ202は指示情報を取得する。
ビデオデコーダ202は、ビデオエンコーダ102によって送信される符号化されたビットストリームを受信してもよく、または、記憶装置40から符号化されたビットストリームを取得してもよい。
任意選択で、本出願のこの実施形態におけるビデオデコーダ202は、シンタックス要素inter_pred_idcの値に基づいて、現在のピクチャの中の現在のブロックに対するインター予測を実行するために使用されるインター予測モードを決定する。上記の説明から、インター予測は単方向インター予測および双方向インター予測を含むことがわかり得る。任意選択で、シンタックス要素inter_pred_idcの値が0であるとき、ビデオデコーダ202は、現在のピクチャの中の現在のブロックに対してインター予測を実行するために使用されるインター予測モードが前方インター予測であることを決定し得る。シンタックス要素inter_pred_idcの値が1であるとき、ビデオデコーダ202は、現在のピクチャの中の現在のブロックに対してインター予測を実行するために使用されるインター予測モードが後方インター予測であることを決定し得る。シンタックス要素inter_pred_idcの値が2であるとき、ビデオデコーダ202は、現在のピクチャの中の現在のブロックに対してインター予測を実行するために使用されるインター予測モードが双方向インター予測であることを決定し得る。
任意選択で、シンタックス要素inter_pred_idcの値が2であると決定した後で、ビデオデコーダ202は、第1の動き情報に基づいて第2の動き情報を決定することを示すために使用される指示情報を取得する。第1の動き情報は第1の方向における現在のブロックの動き情報であり、第2の動き情報は第2の方向における現在のブロックの動き情報であり、第1の方向は第2の方向と異なる。
本出願におけるピクチャブロックは、ビデオ符号化もしくはビデオ復号を実行するための基本単位、たとえばコーディングユニット(Coding Unit, CU)であってもよく、または、予測動作を実行するための基本単位、たとえば予測ユニット(Prediction Unit, PU)であってもよい。これは本出願のこの実施形態では特に限定されない。
任意選択で、本出願のこの実施形態における現在のブロックは、少なくとも1つのサブブロックをさらに含み得る。それに対応して、第1の動き情報は、第1の方向における現在のブロックの少なくとも1つのサブブロックの各々の動き情報を含んでもよく、第2の動き情報は、第2の方向における現在のブロックの少なくとも1つのサブブロックの各々の動き情報を含んでもよく、第1の方向におけるサブブロックの動き情報に基づいて第2の方向におけるサブブロックの動き情報を決定することを示すために、指示情報が使用されてもよい。任意選択で、現在のブロックは代替的に、区分できないサブブロックであり得る。
ビデオデコーダ202は、以下の実装形態を含むが限定はされない、複数の方式で指示情報を取得し得る。
第1の実装形態では、ビデオデコーダ202が第1の識別子を構文解析する。第1の識別子の値が第1のあらかじめ設定された値であるとき、ビデオデコーダ202は、第1の動き情報を構文解析することを決定し、第1の動き情報に基づいて第2の動き情報を決定する。第1の識別子の値が第8のあらかじめ設定された値であるとき、ビデオデコーダ202はビットストリームを構文解析して第5の識別子を取得する。第5の識別子の値が第5のあらかじめ設定された値であるとき、ビデオデコーダ202は、第2の動き情報を構文解析することを決定し、第2の動き情報に基づいて第1の動き情報を計算する。第5の識別子の値が第9のあらかじめ設定された値であるとき、ビデオデコーダ202は、第1の動き情報および第2の動き情報を取得する。たとえば、第1のあらかじめ設定された値、第8のあらかじめ設定された値、第9のあらかじめ設定された値、および第5のあらかじめ設定された値が真を表すとき、第1のあらかじめ設定された値、第8のあらかじめ設定された値、第9のあらかじめ設定された値、および第5のあらかじめ設定された値は各々1であり得る。代替として、第1のあらかじめ設定された値、第8のあらかじめ設定された値、第9のあらかじめ設定された値、および第5のあらかじめ設定された値が真を表すとき、第1のあらかじめ設定された値、第8のあらかじめ設定された値、第9のあらかじめ設定された値、および第5のあらかじめ設定された値は各々0であり得る。これは本出願では限定されない。たとえば、第1のあらかじめ設定された値、第8のあらかじめ設定された値、第9のあらかじめ設定された値、および第5のあらかじめ設定された値は同じであってもよく、または異なっていてもよく、たとえば各々が0と1のいずれかであってもよい。これは本出願のこの実施形態では特に限定されない。具体的には、第1の識別子がまず取得される。第1の識別子が第1のあらかじめ設定された値であるとき、それは、第2の動き情報が第1の動き情報に基づいて決定され得ることを示す。第1の識別子が第8のあらかじめ設定された値である場合、それは第2の動き情報を第1の動き情報に基づいて決定できないことを示す。この場合、第5の識別子が取得される必要がある。第5の識別子が第5のあらかじめ設定された値であるとき、それは、第1の動き情報が第2の動き情報に基づいて決定され得ることを示す。第5の識別子が第9のあらかじめ設定された値である場合、それは、第1の動き情報および第2の動き情報が構文解析を通じて取得され得ることを示す。この場合、第1の動き情報および第2の動き情報を互いから導出することはできない。
たとえば、第1の識別子はmv_derived_flag_l0であってもよく、第5の識別子はmv_derived_flag_l1であってもよく、第1のあらかじめ設定された値と第5のあらかじめ設定された値の両方が1であってもよく、第8のあらかじめ設定された値と第9のあらかじめ設定された値の両方が0であってもよい。ビデオデコーダ202は、mv_derived_flag_l0をまず構文解析する。mv_derived_flag_l0の値が1であるとき、ビデオデコーダ202は、第1の動き情報を構文解析し、第1の動き情報に基づいて第2の動き情報を決定する。mv_derived_flag_l0の値が0であるとき、ビデオデコーダ202はmv_derived_flag_l1を構文解析する。mv_derived_flag_l1の値が1であるとき、ビデオデコーダ202は、第2の動き情報を構文解析し、第2の動き情報に基づいて第1の動き情報を計算する。mv_derived_flag_l0の値とmv_derived_flag_l1の値の両方が0であるとき、ビデオデコーダ202は、第1の動き情報および第2の動き情報を構文解析する。
本発明のこの実施形態における識別子および値は例にすぎず、識別子および値の多様性は網羅的ではなく、または本発明において限定されないことを理解されたい。
第2の実装形態では、ビデオデコーダ202が第2の識別子を構文解析する。第2の識別子の値が第2のあらかじめ設定された値であるとき、ビデオデコーダ202は、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算することを決定する。次いで、ビデオデコーダ202が第3の識別子を構文解析する。第3の識別子の値が第3のあらかじめ設定された値であるとき、ビデオデコーダ202は、第1の動き情報を構文解析することを決定し、第1の動き情報に基づいて第2の動き情報を決定する。言い換えると、ビデオデコーダ202は指示情報を取得する。第3の識別子の値が第6のあらかじめ設定された値であるとき、ビデオデコーダ202は、第2の動き情報を構文解析することを決定し、第2の動き情報に基づいて第1の動き情報を計算する。
具体的には、第2の識別子がまず取得される。第2の識別子が第2のあらかじめ設定された値であるとき、それは、ある動き情報が別の動き情報に基づいて導出され得ることを示す。さらに、第3の識別子が取得される。第3の識別子の値が第3のあらかじめ設定された値であるとき、それは、第2の動き情報が第1の動き情報に基づいて決定され得ることを示す。第3の識別子の値が第6のあらかじめ設定された値であるとき、それは、第1の動き情報が第2の動き情報に基づいて決定され得ることを示す。
たとえば、第2の識別子はderived_mv_flagであり、第3の識別子はderived_mv_directionであり、第3のあらかじめ設定された値は1であり、第6のあらかじめ設定された値は0である。ビデオデコーダ202は、derived_mv_flagをまず構文解析する。derived_mv_flagの値が1であるとき、ビデオデコーダ202は、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算することを決定する。derived_mv_flagの値が0であるとき、ビデオデコーダ202は、第1の動き情報および第2の動き情報を構文解析する。derived_mv_directionの値が1であるとき、ビデオデコーダ202は、第1の動き情報を構文解析し、第1の動き情報に基づいて第2の動き情報を決定する。derived_mv_directionの値が0であるとき、ビデオデコーダ202は、第2の動き情報を構文解析することを決定し、第2の動き情報に基づいて第1の動き情報を計算する。
第3の実装形態では、ビデオデコーダ202が第2の識別子を構文解析する。第2の識別子の値が第2のあらかじめ設定された値であるとき、ビデオデコーダ202は、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算することを決定する。次いで、ビデオデコーダ202が、あらかじめ設定された導出方向に基づいて、第1の動き情報を構文解析することを決定し、第1の動き情報に基づいて第2の動き情報を決定する。言い換えると、ビデオデコーダ202が指示情報を取得する。言い換えると、この実装形態では、「第1の動き情報に基づいて第2の動き情報を決定すること」があらかじめ設定される。第2の識別子の値が第7のあらかじめ設定された値であるとき、第1の動き情報および第2の動き情報が構文解析される。言い換えると、この場合、導出を通じて第1の動き情報および第2の動き情報を取得することはできない。
たとえば、第2の識別子はderived_mv_flagであり、第2のあらかじめ設定された値は1であり、第7のあらかじめ設定された値は0である。ビデオデコーダ202はderived_mv_flagを構文解析する。derived_mv_flagの値が1であるとき、ビデオデコーダ202は、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算することを決定する。さらに、ビデオデコーダ202は、第1の動き情報を構文解析することを決定し、第1の動き情報に基づいて第2の動き情報を決定する。derived_mv_flagの値が0であるとき、ビデオデコーダ202は、第1の動き情報および第2の動き情報を構文解析する。
第4の実装形態では、ビデオデコーダ202が第4の識別子(たとえば、mv_derived_flag_l0)を構文解析する。第4の識別子の値が第4のあらかじめ設定された値であるとき、ビデオデコーダ202は、動き情報導出アルゴリズムを使用することによって現在のブロックの動き情報を計算することを決定し、第1の参照ピクチャリストおよび第2の参照ピクチャリストに基づいて変数derived_ref_numを計算する。この変数は、第1の参照ピクチャおよび第2の参照ピクチャに基づいて形成され得る鏡写しの/線形の参照ピクチャペアの量を表す。参照ピクチャペアの量が1であるとき、ビデオデコーダ202は、参照ピクチャインデックス値を直接決定する。次いで、ビデオデコーダ202は、あらかじめ設定された導出方向に基づいて、第1の動き情報を構文解析することを決定し、第1の動き情報に基づいて第2の動き情報を決定する。第1の参照ピクチャリストは第1の方向における現在のブロックの参照ピクチャリストであり、第2の参照ピクチャリストは第2の方向における現在のブロックの参照ピクチャリストであり、第1の参照ピクチャは第1の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャは第2の方向における現在のブロックの参照ピクチャである。本出願のこの実施形態における参照ピクチャインデックス値は、対応する参照ピクチャリストにおける参照ピクチャの番号を指し得る。
たとえば、現在のピクチャのピクチャ順序カウント(POC, picture order count)は4であり、第1の参照ピクチャリストは{2,0}であり、第2の参照ピクチャリストは{6,7}である。第1の参照ピクチャリストにおいてピクチャ順序カウントが2である参照ピクチャ(これは第1の参照ピクチャとして理解され得る)および第2の参照ピクチャリストにおいてピクチャ順序カウントが6である参照ピクチャ(これは第2の参照ピクチャリストとして理解され得る)が、参照ピクチャペアを形成できると決定される(たとえば、以下の条件Bまたは条件Cに従って)と仮定される。したがって、第1の参照ピクチャリストにおける第1の参照ピクチャのインデックス値および第2の参照ピクチャリストにおける第2の参照ピクチャのインデックス値が0であることがわかり得る。具体的には、1つの参照ピクチャペアしかないとき、その参照ピクチャペアが標的参照ピクチャとして直接使用されてもよく、参照ピクチャリストにおける標的参照ピクチャに対応する位置のインデックスが、参照ピクチャのインデックスである。この場合、参照ピクチャのインデックス値は、構文解析を通じて取得される必要はない。
ある可能な特定の実装形態では、参照ピクチャリストの中の要素は、参照ピクチャのピクチャ順序カウントPOCを限定はされないが含む、いくつかの標識であり得る。1つのピクチャ順序カウントは、1つの特定の参照ピクチャおよび/または参照ピクチャリストにおけるその参照ピクチャの位置のインデックス、すなわち参照ピクチャインデックスに対応し得る。
ある可能な特定の実装形態では、参照ピクチャリストの中の要素はピクチャ(参照ピクチャ)であり得る。1つのピクチャは、1つの特定のPOCおよび参照ピクチャリストにおけるそのピクチャの位置のインデックス、すなわち参照ピクチャインデックスに対応し得る。
現在のピクチャのピクチャ順序カウントが4であり、第1の参照ピクチャリストが{2,0}であり、第2の参照ピクチャリストが{6,7}であり、第1の参照ピクチャリストにおいてピクチャ順序カウントが2である参照ピクチャ(これは第1の参照ピクチャとして理解され得る)および第2の参照ピクチャリストにおいてピクチャ順序カウントが6である参照ピクチャ(これは第2の参照ピクチャとして理解され得る)が参照ピクチャペアを形成でき、第1の参照ピクチャリストにおいてピクチャ順序カウントが0である参照ピクチャおよび第2の参照ピクチャリストにおいてピクチャ順序カウントが7である参照ピクチャも参照ピクチャペアを形成できることが、(以下の条件Bまたは条件Cに従って)決定されると仮定される。この場合、ビデオデコーダ202は、参照ピクチャインデックス値を構文解析する必要がある。言い換えると、参照ピクチャの複数のペアがあるとき、参照ピクチャのインデックス値は構文解析を通じて取得され得る。
さらに、インター予測モードが双方向インター予測モードであると決定するとき、ビデオデコーダ202は、現在のピクチャの特徴情報があらかじめ設定された条件(以下の条件A、B、C、D、および/またはEを含むが限定はされない)を満たすかどうかをさらに決定し得る。このやり方では、現在のピクチャの特徴情報があらかじめ設定された条件を満たすとき、ビデオデコーダ202は指示情報を取得する。言い換えると、S400の特定のプロセスは代替的に次の通りであり得る。ビデオデコーダ202が、インター予測モードが双方向インター予測モードであり現在のピクチャの特徴情報があらかじめ設定された条件を満たすと決定するとき、指示情報を取得する。
現在のピクチャの特徴情報は、限定はされないが、ピクチャ順序カウント(POC)、時間レベル識別子(Temporal Level ID, TID)、および/または参照ピクチャの量のうちの少なくとも1つを含み得る。ビデオデコーダ202によって取得されるビットストリームは、シーケンスパラメータセット(Sequence Parameter Set, SPS)、ピクチャパラメータセット(Picture Parameter Set, PPS)、スライスヘッダ(slice header)またはスライスセグメントヘッダ(slice segment header)、および符号化されたピクチャデータを含む。次いで、ビデオデコーダ202は、ビットストリームを構文解析して現在のピクチャの特徴情報を取得する。
任意選択で、あらかじめ設定された条件は次の条件のうちの少なくとも1つを含む。
条件A:現在のブロックが少なくとも2つの参照ピクチャを有する。
条件B:現在のピクチャのピクチャ順序カウント、第1の参照ピクチャのピクチャ順序カウント、および第2の参照ピクチャのピクチャ順序カウントが以下の式を満たす。
POC_Cur-POC_listX=POC_listY-POC_Cur
本明細書では、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、第1の参照ピクチャは第1の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャは第2の方向における現在のブロックの参照ピクチャであり、第1の参照ピクチャは第1の参照ピクチャリストの中にあってもよく、第2の参照ピクチャは第2の参照ピクチャリストの中にあってもよい。
条件C:現在のピクチャのピクチャ順序カウント、第1の参照ピクチャのピクチャ順序カウント、および第2の参照ピクチャのピクチャ順序カウントが以下の式を満たす。
(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0
本明細書では、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、第1の参照ピクチャは第1の方向における現在のブロックの参照ピクチャであり、第2の参照ピクチャは第2の方向における現在のブロックの参照ピクチャである。この式は、現在のピクチャのピクチャ順序カウントが第1の参照ピクチャのピクチャ順序カウントと第2の参照ピクチャのピクチャ順序カウントとの間にある必要があることを特に示していることが、明らかである。より具体的には、この式は、第1の参照ピクチャおよび第2の参照ピクチャの一方が時系列において現在のピクチャの前にあり、他方が時系列において現在のピクチャの後にあることを示し得る。
条件D:現在のピクチャのTIDがあらかじめ設定された値以上である。
本出願のこの実施形態におけるあらかじめ設定された条件は、あらかじめ設定されていてもよく、またはより高次の層のシンタックスにおいて、たとえば、SPS、PPS、スライスヘッダ(slice header)、またはスライスセグメントヘッダ(slice segment header)などのパラメータセットにおいて規定されてもよい。これは本出願のこの実施形態では特に限定されない。
条件E:現在のピクチャのmvd_l1_zero_flagが0である。
mvd_l1_zero_flagは、構文解析を通じてビデオデコーダ202によって得られるフラグビットである。mvd_l1_zero_flagが1であるとき、それは、リスト1のMVDが構文解析される必要がないことを示す(mvd_l1_zero_flag equal to 1 indicates that the mvd_coding(x0, y0, 1) syntax structure is not parsed and MvdL1[ x0 ][ y0 ][ compIdx ] is set equal to 0 for compIdx = 0..1. mvd_l1_zero_flag equal to 0 indicates that the mvd_coding(x0, y0, 1) syntax structure is parsed)。具体的には、第2の動きベクトル差分が0であることを示すために、mvd_l1_zero_flag=1が使用されてもよく、第2の動きベクトル差分が構文解析される必要があるか、または導出される必要があるかを示すために、mvd_l1_zero_flag=0が使用されてもよい。
具体的には、条件B(または条件C)に対して、ビデオデコーダ202は、第1の参照ピクチャリストおよび第2の参照ピクチャリストの各々から1つの参照ピクチャのピクチャ順序カウントを取得し、参照ピクチャの取得されたピクチャ順序カウントおよび現在のピクチャのピクチャ順序カウントが条件Bまたは条件Cを満たすかどうかを決定する。条件B(または条件C)が満たされるとき、指示情報が取得される。ビデオデコーダ202は、条件照合を実行するために、第1の参照ピクチャリストおよび第2の参照ピクチャリストの各々から任意の参照ピクチャを取得し得ることを理解されたい。
任意選択で、条件Aに対して、ビデオデコーダ202は、第1の方向における参照ピクチャインデックス値(SymRefIdxX)を0に設定し、第2の方向における参照ピクチャインデックス値(SymRefIdxY)を0に設定する。
任意選択で、条件Bに対して、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャ順序カウントより小さく現在のピクチャに最も近い参照ピクチャを求めて第1の参照ピクチャリストを検索し、その参照ピクチャまたはその参照ピクチャのピクチャ順序カウントはPOC_listXとして再び表され得る。そして、ビデオデコーダ202は、POC_Cur-POC_listX=POC_listY-POC_Curを満たす参照ピクチャを求めて第2の参照ピクチャリストを検索し、その参照ピクチャまたはその参照ピクチャのピクチャ順序カウントはPOC_listYとして再び表され得る。要件を満たす参照ピクチャPOC_listXおよびPOC_listYをこの検索方式で見つけることができる場合、第1の方向における参照ピクチャインデックス値(SymRefIdxX)は第1の参照ピクチャリストにおけるPOC_listXのインデックス値に設定され、第2の方向における参照ピクチャインデックス値(SymRefIdxY)は第2の参照ピクチャリストにおけるPOC_listYのインデックス値に設定される。任意選択で、要件を満たす参照ピクチャPOC_listXおよびPOC_listYを見つけることができない場合、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより大きく現在のピクチャに最も近い参照ピクチャPOC_listXをさらに検索し、ビデオデコーダ202は、POC_Cur-POC_listX=POC_listY-POC_Curを満たす参照ピクチャPOC_listYについて第2の参照ピクチャリストを検索する。要件を満たす参照ピクチャPOC_listXおよびPOC_listYをこの検索方式で見つけることができる場合、第1の方向における参照ピクチャインデックス値(SymRefIdxX)は第1の参照ピクチャリストにおけるPOC_listXのインデックス値に設定され、第2の方向における参照ピクチャインデックス値(SymRefIdxY)は第2の参照ピクチャリストにおけるPOC_listYのインデックス値に設定される。第1の方向が第1の参照ピクチャリストに対応してもよく、第2の方向が第2の参照ピクチャリストに対応してもよい。
任意選択で、条件Cなどの前述のあり得る条件に対して、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより小さく現在のピクチャに最も近い参照ピクチャを求めて第1の参照ピクチャリストを検索し、その参照ピクチャまたはその参照ピクチャのピクチャ順序カウントはPOC_listXとして再び表され得る。そして、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより大きく現在のピクチャに最も近い参照ピクチャを求めて第2の参照ピクチャリストを検索し、その参照ピクチャまたはその参照ピクチャのピクチャ順序カウントはPOC_listYとして再び表され得る。要件を満たす参照ピクチャPOC_listXおよびPOC_listYをこの検索方式で見つけることができる場合、第1の方向における参照ピクチャインデックス値(SymRefIdxX)は第1の参照ピクチャリストにおけるPOC_listXのインデックス値(これはPOCがPOC_listXである参照ピクチャにも対応し得る)に設定され、第2の方向における参照ピクチャインデックス値(SymRefIdxY)は第2の参照ピクチャリストにおけるPOC_listYのインデックス値(これはPOCがPOC_listYである参照ピクチャにも対応し得る)に設定される。任意選択で、要件を満たす参照ピクチャPOC_listXおよびPOC_listYを見つけることができない場合、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより大きく現在のピクチャに最も近い参照ピクチャPOC_listXをさらに検索し、ビデオデコーダ202は、ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより小さく現在のピクチャに最も近い参照ピクチャPOC_listYを求めて第2の参照ピクチャリストを検索する。要件を満たす参照ピクチャPOC_listXおよびPOC_listYをこの検索方式で見つけることができる場合、第1の方向における参照ピクチャインデックス値(SymRefIdxX)は第1の参照ピクチャリストにおけるPOC_listXのインデックス値に設定され、第2の方向における参照ピクチャインデックス値(SymRefIdxY)は第2の参照ピクチャリストにおけるPOC_listYの参照ピクチャインデックス値に設定される。第1の方向が第1の参照ピクチャリストに対応してもよく、第2の方向が第2の参照ピクチャリストに対応してもよく、その逆であってもよい。
ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより小さく現在のピクチャに最も近い参照ピクチャを求めて第1の参照ピクチャリスト(たとえば、L0)を検索することは、以下の表現を使用することによって構文的に表現され得る。
- DiffPicOrderCnt(currPic,RefPicList[0][i])>0,
- DiffPicOrderCnt(currPic,RefPicList[0][i])<DiffPicOrderCnt(currPic,RefPicList[0][RefIdxSymL0])
RefIdxSymL0はiに設定される。
第1の参照ピクチャリストにおいて、インデックスがRefIdxSymL0である参照ピクチャが、発見される参照ピクチャである。
ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより大きく現在のピクチャに最も近い参照ピクチャを求めて第2の参照ピクチャリスト(たとえば、L1)を検索することは、以下の表現を使用することによって構文的に表現され得る。
- DiffPicOrderCnt(currPic,RefPicList[1][i])<0,
- DiffPicOrderCnt(currPic,RefPicList[1][i])>DiffPicOrderCnt(currPic,RefPicList[1][RefIdxSymL1])
RefIdxSymL1はiに設定される。
第2の参照ピクチャリストにおいて、インデックスがRefIdxSymL1である参照ピクチャが、発見される参照ピクチャである。
ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより小さく現在のピクチャに最も近い参照ピクチャを求めて第2の参照ピクチャリスト(たとえば、L1)を検索することは、以下の表現を使用することによって構文的に表現され得る。
- DiffPicOrderCnt(currPic,RefPicList[1][i])>0,
- DiffPicOrderCnt(currPic,RefPicList[1][i])<DiffPicOrderCnt(currPic,RefPicList[1][RefIdxSymL1])
RefIdxSymL1はiに設定される。
第2の参照ピクチャリストにおいて、インデックスがRefIdxSymL1である参照ピクチャが、発見される参照ピクチャである。
ピクチャ順序カウントが現在のピクチャのピクチャ順序カウントより大きく現在のピクチャに最も近い参照ピクチャを求めて第1の参照ピクチャリスト(たとえば、L0)を検索することは、以下の表現を使用することによって構文的に表現され得る。
- DiffPicOrderCnt(currPic,RefPicList[0][i])<0,
- DiffPicOrderCnt(currPic,RefPicList[0][i])>DiffPicOrderCnt(currPic,RefPicList[0][RefIdxSymL0])
RefIdxSymL0はiに設定される。
第1の参照ピクチャリストにおいて、インデックスがRefIdxSymL0である参照ピクチャが、発見される参照ピクチャである。
結論として、参照ピクチャ(またはインデックス)を決定するためのポリシーが提供される。まず、L0が最も近い前方POCを伴う参照ピクチャ(またはインデックス)を求めて検索され、次いでL1が最も近い後方POCを伴う参照ピクチャ(またはインデックス)を求めて検索される。これらの参照ピクチャの一方が発見されず、またはこれらの参照ピクチャのいずれもが発見されない場合、まずL1が最も近い前方POCを伴う参照ピクチャ(またはインデックス)を求めて検索されてもよく、次いでL0が最も近い後方POCを伴う参照ピクチャ(またはインデックス)を求めて検索される。「前方」は、POCが現在のピクチャのPOCより小さいことを示してもよく、すなわち、特定の参照ピクチャが再生系列/表示系列において現在のピクチャの前にあることを示してもよく、「後方」は、POCが現在のピクチャのPOCより大きいことを示してもよく、すなわち、特定の参照ピクチャが再生系列/表示系列において現在のピクチャの後にあることを示してもよい。
本出願のこの実施形態では、インター予測モードが双方向インター予測モードであり、現在のピクチャの特徴情報があらかじめ設定された条件を満たすことが決定されるとき、「ビデオデコーダ202が指示情報を取得する」方法は、インター予測モードが双方向インター予測モードであると決定されるときに使用されるものと同じであり得る。
上記の説明に関して、表1は、インター予測モードが双方向インター予測モードであり現在のピクチャの特徴情報があらかじめ設定された条件を満たすと決定されるときに、第1の実装形態において指示情報を取得するためにビデオデコーダ202によって使用されるシンタックステーブルである。prediction_unit()は、予測ピクチャブロックのシンタックス構造であり、現在のブロックの中の各サブブロックの動き情報を決定するための方法を記述し得る。
表1において、x0およびy0は、現在のブロックの左上の角に対して相対的な、現在のブロックの中のサブブロックの水平座標オフセットおよび垂直座標オフセットをそれぞれ表し、nPbWは現在のブロックの幅を表し、nPbHは現在のブロックの高さを表す。inter_pred_idc[x0][y0]の値がPRED_L0であるとき、それは、現在のサブブロックに対するインター予測が前方予測であることを示す。inter_pred_idc[x0][y0]の値がPRED_L1であるとき、それは、現在のサブブロックに対するインター予測が後方予測であることを示す。inter_pred_idc[x0][y0]の値がPRED_BIであるとき、それは、現在のサブブロックに対するインター予測が双方向予測であることを示す。
双方向インター予測(すなわち、inter_pred_idc[x0][y0]==PRED_BI)に対して、あらかじめ設定された条件(複数の条件)が満たされる場合、mv_derived_flag_l0[x0][y0]が構文解析される。mv_derived_flag_l0の値が第1のあらかじめ設定された値ではない場合、mv_derived_flag_l1[x0][y0]が構文解析される。mv_derived_flag_l0の値が第1のあらかじめ設定された値であるとき、またはmv_derived_flag_l1[x0][y0]の値が第5のあらかじめ設定された値であるとき、現在のブロックのサブブロックの動き情報が決定される。具体的には、参照ピクチャインデックス値ref_idx_l0[x0][y0]、動きベクトル予測子フラグmvp_l0_flag[x0][y0]、および動きベクトル差分mvd_coding(x0,y0,0)が決定される。
表1
prediction_unit(x0,y0,nPbW,nPbH){
…
/* motion vector coding */
if(slice_type==B)
inter_pred_idc[x0][y0]
if(inter_pred_idc[x0][y0]==PRED_L0){
if(num_ref_idx_l0_active_minus1>0)
ref_idx_l0[x0][y0]
mvd_coding(x0,y0,0)
mvp_l0_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_L1){
if(num_ref_idx_l1_active_minus1>0)
ref_idx_l1[x0][y0]
mvd_coding(x0,y0,1)
mvp_l1_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_BI){
if(conditions){
mv_derived_flag_l0[x0][y0]
if(!mv_derived_flag_l0[x0][y0]){
mv_derived_flag_l1[x0][y0]
}
if(!mv_derived_flag_l0[x0][y0]){
if(num_ref_idx_l0_active_minus1>0)
ref_idx_l0[x0][y0]
mvd_coding(x0,y0,0)
mvp_l0_flag[x0][y0]
}
if(!mv_derived_flag_l1[x0][y0]){
if(num_ref_idx_l1_active_minus1>0)
ref_idx_l1[x0][y0]
mvd_coding(x0,y0,0)
mvp_l1_flag[x0][y0]
}
}
上記の説明に関して、表2は、インター予測モードが双方向インター予測モードであり現在のピクチャの特徴情報があらかじめ設定された条件を満たすことが決定されるときに、第3の実装形態において指示情報を取得するためにビデオデコーダ202によって使用されるシンタックステーブルである。
表2において、双方向インター予測(すなわち、inter_pred_idc[x0][y0]==PRED_BI)に対して、あらかじめ設定された条件(複数の条件)が満たされる場合、derived_mv_flag_l0[x0][y0]が構文解析される。derived_mv_flag[x0][y0]の値が第2のあらかじめ設定された値である場合、現在のブロックのサブブロックの動き情報が決定される。具体的には、参照ピクチャインデックス値ref_idx_lx[x0][y0]、動きベクトル予測子フラグmvp_lx_flag[x0][y0]、および動きベクトル差分mvd_coding(x0,y0,x)が決定される。
表2
prediction_unit(x0,y0,nPbW,nPbH){
…
/* motion vector coding */
if(slice_type==B)
inter_pred_idc[x0][y0]
if(inter_pred_idc[x0][y0]==PRED_L0){
if(num_ref_idx_l0_active_minus1>0)
ref_idx_l0[x0][y0]
mvd_coding(x0,y0,0)
mvp_l0_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_L1){
if(num_ref_idx_l1_active_minus1>0)
ref_idx_l1[x0][y0]
mvd_coding(x0,y0,1)
mvp_l1_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_BI){
if(conditions){
derived_mv_flag[x0][y0]
if(derived_mv_flag[x0][y0]){
if(num_ref_idx_lx_active_minus1>0)
ref_idx_lx[x0][y0]
mvd_coding(x0,y0,x)
mvp_lx_flag[x0][y0]
}else{
……
}
}
上記の説明に関して、表3は、インター予測モードが双方向インター予測モードであり現在のピクチャの特徴情報があらかじめ設定された条件を満たすことが決定されるときに、第4の実装形態において指示情報を取得するためにビデオデコーダ202によって使用されるシンタックステーブルである。
表3において、双方向インター予測(すなわち、inter_pred_idc[x0][y0]==PRED_BI)に対して、あらかじめ設定された条件(複数の条件)が満たされる場合、derived_mv_flag[x0][y0]が構文解析される。derived_mv_flag[x0][y0]の値が第4のあらかじめ設定された値である場合、derived_ref_numが決定され、derived_ref_numの値が1より大きいとき、現在のブロックのサブブロックの動き情報が決定される。具体的には、参照ピクチャインデックス値ref_idx_lx[x0][y0]、動きベクトル予測子フラグmvp_lx_flag[x0][y0]、および動きベクトル差分mvd_coding(x0,y0,x)が決定される。
表3
prediction_unit(x0,y0,nPbW,nPbH){
…
/* motion vector coding */
if(slice_type==B)
inter_pred_idc[x0][y0]
if(inter_pred_idc[x0][y0]==PRED_L0){
if(num_ref_idx_l0_active_minus1>0)
ref_idx_l0[x0][y0]
mvd_coding(x0,y0,0)
mvp_l0_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_L1){
if(num_ref_idx_l1_active_minus1>0)
ref_idx_l1[x0][y0]
mvd_coding(x0,y0,1)
mvp_l1_flag[x0][y0]
}
if(inter_pred_idc[x0][y0]==PRED_BI){
if(conditions){
derived_mv_flag[x0][y0]
if(derived_mv_flag[x0][y0]){
if(num_ref_idx_lx_active_minus1>0&&derived_ref_num>1)
ref_idx_lx[x0][y0]
mvd_coding(x0,y0,x)
mvp_lx_flag[x0][y0]
}else{
……
}
}
第1の識別子、第2の識別子、第3の識別子、および第4の識別子は、すべてあらかじめ設定されていてもよく、またはより高次の層のシンタックスにおいて、たとえば、SPS、PPS、スライスヘッダ(slice header)、もしくはスライスセグメントヘッダ(slice segment header)などのパラメータセットにおいて規定されてもよい。これは本出願のこの実施形態では特に限定されない。
ビデオデコーダ202は、インター予測モードが双方向インター予測モードであり現在のピクチャの特徴情報があらかじめ設定された条件を満たすと決定するとき、指示情報を取得する。これは、ビデオデコーダ202の復号レートを実質的に改善し、情報の冗長性を下げる。
S401:ビデオデコーダ202が第1の動き情報を取得する。
任意選択で、ビデオデコーダ202は、ビットストリームを構文解析して、第1の参照ピクチャのインデックス値、第1の動きベクトル予測子フラグ、および第1の動きベクトル差分を取得し、すなわち、第1の動き情報を取得する。第1の動きベクトル予測子フラグは、第1の予測動きベクトル候補リストにおける第1の予測動きベクトルのインデックス値を示すために使用され、第1の予測動きベクトルは第1の方向における現在のブロックの予測動きベクトルであり、第1の動きベクトル差分は第1の予測動きベクトルと第1の動きベクトルとの間の差分であり、第1の動きベクトルは第1の方向における現在のブロックの動きベクトルである。
任意選択で、参照ピクチャリストの中の第1の位置にある参照ピクチャは、通常は現在のピクチャに最も近いピクチャである。したがって、第1の参照ピクチャのインデックス値ref_lX_idxは0に直接設定され得る。
任意選択で、ビデオデコーダ202が、あらかじめ設定された条件BまたはCに従って、指示情報を取得すべきかどうかを決定するとき、ビデオデコーダ202は、第1の参照ピクチャのインデックス値ref_lX_idxを所定の値SymRefIdxXに設定し得る。たとえば、あらかじめ設定された条件BまたはCが満たされるとき、指示情報が取得されてもよく、第1の参照ピクチャのインデックス値ref_lX_idxが所定の値SymRefIdxXに設定されてもよい。Xは0または1であり得る。
任意選択で、第1の予測動きベクトル候補リストは、第1の参照ピクチャのインデックス値に基づいて構築される。具体的には、第1の予測動きベクトル候補リストを構築するプロセスにおいて、現在のブロックの近隣の復号されたピクチャブロックの動きベクトルが取得される。第1の参照ピクチャのピクチャ順序カウントは、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて決定される。近隣の復号されたピクチャブロックの参照ピクチャのピクチャ順序カウントが第1の参照ピクチャのピクチャ順序カウントと異なる場合、近隣の復号されたピクチャブロックの動きベクトルは、第1の参照ピクチャを指し示すためにスケーリングされることが必要であり、次いで、第1の予測動きベクトル候補リストに追加される。
表1から表3に示されるシンタックステーブルの各々において、ビデオデコーダ202は、第1の方向における現在のブロックのサブブロックの動き情報を決定する。
S402:ビデオデコーダ202が、第1の動き情報に基づいて第2の動き情報を決定する。
第1の実装形態において、第2の動き情報を決定するためにビデオデコーダ202によって使用される方法は次の通りである。ビデオデコーダ202は、第1の動き情報から第1の参照ピクチャのインデックス値(これは簡単にインデックスとも呼ばれ得る)を選択し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定し、あらかじめ設定された式に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第2の参照ピクチャのピクチャ順序カウントを計算し、第2の参照ピクチャのピクチャ順序カウントおよび第2の参照ピクチャリストに基づいて第2の参照ピクチャのインデックス値を決定し、第1の動き情報および第2の参照ピクチャのインデックスに基づいて第2の動き情報を決定する。
本明細書では、あらかじめ設定された式はPOC_listY=2*POC_Cur-POC_listXであり得る。POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表す。
たとえば、現在のピクチャのピクチャ順序カウントが4であり、第1の参照ピクチャのピクチャ順序カウントが2であり、第2の参照ピクチャリストが{6,8}であり、式POC_listY=2*POC_Cur-POC_listXに従って、第2の参照ピクチャのピクチャ順序カウントが6であると決定される場合、ビデオデコーダ202は、第2の参照ピクチャのインデックス値ref_lY_idxが0であることを決定する。
任意選択で、あらかじめ設定された式は代替として、(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0であり得る。第2の参照ピクチャリストの中の複数の参照ピクチャのピクチャ順序カウントがこの式を満たす場合、ビデオデコーダ202は、abs((POC_listY-POC_Cur)-(POC_Cur-POC_listX))が最小である参照ピクチャをまず選択し、次いで、abs(POC_listY-POC_Cur)が最小である参照ピクチャを選択し、第2の参照ピクチャのインデックス値を決定することに留意されたい。本明細書では、absは絶対値関数である。
たとえば、現在のピクチャのピクチャ順序カウントが4であり、第1の参照ピクチャのピクチャ順序カウントが2であり、第2の参照ピクチャリストが{5,7,8}であり、式(POC_Cur-POC_list)*(POC_listY-POC_Cur)>0に従って、第2の参照ピクチャのピクチャ順序カウントが5であることが決定される場合、ビデオデコーダ202は、第2の参照ピクチャのインデックス値ref_lY_idxが0であると決定する。
任意選択で、あらかじめ設定された式は代替として、POC_listX≠POC_listYであり得る。第2の参照ピクチャリストの中の複数の参照ピクチャのピクチャ順序カウントが式を満たす場合、ビデオデコーダ202は、abs((POC_listY-POC_Cur)-(POC_Cur-POC_listX))が最小である参照ピクチャをまず選択し、次いで、abs(POC_listY-POC_Cur)が最小である参照ピクチャを選択して、第2の参照ピクチャのインデックス値を決定することに留意されたい。本明細書では、absは絶対値関数である。
たとえば、現在のピクチャのピクチャ順序カウントが4であり、第1の参照ピクチャのピクチャ順序カウントが2であり、第2の参照ピクチャリストが{3,2,1,0}であり、式POC_listX≠POC_listYに従って、第2の参照ピクチャのピクチャ順序カウントが3であると決定される場合、ビデオデコーダ202は、第2の参照ピクチャのインデックス値ref_lY_idxが0であると決定する。
任意選択で、あらかじめ設定された式または条件は代替として、POC_listY0=2*POC_Cur-POC_listX、(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0、かつPOClistX≠POClistY0"であり得る。任意選択の事例は、3つの条件のすべてが満たされる必要があるというものである。この場合、第2の参照ピクチャのインデックス値を決定するためにビデオデコーダ202によって使用される方法は具体的に、式POC_listY0=2*POC_Cur-POC_listXに従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第1のピクチャ順序カウントを計算するステップであって、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listY0が第1のピクチャ順序カウントを表す、ステップ、ならびに、第2の参照ピクチャリストが第1のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第1のピクチャ順序カウントによって表される参照ピクチャの番号を決定するステップ、または、第2の参照ピクチャリストが第1のピクチャ順序カウントを含まないとき、(POC_Cur-POC_listX)*(POC_listY0'-POC_Cur)>0に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第2のピクチャ順序カウントを計算し、POC_listY0'が第2のピクチャ順序カウントを表し、第2の参照ピクチャリストが第2のピクチャ順序カウントを含むとき、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第2のピクチャ順序カウントによって表される参照ピクチャの番号を決定し、もしくは、第2の参照ピクチャリストが第2のピクチャ順序カウントを含まないとき、条件POC_listX≠POC_listY0"に従って、現在のピクチャのピクチャ順序カウントおよび第1の参照ピクチャのピクチャ順序カウントに基づいて第3のピクチャ順序カウントを計算し、POC_listY0"が第3のピクチャ順序カウントを表し、第2の参照ピクチャのインデックス値として、第2の参照ピクチャリストにおける第3のピクチャ順序カウントによって表される参照ピクチャの番号を決定するステップである。
任意選択で、参照ピクチャリストの中の第1の位置にある参照ピクチャは、通常は現在のピクチャに最も近いピクチャである。したがって、第2の参照ピクチャのインデックス値ref_lY_idxは直接0に設定され得る。0に設定することは、参照ピクチャリストの中の第1の位置を指し示すことを示す。
任意選択で、ビデオデコーダ202が、あらかじめ設定された条件BまたはCに従って、指示情報を取得すべきかどうかを決定するとき、ビデオデコーダ202は、第2の参照ピクチャのインデックス値ref_lY_idxを所定の値SymRefIdxYに設定し得る。たとえば、あらかじめ設定された条件BまたはCが満たされるとき、指示情報が取得されてもよく、第2の参照ピクチャのインデックス値ref_lY_idxが、所定の値SymRefIdxYに設定されてもよい。
第2の実装形態では、第2の動き情報を決定するためにビデオデコーダ202によって使用される方法は次の通りである。ビデオデコーダ202が、ビットストリームを構文解析して第2の参照ピクチャのインデックス値を取得し、第1の動き情報および第2の参照ピクチャのインデックス値に基づいて第2の動き情報を決定する。第2の参照ピクチャのインデックス値は、あらかじめ設定されていてもよく、または、SPS、PPS、スライスヘッダ(slice header)、またはスライスセグメントヘッダ(slice segment header)などのパラメータセットにおいて規定されてもよい。これは本出願のこの実施形態では特に限定されない。
第1の実装形態と第2の実装形態の両方において、ビデオデコーダ202は、第1の動き情報および第2の参照ピクチャのインデックス値に基づいて第2の動き情報を決定することがわかり得る。
任意選択で、ビデオデコーダ202は、第2の方向における現在のブロックのすべての動き情報を計算してもよく、または、第2の方向における現在のブロックの一部の動き情報を計算してもよい。
以下では、ビデオデコーダ202が第1の動き情報および第2の参照ピクチャのインデックス値に基づいて第2の動き情報を決定するプロセスを説明する。
任意選択で、「ビデオデコーダ202が第1の動き情報および第2の参照ピクチャのインデックス値に基づいて第2の動き情報を決定する」方法は、第1の動き情報の中の第1の参照ピクチャのインデックス値を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定するステップ、第1の動き情報の中の第1の動きベクトル差分および第1の動きベクトル予測子フラグに基づいて第1の動きベクトル(第1の方向における現在のブロックの動きベクトル)を決定するステップ、ならびに、以下の式に従って第2の動き情報における第2の動きベクトルを決定するステップであり得る。
本明細書では、mv_lYは第2の動きベクトルを表し、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、mv_lXは第1の動きベクトルを表し、第2の動きベクトルは第2の方向における現在のブロックの動きベクトルである。
ビデオデコーダ202は、エンコーダ側がAMVPモードまたはマージモードで動き情報候補リストを構築する方式と同じ方式で動き情報候補リストを構築し、第1の動きベクトル予測子フラグに基づいて動き情報候補リストの中の第1の予測動きベクトルを決定する。このやり方では、ビデオデコーダ202は、第1の予測動きベクトルと第1の動きベクトル差分の合計を、第1の動きベクトルとして決定し得る。
任意選択で、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり、第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または、第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャの現在のブロックの前方参照ピクチャであるとき、または第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、ビデオデコーダ202はmv_lY=-mv_lXに直接設定し得る。
任意選択で、ビデオデコーダ202は、前方参照ピクチャおよび後方参照ピクチャについての上記の状況を決定せず、mv_lY=-mv_lXに直接設定してもよい。
たとえば、「第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャである」ことと「第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0を使用することによって表されてもよく、または、式POC_listY=2*POC_Cur-POC_listXを使用することによって表されてもよい。言い換えると、両方の式が、第1の参照ピクチャと第2の参照ピクチャの一方が時系列において現在のピクチャの前にあり、他方が時系列において現在のピクチャの後にあることを示し得る。
「第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャである」ことと「第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャである」ことの両方が、式(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0を使用することによって表されてもよい。
任意選択で、「ビデオデコーダ202が第1の動き情報および第2の参照ピクチャのインデックス値に基づいて第2の動き情報を決定する」方法は、第1の動き情報の中にある第1の参照ピクチャのインデックス値および第1の動きベクトル差分を取得し、第1の参照ピクチャのインデックス値および第1の参照ピクチャリストに基づいて第1の参照ピクチャのピクチャ順序カウントを決定するステップ、第2の参照ピクチャのインデックス値を取得して、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて第2の参照ピクチャのピクチャ順序カウントを決定し、第2の参照ピクチャのインデックス値および第2の予測動きベクトル候補リストに基づいて第2の予測動きベクトルを決定するステップであって、第2の予測動きベクトルが第2の方向における現在のブロックの予測動きベクトルである、ステップ、以下の式に従って第2の動き情報の中の第2の動きベクトル差分を決定するステップであって、
mvd_lYが第2の動きベクトル差分を表し、POC_Curが現在のピクチャのピクチャ順序カウントを表し、POC_listXが第1の参照ピクチャのピクチャ順序カウントを表し、POC_listYが第2の参照ピクチャのピクチャ順序カウントを表し、mvd_lXが第1の動きベクトル差分を表す、ステップ、ならびに、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップであって、第2の動きベクトルが第2の方向における現在のブロックの動きベクトルである、ステップであり得る。
任意選択で、第2の予測動きベクトル候補リストは、第2の参照ピクチャのインデックス値に基づいて構築される。具体的には、第2の予測動きベクトル候補リストを構築するプロセスにおいて、現在のブロックの近隣の復号されたピクチャブロックの動きベクトルが取得される。第2の参照ピクチャのピクチャ順序カウントは、第2の参照ピクチャのインデックス値および第2の参照ピクチャリストに基づいて決定される。近隣の復号されたピクチャブロックの参照ピクチャのピクチャ順序カウントが第2の参照ピクチャのピクチャ順序カウントと異なる場合、近隣の復号されたピクチャブロックの動きベクトルは、第2の参照ピクチャを指し示すためにスケーリングされることが必要であり、次いで第2の予測動きベクトル候補リストに追加される。
任意選択で、第1の参照ピクチャが現在のブロックの前方参照ピクチャであり第2の参照ピクチャが現在のブロックの後方参照ピクチャであるとき、または第1の参照ピクチャが現在のブロックの後方参照ピクチャであり第2の参照ピクチャが現在のブロックの前方参照ピクチャであるとき、または第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの前方参照ピクチャであるとき、または第1の参照ピクチャおよび第2の参照ピクチャが各々現在のブロックの後方参照ピクチャであるとき、ビデオデコーダ202は、mvd_lY=-mvd_lXに直接設定し得る。たとえば、(POC_Cur-POC_listX)*(POC_listY-POC_Cur)>0、POC_listY=2*POC_Cur-POC_listX、または(POC_Cur-POC_listX)*(POC_listY-POC_Cur)<0である場合、ビデオデコーダ202はmvd_lY=-mvd_lXに直接設定する。
任意選択で、ビデオデコーダ202は、前方参照ピクチャおよび後方参照ピクチャについての上述の状況を決定せず、mvd_lY=-mvd_lXに直接設定してもよい。
mvd_lYが取得され、次いで、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルが決定され得る。この方法では、第2の動きベクトル差分の導出は、参照ピクチャのピクチャ順序カウントに関連しない。
結論として、本発明のこの実施形態では、第2の動きベクトルを第1の動きベクトルに基づいて導出することができ、または第2の動きベクトル差分を第1の動きベクトル差分に基づいて導出することができるので、第1の動きベクトルおよび第2の動きベクトルを取得することができる。動きベクトル予測子の取得と動きベクトルの計算の両方が従来技術に属し、本明細書では詳細は説明されないことを理解されたい。
S403:ビデオデコーダ202が、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルを決定する。
任意選択で、ビデオデコーダ202は、S402において第1の動きベクトルおよび第2の動きベクトルを決定する。このやり方では、ビデオデコーダ202は、第1の動きベクトル、第1の参照ピクチャのインデックス値、および第1の参照ピクチャリストに基づいて第1の参照ピクチャブロックを決定し、第2の動きベクトル、第2の参照ピクチャのインデックス値、および第2の参照ピクチャリストに基づいて第2の参照ピクチャブロックを決定し得る。さらに、ビデオデコーダ202は、第1の参照ピクチャブロックおよび第2の参照ピクチャブロックに基づいて現在のブロックの予測サンプルを決定する。言い換えると、ビデオデコーダ202は動き補償プロセスを完了する。
第1の参照ピクチャブロックおよび第2の参照ピクチャブロックに基づいて現在のブロックの予測サンプルを決定するためにビデオデコーダ202によって使用される方法については、あらゆる既存の方法を参照されたい。これは本出願のこの実施形態では特に限定されない。
本出願のこの実施形態において提供される双方向インター予測方法において、ビデオデコーダ202は、符号化されたビットストリームから第1の動き情報だけを取得し得る。第1の動き情報を取得した後で、ビデオデコーダ202は、第1の動き情報に基づいて第2の動き情報を計算し、第1の動き情報および第2の動き情報に基づいて現在のブロックの予測サンプルをさらに決定する。従来技術の方法と比較すると、本出願において提供される方法では、もはや、すべての方向のすべてのピクチャブロックの動き情報が送信される必要はない。これは、送信される動き情報の量を実質的に減らし、送信リソースの実効的な利用率、送信レート、およびコーディング圧縮効率を改善する。
図4に示される双方向インター予測方法は、現在のブロックについて説明され、すなわち、AMVPモードに基づいて現在のブロックに対してインター予測を実行するものとして理解され得る。
本出願において提供される双方向インター予測方法は、非変換動きモデル予測モード、たとえば、4パラメータアフィン変換動きモデル、6パラメータアフィン変換動きモデル、または8パラメータ双線形動きモデルにも適用可能であることを理解することは容易である。このシナリオでは、現在のブロックは少なくとも1つのサブブロックを含み、現在のブロックの動き情報は現在のブロックのすべてのサブブロックの各々の動き情報を含む。各サブブロックの動き情報(第1の方向における動き情報および第2の方向における動き情報)を決定するためにビデオデコーダ202によって使用される方法は、現在のブロックの動き情報を決定するためにビデオデコーダ202によって使用される方法と同様である。
非変換動きモデル予測モードにおいて、ビデオデコーダ202は、以下の式に従って、第1の方向における第iの制御点の動きベクトルに基づいて、第2の方向における第iの制御点の動きベクトルを計算する。
この式では、mvi_lYは第2の方向における第iの制御点の動きベクトルを表し、mvi_lXは第1の方向における第iの制御点の動きベクトルを表し、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表す。
それに対応して、ビデオデコーダ202は、以下の式に従って、第1の方向における第iの制御点の動きベクトル差分に基づいて、第2の方向における第iの制御点の動きベクトル差分を計算する。
この式では、mvdi_lYは第2の方向における第iの制御点の動きベクトル差分を表し、mvdi_lXは第1方向における第iの制御点の動きベクトル差分を表し、POC_Curは現在のピクチャのピクチャ順序カウントを表し、POC_listYは第2の参照ピクチャのピクチャ順序カウントを表し、POC_listXは第1の参照ピクチャのピクチャ順序カウントを表す。
ビデオデコーダ202に対応して、本出願のこの実施形態では、ビデオエンコーダ102は、現在のブロックに対して双方向動き推定を実行して、第1の方向における現在のブロックの動き情報を決定し、第1の方向における現在のブロックの動き情報に基づいて、第2の方向における現在のブロックの動き情報を計算する。このやり方では、ビデオエンコーダ102は、第1の方向における現在のブロックの動き情報および第2の方向における現在のブロックの動き情報に基づいて、現在のブロックの予測ピクチャブロックを決定する。次いで、ビデオエンコーダ102は、現在のブロックと現在のブロックの予測ピクチャブロックとの間の残差に対して変換および量子化などの操作を実行してビットストリームを生成し、ビットストリームをビデオデコーダ202に送信する。ビットストリームは、第1の方向における現在のブロックの動き情報を含む。さらに、ビットストリームは、第1の方向における動き情報に基づいて第2の方向における動き情報を計算することを示すために使用される、指示情報を含み得る。
「ビデオエンコーダ102が第1の方向における現在のブロックの動き情報に基づいて第2の方向における現在のブロックの動き情報を計算する」方法については、「ビデオデコーダ202が第1の動き情報に基づいて第2の動き情報を決定する」上記の方法、すなわち、S402の説明を参照されたい。本出願では詳細は説明されない。
上で説明された内容に従って、本発明における双方向インター予測方法を得ることができる。図5Aを参照すると、方法は以下のステップを含む。
S500:ビットストリームから第1の識別子を取得し、第1の識別子の値が第1のあらかじめ設定された値(1または0を含むが限定はされない)である。
第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定すること、および、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを示すために使用され得る。
この場合、デコーダは、ビットストリームを構文解析することなく参照ピクチャインデックスを取得することができ、参照ピクチャインデックスが、ビットストリームにおいて送信される必要もない。S500はS501の前に起こり得ることを理解されたい。いくつかの例では、S500はS501の必須の条件として使用されなくてもよい。これは本発明では限定されない。
S501:第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定し、参照ピクチャインデックスi1に対応するPOCは現在のピクチャのPOCより小さく、現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差は、現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixは第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCは現在のピクチャのPOCより小さい。具体的には、参照ピクチャインデックスi1に対応するPOCは、第1の参照ピクチャリストの中にあるすべてのPOCの中で、現在のピクチャのPOCに最も近く現在のピクチャのPOCより小さいPOCである。
例は次の通りである。
例A:
現在のブロックが位置する現在のピクチャのPOCが8であり、現在のピクチャが2つの参照ピクチャリスト、L0{2,3,5,6}(ここで2、3、5、および6はL0における参照ピクチャのPOCを表し得る)およびL1{9,10,11}(ここで9、10、および11はL1における参照ピクチャのPOCを表し得る)を有する。
L0について、2、3、5、および6はすべて8より小さいが、6は2、3、および5より8に近い。L0における6に対応する参照ピクチャのインデックスは3(すなわち、リストの中の4番目の要素)である。したがって、i1=3である。
例B:
現在のブロックが位置する現在のピクチャのPOCが7であり、現在のピクチャが2つの参照ピクチャリスト、L0{9,10,12}(ここで9、10、および12はL0における参照ピクチャのPOCを表し得る)およびL1{2,4,5}(ここで2、4、および5はL1における参照ピクチャのPOCを表し得る)を有する。
任意選択で、7未満のPOCがL0において発見されない。この場合、7より小さく7に最も近いPOCを求めてL1が検索されてもよく、7より大きく7に最も近いPOCを求めてL0が検索される(詳しくは、S502の実施例Bを参照されたい)。
L1について、2、4、および5はすべて7より小さいが、5は2および4より7に近い。L0における5に対応する参照ピクチャのインデックスは2(すなわち、リストの中の3番目の要素)である。したがって、i1=2である。
例C:
現在のブロックが位置する現在のピクチャのPOCが7であり、現在のピクチャが2つの参照ピクチャリスト、L0{2,4,5,8}(ここで2、4、5、および8はL0における参照ピクチャのPOCを表し得る)およびL1{6,9,10}(ここで6、9、および10はL1における参照ピクチャのPOCを表し得る)を有する。
L0について、2、4、および5はすべて7より小さいが、5は2および4より7に近い。L0における5に対応する参照ピクチャのインデックスは2(すなわち、リストの中の3番目の要素)である。したがって、i1=2である。
S502:第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定し、参照ピクチャインデックスi2に対応するPOCは現在のピクチャのPOCより大きく、現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差は、現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyは第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCは現在のピクチャのPOCより大きい。具体的には、参照ピクチャインデックスi2に対応するPOCは、第2の参照ピクチャリストの中にあるすべてのPOCの中で、現在のピクチャのPOCに最も近く現在のピクチャのPOCより大きいPOCである。
S501における参照ピクチャリストがまだ例として使用される。
例A:
L1について、9、10、および11はすべて8より大きいが、9は10および11より8に近い。L1における9に対応する参照ピクチャのインデックスは0(すなわち、リストの中の1番目の要素)である。したがって、i2=0である。
例B:
L0について、9、10、および12はすべて7より大きいが、9は10および12より7に近い。L0における9に対応する参照ピクチャのインデックスは0(すなわち、リストの中の1番目の要素)である。したがって、i2=0である。
例C:
現在のブロックが位置する現在のピクチャのPOCが7であり、現在のピクチャが2つの参照ピクチャリスト、L0{2,4,5,8}(ここで2、4、5、および8はL0における参照ピクチャのPOCを表し得る)およびL1{6,9,10}(ここで6、9、および10はL1における参照ピクチャのPOCを表し得る)を有する。
L1について、9および10はともに7より大きいが、9は10より7に近い。L1における9に対応する参照ピクチャのインデックスは1(すなわち、リストの中の2番目の要素)である。したがって、i2=1である。
S501およびS502を実行する順序は本出願では限定されず、図面における時系列の関係は例にすぎないことを理解されたい。
ある可能な特定の実装形態では、参照ピクチャリストの中の要素は、限定はされないが参照ピクチャのピクチャ順序カウントPOCを含む、何らかの標識であり得ることを理解されたい。1つのピクチャ順序カウントは、1つの特定の参照ピクチャ、および/または参照ピクチャリストにおける参照ピクチャの位置のインデックス、すなわち参照ピクチャインデックスに対応し得る。ある可能な特定の実装形態では、参照ピクチャリストの中の要素はピクチャ(参照ピクチャ)であり得る。1つのピクチャは、1つの特定のPOCおよび参照ピクチャリストにおけるピクチャの位置のインデックス、すなわち参照ピクチャインデックスに対応し得る。
S501およびS502は、現在のブロックの参照ピクチャインデックスを決定するための方法を提供することを理解されたい。具体的には、ビットストリームは構文解析される必要はないが、現在のブロックの参照ピクチャインデックスは何らかの制約条件に従って決定される。本発明において提供される制約条件は説明のための例にすぎず、限定するものではない。ある特定の実装プロセスにおいて、様々な制約条件があってもよく、またはさらに他の制約条件、たとえば、本発明において網羅的に列挙されない、標準的な進化における何らかの制約条件があってもよい。
L0およびL1の順序は限定するものではなく、すなわち、第1の参照ピクチャリストと第2の参照ピクチャリストとの間の順序関係は限定するものではないことを理解されたい。第1の参照ピクチャリストは第1の方向に対応してもよく、第2の参照ピクチャリストは第2の方向に対応してもよい。第1の方向および第2の方向はそれぞれ、前方の方向および後方の方向であってもよく、または後方の方向および前方の方向であってもよく、または第1の方向と第2の方向の両方が前方の方向もしくは後方の方向であってもよい。方向は時系列として理解されてもよく、本発明では限定されない。
本発明は、参照ピクチャ(またはインデックス)を決定するためのポリシーをさらに提供する。まず、最も近い前方のPOCを伴う参照ピクチャ(または参照ピクチャインデックスi1)についてL0が検索され、次いで、最も近い後方のPOCを伴う参照ピクチャ(または参照ピクチャインデックスi2)についてL1が検索される。参照ピクチャの一方が発見されない場合、または参照ピクチャのいずれもが発見されない場合、まず、最も近い前方のPOCを伴う参照ピクチャ(または参照ピクチャインデックスi2)についてL1が検索されてもよく、次いで、最も近い後方のPOCを伴う参照ピクチャ(または参照ピクチャインデックスi1)についてL0が検索される。
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスは、現在のブロックの最適な参照ブロックが位置する参照ピクチャ、すなわち、ref_idx_l0およびref_idx_l1、またはref_idx_l1およびref_idx_l0に対応する。
任意選択で、別の実装形態については、S400の参照ピクチャインデックス決定方法を参照されたい。ここでは詳細は再び説明されない。
S503:第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測し、現在のピクチャは現在のブロックを含む。
任意選択で、方法は、
第1の予測動きベクトルおよび第2の予測動きベクトルを取得するステップと、
第1の予測動きベクトルおよび第1の動きベクトル差分に基づいて第1の動きベクトルを決定するステップと、
第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するステップとをさらに含む。
それに対応して、第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するステップは、第1の参照ピクチャインデックス、第2の参照ピクチャインデックス、第1の参照ピクチャリスト、第2の参照ピクチャリスト、第1の動きベクトル、および第2の動きベクトルに基づいて現在のブロックを予測するステップを含み得る。このステップにおいて、従来技術の一般的な予測方法が使用され得る。
ある考えられる実装形態では、第1の識別子が第1のあらかじめ設定された値であるとき、現在のブロックの第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を決定することを示すために、第1の識別子がさらに使用される。この場合、第2の動きベクトル差分は第1の動きベクトル差分に基づいて導出されてもよく、第2の動きベクトル差分がビットストリームにおいて送信される必要はなく、それによりビットストリームが減る。この場合、現在のブロックの第1の動きベクトル差分がまず取得されてもよく、現在のブロックの第2の動きベクトル差分は、以下の式に従って第1の動きベクトル差分に基づいて取得される。
mvd_lY=-mvd_lX
本明細書では、mvd_lYは第2の動きベクトル差分を表し、mvd_lXは第1の動きベクトル差分を表し、第1の動きベクトル差分および第2の動きベクトル差分の一方が第1の参照ピクチャリストに対応する動き情報に属し、第1の動きベクトル差分および第2の動きベクトル差分の他方が第2の参照ピクチャリストに対応する動き情報に属する。
結論として、本出願において提供される双方向インター予測方法によれば、双方向インター予測の間、すべての方向におけるすべてのピクチャブロックの動き情報が送信される必要はなく、特定の方向における動き情報だけが送信される必要がある。これは、送信される動き情報の量を実質的に減らし、送信リソースの実効的な利用率、送信レート、およびコーディング圧縮効率を改善する。
本出願の実施形態は双方向インター予測装置を提供する。双方向インター予測装置はビデオデコーダであり得る。具体的には、双方向インター予測装置は、前述の双方向インター予測方法においてビデオデコーダ202によって実行されるステップを実行するように構成される。本出願のこの実施形態において提供される双方向インター予測装置は、対応するステップのためのモジュールを含み得る。
本出願の実施形態では、双方向インター予測装置は、前述の方法の例に基づいて機能モジュールへと分割され得る。たとえば、各機能モジュールは、対応する機能に基づく分割を通じて取得されてもよく、または2つ以上の機能が1つの処理モジュールへと統合されてもよい。統合されたモジュールは、ハードウェアの形で実装されてもよく、または、ソフトウェア機能モジュールの形で実装されてもよい。本出願の実施形態では、モジュールへの分割は例であり、論理的な機能の分割にすぎない。実際の実装形態では、別の分割方式があり得る。
各機能モジュールが対応する機能に基づく分割を通じて取得されるとき、図5Bは、前述の実施形態における双方向インター予測装置の考えられる概略構造図である。図5Bに示されるように、双方向インター予測装置5は、取得ユニット50および決定ユニット51を含む。
取得ユニット50は、前述の実施形態におけるS400、S401など、および/または本明細書で説明される技術の別のプロセスを実行する際に、双方向インター予測装置を支援するように構成される。
決定ユニット51は、前述の実施形態におけるS402、S403など、および/または本明細書で説明される技術の別のプロセスを実行する際に、双方向インター予測装置を支援するように構成される。
前述の方法の実施形態におけるステップのすべての関連する内容が対応する機能モジュールの機能の説明において記載され得るので、詳細はここでは再び説明されない。
当然、本出願のこの実施形態において提供される双方向インター予測装置は、前述のモジュールを含むが限定はされない。たとえば、双方向インター予測装置は、記憶ユニット52をさらに含み得る。
記憶ユニット52は、双方向インター予測装置のプログラムコードおよびデータを記憶するように構成され得る。
図5Aの方法に対応して、ある任意選択の例では、本発明は、双方向インター予測装置5000をさらに提供し得る。図5Cを参照すると、装置は、
第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定するように構成される、決定ユニット5002であって、参照ピクチャインデックスi1に対応するPOCが現在のピクチャのPOCより小さく、現在のピクチャのPOCから参照ピクチャインデックスi1に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスixに対応するPOCを差し引くことによって得られる差より小さく、参照ピクチャインデックスixが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi1以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスixに対応するPOCが現在のピクチャのPOCより小さく、
決定ユニット5002が、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定するようにさらに構成され、参照ピクチャインデックスi2に対応するPOCが現在のピクチャのPOCより大きく、現在のピクチャのPOCから参照ピクチャインデックスi2に対応するPOCを差し引くことによって得られる差が現在のピクチャのPOCから参照ピクチャインデックスiyに対応するPOCを差し引くことによって得られる差より大きく、参照ピクチャインデックスiyが第1の参照ピクチャリストの参照ピクチャインデックスの中の参照ピクチャインデックスi2以外の任意の参照ピクチャインデックスであり、参照ピクチャインデックスiyに対応するPOCが現在のピクチャのPOCより大きい、決定ユニット5002と、
第1の参照ピクチャインデックスおよび第2の参照ピクチャインデックスに基づいて現在のブロックを予測するように構成され、現在のピクチャが現在のブロックを含む、インター予測処理ユニット5003とを含む。
任意選択で、装置は、第1の識別子を取得するように構成される取得ユニット5001をさらに含み、第1の識別子の値は第1のあらかじめ設定された値であり、第1の識別子の値が第1のあらかじめ設定された値であるとき、第1の識別子は、第1の参照ピクチャリストの参照ピクチャインデックスi1を、現在のブロックに対応する、第1の参照ピクチャリストの第1の参照ピクチャインデックスとして決定すること、および、第2の参照ピクチャリストの参照ピクチャインデックスi2を、現在のブロックに対応する、第2の参照ピクチャリストの第2の参照ピクチャインデックスとして決定することを示すために使用される。
任意選択で、第1の識別子が第1のあらかじめ設定された値であるとき、第1の識別子は、現在のブロックの第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を決定することを示すためにさらに使用され、取得ユニットは、現在のブロックの第1の動きベクトル差分を取得するようにさらに構成され、決定ユニットは、以下の式に従って第1の動きベクトル差分に基づいて現在のブロックの第2の動きベクトル差分を取得するようにさらに構成される。
mvd_lY=-mvd_lX
本明細書では、mvd_lYは第2の動きベクトル差分を表し、mvd_lXは第1の動きベクトル差分を表し、第1の動きベクトル差分と第2の動きベクトル差分の一方が第1の参照ピクチャリストに対応し、第1の動きベクトル差分と第2の動きベクトル差分の他方が第2の参照ピクチャリストに対応する。
任意選択で、取得ユニット5001は、第1の予測動きベクトルおよび第2の予測動きベクトルを取得するように特に構成され、決定ユニット5002は、第1の予測動きベクトルおよび第1の動きベクトル差分に基づいて第1の動きベクトルを決定し、第2の予測動きベクトルおよび第2の動きベクトル差分に基づいて第2の動きベクトルを決定するようにさらに構成され、それに対応して、インター予測処理ユニット5003は、第1の参照ピクチャインデックス、第2の参照ピクチャインデックス、第1の参照ピクチャリスト、第2の参照ピクチャリスト、第1の動きベクトル、および第2の動きベクトルに基づいて現在のブロックを予測するように特に構成される。
取得ユニット5001は、等価な置換のために使用され得る前述の例および方法において、S500において言及される関連する方法を実行するように構成され得る。決定ユニット5002は、等価な置換のために使用され得る前述の例および方法において、S501および/またはS502において言及される関連する方法を実行するように構成され得る。取得ユニット5001、決定ユニット5002、およびインター予測処理ユニット5003は、等価な置換のために使用され得る前述の例および方法において、S503において言及される関連する方法を実行するように構成され得る。取得ユニット5001、決定ユニット5002、およびインター予測処理ユニット5003は、メモリの中の対応するプログラム命令を呼び出すことによって、プロセッサによって実装され得る。
前述の特定の方法の例、実施形態における技術的な特徴の説明および記述、ならびに複数の実装形態の拡張も、装置における対応する方法の実行に適用可能であり、詳細は装置の実施形態では説明されないことを理解されたい。
統合されたユニットが使用されるとき、図6Aは、本出願の実施形態による双方向インター予測装置の概略構造図である。図6Aでは、双方向インター予測装置6は、処理モジュール60および通信モジュール61を含む。処理モジュール60は、双方向インター予測装置の行動を制御して管理し、たとえば、取得ユニット50および決定ユニット51によって実行される方法またはステップ、ならびに、取得ユニット5001、決定ユニット5002、およびインター予測処理ユニット5003によって実行される方法もしくはステップ、および/または本明細書において説明される別の技術のプロセスを実行するように構成される。通信モジュール61は、双方向インター予測装置と別のデバイスとの間の対話を支援するように構成される。図6Aに示されるように、双方向インター予測装置は、記憶モジュール62をさらに含み得る。記憶モジュール62は、双方向インター予測装置のプログラムコードおよびデータを記憶し、たとえば記憶ユニット52によって記憶されている内容を記憶するように構成される。
処理モジュール60は、プロセッサまたはコントローラであってもよく、たとえば、中央処理装置(Central Processing Unit, CPU)、汎用プロセッサ、デジタルシグナルプロセッサ(Digital Signal Processor, DSP)、ASIC、FPGAもしくは別のプログラマブル論理デバイス、トランジスタ論理デバイス、ハードウェアコンポーネント、またはこれらの任意の組合せであってもよい。プロセッサまたはコントローラは、本出願において開示される内容を参照して説明される、様々な例示的な論理ブロック、モジュール、および回路を実装または実行し得る。プロセッサは代替として、計算機能を実装するプロセッサの組合せ、たとえば、1つまたは複数のマイクロプロセッサの組合せ、またはDSPとマイクロプロセッサの組合せであり得る。通信モジュール61は、トランシーバ、RF回路、通信インターフェースなどであり得る。記憶モジュール62はメモリであり得る。
前述の方法の実施形態におけるシナリオのすべての関連する内容が、対応する機能モジュールの機能の説明において記述され得る。詳細は再びここでは説明されない。
双方向インター予測装置5と双方向インター予測装置6の両方が、前述の方法(図4に示される双方向インター予測方法など、しかし限定はされない)を実行し得る。双方向インター予測装置5および双方向インター予測装置6は特に、ビデオ復号装置またはビデオコーディング機能を伴う他のデバイスであり得る。双方向インター予測装置5および双方向インター予測装置6は、復号プロセスにおいてピクチャ予測を実行するように構成され得る。
本出願は端末をさらに提供する。端末は、1つまたは複数のプロセッサ、メモリ、および通信インターフェースを含む。メモリおよび通信インターフェースは、1つまたは複数のプロセッサに結合される。メモリはコンピュータプログラムコードを記憶するように構成される。コンピュータプログラムコードは命令を含む。1つまたは複数のプロセッサが命令を実行するとき、端末は、本出願の実施形態における双方向インター予測方法を実行する。
本明細書における端末は、ビデオ表示デバイス、スマートフォン、ポータブルコンピュータ、または、ビデオを処理もしくは再生できる別のデバイスであり得る。
本出願は、不揮発性記憶媒体および中央処理装置を含む、ビデオデコーダをさらに提供する。不揮発性記憶媒体は実行可能プログラムを記憶する。中央処理装置は、不揮発性記憶媒体に接続され、本出願の実施形態における双方向インター予測方法を実行するように実行可能プログラムを実行する。
本出願はデコーダをさらに提供する。デコーダは、本出願の実施形態における双方向インター予測装置(双方向インター予測装置5または双方向インター予測装置6)と、再構築モジュールとを含む。再構築モジュールは、双方向インター予測装置によって取得される予測サンプルに基づいて、現在のブロックの再構築されたサンプル値を決定するように構成される。
本出願の別の実施形態は、コンピュータ可読記憶媒体をさらに提供する。コンピュータ可読記憶媒体は、1つまたは複数のプログラムコードを含む。1つまたは複数のプログラムは命令を含む。端末のプロセッサがプログラムコードを実行するとき、端末は、前述の方法の例(図4または図5Aなど、しかし限定はされない)に示される双方向インター予測方法を実行する。
本出願の別の実施形態では、コンピュータプログラム製品がさらに提供される。コンピュータプログラム製品はコンピュータ実行可能命令を含む。コンピュータ実行可能命令はコンピュータ可読記憶媒体に記憶される。端末の少なくとも1つのプロセッサは、コンピュータ可読記憶媒体からコンピュータ実行可能命令を読み取り得る。少なくとも1つのプロセッサは、端末が前述の方法(図4または図5Aに示される双方向インター予測方法など、しかし限定はされない)およびビデオデコーダ202によって実施され得る方法またはステップを実行することを可能にするために、コンピュータ実行可能命令を実行する。
図6Bは、例示的な実施形態による、図1のソース装置10とデスティネーション装置20のいずれかまたは2つとして使用され得る装置の簡略化されたブロック図である。装置555は本出願の技術を実施することができる。言い換えると、図6Bは、本出願の実施形態による符号化デバイスまたは復号デバイス(コーディングデバイス555と簡単に呼ばれる)の実装形態の概略ブロック図である。コーディングデバイス555は、プロセッサ510、メモリ530、およびバスシステム550を含み得る。プロセッサおよびメモリはバスシステムを通じて接続される。メモリは命令を記憶するように構成される。プロセッサは、メモリに記憶されている命令を実行するように構成される。コーディングデバイスのメモリはプログラムコードを記憶し、プロセッサは、本出願において説明される様々なビデオピクチャ符号化または復号方法、特に、様々なインター予測モードまたはイントラ予測モードにおけるビデオ符号化方法またはビデオ復号方法を実行するために、メモリに記憶されているプログラムコードを呼び出し得る。反復を避けるために、詳細はここでは再び説明されない。
以下は、前述の実施形態において示される符号化方法および復号方法の適用、ならびに、符号化方法および復号方法を使用したシステムを説明する。
図7は、コンテンツ配信サービスを実施するコンテンツ供給システム3100のブロック図である。コンテンツ供給システム3100は、キャプチャデバイス3102、端末デバイス3106、および任意選択でディスプレイ3126を含む。キャプチャデバイス3102は、通信リンク3104を通じて端末デバイス3106と通信する。通信リンクは通信チャネル13を含み得る。通信リンク3104は、限定はされないが、Wi-Fi、Ethernet、有線接続、ワイヤレス(3G/4G/5G)接続、USB、またはこれらの任意のタイプの組合せを含む。
キャプチャデバイス3102は、データを生成し、前述の実施形態において示される符号化方法に従ってデータを符号化し得る。代替として、キャプチャデバイス3102がストリーミングサーバ(図には示されない)にデータを配信してもよく、サーバがデータを符号化して符号化されたデータを端末デバイス3106に送信する。キャプチャデバイス3102は、限定はされないが、カメラ、スマートフォンもしくはタブレットコンピュータ、コンピュータもしくはノートブックコンピュータ、ビデオ会議システム、PDA、車載デバイス、またはこれらの任意の組合せを含む。たとえば、キャプチャデバイス3102は、上で説明されたソース装置10を含み得る。データがビデオを含むとき、キャプチャデバイス3102に含まれるビデオエンコーダ102は実際にビデオを符号化し得る。データがオーディオ(すなわち、声)を含むとき、キャプチャデバイス3102に含まれるオーディオエンコーダが、オーディオを実際に符号化し得る。いくつかの実際のシナリオでは、キャプチャデバイス3102は、符号化されたビデオデータおよび符号化されたオーディオデータを多重化することによって、符号化されたビデオデータおよび符号化されたオーディオデータを配信する。別の実際のシナリオでは、たとえば、ビデオ会議システムにおいて、符号化されたオーディオデータおよび符号化されたビデオデータは多重化されない。キャプチャデバイス3102は、符号化されたオーディオデータおよび符号化されたビデオデータを端末デバイス3106に別々に配信する。
コンテンツ供給システム3100において、端末デバイス3106が符号化されたデータを受信して再生する。端末デバイス3106は、データ受信および復元能力をもつデバイス、たとえば、スマートフォンもしくはタブレットコンピュータ3108、コンピュータもしくはノートブックコンピュータ3110、ネットワークビデオレコーダ(network video recorder, NVR)/デジタルビデオレコーダ(digital video recorder, DVR)3112、TV3114、セットトップボックス(set top box, STB)3116、ビデオ会議システム3118、ビデオ監視システム3120、携帯情報端末(personal digital assistant, PDA)3122、車載デバイス3124、または、符号化されたデータを復号できる前述のデバイスの任意の組合せであり得る。たとえば、端末デバイス3106は、上で説明されたデスティネーション装置20を含み得る。符号化されたデータがビデオを含むとき、端末デバイスに含まれるビデオデコーダ202が、ビデオ復号を実行することの優先権を与えられる。符号化されたデータがオーディオを含むとき、端末デバイスに含まれるオーディオデコーダが、オーディオ復号を実行することの優先権を与えられる。
ディスプレイを有する端末デバイス、たとえば、スマートフォンもしくはタブレットコンピュータ3108、コンピュータもしくはノートブックコンピュータ3110、ネットワークビデオレコーダ(network video recorder, NVR)/デジタルビデオレコーダ(digital video recorder, DVR)3112、TV3114、携帯情報端末(personal digital assistant, PDA)3122、または車載デバイス3124について、端末デバイスが端末デバイスのディスプレイに復号されたデータを供給し得る。ディスプレイのない端末デバイス、たとえば、STB3116、ビデオ会議システム3118、またはビデオ監視システム3120について、復号されたデータを受信して表示するために、外部ディスプレイ3126が端末デバイスに接続される。
システムの中の各デバイスが符号化または復号を実行するとき、前述の実施形態に示されるピクチャ符号化デバイスまたはピクチャ復号デバイスが使用され得る。
図8は、端末デバイス3106の例示的な構造の図である。端末デバイス3106がキャプチャデバイス3102からストリームを受信した後で、プロトコル処理ユニット3202はストリームのトランスポートプロトコルを分析する。プロトコルは、限定はされないが、リアルタイムストリーミングプロトコル(Real-Time Streaming Protocol, RTSP)、ハイパーテキストトランスファープロトコル(Hypertext Transfer Protocol, HTTP)、HTTPライブストリーミングプロトコル(HTTP Live streaming protocol, HLS)、MPEG-DASH、リアルタイムトランスポートプロトコル(Real-time Transport protocol, RTP)、リアルタイムメッセージングプロトコル(Real-Time Messaging Protocol, RTMP)、またはこれらの任意の組合せを含む。
ストリームを処理した後、プロトコル処理ユニット3202がストリームファイルを生成する。このファイルは逆多重化ユニット3204に出力される。逆多重化ユニット3204は、多重化されたデータを符号化されたオーディオデータおよび符号化されたビデオデータに分割し得る。上で説明されたように、別の実際のシナリオでは、たとえば、ビデオ会議システムにおいて、符号化されたオーディオデータおよび符号化されたビデオデータは多重化されない。この場合、符号化されたデータは、逆多重化ユニット3204を通じて送信されることなく、ビデオデコーダ3206およびオーディオデコーダ3208に送信される。
逆多重化は、ビデオエレメンタリストリーム(elementary stream, ES)、オーディオES、および任意選択の字幕を生成するために実行される。ビデオデコーダ3206は、前述の実施形態において説明されるビデオデコーダ202を含み、前述の実施形態において示される復号方法に従ってビデオESを復号してビデオピクチャを生成し、そのようなデータを同期ユニット3212に供給する。オーディオデコーダ3208は、オーディオESを復号してオーディオピクチャを生成し、そのようなデータを同期ユニット3212に供給する。代替として、ビデオピクチャは、ビデオピクチャが同期ユニット3212に供給される前に、バッファ(図8には示されない)に記憶され得る。同様に、オーディオピクチャは、オーディオピクチャが同期ユニット3212に供給される前に、バッファ(図8には示されない)に記憶され得る。
同期ユニット3212は、ビデオピクチャおよびオーディオピクチャを同期して、ビデオ/オーディオディスプレイ3214のためのビデオ/オーディオを提供する。たとえば、同期ユニット3212は、ビデオ情報およびオーディオ情報の提示を同期する。情報は、符号化されたオーディオデータおよびビジュアルデータの提示に関するタイムスタンプと、データストリームの送信に関するタイムスタンプとを使用することによって、構文的に符号化され得る。
字幕がストリームに含まれる場合、字幕デコーダ3210が、字幕をビデオピクチャおよびオーディオピクチャと同期させるように字幕を復号し、ビデオ/オーディオ/字幕ディスプレイ3216のためのビデオ/オーディオ/字幕を提供する。
本発明は前述のシステムに限定されず、前述の実施形態におけるピクチャ符号化デバイスまたはピクチャ復号デバイスは、別のシステム、たとえばオートモーティブシステムへと組み合わせられ得る。
前述の実施形態のすべてまたは一部は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの任意の組合せを使用することによって実装され得る。実施形態を実装するためにソフトウェアプログラムが使用されるとき、実施形態は、コンピュータプログラム製品の形で完全にまたは部分的に実装され得る。コンピュータプログラム製品は、1つまたは複数のコンピュータ命令を含む。コンピュータプログラム命令がコンピュータにロードされてコンピュータ上で実行されるとき、本出願の実施形態による手順または機能は、すべてまたは部分的に生成される。
コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワーク、または別のプログラム可能装置であり得る。コンピュータ命令は、コンピュータ可読記憶媒体に記憶されてもよく、またはあるコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に送信されてもよい。たとえば、コンピュータ命令は、あるウェブサイト、コンピュータ、サーバ、またはデータセンターから、別のウェブサイト、コンピュータ、サーバ、またはデータセンターへ、有線(たとえば、同軸ケーブル、光ファイバ、またはデジタル加入者線(DSL))またはワイヤレス(たとえば、赤外線、無線、またはマイクロ波)の方式で送信され得る。コンピュータ可読記憶媒体は、1つまたは複数の使用可能な媒体を統合する、コンピュータによってアクセス可能な任意の使用可能な媒体、または、サーバもしくはデータセンターなどのデータ記憶デバイスであり得る。使用可能な媒体は、磁気媒体(たとえば、フロッピー(登録商標)ディスク、ハードディスク、または磁気テープ)、光学媒体(たとえば、DVD)、半導体媒体(たとえば、ソリッドステートドライブ Solid-State Drive(SSD))などであり得る。
実装形態についての前述の説明は、便宜的に、かつ簡単な説明のために、前述の機能モジュールのみへの分割が説明のための例として使用されることを、当業者が明確に理解することを可能にする。実際の適用例では、前述の機能は、要件に基づく実装のために異なる機能モジュールに割り振られてもよく、すなわち、上で説明された機能のすべてまたは一部を実装するために、装置の内部構造が異なる機能モジュールへと分割される。
本出願において提供されるいくつかの実施形態では、開示される装置および方法は他の方式で実装され得ることを理解されたい。たとえば、説明される装置は例にすぎない。たとえば、モジュールまたはユニットへと分割は論理的な機能の分割にすぎない。実際の実装形態では、別の分割方式があり得る。たとえば、複数のユニットまたはコンポーネントが組み合わせられてもよく、もしくは別の装置へと統合されてもよく、または一部の特徴が無視されてもよく、もしくは実行されなくてもよい。加えて、表示もしくは議論される、相互の結合または直接の結合または通信接続は、何らかのインターフェースを使用することによって実装され得る。装置またはユニット間の間接的な結合もしくは通信接続は、電子的な、機械的な、または別の形式で実装され得る。
別々のコンポーネントとして説明されるユニットは、物理的に分離していてもしていなくてもよく、ユニットとして表示されるコンポーネントは、1つまたは複数の物理的なユニットであってもよく、すなわち、1つの場所に位置していてもよく、または複数の異なる場所に分散していてもよい。ユニットの一部またはすべてが、実施形態の解決法の目的を達成するために、実際の要件に基づいて選択され得る。
加えて、本出願の実施形態における機能ユニットは、1つの処理ユニットへと統合されてもよく、または、ユニットの各々が物理的に単独で存在してもよく、または、2つ以上のユニットが1つのユニットへと統合されてもよい。統合されたユニットは、ハードウェアの形で実装されてもよく、またはソフトウェア機能ユニットの形で実装されてもよい。
統合されたユニットがソフトウェア機能ユニットの形で実装され、独立した製品として販売または使用されるとき、統合されたユニットは可読記憶媒体に記憶され得る。そのような理解に基づいて、本出願の実施形態における技術的な解決法は基本的にソフトウェア製品の形で実装されてもよく、または従来技術に寄与する部分、または技術的な解決法のすべてもしくは一部が、ソフトウェア製品の形で実装されてもよい。ソフトウェア製品は、記憶媒体に記憶され、本出願の実施形態において説明される方法のステップのすべてまたは一部を実行するようにデバイス(これはシングルチップマイクロコンピュータ、チップなどであり得る)またはプロセッサ(processor)に命令するための、いくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読取り専用メモリ(Read-Only Memory, ROM)、ランダムアクセスメモリ(Random Access Memory, RAM)、磁気ディスク、または光学ディスクなどの、プログラムコードを記憶できる任意の媒体を含む。
前述の説明は、本出願の特定の実装形態にすぎず、本出願の保護範囲を限定することは意図されていない。本出願において開示される技術的な範囲内でのあらゆる変形または置換が、本出願の保護範囲内にあるものとする。したがって、本出願の保護範囲は、特許請求の範囲の保護範囲に依存するものとする。