(57)【要約】  ビデオ信号の符号化または復号は、現在ブロックに対する複数の動きベクトル候補を決定する工程を含み、動きベクトル候補は、第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む。第１動きベクトルに関連付けられた参照フレーム識別子は、第２フレームの現在ブロックを予測するために使用される参照フレームの参照バッファインデックスと比較されてよい。参照フレーム識別子が、参照バッファインデックスと同じである場合、第１動きベクトルは、複数の動きベクトル候補のうちの残りの候補よりも前に進められる。
2019508918.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置を使用してビデオストリームを符号化する方法であって、前記ビデオストリームはフレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記方法は、
フレームの前記シーケンスの第１フレームを符号化した後、前記第１フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照インデックスマッピングは、参照フレームバッファに保持され前記第１フレームの符号化に利用可能な複数の参照フレームの各々に対する参照フレーム識別子と参照バッファインデックスとを含む、記憶工程と、
前記記憶工程の後で、第２フレームの符号化に利用可能な複数の参照フレームを提供するべく、それぞれの参照フレーム識別子を有する１つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、
第２動きベクトルを生成するために、更新された前記参照フレームバッファの参照フレーム内で前記現在ブロックに対する動き検出を前記更新工程の後で実行する、動き検出実行工程と、
前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記動き検出実行工程に使用された前記参照フレームの参照バッファインデックスと比較する工程と、
前記動き検出実行工程に使用された前記参照フレームの前記参照バッファインデックスが、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記現在ブロックの符号化に関して、より高い優先度で前に進める、前進工程と、を備える方法。
【請求項２】
前記第２フレームは、前記シーケンスにおいて前記第１フレームの後であり、
前記参照フレームバッファに保持される１つの参照フレームは、前記参照フレーム識別子として最終フレーム識別子を有する、符号化される現在フレームの前の前記シーケンスにおける最終フレームであり、
前記更新工程は、前記最終フレーム識別子に関連付けられた参照バッファインデックスを、前記第１フレームの参照バッファインデックスに更新する工程を含む、請求項１に記載の方法。
【請求項３】
前記参照フレームバッファは、ゴールデンフレームと、代替参照フレームとを備え、
前記更新工程は、前記最終フレーム識別子に関連付けられた前記参照バッファインデックスのみを更新する工程を含む、請求項２に記載の方法。
【請求項４】
前記参照フレームバッファは、前記参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、前記参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームとを備え、さらに、
前記更新工程は、前記代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する代替参照フレーム参照バッファインデックス更新工程を含むか、
前記更新工程は、前記ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新するゴールデンフレーム参照バッファインデックス更新工程を含むか、
前記更新工程は、前記代替参照フレーム参照バッファインデックス更新工程と、前記ゴールデンフレーム参照バッファインデックス更新工程とを含む請求項２に記載の方法。
【請求項５】
前記第２動きベクトルを、前記第１動きベクトルを動きベクトル予測子として使用して符号化する工程をさらに備える請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記前進工程は、前記第１動きベクトルを使用して前記動き検出を初期化することにより、前記動き検出を実行する工程を含む請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記第２動きベクトルを、前記第１動きベクトルを動きベクトル予測子として使用して符号化する工程をさらに備える請求項６に記載の方法。
【請求項８】
前記更新工程は、それぞれの参照フレーム識別子に関連付けられた２つ以上の参照フレームを、記憶工程の後に更新する工程を含み、
前記複数の動きベクトル候補は、前記第１フレーム内の前記コロケーテッドブロックを予測するために使用される第３動きベクトルを含み、
第４動きベクトルを生成するために、前記参照フレームバッファの異なる参照フレーム内で第２ブロックに対する第２動き検出を前記更新工程の後で実行する、第２動き検出実行工程と、
前記第３動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記第２動き検出実行工程に使用された前記参照フレームの参照バッファインデックスと比較する工程と、
前記前進工程は、前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記第３動きベクトルの符号化に関して、より高い優先度で前に進める工程を含み、
前記第２動き検出実行工程に使用された前記参照フレームの前記参照バッファインデックスが、前記第３動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第２動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記第４動きベクトルの符号化に関して、より高い優先度で前に進める工程と、をさらに備える請求項１に記載の方法。
【請求項９】
ビデオストリームを符号化する装置であって、前記ビデオストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記装置は、
プロセッサと、
前記プロセッサに方法を実行させる命令を記憶するメモリと、を備え、前記方法は、
フレームの前記シーケンスの第１フレームを符号化した後、前記第１フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照インデックスマッピングは、参照フレームバッファに保持され前記第１フレームの符号化に利用可能な複数の参照フレームの各々に対する参照フレーム識別子と参照バッファインデックスとを含む、記憶工程と、
前記記憶工程の後で、第２フレームの符号化に利用可能な複数の参照フレームを提供するべく、それぞれの参照フレーム識別子を有する１つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、
第２動きベクトルを生成するために、更新された前記参照フレームバッファの参照フレーム内で前記現在ブロックに対する動き検出を前記更新工程の後で実行する、動き検出実行工程と、
前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記動き検出実行工程に使用された前記参照フレームの参照バッファインデックスと比較する工程と、
前記動き検出実行工程に使用された前記参照フレームの前記参照バッファインデックスが、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記現在ブロックの符号化に関して、より高い優先度で前に進める工程と、を備える装置。
【請求項１０】
前記メモリと別個の第２メモリをさらに備え、
前記複数の参照フレームの各々に対する前記参照バッファインデックスは、前記第２メモリ内の参照フレームに関するユニークな場所を表す請求項９に記載の装置。
【請求項１１】
前記命令は、
前記第１動きベクトルと、前記第１動きベクトルに関連付けられた前記参照フレームとを使用して、前記コロケーテッドブロックを符号化することにより、前記第１フレームを符号化済みのビデオビットストリームに符号化する工程と、
前記第１動きベクトルに関連付けられた前記参照フレームを、参照仮想インデックスに関連付け、前記参照仮想インデックスを、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照バッファインデックスに関連付ける工程と、
前記符号化済みのビデオビットストリーム内の前記参照仮想インデックスを信号で送ることにより、前記第１動きベクトルに関連付けられた前記参照フレームをデコーダに信号で送る工程と、を行うための命令をさらに含む請求項９または１０に記載の装置。
【請求項１２】
前記参照フレームバッファは３つの参照フレームを備え、
前記３つの参照フレームの第１の参照フレームは、第１のユニークな参照フレーム識別子と、第１のユニークな参照バッファインデックスと、に関連付けられ、
前記３つの参照フレームの第２の参照フレームは、第２のユニークな参照フレーム識別子と、第２のユニークな参照バッファインデックスと、に関連付けられ、
前記３つの参照フレームの第３の参照フレームは、第３のユニークな参照フレーム識別子と、第３のユニークな参照バッファインデックスと、に関連付けられ、
前記記憶工程は、テーブルを記憶する工程を含み、前記テーブルは、前記３つの参照フレームの前記第１の参照フレームを前記第１のユニークな参照フレーム識別子と、前記第１のユニークな参照バッファインデックスと、に関連付け、前記３つの参照フレームの前記第２の参照フレームを前記第２のユニークな参照フレーム識別子と、前記第２のユニークな参照バッファインデックスと、に関連付け、前記３つの参照フレームの前記第３の参照フレームを前記第３のユニークな参照フレーム識別子と、前記第３のユニークな参照バッファインデックスと、に関連付ける、請求項９に記載の装置。
【請求項１３】
前記命令は、前記メモリ内に前記テーブルを記憶する工程を行うための命令をさらに備える請求項１２に記載の装置。
【請求項１４】
前記命令は、
フレームの前記シーケンスの第２フレームを符号化した後、複数の参照フレームの各々に対して、参照フレーム識別子を参照バッファインデックスと共に、二度目に記憶する、二度目記憶工程と、
前記二度目記憶工程の後で、それぞれの参照フレーム識別子を有する、１つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを二度目に更新する、二度目更新工程と、
前記二度目更新工程の後で、第３フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第２フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、
前記第３フレームの前記現在ブロックに対する第２動きベクトルを生成するために、更新された前記参照フレームバッファの参照フレーム内で前記第３フレームの前記現在ブロックに対する動き検出を、前記二度目更新工程の後で実行する、第３フレーム動き検出実行工程と、
前記第２フレーム内の前記コロケーテッドブロックを予測するために使用される前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記第３フレーム動き検出実行工程に使用された前記参照フレームの参照バッファインデックスと比較する工程と、
前記第３フレーム動き検出実行工程に使用された前記参照フレームの前記参照バッファインデックスが、前記第２フレーム内の前記コロケーテッドブロックを予測するために使用される前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第２フレーム内の前記コロケーテッドブロックを予測するために使用される前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記第３フレームの前記現在ブロックの符号化に関して、より高い優先度で前に進める工程と、を行うための命令をさらに備える請求項９に記載の装置。
【請求項１５】
前記第２フレームは、前記シーケンスにおいて前記第１フレームの後であり、
前記参照フレームバッファは、
符号化される現在フレームの前の前記シーケンスにおける最終フレームであって、前記最終フレームは、前記参照フレーム識別子として最終フレーム識別子を有する最終フレームと、
前記参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、
前記参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームと、を備え、さらに
前記更新工程は、
前記最終フレーム識別子に関連付けられた参照バッファインデックスを、第１参照フレームの参照バッファインデックスに更新する工程と、
前記代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する工程と、
前記ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新する工程と、のうちの１つ以上の工程を含む請求項９に記載の装置。
【請求項１６】
前記命令は、
前記第２動きベクトルを、前記第１動きベクトルを動きベクトル予測子として使用して符号化する工程を行うための命令をさらに備える請求項９乃至１５のいずれか一項に記載の装置。
【請求項１７】
前記命令は、
前記第１動きベクトルを使用して前記動き検出を初期化することにより、前記第１動きベクトルを、前記現在ブロックを符号化する前記複数の動きベクトル候補のうちの残りの候補よりも前に進める工程を行うための命令をさらに備える請求項９乃至１６のいずれか一項に記載の装置。
【請求項１８】
符号化済みのビデオビットストリームを復号する装置であって、前記符号化済みのビデオビットストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記装置は、
プロセッサと、
前記プロセッサに方法を実行させる命令を記憶するメモリと、を備え、前記方法は、
フレームの前記シーケンスの第１フレームを復号した後、前記第１フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照インデックスマッピングは、参照フレームバッファに保持され前記第１フレームの復号に利用可能な複数の参照フレームの各々に対する参照フレーム識別子と参照バッファインデックスとを含む、記憶工程と、
前記記憶工程の後で、第２フレームの復号に利用可能な複数の参照フレームを提供するべく、それぞれの参照フレーム識別子を有する１つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、
前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記第２フレームの前記現在ブロックを予測するために使用される前記参照フレームの参照バッファインデックスと比較する工程と、
前記第２フレームの前記現在ブロックを予測するために使用される前記参照フレームの前記参照バッファインデックスが、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記現在ブロックの復号に関して、より高い優先度で前に進める工程と、を備える装置。
【請求項１９】
前記メモリと別個の第２メモリと、
前記第２メモリ内の参照フレームに関するユニークな場所を表す、前記複数の参照フレームの各々に対する前記参照バッファインデックスと、をさらに備える請求項１８に記載の装置。
【請求項２０】
前記命令は、
前記符号化済みのビデオビットストリーム内の参照仮想インデックスを受信する工程であって、前記参照仮想インデックスは、前記第１動きベクトルに関連付けられた前記参照フレームに関連付けられる、工程と、
前記第１動きベクトルおよび前記第１動きベクトルに関連付けられた前記参照フレームを使用して、前記コロケーテッドブロックを復号することにより、前記第１フレームを復号する工程と、
前記参照仮想インデックスを、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照バッファインデックスに関連付ける工程と、を行うための命令をさらに備える請求項１８または１９に記載の装置。
【請求項２１】
符号化済みのビデオビットストリームを復号する方法であって、前記符号化済みのビデオビットストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記方法は、
フレームの前記シーケンスの第１フレームを復号した後、前記第１フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照インデックスマッピングは、参照フレームバッファに保持され前記第１フレームの復号に利用可能な複数の参照フレームの各々に対する参照フレーム識別子と参照バッファインデックスとを含む、記憶工程と、
前記記憶工程の後で、第２フレームの復号に利用可能な複数の参照フレームを提供するべく、それぞれの参照フレーム識別子を有する１つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、
前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスを、前記第２フレームの前記現在ブロックを予測するために使用される前記参照フレームの参照バッファインデックスと比較する工程と、
前記第２フレームの前記現在ブロックを予測するために使用される前記参照フレームの前記参照バッファインデックスが、前記第１動きベクトルに関連付けられた前記参照フレームの前記参照フレーム識別子と共に記憶された前記参照バッファインデックスに一致する場合、前記第１動きベクトルを、前記複数の動きベクトル候補のうちの残りの候補よりも、前記現在ブロックの復号に関して、より高い優先度で前に進める工程と、を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、参照フレームのバッファ追跡を通じた動きベクトル参照の選択に関する。
【背景技術】
【０００２】
デジタルビデオストリームは、フレームまたは静止画のシーケンスを用いるビデオを一般に表現する。各フレームは、複数のブロックを含んでよく、ブロックは明度、輝度、または画素に対する他の属性を記述する情報を含んでよい。典型的なビデオストリーム中のデータの量は大きく、ビデオの送信および記録は大量のコンピューティング資源または通信資源を使用し得る。ビデオデータに関連した多量のデータにより、送信および記録のために高性能の圧縮が必要である。ブロックベースのコーデックにおいては、この圧縮は動きベクトルを使用した予測を含む予測技術を伴う。
【図面の簡単な説明】
【０００３】
【図１】ビデオ符号化および復号システムの概略図。
【図２】送信局または受信局を実装し得るコンピューティング装置の一例のブロック図。
【図３】符号化され後に復号されるビデオストリームの図。
【図４】本明細書に開示の一態様によるビデオ圧縮システムのブロック図。
【図５】本明細書に開示の別の態様によるビデオ圧縮システムのブロック図。
【図６】参照フレームのバッファ追跡を通じて動きベクトル参照を選択する処理のフローチャート図。
【図７】図６の処理を説明するために使用される参照バッファ更新の一例の図。
【発明を実施するための形態】
【０００４】
本開示は、一般に、コンピューティング装置を使用したビデオストリームデータ等の画像データの符号化および復号に関し、ビデオストリームは、フレームのシーケンスを有し、各フレームはブロックを有し、および各ブロックは画素を有する。本開示は、フレームのシーケンスの第１フレームを符号化した後、複数の参照フレームの各々に対する参照フレーム識別子および参照バッファインデックスを記憶する工程と、記憶する工程の後で、参照フレーム識別子に関連付けられた参照フレームを更新することにより、複数の参照フレームを更新する工程と、更新する工程の後で、第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、複数の動きベクトル候補は、第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、第２動きベクトルを生成するために複数の参照フレームの参照フレーム内で現在ブロックに対する動き検出を、更新する工程の後で実行する工程と、第１動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、実行する工程に使用された参照フレームの参照バッファインデックスが、第１動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第１動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、を含む。
【０００５】
本明細書における開示の１つの態様は、画像データの符号化および復号を含み、第２フレームは、シーケンスにおいて第１フレームの後であり、複数の参照フレームの１つは、符号化される現在フレームの前のシーケンスにおける最終フレームを備え、また参照フレーム識別子として最終フレーム識別子を有し、複数の参照フレームを更新する工程は、最終フレーム識別子に関連付けられた参照バッファインデックスを、第１参照フレームの参照バッファインデックスに更新する工程を含む。複数の参照フレームは、ゴールデンフレームと、代替参照フレームとを備え、複数の参照フレームを更新する工程は、最終フレーム識別子に関連付けられた参照バッファインデックスのみを更新する工程を含む。複数の参照フレームは、参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームとを備え、さらに、複数の参照フレームを更新する工程は、代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する工程を含む、および複数の参照フレームを更新する工程は、ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新する工程を含む、のうちの１つ以上である。
【０００６】
本明細書における開示の１つの態様は、画像データの符号化および復号を含み、複数の参照フレームを更新する工程は、それぞれの参照フレーム識別子に関連付けられた２つ以上の参照フレームを、記憶する工程の後に更新する工程を含み、複数の動きベクトル候補は、第１フレーム内のコロケーテッドブロックを予測するために使用される第３動きベクトルを含み、第４動きベクトルを生成するために、複数の参照フレームの異なる参照フレーム内で第２ブロックに対する第２動き検出を、更新する工程の後で実行する工程と、第３動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、第２動き検出を実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、第１動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程は、第１動きベクトルを、第３動きベクトルの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、第２動き検出を実行する工程に使用された参照フレームの参照バッファインデックスが、第３動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第２動きベクトルを、第４動きベクトルの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、をさらに備える。
【０００７】
本明細書に記載される装置の１つの態様は、プロセッサと、プロセッサに方法を実効させる命令を記憶する不揮発性メモリとを含む。方法は、フレームのシーケンスの第１フレームを符号化した後、複数の参照フレームの各々に対する参照フレーム識別子および参照バッファインデックスを記憶する工程と、記憶する工程の後で、参照フレーム識別子に関連付けられた参照フレームを更新することにより、複数の参照フレームを更新する工程と、更新する工程の後で、第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、複数の動きベクトル候補は、第１フレーム内のコロケーテッドブロックを予測するために使用される第１動きベクトルを含む、工程と、第２動きベクトルを生成するために複数の参照フレームの参照フレーム内で現在ブロックに対する動き検出を、更新する工程の後で実行する工程と、第１動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、実行する工程に使用された参照フレームの参照バッファインデックスが、第１動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第１動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、を含む。
【０００８】
実施形態はまた、適切なコンピュータ装置上で実行された場合に、本明細書に記載される方法および装置を実施するよう構成されたコンピュータプログラムコードを備える１つまたは複数のコンピュータ可読媒体を提供する。
【０００９】
本開示のこれらおよび他の態様は、以下の詳細な説明、添付の特許請求の範囲、および付随する図面において、より詳細に記載される。
本明細書の記載は、以下に記載される添付の図面を参照し、複数の図を通じて同様の符号は同様の部分を指す。
【００１０】
ビデオストリームを送信または記憶するために必要な帯域幅を削減するため、ビデオストリームは様々な技術により圧縮され得る。ビデオストリームは、圧縮を伴い得るビットストリームに符号化されてよく、閲覧またはさらなる処理のための準備をするために、その後ビデオストリームを復号または復元し得るデコーダに対して送信されてよい。ビデオストリームの圧縮は、ビデオ信号の時空間的な相関関係を、空間的および／または動き補償予測を通じて、しばしば使用する。例えば、インター予測は、前回符号化および復号済みの画素を使用して符号化される現在ブロックに似たブロック（予測ブロックとも呼ばれる）を、１つまたは複数の動きベクトルを使用して生成する。動きベクトルおよび該２つのブロック間の差を符号化することで、符号化済みの信号を受信するデコーダは、現在ブロックを再生してよい。
【００１１】
予測ブロックを生成するために使用される各動きベクトルは、現在フレーム以外のフレーム、すなわち参照フレームを参照する。参照フレームは、ビデオストリームのシーケンスにおける現在フレームの前または後に位置してよい。例えば、現在フレームを符号化するための１つの共通する参照フレームは、シーケンスにおける現在フレームの直前のフレームである、最終フレームである。予測ブロックを生成するために１つより多い動きベクトルが使用される場合、各動きベクトルは、別個の参照フレームを参照し得る。単一の予測ブロックを使用して予測されたブロック（例えば、単一の動きベクトルを使用して生成されたもの）は、本明細書では、単一参照の場合として言及され、一方、１つより多い予測ブロックを使用して予測されたブロック（例えば、２つ以上の動きベクトルを使用して生成されたもの）は、本明細書では、複合参照の場合として言及される。
【００１２】
動きベクトル参照は、インター予測の処理において有効になり得る。一般に、動きベクトル参照は、現在ブロックより前の異なるブロックの符号化からすでに決定された動きベクトルである。動きベクトル参照は、現在ブロックを符号化するために使用された動きベクトルを差分によって符号化する（またしたがって復号する）ために使用されてよい。動きベクトルをこのように差動符号化することで、符号化済みの動きベクトルを、例えば小さい固定ビット数として、ビデオストリームに含むことが可能になる。これに代えてまたは加えて、動きベクトル参照は、現在ブロックを符号化するために使用される動きベクトルを決定するための、複数の動きベクトル候補のうちの１つとして使用されてよい。動きベクトル参照は、現在ブロックに空間的に隣接するブロックから取得されてよい。動きベクトル参照は、時間的に隣接するブロックから決定される一時的な動きベクトル参照であってもよく、符号化される現在ブロックとしてそのフレームに関して同じ画素位置に配置されているので、コロケーテッド（ｃｏ−ｌｏｃａｔｅｄ）ブロックとも呼ばれる。
【００１３】
上記のように、各動きベクトルは、複数の利用可能な参照フレームのうちの１つを参照し得る。したがって、各動きベクトル参照は、複数の利用可能な参照フレームのうちの１つを参照し得る。動きベクトル参照を含む参照フレームは利用可能な参照フレームのうちの１つであることを示す信号が、送信されてよい。比較的長い一連のビットになり得る、フレーム識別子自体を信号で送る代わりに、信号は参照フレームの種類を識別する短い一連のビットであってよい。いくつかのビデオコーデックでは、例えば、３つの種類の参照フレーム、つまり最終フレーム（ＬＡＳＴ＿ＦＲＡＭＥ）、ゴールデンフレーム（ＧＯＬＤＥＮ＿ＦＲＡＭＥ）、および代替参照フレーム（ＡＬＴＲＥＦ＿ＦＲＡＭＥ）が存在する。
【００１４】
開示される態様は、前回符号化済みのフレームにおけるコロケーテッドブロックを予測するために使用される動きベクトルの参照フレームが、現在ブロックに対して使用されている参照フレームと同じ種類かどうか確認してよい。参照フレームが同じ種類の場合、動きベクトルは、現在動きベクトルの符号化について、このテストに合格しなかった他の動きベクトルよりも高い優先度で考慮される。例えば、現在ブロックがＬＡＳＴ＿ＦＲＡＭＥを選択し、前フレームにおけるそのコロケーテッドブロックもＬＡＳＴ＿ＦＲＡＭＥを選択する場合、コロケーテッドブロックの動きベクトルは、現在動きベクトルの符号化のための動きベクトル参照として、より高い優先度で考慮されてよい。
【００１５】
上記の手法には、各フレームを符号化した後に、参照バッファが更新されて、結果的に、参照バッファにおける１つまたは複数のフレームが新たに符号化済みのフレームに置き換わり得るという問題が存在し得る。したがって、前フレームおよび現在フレームにおける両ブロックがそれぞれ同じ参照フレーム、例えば、ＬＡＳＴ＿ＦＲＡＭＥを選択した場合でも、それは実際の同一の参照フレームバッファを指定できない。開示される実装の態様は、前フレームにおけるコロケーテッドブロックが同一の参照フレームを現在ブロックとして使用しているか識別することにより、この問題に取り組む。答えが真である場合にのみ、コロケーテッドブロックの１つまたは複数の動きベクトルは、現在動きベクトルの符号化について、他の動きベクトル参照よりも高い優先度で扱われる。
【００１６】
さらなる詳細について、本明細書の教示が使用され得る環境を初めに検討した後に記載する。
図１は、ビデオ符号化および復号システム１００の概略図である。送信局１０２は、例えば、図２に記載されるようなハードウェアの内部構成を有するコンピュータでよい。しかしながら、送信局１０２の他の適切な実装が可能である。例えば、送信局１０２の処理は複数の装置間に分散されてよい。
【００１７】
ネットワーク１０４は、ビデオストリームの符号化および復号のため、送信局１０２および受信局１０６を接続してよい。具体的には、ビデオストリームは送信局１０２において符号化されてよく、また符号化済みのビデオストリームは、受信局１０６において復号されてよい。ネットワーク１０４は、例えばインターネットでよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、またはビデオストリームを送信局１０２から転送する、この例においては受信局１０６に転送する、任意の他の手段であってもよい。
【００１８】
受信局１０６は、１つの例では、図２に記載されるようなハードウェアの内部構成を有するコンピュータでよい。しかしながら、受信局１０６の他の適切な実装が可能である。例えば、受信局１０６の処理は複数の装置間に分散されてよい。
【００１９】
ビデオ符号化および復号システム１００の他の実装が可能である。例えば、一実装においてはネットワーク１０４を省略してもよい。別の実装では、ビデオストリームは符号化され、その後、受信局１０６またはメモリを有する任意の他の装置に対して後で送信するために記憶されてよい。１つの実装では、受信局１０６は（例えば、ネットワーク１０４、コンピュータバス、および／またはある通信経路を介して）符号化済みビデオストリームを受信して、そのビデオストリームを後で復号するために記憶する。例示的な実装では、符号化済みのビデオをネットワーク１０４上で送信するために、リアルタイムトランスポートプロトコル（ＲＴＰ）が使用される。別の実装では、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）ベースのビデオストリーミングプロトコル等のＲＴＰ以外のトランスポートプロトコルが使用されてよい。
【００２０】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に記載されるように、ビデオストリームを符号化および復号する能力を含んでよい。例えば、受信局１０６は、符号化済みのビデオビットストリームを復号および閲覧するためにビデオ会議サーバ（例えば送信局１０２）から受信して、他の参加者による復号および閲覧のために、それ自身のビデオビットストリームをさらに符号化しビデオ会議サーバに対して送信するビデオ会議参加者でよい。
【００２１】
図２は送信局または受信局を実装し得るコンピューティング装置２００の一例のブロック図である。例えば、コンピューティング装置２００は、図１の送信局１０２および受信局１０６のうちの一方または両方を実装してよい。コンピューティング装置２００は、複数のコンピューティング装置を含むコンピューティングシステムの形態であってよく、または、例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ等の単一のコンピューティング装置の形態であってよい。
【００２２】
コンピューティング装置２００におけるＣＰＵ２０２は、中央処理装置でよい。あるいは、ＣＰＵ２０２は情報を演算または処理することが可能な既存のまたは将来の任意の他の種類の装置、または複数の装置でよい。開示される実装は、例えばＣＰＵ２０２に示されるように単一のプロセッサで実施されてよいが、１つより多いプロセッサを使用して速度および効率における利点は達成され得る。
【００２３】
コンピューティング装置２００におけるメモリ２０４は、一実装においてはリードオンリーメモリ（ＲＯＭ）装置またはランダムアクセスメモリ（ＲＡＭ）装置でよい。任意の他の適切な種類の記憶装置がメモリ２０４として使用されてよい。メモリ２０４は、バス２１２を使用してＣＰＵ２０２によりアクセスされるコードおよびデータ２０６を含んでよい。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含んでよい。アプリケーションプログラム２１０は、ＣＰＵ２０２が本明細書に記載される方法を実行することを可能にする１つ以上のプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１乃至Ｎを含んでよく、該アプリケーションは本明細書に記載される方法を実行するビデオ符号化アプリケーションをさらに含む。コンピューティング装置２００はまた、二次記憶装置２１４を含んでもよく、該装置は、例えば、モバイルコンピューティング装置で使用されるメモリカードでよい。ビデオ通信セッションは大量の情報を含み得るので、セッションの全体または部分が二次記憶装置２１４に記憶され、処理のため必要に応じてメモリ２０４にロードされてよい。
【００２４】
コンピューティング装置２００はまた、ディスプレイ２１８等の１つまたは複数の出力装置を含んでもよい。ディスプレイ２１８は、１つの例では、ディスプレイとタッチ入力を検知可能なタッチセンシティブ要素とを組み合わせたタッチセンシティブディスプレイでよい。ディスプレイ２１８はバス２１２を介してＣＰＵ２０２に接続されてよい。ユーザがコンピューティング装置２００をプログラムまたは使用することを可能にする他の出力装置は、ディスプレイ２１８に加えてまたはその代わりとして提供されてよい。出力装置がディスプレイであるかそれを含む場合、該ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）ディスプレイ等の発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実装されてよい。
【００２５】
コンピューティング装置２００はまた、例えば、コンピューティング装置２００を操作するユーザの画像等の画像を検知可能な、既存のまたは将来のカメラまたは任意の他の画像検知装置２２０である画像検知装置２２０を含むかそれと通信してもよい。画像検知装置２２０は、コンピューティング装置２００を操作するユーザに向けられるように位置づけられてよい。一例では、画像検知装置２２０の位置および光軸は、ディスプレイ２１８に直接隣接しそこからディスプレイ２１８が見える領域を視野が含むように構成されてよい。
【００２６】
コンピューティング装置２００はまた、例えば、コンピューティング装置２００付近の音声を検知可能な、既存のまたは将来のマイクまたは任意の他の音声検知装置である音声検知装置２２２を含むかそれと通信してもよい。音声検知装置２２２は、コンピューティング装置２００を操作するユーザに向けられるように位置づけられてよく、また、例えばユーザがコンピューティング装置２００を操作する間にユーザにより行われる話や他の発声等の音声を受信するように構成されてよい。
【００２７】
図２はコンピューティング装置２００のＣＰＵ２０２およびメモリ２０４を単一のユニットに一体化されたものとして示しているが、他の構成が使用されてよい。ＣＰＵ２０２の演算は、直接またはローカルエリアもしくは他のネットワークを介して接続され得る複数の機械（各機械は１つまたは複数のプロセッサを有する）間に分散されてよい。メモリ２０４は、ネットワークベースのメモリまたはコンピューティング装置２００の演算を行う複数の機械におけるメモリ等の複数の機械間に分散されてよい。本明細書においては単一のバスとして示されているが、コンピューティング装置２００のバス２１２は複数のバスからなってよい。さらに、二次記憶装置２１４は、コンピューティング装置２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされてよい。二次記憶装置２１４はまた、１つのメモリカード等の単一の一体化されたユニットまたは複数のメモリカード等の複数のユニットを含んでよい。コンピューティング装置２００は、したがって多種多様な構成で実装されてよい。
【００２８】
図３は、符号化され後に復号されるビデオストリーム３００の一例である。ビデオストリーム３００はビデオシーケンス３０２を含む。次のレベルでは、ビデオシーケンス３０２は複数の隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含んでよい。隣接フレーム３０４はその後、例えばフレーム３０６等の個々のフレームにさらに細分化されてよい。次のレベルでは、フレーム３０６は一連のプレーンまたはセグメント３０８に分割されてよい。セグメント３０８は、例えば並行処理が可能なフレームのサブセットでよい。セグメント３０８はまた、ビデオデータを別個の色に分離するフレームのサブセットでよい。例えば、カラービデオデータのフレーム３０６は、１つの輝度プレーンおよび２つのクロミナンスプレーンを含んでよい。セグメント３０８は異なる解像度でサンプリングされてよい。
【００２９】
フレーム３０６がセグメント３０８に分割されるかどうかによらず、フレーム３０６は、フレーム３０６における例えば１６×１６画素に対応するデータを含み得るブロック３１０にさらに細分化されてよい。ブロック３１０はまた、画素データの１つまたは複数のプレーンからのデータを含むように配列されてよい。ブロック３１０はまた、例えば４×４画素、８×８画素、１６×８画素、８×１６画素、１６×１６画素、またはそれより大きい任意の他の適切なサイズでよい。フレーム３０６を分割することによって生じるブロック３１０または他の領域は、以下により詳細に検討されるように、本明細書の開示によって分割されてよい。つまり、符号化される領域は、より小さいサブブロックまたは領域に分割される大きな領域でよい。より詳細には、符号化される現在領域は、例えば異なる予測モードを使用して符号化されたより小さい画素のグループに分割されてよい。これらの画素のグループは、本明細書では、予測サブブロック、予測サブ領域、または予測ユニットと称され得る。いくつかの場合では、領域は１つの予測モードのみを使用して符号化されるので、符号化される全体の領域を網羅する予測サブ領域が１つのみ存在する。特に明記しない限り、図４および５におけるブロック符号化および復号に関する以下の記載は、大きな領域の予測サブブロック、予測サブ領域、または予測ユニットに対しても同様に適用される。
【００３０】
図４は、一実装によるエンコーダ４００のブロック図である。エンコーダ４００は、例えばメモリ２０４等のメモリに記憶されたコンピュータソフトウェアプログラムを提供すること等により、送信局１０２において上記のように実装されてよい。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサに実行された場合に、送信局１０２にビデオデータを図４に記載の方法で符号化させる機械命令を含んでよい。エンコーダ４００はまた、例えば送信局１０２に含まれる専用ハードウェアとして実装されてよい。エンコーダ４００は、入力としてビデオストリーム３００を使用して、符号化済みまたは圧縮済みのビットストリーム４２０を生成する順方向経路（実線接続で示される）において様々な機能を実行する以下のステージを有する。つまり、イントラ／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８である。エンコーダ４００はまた、将来のブロックの符号化のためのフレームを再構成する再構成経路（点線接続で示される）を含んでよい。図４において、エンコーダ４００は、再構成路において様々な機能を実行する以下のステージを有する。つまり、逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６である。エンコーダ４００の他の構造的変形例は、ビデオストリーム３００を符号化するために使用されてよい。
【００３１】
ビデオストリーム３００が符号化のために与えられた場合、各フレーム３０６は例示によるブロック等の画素の単位（例えば領域）で処理されてよい。イントラ／インター予測ステージ４０２では、各ブロックは、フレーム内予測（イントラ予測とも呼ばれる）またはフレーム間予測（本明細書においてはインター予測またはインター・予測とも呼ばれる）を使用して符号化されてよい。いずれの場合でも、予測（または予測子）ブロックが形成されてよい。イントラ予測の場合、予測ブロックは、現在フレームにおける前回符号化および再構成されたサンプルから形成されてよい。インター予測の場合、予測ブロックは、１つまたは複数の前回構成された参照フレームにおけるサンプルから形成されてよい。
【００３２】
次に、続けて図４を参照すると、イントラ／インター予測ステージ４０２において予測ブロックが現在ブロックから減じられて、残差ブロック（残差とも呼ばれる）が生成されてよい。変換ステージ４０４は、残差を、ブロックベースの変換を使用して、例えば周波数領域における変換係数に変換する。そのようなブロックベースの変換は、例えば、離散コサイン変換（ＤＣＴ）および非対称離散サイン変換（ＡＤＳＴ）を含む。他のブロックベースの変換も可能である。さらに、異なる変換の組み合わせが単一の残差に対して適用されてよい。変換を適用する１つの例では、ＤＣＴは、残差ブロックを、変換係数値が空間周波数に基づいた周波数領域に変換する。最低周波数（ＤＣ）係数は、行列の左上であり、最高周波数係数は、行列の右下である。予測ブロックおよび従って結果の残差ブロックのサイズは、変換ブロックのサイズとは異なり得ることは注目に値する。例えば、残差ブロックまたは領域は、より小さいブロック領域に分割されて別個の変換が適用されてよい。
【００３３】
量子化ステージ４０６は、量子化器値または量子化レベルを使用して、変換係数を、量子化済み変換係数と呼ばれる離散的な量子値に変換する。例えば、変換係数は、量子化器値で除算され、切り捨てられてよい。量子化済み変換係数はその後、エントロピー符号化ステージ４０８によってエントロピー符号化される。エントロピー符号化は、トークンおよび２進木を含む任意の数の技術を使用して実行されてよい。エントロピー符号化済み係数は、例えば、使用された予測の種類、変換種類、動きベクトル、および量子化器値を含み得る、ブロックを復号するために使用した他の情報と共に、その後、圧縮済みのビットストリーム４２０に出力される。圧縮済みのビットストリーム４２０はまた、符号化済みのビデオストリームまたは符号化済みのビデオビットストリームとも呼ばれてよく、これらの用語は本明細書において交換可能に用いられる。
【００３４】
図４における再構成経路（点線接続で示される）は、エンコーダ４００およびデコーダ５００（以下に記載）の両方が、圧縮済みのビットストリーム４２０を復号するために同じ参照フレームを使用することを確実にするために使用されてよい。再構成経路は、以下により詳細に検討される、復号処理中に行われる機能に類似する機能を実行する。該機能は、逆量子化ステージ４１０における、量子化済み変換係数の逆量子化、および逆変換ステージ４１２における、微分残差ブロック（微分残差とも呼ばれる）を生成するための逆量子化済み変換係数の逆変換を含む。再構成ステージ４１４において、イントラ／インター予測ステージ４０２で予測された予測ブロックが微分残差に追加されて、再構成済みブロックを生成してよい。ループフィルタリングステージ４１６は、ブロッキングアーチファクト等の歪みを減少させるために、再構成済みブロックに適用されてよい。
【００３５】
エンコーダ４００の他の変形例は、圧縮済みのビットストリーム４２０を符号化するために使用されてよい。例えば、非変換ベースのエンコーダ４００は、いくつかのブロックまたはフレームに対する変換ステージ４０４を使わずに、残差信号を直接量子化してよい。別の実装では、エンコーダ４００は、単一のステージに組み合わされた量子化ステージ４０６および逆量子化ステージ４１０を有してよい。本技術によれば、エンコーダ４００は、画素の任意のサイズまたは形状グループを符号化してよい。符号化される画素のグループは、したがって、より一般的には領域と呼ばれることがある。
【００３６】
図５は、別の実装によるデコーダ５００のブロック図である。デコーダ５００は、例えばメモリ２０４に記憶されたコンピュータソフトウェアプログラムを提供することにより、受信局１０６において実装されてよい。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサに実行された場合に、受信局１０６にビデオデータを図５に記載の方法で復号させる機械命令を含んでよいデコーダ５００はまた、例えば、送信局１０２または受信局１０６に含まれるハードウェアにおいて実装されてよい。
【００３７】
デコーダ５００は、上記で検討したエンコーダ４００の再構成経路に類似して、１つの例では、圧縮済みのビットストリーム４２０から出力ビデオストリーム５１６を生成するための様々な機能を実行する以下のステージを有する。つまり、エントロピー復号ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４である。デコーダ５００の他の構造的変形例は、圧縮済みのビットストリーム４２０を復号するために使用されてよい。
【００３８】
圧縮済みのビットストリーム４２０が復号のために与えられた場合、圧縮済みのビットストリーム４２０内のデータ要素は、エントロピー復号ステージ５０２によって復号されて、量子化済み変換係数が生成されてよい。逆量子化ステージ５０４は、量子化済み変換係数を（例えば量子化済み変換係数を量子化器値で乗算することにより）逆量子化し、また逆変換ステージ５０６は、選択された変換種類を使用して、逆量子化済み変換係数を逆変換して、エンコーダ４００における逆変換ステージ４１２により生成されるものと同一になり得る微分残差を生成する。圧縮済みのビットストリーム４２０から復号されるヘッダ情報を使用して、デコーダ５００は、イントラ／インター予測ステージ５０８を使用して、エンコーダ４００において例えばイントラ／インター予測ステージ４０２で生成されるのと同じ予測ブロックを、生成してよい。再構成ステージ５１０において、予測ブロックが微分残差に追加されて、再構成済みブロックを生成してよい。ループフィルタリングステージ５１２は、ブロッキングアーチファクトを減少させるために、再構成済みブロックに適用されてよい。他のフィルタリングが再構成済みブロックに適用されてよい。この例では、デブロッキングフィルタリングステージ５１４は、再構成済みブロックに適用されて、ブロッキング歪みをさせ、その結果が出力ビデオストリーム５１６として出力されてよい。出力ビデオストリーム５１６はまた、復号されたビデオストリームとして呼ばれてよい。これらの用語は本明細書において交換可能に用いられる。
【００３９】
デコーダ５００の他の変形例は、圧縮済みのビットストリーム４２０を復号するために使用されてよい。例えば、デコーダ５００は、デブロッキングフィルタリングステージ５１４を使わずに、出力ビデオストリーム５１６を生成してよい。説明を簡単にするためにブロックを参照して記載されたが、本技術によれば、デコーダ５００は画素の任意のサイズまたは形状グループ（例えば領域）を復号してよい。
【００４０】
上で少し触れたように、フレームまたはフレームの領域は、最終フレーム動きベクトル分割によって、つまり、動きベクトルを使用して最終フレームの分割を調整することにより、符号化または復号のために分割されてよい。一般に、領域は、前回のフレーム分割を、新たな領域の動きベクトルに含まれる動きベクトルのうちの１つにより移行させることで別個の領域に分割される。
【００４１】
図６は、本開示の１つの実装によるビデオストリームを符号化または復号する処理６００のフローチャート図である。本方法または処理６００は、ビデオストリームの符号化または復号を補助するためにコンピューティング装置２００等のシステムに実装されてよい。処理６００は、送信局１０２または受信局１０６等のコンピューティング装置により実行される、例えばソフトウェアプログラムとして実装されてよい。ソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサに実行された場合に、コンピューティング装置に処理６００を実行させる、メモリ２０４等のメモリに記憶された機械可読命令を含んでよい。処理６００はまた、ハードウェアを使用して全体または部分が実装されてよい。上記のように、いくつかのコンピューティング装置は、複数のメモリおよび複数のプロセッサを有してよく、工程または処理６００の演算は、そのような場合、異なるプロセッサおよびメモリを使用して分散されてよい。本明細書における単数形の用語「プロセッサ」および「メモリ」の使用は、複数のプロセッサまたはメモリを有し、各々がいくつかのしかし必ずしも全ての記載された工程ではない実行に使用されてよい装置と同様に、１つのプロセッサまたは１つのメモリのみを有するコンピューティング装置を網羅する。
【００４２】
説明を簡単にするために、処理６００は、一連の工程または演算として示され、記載される。しかしながら、本開示による工程および演算は、様々な順番および／または同時に行われてよい。加えて、本開示による工程または演算は、本明細書に存在および記載のない他の工程または演算と行われてよい。さらに、図示されている工程または演算の全てが、開示された主題による方法の実装に必要とされているわけではない。処理６００は、入力信号の各フレームの各ブロックに対して繰り返されてよい。いくつかの実装では、処理６００に従って、１つまたは複数のフレームのうちのいくつかのブロックのみが処理される。例えば、処理６００を実行する場合、イントラ予測モードを使用して符号化されたブロックは、省略されてよい。
【００４３】
処理６００が符号化処理である場合、入力信号は、例えば、ビデオストリーム３００でよい。入力信号は、処理６００を実行するコンピュータに任意の数の方法で受信されてよい。例えば、入力信号は、画像検知装置２２０にキャプチャ、またはバス２１２に接続された入力を通じて別の装置から受信されてよい。入力信号は、別の実装においては、二次記憶装置２１４から取得されてよい。他の受信方法および入力信号の他のソースが可能である。例えば、処理６００が復号処理の場合、入力信号は、圧縮済みのビットストリーム４２０等の符号化済みのビデオストリームでよい。
【００４４】
ビデオストリームを使用して、ステップ６０２で、処理６００は、ビデオストリームのフレームのシーケンスの第１フレームを符号化した後、複数の参照フレームの各々について、参照バッファインデックスと共に参照フレーム識別子を記憶する。ステップ６０２は、図７を参照に説明され得る。図７は、ＬＡＳＴ＿ＦＲＡＭＥ７０２、ＧＯＬＤＥＮ＿ＦＲＡＭＥ７０４、およびＡＬＴＲＥＦ＿ＦＲＡＭＥ７０６を含む参照フレーム７００を示す。これら３つの参照フレーム７００の１つが、ブロックヘッダ中に各ブロックの参照フレーム７００を示すものとして記載される。フレームヘッダレベルでは、参照フレーム７００から参照仮想識別子またはインデックス７０８の一対一マッピングがビデオストリームに記述される。別の一対一マッピングは、参照仮想インデックス７０８から参照バッファ識別子またはインデックス７１０にマッピングするため、各フレームについて維持される。２つの連続するインターフレームに対して、２つの参照フレーム７００が同じ参照バッファインデックス７１０にマッピングされた場合、処理６００はそれらが同じ参照であると示す。図７の例は８つの利用可能な参照仮想インデックス７０８および８つの参照バッファインデックス７１０を有している。
【００４５】
前回のコロケーテッドブロックが現在ブロックと同一の参照を使用しているかどうかを追跡するため、エンコーダおよびデコーダの両方は、参照フレーム７００バッファ更新を追跡して前回符号化済みのフレームに対する参照バッファインデックス７１０マッピングを保存してよい。したがって、エンコーダおよびデコーダは、コロケーテッドブロックおよび現在ブロックに使用された２つの参照フレームが同じ参照バッファインデックス７１０にマッピングされているかどうかを識別してよい。例えば、各フレームの符号化の終わりまでに、参照フレームバッファを更新する前に、各参照フレーム７００に対応する参照バッファインデックス７１０テーブルはエンコーダおよびデコーダの両方に記憶されてよい。
【００４６】
コロケーテッドブロックの動きベクトルを確認する場合、処理６００は、コロケーテッドブロックに使用された参照フレーム７００を初めに識別してよい。この参照フレーム７００の値を現在ブロックとの直接的な比較に使用する代わりに、デコーダまたはエンコーダは参照バッファインデックス７１０を識別してよい。現在ブロックの参照フレーム７００に対する参照バッファインデックス７１０は、コロケーテッドブロックに対する参照バッファインデックス７１０と比較される。それらが同一の場合、コロケーテッドブロックの動きベクトルは、現在動きベクトルに対する動きベクトル参照として、より高い優先度で考慮される。
【００４７】
図６を再び参照すると、処理６００は、参照フレーム７００および参照フレーム７００に関連付けられた参照仮想インデックス７０８をステップ６０４で更新する。ステップ６０６で、処理６００は、第２フレームの現在ブロックに対する複数の動きベクトル候補を決定する。複数の動きベクトル候補は、第１フレーム内のコロケーテッドブロックを予測するために使用された第１動きベクトルを含む。ステップ６０８で、処理６００は、更新後に、複数の参照フレーム７００のうちの参照フレーム７００内で現在ブロックに対する動き検出を実行して、第２動きベクトルを生成する。ステップ６１０で、処理６００は、第１動きベクトルに関連付けられた参照フレーム７００の参照仮想インデックス７０８と共に記憶された参照バッファインデックス７１０を、動き検出の実行に使用された参照フレーム７００の参照バッファインデックス７１０と比較する。
【００４８】
ステップ６１２で、処理６００は、動き検出の実行に使用された参照フレーム７００の参照仮想インデックス７０８が、第１動きベクトルに関連付けられた参照バッファインデックス７１０に一致するかどうかを判定する。一致が見られた場合、処理６００はステップ６１４に進み、第１動きベクトルが、現在ブロックの符号化に対する複数の動きベクトル候補のうちの残りの候補よりも前に進められてよい。その他の場合、処理６００はステップ６０２に戻り、別のブロックを処理する。
【００４９】
現在ブロックの符号化に対する残りの動きベクトル候補よりも第１動きベクトルを前に進めることにより、選択された動きベクトルによって現在動きベクトルをより正確に予測することが可能となる。従って、予測された動きベクトルと現在動きベクトルとの間の差は小さく、ビデオストリーム中に少数のビットで表現され得ることにより、帯域幅を節約する。
【００５０】
開示された実装の態様は、現在ブロックを予測するために２つの参照フレームを使用してよい双予測を使用して、現在フレームの現在ブロックが予測される場合、動きベクトルを予測してよい。双予測においては、動きベクトル予測に使用された現フレームおよび前フレームの両方は、ＬＡＳＴ＿ＦＲＡＭＥ７０２、ＧＯＬＤＥＮ＿ＦＲＡＭＥ７０４、またはＡＬＴＲＥＦ＿ＦＲＡＭＥ７０６を使用して順方向予測されてよい。図６に関して上記したように、開示された態様は、動き予測に使用された前フレームは、現在フレームと同じ参照フレームを有し得るか判定してよい。現在フレームおよび前フレームが双予測を用いて予測された場合、前フレームにおけるコロケーテッドブロックからの動きベクトル候補は、以下のステップを使用する参照フレームバッファの更新の追跡を通じて判定されてよい。
（１）前フレームおよび前フレームの前のフレームに対する参照フレームバッファ更新を追跡することを通じて、３つの連続したフレームに渡って滑らかな動きが存在するかどうかを確認する。以下の確認ルールが使用される。現在ブロックおよびそのコロケーテッドブロックのペアに対しては、両ブロックは前回符号化済みのフレームを参照として使用し、両参照フレームが前方予測に対して同じサインバイアスを有する。
（２）現在ブロックに対する第２フレームが存在する場合、例えば、現在ブロックに対して複合モードが利用可能な場合は、第２フレームに対して滑らかな動きが存在するかどうかを確認するために、第２フレームに対してステップ（１）を繰り返す。
（３）サインバイアスが、現在ブロックおよびそのコロケーテッドブロックの両方に対する後方予測を示唆しているかどうか、また同一のフレームが両ブロックに対する参照として使用されているかどうかを確認する。以下のルールが使用される。始めに、現在ブロックがＡＬＴＲＥＦ＿ＦＲＡＭＥ７０６をその参照フレームとして使用しているかどうかを確認する。このことは、後方予想が考慮されていることを示唆する。確認できた場合は、その参照フレームのサインバイアスを識別することにより、次にコロケーテッドブロックもまた後方予想を使用しているかどうかを確認する。確認できた場合は、現在ブロックおよびそのコロケーテッドブロックが同一のフレームをそれらの参照として使用しているかを確認する。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
（４）現在ブロックに対する第２フレームが存在する場合、例えば、現在ブロックに対して複合モードが考慮される場合には、現在ブロックおよびコロケーテッドブロックの両方に対して後方予測が存在し、両ブロックが後方予測に対して同一のフレームを使用しているかどうかを確認するために、第２フレームに対してステップ（３）を繰り返す。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
（５）現在ブロックおよびコロケーテッドブロックが同一のフレームをそれらの参照フレームとして使用しているのかを確認する。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
（６）現在ブロックに対する第２フレームが存在する場合、例えば、現在ブロックに対して複合モードが考慮される場合には、現在ブロックおよびコロケーテッドブロックの両方に対してそれらの参照として使用された同一のフレームが存在しているかどうかを確認するために、第２フレームに対してステップ（５）を繰り返す。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
【００５１】
上記の符号化および復号の態様は、符号化および復号技術のいくつかの実施例を説明する。しかしながら、符号化および復号は、それらの用語が特許請求の範囲において使用されるように、データの圧縮、復元、変換、または任意の他の処理もしくは変更を意味し得ることが理解されよう。
【００５２】
「実施例」または「態様」の語は、例、具体例、または説明としての役割を果たすよう本明細書に使用されている。本明細書に「実施例」または「態様」として記載されたいかなる面または設計も、必ずしも他の面または設計より好ましいまたは有利であるとして解釈されるべきではない。むしろ、「実施例」または「態様」の語の使用は、概念を具体的な方法で提示するように意図されている。本明細書に使用されているように、「または」の用語は、排他的な「または」ではなく、包括的な「または」を意味するように意図されている。つまり、特に明記されるか、または文脈から明確でない限り、「ＸはＡまたはＢを含む」は、任意の自然な包括的順列を意味するように意図されている。つまり、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合、「ＸはＡまたはＢを含む」は、上記の例のいずれの場合においても満足される。加えて、本明細書および添付の特許請求の範囲において使用された冠詞「ａ」および「ａｎ」は、特に明記されるか、または文脈から単数形に向けられていることが明確でない限り、「１つまたは複数の」を意味するように一般に解釈されるべきである。さらに、「実装」または「１つの実装」の用語の使用は、そのように記載されていない限り、全体を通して同じ実施形態または実装を意味するようには、意図されていない。
【００５３】
送信局１０２および／または受信局１０６と、（そこに記憶されたおよび／またはそれらによって実行されるエンコーダ４００およびデコーダ５００を含むアルゴリズム、方法、命令等と）の実装は、ハードウェア、ソフトフェア、またはそれらの任意の組み合わせにより実現されてよい。ハードウェアは、例えば、コンピュータ、ＩＰ（ｉｎｔｅｌｌｅｃｔｕａｌ  ｐｒｏｐｅｒｔｙ）コア、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックアレイ、光処理装置、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号処理装置、または任意の他の適切な回路を含んでよい。特許請求の範囲において、「プロセッサ」の用語は、前述のハードウェアの任意の単体または組み合わせを網羅するものとして理解されるべきである。「信号」および「データ」の用語は、交換可能に用いられる。また、送信局１０２および受信局１０６の部分は、必ずしも同様に実装されるべきではない。
【００５４】
また、１つの態様では、例えば、送信局１０２または受信局１０６は、実行された場合に、本明細書に記載されたそれぞれの方法、アルゴリズム、および／または命令の任意のものを実行するコンピュータプログラムを有する汎用コンピュータまたは汎用プロセッサを用いて実装されてよい。加えてまたは代わりに、例えば、本明細書に記載された任意の方法、アルゴリズム、または命令を実行するための他のハードウェアを含み得る専用コンピュータ／プロセッサが利用されてよい。
【００５５】
送信局１０２および受信局１０６は、例えば、ビデオ会議システムにおけるコンピュータ上に実装されてよい。あるいは、送信局１０２はサーバ上に実装されてよく、受信局１０６は、サーバとは別個の、ハンドヘルド通信装置等の装置に実装されてよい。この例においては、送信局１０２はエンコーダ４００を使用して、符号化済みのビデオ信号にコンテンツを符号化し、その符号化済みのビデオ信号を通信装置に送信してよい。今度は、通信装置は、デコーダ５００を使用して符号化済みビデオ信号を復号してよい。あるいは、通信装置は、通信装置上においてローカルに保存されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号してよい。他の適切な送信および受信を実装する仕組みが利用可能である。例えば、受信局１０６は携帯通信装置ではなく、一般に固定のパーソナルコンピュータでよく、および／またはエンコーダ４００を含む装置はまたデコーダ５００を含んでもよい。
【００５６】
さらに、本開示の実装の全てまたは一部は、例えば、有形のコンピュータ使用可能なまたはコンピュータ可読な媒体からアクセス可能なコンピュータプログラム製品の形式を取ってもよい。コンピュータ使用可能なまたはコンピュータ可読な媒体は、例えば、任意のプロセッサによりまたはそれと通信して使用するプログラムを有形に含む、記憶する、通信する、または搬送し得る任意の装置でよい。媒体は、例えば電子的、磁気的、光学的、電磁的、または半導体素子でよい。他の適切な媒体も利用可能である。
【００５７】
上記の実施形態、実装、および態様は、本発明の容易な理解を可能とするために記載されたものであり、本発明を限定するものではない。反対に、本発明は、添付の特許請求の範囲内に含まれる様々な変更例および同等の調整を網羅するように意図されており、法の下に許可される全てのそのような変更例および同等の構造を含むために、範囲には最大限に広い解釈が適用される。
【図１】
2019508918.tif 000003
【図２】
2019508918.tif 000004
【図３】
2019508918.tif 000005
【図４】
2019508918.tif 000006
【図５】
2019508918.tif 000007
【図６】
2019508918.tif 000008
【図７】
2019508918.tif 000009
【国際調査報告】
2019508918.tif 000010
2019508918.tif 000011
2019508918.tif 000012