(57)【要約】  ビデオデータをコーディングするように構成されたデバイスは、ビデオデータを記憶するように構成されたメモリと、少なくとも1つのプロセッサとを含む。少なくとも1つのプロセッサは、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするように構成される。現在ピクチャからのブロックがちらつくかどうかの判断は、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づく。
2017512025.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、
現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするステップであって、前記現在ピクチャからの前記ブロックがちらつくかどうかの判断が、表示順序における前記現在ピクチャ中の前記ブロックおよび前記表示順序における次のピクチャからのコロケートブロックに基づく、ステップ
を含む方法。
【請求項２】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報を生成するステップをさらに含み、
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、前記情報を生成したことに応答して、前記情報をコンテキスト適応バイナリ算術コーディング(CABAC)符号化するステップを含む、
請求項1に記載の方法。
【請求項３】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報を受信するステップをさらに含み、
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、前記情報を受信したことに応答して、前記情報をコンテキスト適応バイナリ算術コーディング(CABAC)復号するステップを含む、
請求項1に記載の方法。
【請求項４】
前記情報をコーディングするステップが、フリッカリングフラグをコーディングするステップを含む、請求項1に記載の方法。
【請求項５】
コンテキスト適応バイナリ算術コーディング(CABAC)コーディングのためのコンテキストとして、前記現在ピクチャからの前記ブロックに対して空間的に隣接するブロックのフリッカリングフラグの値を使用して、前記フリッカリングフラグをCABACコーディングするステップ
をさらに含む、請求項4に記載の方法。
【請求項６】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、前記現在ピクチャからの前記ブロックと前記次のピクチャからの前記ブロックとの間の絶対差分和(SAD)、または前記現在ピクチャからの前記ブロックと前記次のピクチャからの前記ブロックとの間の平均2乗誤差(MSE)のうちの少なくとも1つに基づいて、前記情報をコーディングするステップを含む、請求項1に記載の方法。
【請求項７】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、前記SADまたは前記MSEのうちの前記少なくとも1つがしきい値未満であるときに、
前記現在ピクチャからの前記ブロックのパレットサイズがしきい値パレットサイズを超えるかどうかに基づいて、前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップ
をさらに含む、請求項6に記載の方法。
【請求項８】
領域のコーディングユニット(CU)が最小サイズを有する場合のみ、前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報がコーディングされる、請求項1に記載の方法。
【請求項９】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、
前記ブロックのパレットサイズがしきい値パレットサイズよりも大きい、前記現在ピクチャからの前記ブロックがエッジブロックである、または前記現在ピクチャからの前記ブロックがテクスチャブロックである、のうちの少なくとも1つであるとき、前記情報をコーディングするステップ
を含む、請求項1に記載の方法。
【請求項１０】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップが、
前記コロケートブロックがフリッカリングとして標識されたかどうかに基づいて、前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするステップ
を含む、請求項1に記載の方法。
【請求項１１】
前記ブロックがちらつくかどうかを示す前記情報に基づいて、前記現在ピクチャからの前記ブロックをコーディングするステップ
をさらに含む、請求項1に記載の方法。
【請求項１２】
前記情報をコーディングするステップが、前記現在ピクチャのある領域がフリッカリング領域であることを示す、ビットストリーム中のシンタックス要素をコーディングするステップを含み、
前記ブロックが前記フリッカリング領域内にある、
請求項1に記載の方法。
【請求項１３】
前記現在ピクチャからの前記ブロックをコーディングするステップが、
前記フリッカリング領域に対するCABACコンテキストモデリングの状態をリセットするステップと、
前記CABACコンテキストモデリングの前記リセットされた状態に基づいて、前記現在ピクチャからの前記ブロックをコーディングするステップと
をさらに含む、請求項12に記載の方法。
【請求項１４】
前記フリッカリング領域であると示された前記ある領域についてのコーディングツールに対する制約に基づいて、前記現在ピクチャからの前記ブロックをコーディングするステップ
をさらに含む、請求項12に記載の方法。
【請求項１５】
前記制約が、前記現在ピクチャからの前記ブロックに対するかつ前記フリッカリング領域の空間的に隣接するブロックを、イントラ予測に利用不可能であるものとして標識することによって、前記フリッカリング領域における空間イントラ予測を無効化することを含む、請求項14に記載の方法。
【請求項１６】
前記制約が、前記フリッカリング領域内部のブロックをイントラ予測に利用不可能であるものとして標識することを含む、請求項12に記載の方法。
【請求項１７】
ビデオデータをコーディングするためのデバイスであって、
前記ビデオデータを記憶するように構成されたメモリと、
現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするように構成され、前記現在ピクチャからの前記ブロックがちらつくかどうかの判断が、表示順序における前記現在ピクチャ中の前記ブロックおよび前記表示順序における次のピクチャからのコロケートブロックに基づく、少なくとも1つのプロセッサと
を備えるデバイス。
【請求項１８】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするために、前記少なくとも1つのプロセッサが、
前記現在ピクチャのある領域がフリッカリング領域であることを示す、ビットストリーム中のシンタックス要素をコーディングするようにさらに構成され、
前記ブロックが前記フリッカリング領域内にある、
請求項17に記載のデバイス。
【請求項１９】
前記少なくとも1つのプロセッサが、
前記フリッカリング領域であると示された前記ある領域についてのコーディングツールに対する制約に基づいて、前記現在ピクチャからの前記ブロックをコーディングする
ようにさらに構成される、請求項18に記載のデバイス。
【請求項２０】
前記現在ピクチャからの前記ブロックをコーディングするために、前記少なくとも1つのプロセッサが、
前記フリッカリング領域に対するCABACコンテキストモデリングの状態をリセットし、
前記CABACコンテキストモデリングの前記リセットされた状態に基づいて、前記現在ピクチャからの前記ブロックをコーディングする
ようにさらに構成される、請求項18に記載のデバイス。
【請求項２１】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするために、前記少なくとも1つのプロセッサが、前記現在ピクチャからの前記ブロックと前記次のピクチャからの前記ブロックとの間の絶対差分和(SAD)、または前記現在ピクチャからの前記ブロックと前記次のピクチャからの前記ブロックとの間の平均2乗誤差(MSE)のうちの少なくとも1つに基づいて、前記情報をコーディングするようにさらに構成される、請求項17に記載のデバイス。
【請求項２２】
領域のコーディングユニット(CU)が最小サイズを有する場合のみ、前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報がコーディングされる、請求項17に記載のデバイス。
【請求項２３】
前記少なくとも1つのプロセッサが、
前記ブロックがちらつくかどうかを示す前記情報に基づいて、前記現在ピクチャからの前記ブロックをコーディングする
ようにさらに構成される、請求項17に記載のデバイス。
【請求項２４】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするために、前記少なくとも1つのプロセッサが、
前記ブロックのパレットサイズがしきい値パレットサイズよりも大きい、前記現在ピクチャからの前記ブロックがエッジブロックである、または前記現在ピクチャからの前記ブロックがテクスチャブロックである、のうちの少なくとも1つであるとき、前記情報をコーディングする
ようにさらに構成される、請求項17に記載のデバイス。
【請求項２５】
ビデオデータをコーディングするためのデバイスであって、
現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするための手段と、
表示順序における前記現在ピクチャ中の前記ブロックおよび前記表示順序における次のピクチャからのコロケートブロックに基づいて、前記現在ピクチャからの前記ブロックがちらつくかどうかを判断するための手段と
を備えるデバイス。
【請求項２６】
前記現在ピクチャからの前記ブロックがちらつくかどうかを示す前記情報をコーディングするための前記手段が、前記現在ピクチャのある領域がフリッカリング領域であることを示す、ビットストリーム中のシンタックス要素をコーディングするための手段をさらに備え、
前記ブロックが前記フリッカリング領域内にある、
請求項25に記載のデバイス。
【請求項２７】
前記フリッカリング領域であると示された前記ある領域についてのコーディングツールに対する制約に基づいて、前記現在ピクチャからの前記ブロックをコーディングするための手段
をさらに備える、請求項26に記載のデバイス。
【請求項２８】
前記フリッカリング領域に対するCABACコンテキストモデリングの状態をリセットするための手段と、
前記CABACコンテキストモデリングの前記リセットされた状態に基づいて、前記現在ピクチャからの前記ブロックをコーディングするための手段と
をさらに備える、請求項26に記載のデバイス。
【請求項２９】
前記ブロックがちらつくかどうかを示す前記情報に基づいて、前記現在ピクチャからの前記ブロックをコーディングするための手段をさらに備える、請求項26に記載のデバイス。
【請求項３０】
実行されると、少なくとも1つのプロセッサに、
現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングさせる、記憶された命令を備え、前記現在ピクチャからの前記ブロックがちらつくかどうかの判断が、表示順序における前記現在ピクチャ中の前記ブロックおよび前記表示順序における次のピクチャからのコロケートブロックに基づく、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その全体が参照により本明細書に組み込まれる、2014年3月5日に出願した米国仮出願第61/948,469号の優先権を主張する。
【０００２】
本開示は、ビデオデータの符号化および復号などのビデオコーディングおよび/またはビデオ処理に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップコンピュータまたはデスクトップコンピュータ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、ビデオ遠隔会議デバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part 10、アドバンストビデオコーディング(AVC)によって定義される規格、現在開発中の高効率ビデオコーディング(HEVC)規格、およびそのような規格の拡張に記載されるビデオ圧縮技法などのビデオ圧縮技法を実装して、デジタルビデオ情報をより効率的に送信、受信および記憶する。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間予測および/または時間予測を含む。ブロックベースのビデオコーディングの場合、ビデオフレームまたはスライスはブロックに区分され得る。各ブロックはさらに区分され得る。イントラコード化(I)フレームまたはスライス中のブロックは、同じフレームまたはスライス中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。インターコード化(PまたはB)フレームまたはスライス中のブロックは、同じフレームもしくはスライス中の隣接ブロック中の参照サンプルに対する空間予測または他の参照フレーム中の参照サンプルに対する時間予測を使用し得る。空間予測または時間予測は、コーディングされるべきブロックの予測ブロックをもたらす。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。
【０００５】
インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示す。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて、残差変換係数が得られ得、残差変換係数は、次いで量子化され得る。最初は2次元アレイで構成される量子化変換係数は、エントロピーコーディングのための変換係数の1次元ベクトルを生成するために、特定の順序で走査され得る。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】「Advanced video coding for generic audiovisual services」、ITU-T勧告H.264、2010年3月
【非特許文献２】文書JCTVC-L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip
【発明の概要】
【課題を解決するための手段】
【０００７】
一般に、本開示では、ビデオデータにおけるフリッカリングを検出および軽減するための技法について説明する。フリッカリングは、コーディングモードの選択および時間特性によりビデオコーディングにおいて生じ得る、視覚的アーティファクトである。たとえば、フリッカリングは通常、ビデオシーケンスがIスライスのみを使用して低ビットレートで、たとえば、イントラ予測モードでコーディングされるときに観測される。本開示の技法に従って構成されたビデオコーダ(すなわち、ビデオエンコーダまたはビデオデコーダ)は、ビデオデコーダによって復号された後にブロックがちらつくかどうかを判断するために、現在フレームのブロックを前のフレームのブロックと比較する様々なメトリックを使用し得る。
【０００８】
本開示の技法は、フリッカリングを軽減するために、ビデオコーダによって実行され得る。ビデオコーダは、ちらつくとビデオコーダが判断するビデオデータのブロックについて、コーディングモードなどのコーディングツールを制約することによって、フリッカリングを軽減しようと試み得る。一例として、ビデオエンコーダまたはデコーダは、フリッカリングブロックをイントラ予測モードに制約し得るか、またはブロックに対するイントラブロックコーディング(イントラBC)の使用を禁止し得る。場合によっては、本開示の技法は、必要な場合、追加のビデオ処理ステップを取ることができるように、フリッカリング(または潜在的なフリッカリングブロック)を識別するにすぎない。
【０００９】
本開示の追加の技法は、ピクチャの特定の領域がちらつくことを示す情報をコーディング(すなわち、符号化または復号)するための技法に関する。コーディングされた情報は、たとえば、フリッカリング領域を示すフリッカリングフラグを備え得る。ビデオエンコーダはフリッカリングフラグを符号化し得る、かつ/または、デコーダは様々な例におけるフリッカリングフラグの値を推測し得る。加えて、本開示では、フリッカリングフラグのコーディング効率を改善するための技法について説明する。
【００１０】
一例では、ビデオデータをコーディングする方法は、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするステップであって、現在ピクチャからのブロックがちらつくかどうかの判断が、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づく、ステップを含む。
【００１１】
別の例では、ビデオデータをコーディングするように構成されたデバイスは、ビデオデータを記憶するように構成されたメモリと、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするように構成され、現在ピクチャからのブロックがちらつくかどうかの判断が、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づく、少なくとも1つのプロセッサとを含む。
【００１２】
別の例では、ビデオデータをコーディングするように構成されたデバイスは、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするための手段と、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づいて、現在ピクチャからのブロックがちらつくかどうかを判断するための手段とを含む。
【００１３】
別の例では、非一時的コンピュータ可読記憶媒体は、実行されると、少なくとも1つのプロセッサに、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングさせ、現在ピクチャからのブロックがちらつくかどうかの判断が、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づく、命令を含む。
【００１４】
本開示の1つまたは複数の態様の詳細を添付の図面および以下の説明に記載する。本開示で説明する技法の他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１５】
【図１】本開示で説明する技法を利用し得る例示的なビデオ符号化および復号システムを示すブロック図である。
【図２】本開示で説明する技法を実装し得る例示的なビデオエンコーダを示すブロック図である。
【図３】本開示で説明する技法を実装し得る例示的なビデオデコーダを示すブロック図である。
【図４】本開示の技法によるフリッカー検出を実行するためのプロセスを示すフローチャートである。
【図５】本開示の技法によるフリッカー検出を実行するためのプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１６】
ビデオコーディング規格は、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、およびそれのスケーラブルビデオコーディング(SVC)拡張とマルチビューコーディング(MVC)拡張とを含むITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)を含む。MVCの最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU-T勧告H.264、2010年3月に記載されている。
【００１７】
加えて、ITU-T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発された、新しい開発されたビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)がある。「HEVC Working Draft 10」または「WD10」と呼ばれるHEVCの最近のドラフトは、文書JCTVC-L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記載されており、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipから入手可能である。
【００１８】
本開示の技法はビデオコーディングに関し、ビデオの閲覧者には「フリッカリング」として見える、視覚的アーティファクトまたは視覚的不一致を緩和し得る。フリッカリングアーティファクトは、コード化ビデオデータの閲覧者には不自然に見え、閲覧者に対するビデオの主観的な品質を改善するために低減または排除されるべきである。
【００１９】
以下でより詳細に説明するように、本開示の技法は、ビデオコーダがフリッカリングアーティファクトを低減または排除することを可能にし得る。本開示の技法に従って構成されたビデオエンコーダは、ちらつくビデオデータのピクチャの領域を識別しようとし得る。ビデオエンコーダは、現在ピクチャのブロックと別のピクチャのコロケートブロックとの間の差分に基づいて、潜在的なフリッカリング領域を識別し得る。
【００２０】
特定の領域がちらつき得るとビデオエンコーダが判断した場合、ビデオエンコーダは、シンタックス要素などの、フリッカリング領域を示す情報を符号化し得る。符号化された情報は、以下でより詳細に説明するように、ほぼ逆の復号プロセスを実行するように構成されたビデオデコーダが、フリッカリングを低減するために、何らかの制約を現在ブロックに適用すべきであることを示し得る。
【００２１】
図1は、本開示の例によるフリッカー検出およびフリッカー軽減のための技法を利用するように構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、符号化ビデオを通信チャネル16を介して宛先デバイス14に送信するソースデバイス12を含む。符号化ビデオデータはまた、記憶媒体34またはファイルサーバ36上に記憶され得、必要に応じて宛先デバイス14によってアクセスされ得る。記憶媒体またはファイルサーバ上に記憶されるとき、ビデオエンコーダ20は、ネットワークインターフェース、コンパクトディスク(CD)、ブルーレイもしくはデジタルビデオディスク(DVD)バーナーまたはスタンピング設備デバイス、あるいは他のデバイスなどの、コーディングされたビデオデータを記憶媒体上に記憶するための別のデバイスにコーディングされたビデオデータを与え得る。同様に、ネットワークインターフェース、CDまたはDVDリーダーなどの、ビデオデコーダ30とは別個のデバイスは、コーディングされたビデオデータを記憶媒体から取り出し、取り出されたデータをビデオデコーダ30に与え得る。
【００２２】
ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノードブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。多くの場合、そのようなデバイスはワイヤレス通信のために装備され得る。したがって、通信チャネル16は、符号化ビデオデータの送信に適した、ワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルの組合せを備え得る。同様に、ファイルサーバ36は、インターネット接続を含む任意の標準のデータ接続を通じて、宛先デバイス14によってアクセスされ得る。これは、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。
【００２３】
技法は、本開示の例によれば、たとえば、インターネット、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他のアプリケーションを介して、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、ストリーミングビデオ送信などの様々なマルチメディアアプリケーションのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどのアプリケーションをサポートするために、一方向または双方向ビデオ送信をサポートするように構成され得る。
【００２４】
いくつかの例では、本開示で説明する技法は、HEVCによるビデオコーディングにおいて特に有用であり得る。ただし、本開示で説明する技法は、任意の特定のビデオコーディング規格に限定されると見なされるべきではない。本開示で説明する技法は、規格外ベースのビデオコーディングにも適用可能であり得る。
【００２５】
図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器22と、送信機24とを含む。ソースデバイス12において、ビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてのコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、またはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、たとえば、スマートフォンまたはタブレットコンピュータ内で提供され得る、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明する技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/もしくはワイヤードアプリケーション、または符号化ビデオデータがローカルディスク上に記憶されるアプリケーションに適用され得る。
【００２６】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、ワイヤードまたはワイヤレス通信プロトコルなどの通信規格に従って、モデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、様々な混合器、フィルタ、増幅器または信号変調用に設計された他の構成要素を含み得る。送信機24は、増幅器と、フィルタと、ワイヤレス通信の場合には、1つまたは複数のアンテナとを含む、データを送信するために設計された回路を含み得る。
【００２７】
ビデオエンコーダ20によって符号化されたキャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体34またはファイルサーバ36上に記憶され得る。記憶媒体34は、ブルーレイディスク、DVD、CD-ROM、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の適切なデジタル記憶媒体を含み得る。次いで、記憶媒体34上に記憶された符号化ビデオは、復号および再生のために宛先デバイス14によってアクセスされ得る。図1には示されていないが、いくつかの例では、記憶媒体34および/またはファイルサーバ36は、送信機24の出力を記憶し得る。
【００２８】
また、記憶媒体34およびファイルサーバ36は、ビデオエンコーダ20からビデオデータを受信するものとして示されているが、いくつかの例では、記憶媒体34およびファイルサーバ36は、ビデオエンコーダ20ではなく、送信機24または何らかの他のユニットからビデオデータを受信し得る。同様に、記憶媒体34およびファイルサーバ36は、ビデオデコーダ30にビデオデータを出力するものとして示されているが、いくつかの例では、記憶媒体34およびファイルサーバ36は、ビデオデコーダ30ではなく、受信機26または何らかの他のユニットにビデオデータを出力し得る。これらの例では、ビデオデコーダ30は、受信機26または何らかの他のユニットからビデオデータを受信し得る。
【００２９】
ファイルサーバ36は、符号化ビデオを記憶し、その符号化ビデオを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイスに送信することが可能な任意の他のタイプのデバイスを含む。ファイルサーバ36からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。ファイルサーバ36は、インターネット接続を含む任意の標準のデータ接続を通じて、宛先デバイス14によってアクセスされ得る。これは、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデム、イーサネット（登録商標）、USBなど)、またはその両方の組合せを含み得る。
【００３０】
宛先デバイス14は、図1の例では、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の受信機26は、チャネル16を介して情報を受信し、モデム28は、その情報を復調して、ビデオデコーダ30のための復調されたビットストリームを生成する。チャネル16を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ30が使用するための、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体34またはファイルサーバ36上に記憶された符号化ビデオデータとともに含まれ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能なそれぞれのエンコーダ-デコーダ(コーデック)の一部を形成し得る。
【００３１】
ディスプレイデバイス32は、宛先デバイス14と一体であってもよく、または宛先デバイス14の外部にあってもよい。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【００３２】
図1の例では、通信チャネル16は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレス通信媒体またはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体の任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は一般に、ソースデバイス12から宛先デバイス14にビデオデータを送信するための、ワイヤード媒体またはワイヤレス媒体の任意の適切な組合せを含む、任意の適切な通信媒体、または異なる通信媒体の集合を表す。通信チャネル16は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするのに有用であり得る任意の他の機器を含み得る。
【００３３】
ビデオエンコーダ20およびビデオデコーダ30は、ITU-T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT-VC)によって開発された高効率ビデオコーディング(HEVC)規格および/またはHEVC規格の拡張などのビデオ圧縮規格に従って動作し得る。HEVCの範囲拡張は、現在開発中である。「HEVC Working Draft 10」または「WD10」と呼ばれるHEVC規格の最近のドラフトは、文書JCTVC-L1003v34、Brossら、「High efficiency video coding (HEVC) text specification draft 10 (for FDIS & Last Call)」、ITU-T SG16 WP3とISO/IEC JTC1/SC29/WG11のJoint Collaborative Team on Video Coding(JCT-VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記載されており、2015年2月23日現在、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipからダウンロード可能である。HEVC WD10の内容全体は、参照により本明細書に組み込まれる。
【００３４】
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体化され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。該当する場合、いくつかの例では、MUX-DEMUXユニットは、マルチプレクサプロトコルに準拠し得る。例としては、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルがある。
【００３５】
ビデオエンコーダ20およびビデオデコーダ30は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な適切なエンコーダ回路のいずれかとして実装され得る。技法がソフトウェアで部分的に実装されるとき、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、これらのいずれもが、それぞれのデバイス内の複合エンコーダ/デコーダ(コーデック)の一部として統合されてもよい。
【００３６】
ビデオデコーダ30を含むデバイスの例としては、ワイヤレス通信デバイス、集積回路(IC)、およびマイクロプロセッサがある。同様に、ビデオエンコーダ20を含むデバイスの例としては、ワイヤレス通信デバイス、集積回路(IC)、およびマイクロプロセッサを含む。
【００３７】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は各々、本開示で説明する技法を実装するように構成された1つまたは複数のプロセッサを含み得る。ビデオエンコーダ20またはビデオデコーダ30を含むデバイスは、ビデオエンコーダ20およびビデオデコーダ30が利用するビデオデータを記憶するメモリも含み得る。ビデオエンコーダ20およびビデオデコーダ30を含むデバイスがICチップまたはマイクロプロセッサである例では、メモリはICチップもしくはマイクロプロセッサのローカルメモリであり得るか、あるいはICチップもしくはマイクロプロセッサを含む装置(たとえば、スマートフォンまたはタブレットなどのワイヤレス通信デバイス)のシステムメモリ、またはローカルメモリとシステムメモリの組合せであり得る。ビデオエンコーダ20およびビデオデコーダ30を含むデバイスがワイヤレス通信デバイス(または他のそのようなデバイス)である例では、メモリは、ビデオエンコーダ20もしくはビデオデコーダ30のローカルメモリ、ビデオエンコーダ20もしくはビデオデコーダ30を含むデバイスのシステムメモリ、またはローカルメモリとシステムメモリの組合せであり得る。
【００３８】
ビデオエンコーダ20は、フリッカー検出および軽減のための本開示の技法のいずれかまたはすべてを実装し得る。同様に、ビデオデコーダ30は、フリッカー検出および軽減のためのこれらの技法のいずれかまたはすべてを実装し得る。本開示で説明するようなビデオコーダは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指し得る。同様に、ビデオコーディングは、ビデオ符号化またはビデオ復号を指し得る。
【００３９】
デジタルビデオデバイスは、デジタルビデオ情報をより効率的に符号化および復号するために、ビデオ圧縮技法を実装する。ビデオ圧縮は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間(フレーム内)予測技法および/または時間(フレーム間)予測技法を適用し得る。
【００４０】
JCT-VCは、たとえば、上記で説明したHEVC WD10に記載されるようなHEVC規格を開発してきた。HEVC規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスのモデルに基づいている。HMは、たとえば、ITU-T H.264/AVCによる既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の機能を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HEVC HMは33個ものイントラ予測符号化モードを提供し得る。以下のセクションでは、HMのいくつかの態様についてより詳細に説明する。
【００４１】
HEVC規格によるビデオコーディングの場合、ビデオフレームは、コーディングユニットに区分され得る。コーディングユニット(CU)は一般に、ビデオ圧縮のために様々なコーディングツールが適用される基本単位として働く画像領域を指す。CUは通常、Yとして示される1つのルミナンス成分と、UおよびVとして示される2つのクロマ成分とを有する。ビデオサンプリングフォーマットに応じて、U成分およびV成分のサイズは、サンプルの数の点で、Y成分のサイズと同じであるか、またはそれとは異なる場合がある。
【００４２】
CUは通常、方形であり、たとえば、ITU-T H.264などの他のビデオコーディング規格の下では、いわゆるマクロブロックと同様であるものと見なされ得る。例示のために、本出願では、HEVC規格の現在提案されている態様のうちのいくつかによるコーディングについて説明する。ただし、本開示で説明する技法は、HEVC、H.264もしくは他の規格の範囲拡張に従って定義されるプロセス、またはプロプライエタリビデオコーディングプロセスなど、他のビデオコーディングプロセスに有用であり得る。
【００４３】
HMによれば、CUは、1つもしくは複数の予測ユニット(PU)および/または1つもしくは複数の変換ユニット(TU)を含み得る。ビットストリーム内のシンタックスデータは、ピクセルの数の点で最大のCUである、最大コーディングユニット(LCU)を定義し得る。一般に、CUがサイズの区別を有しないことを除き、CUはH.264のマクロブロックと同様の目的を有する。したがって、CUはサブCUに分割され得る。一般に、本開示におけるCUへの言及は、ピクチャの最大コーディングユニットまたはLCUのサブCUを指し得る。LCUはサブCUに分割され得、各サブCUはサブCUにさらに分割され得る。ビットストリームのシンタックスデータは、CU深さと呼ばれる、LCUが分割され得る最大回数を定義し得る。したがって、ビットストリームは、最小コーディングユニット(SCU)も定義し得る。本開示は、CU、PU、またはTUのいずれかを指すために、「ブロック」または「部分」という用語も使用する。一般に、「部分」は、ビデオフレームの任意のサブセットを指し得る。
【００４４】
LCUは、4分木データ構造に関連付けられ得る。一般に、4分木データ構造はCU当たり1つのノードを含み、ルートノードはLCUに対応する。CUが4つのサブCUに分割される場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックスデータを提供し得る。たとえば、4分木中のノードは、ノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的な分割がなくても、リーフCUの4つのサブCUもリーフCUと呼ばれる。たとえば、16×16サイズのCUがさらに分割されない場合、16×16 CUが決して分割されなかったにもかかわらず、4つの8×8サブCUもリーフCUと呼ばれる。
【００４５】
リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。一般に、PUは、対応するCUのすべてまたは一部分を表し、PUの参照サンプルを取り出すためのデータを含み得る。たとえば、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照フレーム、および/または動きベクトルの参照リスト(たとえば、リスト0またはリスト1)を記述し得る。PUを定義するリーフCUのデータは、たとえば、CUの1つまたは複数のPUへの分割も記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかに応じて異なり得る。イントラコーディングの場合、PUは以下で説明するリーフ変換ユニットと同じように扱われ得る。
【００４６】
HEVC規格は、CUによって異なり得る、変換ユニット(TU)による変換を可能にする。TUは通常、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これが必ずしも当てはまるとは限らない場合がある。TUは通常、同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得、変換係数は、量子化され得る。TUは、1つのルーマ変換ブロックと、2つのクロマ変換ブロックとを含む。したがって、TUに適用される、以下で説明する任意のコーディングプロセスは、実際には、ルーマ変換ブロックおよびクロマ変換ブロックに適用され得る。
【００４７】
一般に、PUは、予測プロセスに関するデータを参照する。たとえば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。
【００４８】
一般に、TUは変換プロセスおよび量子化プロセスに使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数の変換ユニット(TU)も含み得る。予測の後、ビデオエンコーダ20は、PUに従ってコーディングノードによって識別されたビデオブロックから残差値を計算し得る。次いで、コーディングノードは、元のビデオブロックではなく残差値を参照するように更新される。残差値は、エントロピーコーディングのためのシリアル化変換係数を生成するために、変換係数に変換され、量子化され、TU中で指定された変換および他の変換情報を使用して走査され得るピクセル差分値を備える。コーディングノードは、これらのシリアル化変換係数を参照するように、もう一度更新され得る。本開示は通常、CUのコーディングノードを指すために、「ビデオブロック」という用語を使用する。いくつかの特定の場合には、本開示はまた、ツリーブロック、すなわち、LCU、またはコーディングノードとPUとTUとを含むCUを指すために、「ビデオブロック」という用語を使用し得る。
【００４９】
ビデオシーケンスは通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は一般に、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOPに含まれるピクチャの数を記述するシンタックスデータを、GOPのヘッダ、ピクチャのうちの1つまたは複数のヘッダ、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロック上で動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは固定サイズまたは可変サイズを有してもよく、指定されたコーディング規格に従ってサイズが異なり得る。
【００５０】
ブロック(たとえば、ビデオデータの予測ユニット)をコーディングするために、ブロックの予測子が最初に導出される。予測ブロックとも呼ばれる予測子は、イントラ(I)予測(すなわち、空間予測)またはインター(PまたはB)予測(すなわち、時間予測)のいずれかを介して導出され得る。したがって、いくつかの予測ユニットは、同じフレーム(またはスライス)中の隣接参照ブロック中の参照サンプルに対する空間予測を使用してイントラコード化(I)され得、他の予測ユニットは、他の前にコーディングされたフレーム(またはスライス)中の参照サンプルのブロックに対して単方向にインターコード化(P)されるかまたは双方向にインターコード化(B)され得る。各場合において、参照サンプルは、コーディングされるべきブロックの予測ブロックを形成するために使用され得る。
【００５１】
予測ブロックを識別すると、元のビデオデータブロック中のピクセルとその予測ブロック中のピクセルとの間の差分が判断される。この差分は、予測残差データと呼ばれることがあり、コーディングされるべきブロック中のピクセル値とコード化ブロックを表すために選択される予測ブロック中のピクセル値との間のピクセル差分を示す。より良い圧縮を達成するために、予測残差データは、たとえば、離散コサイン変換(DCT)、整数変換、カルーネンレーベ(K-L)変換、または変換係数を生成するための別の変換を使用して、変換され得る。
【００５２】
TUなどの変換ブロック中の残差データは、空間ピクセル領域に存在するピクセル差分値の2次元(2D)アレイで構成され得る。変換は、残差ピクセル値を、周波数領域などの変換領域中の変換係数の2次元アレイに変換する。
【００５３】
さらなる圧縮のために、変換係数はエントロピーコーディングより前に量子化され得る。次いで、エントロピーコーダは、コンテキスト適応可変長コーディング(CAVLC:Context Adaptive Variable Length Coding)、コンテキスト適応バイナリ算術コーディング(CABAC:Context Adaptive Binary Arithmetic Coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングなどのエントロピーコーディングを量子化変換係数に適用する。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、事前定義された走査順序を利用して量子化変換係数を走査し得る。他の例では、ビデオエンコーダ20は適応走査を実行し得る。1次元ベクトルを形成するために量子化変換係数を走査した後、ビデオエンコーダ20は、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ20は、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連付けられたシンタックス要素もエントロピー符号化し得る。
【００５４】
算術コーディングは、シンボルを非整数長さコードワードにマッピングすることが可能であるので、高いコーディング効率を有する多くの圧縮アルゴリズムにおいて使用されるエントロピーコーディングの一形態である。CABACコーディングは、一部の情報に適用され、他の情報については回避され得る。
【００５５】
上記で説明したように、ビデオエンコーダ20またはビデオデコーダ30が動き推定を実行するとき、フリッカリングアーティファクトが生じる場合がある。次に、フリッカリングアーティファクトが検出され得るプロセスについて説明する。HEVCでは、Iスライスをコーディングするとき、ビデオコーダは、現在スライスからの前に再構成したサンプルに基づいて予測を実行する。PまたはBスライスのインター予測の場合、ビデオコーダは、前にコーディングされたピクチャ(表示順序における過去または将来)に基づいて予測を実行し得る。すべてのスライスがIスライスであると想定して本開示の技法について説明するが、本開示の技法はビデオシーケンスがIスライス、PスライスおよびBスライスの混合であるときに適用可能であり得る。
【００５６】
前にコーディングされたピクチャに基づいた予測に対する現在スライスからの予測における差分は、PスライスおよびBスライスの量子化残差および予測残差と比較して、Iスライスの予測残差および量子化特性にまったく異なる影響を及ぼす。同様に、2つの連続するIスライス間の予測残差および量子化特性も、時間予測がないせいで、まったく異なり得る。2つの連続するIスライス間の予測残差および量子化特性が異なっていることは、「フリッカリング」と呼ばれるIスライスの視覚的アーティファクトを生じる場合がある。
【００５７】
本開示は、上記で説明した問題に対処するいくつかの技法を提案する。本開示の技法に従って構成されたビデオエンコーダ20などのビデオコーダは、フリッカリングアーティファクトに対処するために、フリッカー検出ならびにフリッカー軽減を実行し得る。次に、本開示の一般的なフリッカー検出技法について説明する。
【００５８】
ビデオエンコーダ20は、表示順序において前にコーディングされたピクチャからのコロケートブロックに基づいて現在ピクチャ(すなわち、現在コーディングされているビデオデータのピクチャ)からのブロックのフリッカリングを検出するように、本開示の技法に従って構成され得る。
【００５９】
ビデオエンコーダ20は、前のピクチャからのコロケートブロックの判断されたフリッカリングブロックのビデオコーディングモードが、現在ピクチャのフリッカリングブロックに関連付けられたフリッカリングアーティファクトを軽減するように制約または変更されなければならないと判断し得る。これは通常、ビデオエンコーダにおいて達成することが非常に困難である。前にコーディングされたコロケートブロックのビデオコーディングモードを変更するのではなく、本開示の技法は、現在ピクチャからの元のブロックと、ビデオデータの表示順序における次のピクチャからのコロケートされた元のブロックとを使用して、フリッカリングを判断および軽減するようにビデオエンコーダ20を構成し得る。本開示では、現在ブロックおよび表示順序における次のブロックを、それぞれ、BcurrentおよびBnextと呼ぶ。
【００６０】
ビデオエンコーダ20は、現在フレームのブロックと表示順序における次のフレームのコロケートブロックとの間の差分を判断し得る。ブロック、Bcurrentと、コロケートブロック、Bnextとの間の差分に基づいて、ビデオエンコーダ20は、現在フレームのブロック、Bcurrentがちらつくと判断し得る。ビデオエンコーダ20は、BcurrentのブロックおよびBnextのコロケートブロックのメトリックを判断(たとえば、メトリック間の差分を計算)し得る。ビデオエンコーダ20が比較し得るメトリックの例としては、勾配、絶対差分和(SAD)、および平均2乗誤差(MSE)がある。メトリックに基づいて、また、以下でさらに詳細に説明するように、ビデオエンコーダ20は、フリッカー軽減が実行されるべきであると判断し、ブロック、Bcurrentである現在ピクチャがちらつくことを示す情報をコーディングし得る。
【００６１】
いくつかの例では、符号化された情報は、フリッカリング領域を示すフラグなどのシンタックス要素を備え得る。シンタックス要素を生成または設定すると、ビデオエンコーダ20またはビデオデコーダ30は、設定されているシンタックス要素に基づいて、任意のタイプの追加のビデオ処理を実行し得る。追加のビデオ処理の例としては、様々なタイプのフィルタリング、アンチエイリアシング、デブロッキング、アーティファクト除去、および/または本明細書で明示的に説明しない任意の他のタイプのビデオ処理があり得る。
【００６２】
領域は、いくつかの例では、現在ピクチャからのブロック、Bcurrentを含み得る。ブロックがちらつくことを示す情報は、LCU、CTU(コーディングツリーユニット)、CU、PUまたはブロックなどのある領域がフリッカリング領域であることを示し得る。そのような領域では、ビデオエンコーダ20およびビデオデコーダ30は、フリッカリングアーティファクトを軽減するために、空間イントラ予測およびイントラブロックコピー(イントラBC)などのいくつかのコーディングモードおよび/またはツールを制約し得る。次に、本開示の技法によるフリッカー軽減技法の追加の例について説明する。
【００６３】
一例では、ビデオエンコーダ20およびビデオデコーダ30は、フリッカリング領域における空間イントラ予測を無効化し得る。ビデオエンコーダ20は、フリッカリング領域の空間隣接ブロックをイントラ予測には利用不可能として標識することによって、空間イントラ予測が無効化されることを示し得る。別の例では、ビデオエンコーダ20およびビデオデコーダ30は、フリッカリング領域内部のブロックをイントラ予測には利用不可能として標識し得、その結果、異なる変換サイズおよび結果として生じる予測によって引き起こされるフリッカリングアーティファクトがさらに軽減される。
【００６４】
ビデオエンコーダ20がブロックをイントラ予測には利用不可能として標識する場合、ビデオエンコーダ20およびビデオデコーダ30は、たとえば、HEVCのセクション8.4.4.2.2に従って利用不可能なサンプルの代理をする、イントラサンプル予測のためのHEVC参照サンプル置換プロセスを使用し得る。利用不可能なサンプルをパディングすることは、ビットストリームの複雑さを犠牲にしてフリッカリングを軽減し得る。いくつかの他の例では、ビデオエンコーダ20は、非フリッカリング領域中のブロックのみをイントラ予測には利用不可能として標識し得る。
【００６５】
次に、フリッカリングの領域を識別する情報をコーディングすることに関する様々な技法について説明する。上記で説明したように、ビデオコーディングデータは、複数の異なるレベルを備える。ビットストリームの例示的なレベルは、LCU、CU、PU、またはTUを備え得る。ビデオエンコーダ20およびビデオデコーダ30は、フリッカリング領域を示す情報、たとえば、ビットストリームの任意のレベルにおけるフリッカリングフラグをコーディングし得る。
【００６６】
本開示のいくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、フリッカリングとして標識されたブロックの予測を実行しない場合がある。そのような場合、元のサンプルは、変換モードまたは変換スキップモードを使用してコーディングされる。この場合、フリッカリングフラグがCUレベルでコーディングされる場合、ビデオエンコーダ20およびビデオデコーダ30は、CUレベルでフリッカリングフラグをコーディングし得、ビデオエンコーダ20は、そのCUのためのイントラ予測モードをシグナリングしない場合がある。
【００６７】
加えて、CUがフリッカリング領域中にある場合、ビデオエンコーダ20およびビデオデコーダ30は、たとえば、CUがフリッカリング領域中にある場合、イントラブロックコピー、パレットモードおよび色変換など、何らかのモードとしてまたは何らかのツールを用いてCUをコーディングすることができないように、さらなる制約を適用し得る。そのような制約が適用される場合、ビデオエンコーダ20およびビデオデコーダ30は、それに応じて、関連するCU/PUモード/情報およびシグナリングを調整する。加えて、様々な例では、ビデオデコーダ30は、フリッカーが識別された領域中のフリッカリングをさらに除去するために、復号後の追加のバックエンド処理を適用し得る。
【００６８】
同じく上記で説明したように、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、CABAC符号化およびCABAC復号を使用して、シンタックス要素などの、フリッカリング領域を示す情報をコーディングするように構成され得る。本開示の技法による例では、ビデオエンコーダ20およびビデオデコーダ30は、フリッカリングフラグをCABACコーディングし得る。ビデオエンコーダ20およびビデオデコーダ30は、フリッカリングフラグのCABACコーディングのためのコンテキストとして、空間的に隣接するブロックのフリッカリングフラグの値を使用し得る。
【００６９】
ビデオエンコーダ20およびビデオデコーダ30は、シンタックス要素などの、現在CUの上のCUに関連付けられた情報を記憶するように構成されたメモリを備え得るラインバッファを含み得る。ラインバッファのメモリのサイズを低減するために、ビデオエンコーダ20は、現在LCU(またはCTU)の外にある空間的に隣接するブロックがコンテキストとして使用されるのには利用不可能であることを標識し得、ビデオデコーダ30は、そのように判断し得る。
【００７０】
いくつかの例では、本開示で説明する技法は、たとえば、誤り耐性を高めるために、他の適用例においても使用され得る。本開示で説明する技法は、一例として、複雑な予測誤差を低減または排除し得る。そのような場合、シンタックス要素の名称が変更され得る。ただし、本開示の一般的な技法が依然として適用される。
【００７１】
図2は、本開示で説明するフリッカー検出および軽減のための技法を使用し得るビデオエンコーダ20の一例を示すブロック図である。例示のために、ただし、フリッカー検出および軽減を必要とし得る他のコーディング規格または方法に関して本開示を限定することなしに、ビデオエンコーダ20についてHEVCコーディングのコンテキストで説明する。ビデオエンコーダ20は、ビデオフレーム内のCUのイントラコーディングおよびインターコーディングを実行し得る。イントラコーディングは、所与のビデオフレーム内のビデオデータ中の空間冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの現在フレームと前にコーディングされたフレームとの間の時間冗長性を低減または除去するために、時間予測に依拠する。イントラモード(I-モード)は、いくつかの空間ベースのビデオ圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースのビデオ圧縮モードのいずれかを指し得る。
【００７２】
図2に示すように、ビデオデータメモリ39は、ビデオフレーム内の現在ビデオブロックを符号化するために使用されるビデオデータを受信する。ビデオデータメモリ39は、(たとえば、ビデオデータを記憶するように構成された)ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ39に記憶されたビデオデータは、たとえば、ビデオソース18から取得され得る。参照フレームバッファ64(参照ピクチャバッファ64とも呼ばれる)は、復号ピクチャバッファ((たとえば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20がビデオデータを符号化する際に使用するための参照ビデオデータを記憶するDPB)の一例である。ビデオデータメモリ39および参照フレームバッファ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM（登録商標）)を含むダイナミックランダムアクセスメモリ(DRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ39および参照フレームバッファ64は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ39は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはこれらの構成要素に対してオフチップであり得る。
【００７３】
図2の例では、ビデオエンコーダ20は、動き補償ユニット44と、動き推定ユニット42と、フリッカー検出ユニット43と、イントラ予測処理ユニット46と、参照フレームバッファ64と、加算器62と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。図2に示す変換処理ユニット52は、実際の変換または変換の組合せを残差データのブロックに適用するユニットであり、残差データのブロックは、CUの変換ユニット(TU)と呼ばれることもある変換係数のブロックと混同されるべきではない。ビデオブロック再構成の場合、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからのブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするデブロッキングフィルタ(図2に図示せず)も含まれ得る。必要な場合、デブロッキングフィルタは通常、加算器62の出力をフィルタリングする。
【００７４】
符号化プロセスの間、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロック、たとえば、最大コーディングユニット(LCU)に分割され得る。動き推定ユニット42および動き補償ユニット44は、時間圧縮を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測処理ユニット46は、空間圧縮を提供するために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。
【００７５】
モード選択ユニット40は、たとえば、モードごとの誤差(すなわち、ひずみ)結果に基づいて、イントラまたはインターのコーディングモードのうちの1つを選択し得、結果として生じたイントラ予測されたブロックまたはインター予測されたブロック(たとえば、予測ユニット(PU))を、残差ブロックデータを生成するために加算器50に与え、参照フレームで使用するための符号化ブロックを再構成するために加算器62に与える。加算器62は、以下でより詳細に説明するように、符号化ブロックを再構成するために、予測されたブロックを、そのブロックについての逆変換処理ユニット60からの逆量子化され逆変換されたデータと結合する。いくつかのビデオフレームはIフレームとして指定され得、Iフレーム中のすべてのブロックはイントラ予測モードで符号化される。場合によっては、イントラ予測処理ユニット46は、たとえば、動き推定ユニット42によって実行される動き探索がPフレームまたはBフレーム中のブロックの十分な予測をもたらさないとき、そのブロックのイントラ予測符号化を実行し得る。
【００７６】
動き推定ユニット42および動き補償ユニット44は高集積され得るが、概念的な目的のために別々に示されている。動き推定(または動き探索)は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照フレームの参照サンプルに対する現在フレーム中の予測ユニットの変位を示し得る。動き推定ユニット42は、予測ユニットを参照フレームバッファ64に記憶された参照フレームの参照サンプルと比較することによって、インターコード化フレームの予測ユニットのための動きベクトルを計算する。参照サンプルは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって判断され得るピクセル差分の点で、コーディングされているPUを含むCUの部分と厳密に一致していることがわかるブロックであり得る。参照サンプルは、参照フレームまたは参照スライス内のどこででも生じ、必ずしも参照フレームまたは参照スライスのブロック(たとえば、コーディングユニット)境界で生じるとは限らない場合がある。いくつかの例では、参照サンプルは分数ピクセル位置で生じ得る。
【００７７】
動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56および動き補償ユニット44に送る。動きベクトルによって識別される参照フレームの部分は、参照サンプルと呼ばれることがある。動き補償ユニット44は、たとえば、PUの動きベクトルによって識別される参照サンプルを取り出すことによって、現在CUの予測ユニットの予測値を計算し得る。
【００７８】
イントラ予測理ユニット46は、動き推定ユニット42および動き補償ユニット44によって実行されるインター予測の代替として、受信されたブロックをイントラ予測し得る。イントラ予測処理ユニット46は、ブロックの左から右、上から下への符号化を想定すると、隣接する、前にコーディングされたブロック、たとえば、現在ブロックの上、右上、左上、または左のブロックに対して受信されたブロックを予測し得る。イントラ予測処理ユニット46は、様々な異なるイントラ予測モードで構成され得る。たとえば、イントラ予測処理ユニット46は、符号化されているCUのサイズに基づいて、いくつかの数の方向性予測モード、たとえば、33個の方向性予測モードで構成され得る。
【００７９】
イントラ予測処理ユニット46は、たとえば、様々なイントラ予測モードの誤差値を計算し、最も低い誤差値を生じるモードを選択することによって、イントラ予測モードを選択し得る。方向性予測モードは、空間的に隣接するピクセルの値を結合し、結合された値をPU中の1つまたは複数のピクセル位置に適用するための機能を含み得る。PU中のすべてのピクセル位置のための値が計算されると、イントラ予測処理ユニット46は、PUと符号化されるべき受信されたブロックとの間のピクセル差分に基づいて、予測モードの誤差値を計算し得る。イントラ予測処理ユニット46は、許容可能な誤差値を生じるイントラ予測モードが発見されるまで、イントラ予測モードのテストを継続し得る。次いで、イントラ予測処理ユニット46は、PUを加算器50に送り得る。
【００８０】
ビデオエンコーダ20は、コーディングされている元のビデオブロックから動き補償ユニット44またはイントラ予測処理ユニット46によって計算された予測データを減算することによって、残差ブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。残差ブロックは、ピクセル差分値の2次元行列に対応し得、残差ブロック中の値の数は、残差ブロックに対応するPU中のピクセルの数と同じである。残差ブロック中の値は、PU中のコロケートピクセルの値とコーディングされるべき元のブロック中のコロケートピクセルの値との間の差分、すなわち、誤差に対応し得る。差分は、コーディングされるブロックのタイプに応じて、クロマ差分またはルーマ差分であり得る。
【００８１】
変換処理ユニット52は、残差ブロックから1つまたは複数の変換ユニット(TU)を形成し得る。変換処理ユニット52は、複数の変換の中から1つの変換を選択する。変換は、ブロックサイズ、コーディングモードなどの1つまたは複数のコーディング特性に基づいて選択され得る。次いで、変換処理ユニット52は、選択された変換をTUに適用して、変換係数の2次元アレイを備えるビデオブロックを生成する。
【００８２】
変換処理ユニット52は、結果として生じた変換係数を量子化ユニット54に送り得る。次いで、量子化ユニット54は、変換係数を量子化し得る。次いで、エントロピー符号化ユニット56は、走査モードに従って、行列中の量子化変換係数の走査を実行し得る。本開示では、エントロピー符号化ユニット56が走査を実行するものとして説明する。ただし、他の例では、量子化ユニット54などの他の処理ユニットが走査を実行し得ることを理解されたい。
【００８３】
変換係数が走査されて1次元アレイに読み込まれると、エントロピー符号化ユニット56は、CABAC、シンタックスベースコンテキスト適応バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE)、または別のエントロピーコーディング方法などのエントロピーコーディングをその係数に適用し得る。エントロピー符号化ユニット56は、変換係数をコーディングするように構成され得る。CABACを実行するために、エントロピー符号化ユニット56は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。エントロピー符号化ユニット56によるエントロピーコーディングの後、結果として生じた符号化ビデオは、ビデオデコーダ30などの別のデバイスに送信されるか、または後の送信もしくは取出しのためにアーカイブされ得る。
【００８４】
場合によっては、ビデオエンコーダ20のエントロピー符号化ユニット56または別のユニットは、エントロピーコーディングに加えて、他のコーディング機能を実行するように構成され得る。たとえば、エントロピー符号化ユニット56は、CUおよびPUのコード化ブロックパターン(CBP)値を判断するように構成され得る。また、場合によっては、エントロピー符号化ユニット56は、係数のランレングスコーディングを実行し得る。
【００８５】
逆量子化ユニット58および逆変換処理ユニット60は、たとえば、参照ブロックとして後で使用するためのピクセル領域中の残差ブロックを再構成するために、それぞれ、逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを参照フレームバッファ64のフレームのうちの1つの予測ブロックに加えることによって、参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定で使用するためのサブ整数ピクセル値を計算するために、1つまたは複数の補間フィルタを再構成された残差ブロックに適用し得る。加算器62は、参照フレームバッファ64に記憶するための再構成されたビデオブロックを生成するために、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加える。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために、動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
【００８６】
フリッカー検出ユニット43は、本開示の技法のいずれかによるフリッカー検出技法および/または軽減技法を実行するように構成される。フリッカー検出ユニット43は、参照フレームバッファ64からまたはビデオデータメモリ39から現在ピクチャおよび表示順序における次のピクチャにアクセスし得る。フリッカー検出ユニット43はまた、モード選択ユニット40にシグナリングすることによって、特定のビデオコーディングモードまたはコーディングツールを示すまたは制限するように構成され得る。
【００８７】
フリッカー検出ユニット43はまた、シンタックス要素などのCABAC符号化情報をエントロピー符号化ユニット56にシグナリングするように構成され得る。そのような情報は、いくつかの例のように、特定の領域がちらつくかどうかを示すフラグシンタックス要素を含み得る。他の例では、フリッカー検出ユニット43は、シンタックス要素のCABAC符号化のためのコンテキスト情報をエントロピー符号化ユニット45にシグナリングし得る。
【００８８】
上記で説明したように、フリッカー検出ユニット43は、Bcurrentのブロックがちらつき得ることを判断するために、異なるメトリックを使用し得る。次に、ビデオエンコーダ20が使用し得るフリッカー検出技法の例についてより詳細に説明する。
【００８９】
いくつかの例では、フリッカリングアーティファクトを検出するために、フリッカー検出ユニット43は、Bcurrentのルミナンスサンプルごとに勾配(エッジ情報)を計算し得る。現在ピクチャのサンプルがRGB(赤、緑、青)フォーマットである場合、フリッカー検出ユニット43は、ピクチャをYCbCrフォーマットに変換し、ピクチャをビデオデータメモリ39に記憶し得る。代替的に、フリッカー検出ユニット43は、ルミナンス成分のプロキシとしてG成分を使用し得る。いくつかの例では、フリッカー検出ユニット43は、勾配を判断するためにソーベルエッジ検出器を使用し得る。ただし、フリッカー検出ユニット43は、勾配を判断するために任意の他の勾配計算器を使用し得る。勾配の大きさに基づいて、フリッカー検出ユニット43は、ブロックについて、勾配の大きさの平均(avgGradMag)および勾配の大きさの標準偏差(stdDevGradMag)を計算し得る。
【００９０】
加えて、フリッカー検出ユニット43は、所与のしきい値(EDGE_THRESHOLD)を上回る勾配の大きさを有するブロック中のサンプルの割合を計算し得る。これらの例では、しきい値を上回るサンプルの割合はedgePixelPercentageと表される。次いで、フリッカー検出ユニット43は、しきい値を上回るまたは下回るサンプルの割合に基づいて、ブロックをエッジブロックまたはテクスチャブロックのいずれかとして分類し得る。
【００９１】
edgePixelPercentageがしきい値(EDGE_PERCENT_THRESHOLD)を上回る場合、フリッカー検出ユニット43は、ブロックをエッジブロックとして分類する。avgGradMagがしきい値(TEXTURE_LOW_THRESHOLD)よりも大きく、stdDevGradMagがしきい値(TEXTURE_HIGH_THRESHOLD)未満であり、stdDevGradMagとavgGradMagの比率がしきい値(RATIO_TEXTURE_THRESHOLD)未満である場合、フリッカー検出ユニット43は、ブロックをテクスチャブロックとして分類する。
【００９２】
フリッカー検出ユニット43はまた、ブロックのパレットサイズを判断し、パレットサイズを本開示の技法によるフリッカー判断プロセスの一部として使用し得る。ブロックのパレットサイズは、ブロック中の相異なるピクセル値の数として定義される。フリッカー検出ユニット43は、ピクセル値が相異なるかどうかを判断するとき、ピクセルのすべての成分(たとえば、RGBまたはYUV)を考慮し得る。パレット中のピクセル値からの多少の偏差が考えられ得る。たとえば、2つのピクセルが、個々の成分がしきい値未満だけ異なるか、または絶対差分和全体が別のしきい値未満だけ異なるようなものである場合、フリッカー検出ユニット43は、これらのピクセルが同一であり、パレット中の単一のエントリに対応するものと見なし得る。基準は、個々の成分の差分に対するしきい値と絶対差分和全体に対するしきい値の両方を含む。
【００９３】
次に、絶対差分和に基づいてフリッカリングフラグを符号化するためのプロセスおよびパレットサイズについて説明する。第1のステップとして、フリッカー検出ユニット43は、元のブロックBcurrentと元のブロックBnextとの間のSADを計算し得る。SADがしきい値(SAD_THRESHOLD)よりも大きい場合、フリッカー検出ユニット43はブロックを非フリッカリングとして標識する。
【００９４】
現在ブロックまでの現在ピクチャの累積SADがしきい値(CUM_SAD_THRESHOLD)未満である場合、フリッカー検出ユニット43はブロックを非フリッカリングとして標識する。SADがSAD_THRESHOLD未満であり、(1)パレットサイズがしきい値パレットサイズ(PALETTE_THRESHOLD)よりも大きく、ブロックがエッジブロックである、または(2)ブロックがテクスチャブロックである、のいずれかである場合、フリッカー検出ユニット43はブロックをフリッカリングブロックとして標識する。さもなければ、すなわち、上記の条件が満たされない場合、動き推定ユニット42はブロックを非フリッカリングブロックとして標識する。
【００９５】
上記の例では、フリッカー検出ユニット43は、SADの代わりに、MSEなどの他のひずみ尺度を使用し得る。場合によっては、動き推定ユニット42は、SADまたは他のひずみ尺度を、例として、ルーマ値またはクロマ値、RGB値またはYUV値などのピクセル値に適用し得る。フリッカー検出のための上記の技法がパレットサイズおよびブロックがエッジブロックかテクスチャブロックかを判断する尺度に基づいた基準を使用するとしても、上記の基準のうちのいくつかのみを使用することが可能である。フリッカー検出ユニット43は、勾配または他の基準に基づいてブロックがテクスチャブロックかエッジブロックかを判断する他の尺度も使用し得る。
【００９６】
さらに、フリッカー検出ユニット43は、フリッカリングを軽減するために、追加の制約を適用し得る。一例では、ビデオエンコーダ20、特にフリッカー検出ユニット43は、フリッカリング領域のRDOQ(レートひずみ最適量子化(rate-distortion optimized quantization))を無効化し得る。
【００９７】
フリッカー軽減の他の例では、フリッカー検出ユニット43は、フリッカリング領域の符号化を回避するようにエントロピー符号化ユニット56にシグナリングし得、現在フレーム中のフリッカリング領域の再構成が前のIフレーム中のフリッカリング領域の再構成とまったく同じになるように、前のIフレーム中の同じ領域のブロックモード、変換サイズ、および係数レベルなどの情報を符号化し得る。
【００９８】
フリッカー検出ユニット43はまた、CABAC符号化プロセスを修正してフリッカー軽減を実行するように構成され得る。一例として、フリッカー検出ユニット43は、係数コーディングに関するコンテキストなど、フリッカリング領域のいくつかのCABACコンテキストモデルの状態をリセットするようにエントロピー符号化ユニット56にシグナリングし得る。図3に示すビデオデコーダ30のフリッカー検出ユニット73およびエントロピー復号ユニット70は、CABAC復号中に、CABACコンテキストモデルのリセットのほぼ逆のプロセスを実行するように構成され得る。
【００９９】
CABACを伴うフリッカー軽減のいくつかの例では、フリッカー検出ユニット43は、CABACコーディングの唯一のコンテキストとして、現在ピクチャのブロックに対して左の空間的に隣接するブロックのフリッカリングフラグを使用するようにエントロピー符号化ユニット56にシグナリングし得る。ビデオデコーダ30のフリッカー検出ユニット73およびエントロピー復号ユニット70は、CABAC符号化のほぼ逆のプロセスを実行し得る。いくつかの代替案では、フリッカリングフラグのコンテキストは、ビットストリーム中でシグナリングされる他の情報を備え得る。CABACコンテキストとして使用される他の情報の例は、CU深さ、ブロックタイプ、変換サイズ、またはQP(量子化パラメータ)などの値を備え得る。
【０１００】
本開示の技法によれば、ビデオエンコーダ20およびビデオデコーダ30は、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするように構成され得、現在ピクチャからのブロックがちらつくかどうかの判断は、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づく。
【０１０１】
図3は、符号化ビデオシーケンスを復号するビデオデコーダ30の一例を示すブロック図である。ビデオデコーダ30は、フリッカー検出および軽減のための方法を実行するように構成されたデバイスの一例を表す。図3の例では、ビデオデータメモリ69は符号化ビデオを受信する。ビデオデータメモリ69は、符号化ビデオビットストリームなど、ビデオデコーダ30の構成要素によって復号されるべきビデオデータを記憶し(たとえば、ビデオデータを記憶するように構成され)得る。ビデオデータメモリ69に記憶されたビデオデータは、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介してカメラなどのローカルビデオソースから、または物理的データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ69は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。
【０１０２】
参照フレームバッファ82(参照ピクチャメモリ82とも呼ばれる)は、(たとえば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30がビデオデータを復号する際に使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPB)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM（登録商標）)を含むダイナミックランダムアクセスメモリ(DRAM)、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって与えられ得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはこれらの構成要素に対してオフチップであり得る。
【０１０３】
ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、フリッカー検出ユニット73と、イントラ予測処理ユニット74と、逆量子化ユニット76と、逆変換処理ユニット78と、参照フレームバッファ82と、加算器80とを含む。図3のビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20に関して説明した符号化パス(図2参照)とほぼ逆の復号パスを実行し得る。
【０１０４】
エントロピー復号ユニット70は、変換係数の1次元アレイを取り出すために、符号化ビットストリームに対してエントロピー復号プロセスを実行する。使用されるエントロピー復号プロセスは、ビデオエンコーダ20によって使用されるエントロピーコーディング(たとえば、CABAC)に依存する。エンコーダによって使用されるエントロピーコーディングプロセスは、符号化ビットストリームにおいてシグナリングされ得るか、または所定のプロセスであり得る。エントロピー復号ユニット70は、変換係数をコーディングするように構成され得る。
【０１０５】
いくつかの例では、エントロピー復号ユニット70(または逆量子化ユニット76)は、ビデオエンコーダ20のエントロピー符号化ユニット56(または量子化ユニット54)によって使用された走査モードを反映する走査を使用して、受信された値を走査し得る。係数の走査は逆量子化ユニット76において実行され得るが、例示のために、エントロピー復号ユニット70によって実行されるものとして、走査について説明する。加えて、説明しやすいように別個の機能ユニットとして示されているが、ビデオデコーダ30のエントロピー復号ユニット70、逆量子化ユニット76、および他のユニットの構造および機能は互いに高集積され得る。
【０１０６】
逆量子化ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、たとえば、HEVCについて提案されたまたはH.264復号規格によって定義されたプロセスに類似した、従来のプロセスを含み得る。逆量子化プロセスは、量子化の程度を決定し、同様に適用されるべき逆量子化の程度を決定するために、CUについてビデオエンコーダ20によって計算された量子化パラメータQPの使用を含み得る。逆量子化ユニット76は、係数が1次元アレイから2次元アレイに変換される前または後のいずれかで変換係数を逆量子化し得る。
【０１０７】
逆変換処理ユニット78は、逆変換を逆量子化変換係数に適用する。いくつかの例では、逆変換処理ユニット78は、ビデオエンコーダ20からのシグナリングに基づいて、またはブロックサイズ、コーディングモードなどの1つもしくは複数のコーディング特性から変換を推測することによって、逆変換を決定し得る。いくつかの例では、逆変換処理ユニット78は、現在ブロックを含むLCUの4分木のルートノードにおいてシグナリングされた変換に基づいて、現在ブロックに適用するべき変換を決定し得る。代替的に、変換は、LCU4分木中のリーフノードCUのTU4分木のルートにおいてシグナリングされ得る。いくつかの例では、逆変換処理ユニット78は、逆変換処理ユニット78が復号されている現在ブロックの変換係数に2つ以上の逆変換を適用する、カスケードされた逆変換を適用し得る。イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードおよび現在フレームの前に復号されたブロックからのデータに基づいて、現在フレームの現在ブロックについての予測データを生成し得る。
【０１０８】
動き補償ユニット72は、符号化ビットストリームから動きベクトル、動き予測方向および参照インデックスを取り出し得る。参照予測方向は、インター予測モードが単方向(たとえば、Pフレーム)であるか双方向(Bフレーム)であるかを示す。参照インデックスは、候補動きベクトルがどの参照フレームに基づくかを示す。
【０１０９】
取り出された動き予測方向、参照フレームインデックス、および動きベクトルに基づいて、動き補償ユニット72は、現在部分に対する動き補償ブロックを生成する。これらの動き補償ブロックは本質的に、残差データを生成するために使用された予測ブロックを再作成する。
【０１１０】
動き補償ユニット72は、動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行し得る。サブピクセル精度の動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素に含まれ得る。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのための補間される値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されるように補間フィルタを使用し得る。動き補償ユニット72は、受信されたシンタックス情報に従って、ビデオエンコーダ20によって使用される補間フィルタを決定し、補間フィルタを使用して、予測ブロックを生成し得る。
【０１１１】
加えて、動き補償ユニット72およびイントラ予測処理ユニット74は、HEVCの例では、符号化ビデオシーケンスのフレームを符号化するために使用されるLCUのサイズを判断するために、(たとえば、4分木によって与えられた)シンタックス情報のいくつかを使用し得る。動き補償ユニット72およびイントラ予測処理ユニット74はまた、符号化ビデオシーケンスのフレームの各CUがどのように分割されるか(同様に、サブCUがどのように分割されるか)を記述する分割情報を判断するために、シンタックス情報を使用し得る。シンタックス情報は、各分割がどのように符号化されるかを示すモード(たとえば、イントラ予測またはインター予測、イントラ予測の場合はイントラ予測符号化モード)、インター符号化されたPUごとの1つまたは複数の参照フレーム(および/または参照フレームの識別子を含む参照リスト)、および符号化ビデオシーケンスを復号するための他の情報も含む。
【０１１２】
加算器80は、残差ブロックを動き補償ユニット72またはイントラ予測処理ユニット74によって生成された対応する予測ブロックと結合して、復号ブロックを形成する。必要な場合、ブロッキネスアーティファクトを除去するために復号ブロックをフィルタリングするデブロッキングフィルタも適用され得る。次いで、復号ビデオブロックは、参照フレームバッファ82(復号ピクチャバッファとも呼ばれる)に記憶され、参照フレームバッファ82は、後続の動き補償のための参照ブロックを与え、また、(図1のディスプレイデバイス32などの)ディスプレイデバイス上で提示するための復号ビデオを生成する。
【０１１３】
フリッカー検出ユニット73は、本開示の技法によるフリッカリング検出技法および/またはフリッカリング軽減技法の任意の組合せを実行するように構成される。フリッカー検出ユニット73は、参照フレームバッファ82からまたはビデオデータメモリ69から現在ピクチャおよび表示順序における次のピクチャにアクセスし得る。フリッカー検出ユニット73はまた、動き補償ユニット72および/またはイントラ予測処理ユニット74にシグナリングすることによって、特定のビデオコーディングモードまたはコーディングツールを示すまたは制限するように構成され得る。
【０１１４】
フリッカー検出ユニット73はまた、シンタックス要素などのCABAC復号情報をエントロピー復号ユニット70にシグナリングするように構成され得る。そのような情報は、いくつかの例のように、特定の領域がちらつくかどうかを示すフラグシンタックス要素を含み得る。他の例では、フリッカー検出ユニット73は、シンタックス要素のCABAC復号のためのコンテキスト情報をエントロピー復号ユニット70にシグナリングし得る。
【０１１５】
上記で説明したように、ビデオデコーダ30は様々なフリッカリング軽減技法を適用し得る。一例として、フリッカー検出ユニット73は、16×16またはそれ以上などの指定された最小サイズを有するCUのフリッカリングフラグを復号するだけであり得る。この場合、16×16よりも小さいCU、たとえば、サイズ8×8のCUについては、フリッカー検出ユニット73はフリッカリングフラグを復号しない場合がある。最小サイズ未満のCUについては、ビデオデコーダ30、特にフリッカー検出ユニット73およびエントロピー復号ユニット70は、フリッカリングフラグが偽である(すなわち、ゼロに等しい)と推測し得る。フリッカリングフラグの値をシグナリングするのではなく、推測することは、場合によっては、ビットストリームの複雑性を低減するおよび/またはビットを節約する。加えて、ビデオエンコーダ20は、シーケンス、ピクチャ、またはスライスのレベルで高レベル制御フラグを符号化して、ビデオデータのその特定のレベルに対してフリッカー軽減が有効化されるかどうか、たとえば、ピクチャ、スライス、またはシーケンスに対してフリッカー軽減が有効化されるかどうかを示し得る。この場合、フリッカー検出ユニット73は、CU、PU、TU、ブロック、またはビットストリームの他の要素のフリッカリングフラグの値を同様に推測し得る。
【０１１６】
図2に関して上記で説明した例では、ビデオエンコーダ20がフリッカリングフラグの値を判断し、符号化し得ると説明した。しかしながら、ビデオデコーダ30も、フリッカリングフラグの値を判断し得る。たとえば、フリッカー検出ユニット73は、いくつかの条件下でのあらゆるブロックサイズについて、ブロックがちらつくかどうかを判断するために、フリッカー検出のプロセスを実行し得る。たとえば、ビデオエンコーダ20がCUレベルでフリッカリングフラグをシグナリングする場合、フリッカー検出ユニット73は、CUのブロックごとのフリッカリングフラグの値を判断するために、64×64から8×8までの各CUサイズに対してフリッカリング検出を実行し得る。
【０１１７】
さらに他の例では、フリッカー検出ユニット73はまた、各16×16ブロックがちらついているかどうかを判断し得る。32×32ブロックサイズおよび64×64ブロックサイズなどのより大きいブロックサイズでは、より大きいブロック内の16×16ブロックのいずれかがビデオエンコーダ20またはビデオデコーダ30のいずれかによってフリッカリングとして標識された場合、フリッカー検出ユニット73は、より大きい包囲ブロックもちらついていると見なし得る。また別の例では、ちらついている、より大きい包囲ブロック内の16×16ブロックの数がしきい値を上回るときのみ、フリッカー検出ユニット73が32×32ブロックまたは64×64ブロックをフリッカリングとして標識することが考えられ得る。
【０１１８】
他の場所で説明したように、本開示の技法によれば、ビデオデコーダ30のフリッカー検出ユニット73は、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングするように構成され得る。現在ピクチャからのブロックがちらつくかどうかの判断は、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づき得る。
【０１１９】
図4は、本開示の技法によるフリッカー検出を実行するためのプロセスを示すフローチャートである。例のために、ビデオエンコーダ20のフリッカー検出ユニット43またはビデオデコーダ30のフリッカー検出ユニット73などのビデオエンコーダまたはデコーダは、本明細書で説明する技法のいずれかを実行し得ることを理解されたい。
【０１２０】
図4の例では、ビデオエンコーダ20のフリッカー検出ユニット43は、現在ピクチャのブロックと表示順序における次のピクチャのコロケートブロックとの間のSAD(または別の差分メトリック)を判断し得る(200)。SADがしきい値よりも大きいとフリッカー検出ユニット43が判断した場合(決定ブロック204のYES分岐)、フリッカー検出ユニット43は現在ブロックを非フリッカリングとして標識する(202)。
【０１２１】
SADがしきい値未満であるかまたはそれに等しいとフリッカー検出ユニット43が判断した場合(決定ブロック204のNO分岐)、フリッカー検出ユニット43は、現在ブロックまでの現在ピクチャの累積SADを判断する(206)。累積SADがしきい値累積SAD未満であるかまたはそれに等しい場合(208のNO分岐)、動き推定ユニットはブロックを非フリッカリングとして標識する(202)。
【０１２２】
累積SADがしきい値よりも大きい場合(208のYES分岐)、フリッカー検出ユニット43は、ブロックのパレットサイズ、およびブロックがエッジブロックであるかどうかを判断する(210)。フリッカー検出ユニット43はまた、ブロックがテクスチャブロックであるかどうかを判断する(216)。現在ピクチャのブロックのパレットサイズがしきい値パレットサイズ未満であるかまたはそれに等しい場合、あるいはブロックがエッジブロックである場合(212のNO分岐)、フリッカー検出ユニット43はブロックを非フリッカリングとして標識する(220)。パレットサイズがパレットサイズしきい値よりも大きく、ブロックがエッジブロックではない場合(212のYES分岐)、フリッカー検出ユニット43はブロックをフリッカリングとして標識する(214)。
【０１２３】
ブロックがテクスチャブロックであるとフリッカー検出ユニット43が判断した場合(218のYES分岐)、フリッカー検出ユニット43はブロックをフリッカリングとして標識する(214)。ブロックがテクスチャブロックではないとフリッカー検出ユニット43が判断した場合(218のNO分岐)、フリッカー検出ユニット43はブロックを非フリッカリングとして標識する(202)。
【０１２４】
図5は、本開示の技法によるフリッカー検出およびフリッカー軽減を実行するためのプロセスを示すフローチャートである。例のために、ビデオエンコーダ20またはビデオデコーダ30などのビデオエンコーダまたはデコーダは、本明細書で説明する技法のいずれかを実行し得ることを理解されたい。
【０１２５】
図5の例では、ビデオエンコーダ20のフリッカー検出ユニット43およびエントロピー符号化ユニット56、またはビデオデコーダ30のエントロピー復号ユニット70およびフリッカー検出ユニット73は、フリッカリングフラグなどの、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングし得る(240)。フリッカー検出ユニット43またはフリッカー検出ユニット73は、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づいて、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングし得る。いくつかの例では、ブロックがちらつくかどうかを示す情報をコーディングするために、ビデオエンコーダ20またはビデオデコーダ30は、現在ピクチャのある領域がフリッカリング領域であることを示す、ビットストリーム中のシンタックス要素をコーディングし得る(242)。
【０１２６】
ビデオエンコーダ20およびビデオデコーダ30は、現在ピクチャおよび表示順序における次のピクチャをビデオデータメモリ39、ビデオデータメモリ69、参照フレームバッファ69、および/または参照フレームバッファ82に記憶し得る。いくつかの例では、フリッカー検出ユニット43またはフリッカー検出ユニット73は、ブロックがちらつくかどうかを示す情報に基づいて、ブロックをコーディングするようにさらに構成され得る。
【０１２７】
たとえば、フリッカー検出ユニット43は、現在ピクチャからのブロックがちらつくかどうかを判断し得る。表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づいて、フリッカー検出ユニット43は現在ピクチャからのブロックがちらつくかどうかを示す情報を生成し得、エントロピー符号化ユニット56はその情報を符号化し得る。フリッカー検出ユニット43およびエントロピー符号化ユニット56は、ブロックがちらつくかどうかを示す情報に基づいて、ブロックを符号化し得る。現在ピクチャからのブロックがちらつくかどうかを示す情報を符号化するために、エントロピー符号化ユニット56は、フリッカー検出ユニット43がその情報を生成したことに応答して、CABAC符号化を実行し得る。
【０１２８】
別の例として、エントロピー復号ユニット70は、現在ピクチャからのブロックがちらつくかどうかを示す情報を受信し得る。エントロピー復号ユニット70は、情報を受信したことに応答して、受信された情報に対してCABAC復号を実行し得る。フリッカー検出ユニット73はさらに、表示順序における現在ピクチャ中のブロックおよび表示順序における次のピクチャからのコロケートブロックに基づいて、ブロックがちらつくかどうかを判断し得る。フリッカー検出ユニット73およびビデオデコーダ30はさらに、ブロックがちらつくかどうかを示す情報に基づいて、ブロックを復号し得る。
【０１２９】
様々な例では、ビデオエンコーダ20および/またはビデオデコーダ30は、現在ピクチャからのブロックがちらつくかどうかを示す情報に基づいて、様々なタイプの処理を実行し得る。いくつかの例では、ビデオデコーダ30は、様々な復号後処理技法を実行し得る。
【０１３０】
いくつかの例では、ブロックがちらつくかどうかを示す情報をコーディングするために、ビデオエンコーダ20またはビデオデコーダ30は、現在ピクチャのある領域がフリッカリング領域であることを示す、ビットストリーム中のシンタックス要素をコーディングし得る。いくつかの例では、ブロックはまた、フリッカリング領域内にあり得る。
【０１３１】
別の例では、ブロックをコーディングするために、フリッカー検出ユニット43またはフリッカー検出ユニット73は、フリッカリング領域であると示されたある領域についてのコーディングツールに対する制約に基づいて、ブロックをコーディングし得る。制約は、現在ブロックに対するかつフリッカリング領域の空間的に隣接するブロックを、イントラ予測に利用不可能であるものとして標識することによって、フリッカリング領域における空間イントラ予測を無効化することを含み得る。様々な例では、制約は、たとえば、フリッカー検出ユニット43またはフリッカー検出ユニット73によって、ブロックをイントラ予測に利用不可能であるものとして標識することも含み得る。
【０１３２】
いくつかの例では、エントロピー符号化ユニット56またはエントロピー復号ユニット70は、フリッカリング領域に対するCABACコンテキストモデリングの状態をリセットし、CABACコンテキストモデリングのリセットされた状態に基づいて、現在ピクチャのブロックをコーディング(すなわち、符号化または復号)し得る。様々な例では、ピクチャがちらつくかどうかを示す情報をコーディングするために、エントロピー符号化ユニット56またはエントロピー復号ユニット70は、それぞれ、フリッカリングフラグを符号化または復号し得る。
【０１３３】
いくつかの例では、フリッカー検出ユニット43は、現在ピクチャのブロックと次のピクチャのブロックとの間のSAD、または現在ブロックと次のブロックとの間のMSEのうちの少なくとも1つに基づいて、ブロックがちらつくかどうかを示す情報をコーディングし得る。またさらなる例では、現在ブロックがちらつくことを示す情報をコーディングするために、フリッカー検出ユニット43は、SADまたはMSEのうちの少なくとも1つがしきい値未満であるときにブロックのパレットサイズがしきい値パレットサイズを超えるかどうかに基づいて、ブロックがちらつくかどうかを示す情報をコーディングし得る。
【０１３４】
様々な例では、フリッカリングフラグをCABACコーディングするために、エントロピー符号化ユニット56またはエントロピー復号ユニット70は、CABACコーディングのためのコンテキストとして、現在ピクチャのブロックに対して空間的に隣接するブロックのフリッカリングフラグの値を使用して、フリッカリングフラグをCABACコーディングし得る。
【０１３５】
様々な例では、フリッカー検出ユニット43は、領域のCUが最小サイズを有する場合のみ、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングし得る。様々な例では、フリッカー検出ユニット43は、ブロックのパレットサイズがしきい値パレットサイズよりも大きい、ブロックがエッジブロックである、またはブロックがテクスチャブロックである、のうちの少なくとも1つであるとき、現在ピクチャからのブロックがちらつくかどうかを示す情報をコーディングし得る。
【０１３６】
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的な有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法を実装するための命令、コードおよび/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０１３７】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。また、いかなる接続も適切にコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク（登録商標）(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、一方、ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
【０１３８】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の等価の集積論理回路もしくはディスクリート論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明する技法の実装に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明する機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供されてもよく、または複合コーデックに組み込まれてもよい。また、技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
【０１３９】
例に応じて、本明細書で説明する方法のいずれかのいくつかの行為またはイベントは、異なる順序で実行されてもよく、すべてを一緒に追加され、統合され、または省略されてもよい(たとえば、すべての説明する行為またはイベントが方法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの実施形態では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通じて同時に実行され得る。
【０１４０】
本明細書で開示する方法、システム、および装置に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはその両方の組合せとして実装され得ることを、当業者は認識されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【０１４１】
さらに、本明細書で開示する例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せなどの電子デバイスまたは回路を用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【０１４２】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体化され得る。プロセッサおよび記憶媒体は、ASICに存在し得る。ASICは、ユーザ端末に存在し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素としてユーザ端末に存在し得る。
【０１４３】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。開示する技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて本開示で説明したが、これらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされてもよく、または、適切なソフトウェアおよび/またはファームウェアとともに、上記で説明したような1つまたは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって与えられてもよい。
【符号の説明】
【０１４４】
10  ビデオ符号化および復号システム、システム
12  ソースデバイス
14  宛先デバイス
16  通信チャネル
18  ビデオソース
20  ビデオエンコーダ
22  変調器/復調器、モデム
24  送信機
26  受信機
28  モデム
30  ビデオデコーダ
32  ディスプレイデバイス
34  記憶媒体
36  ファイルサーバ
39  ビデオデータメモリ
40  モード選択ユニット
42  動き推定ユニット
43  フリッカー検出ユニット
44  動き補償ユニット
46  イントラ予測処理ユニット
50  加算器
52  変換処理ユニット
54  量子化ユニット
56  エントロピー符号化ユニット
58  逆量子化ユニット
60  逆変換処理ユニット
62  加算器
64  参照フレームバッファ、参照ピクチャバッファ
69  ビデオデータメモリ
70  エントロピー復号ユニット
72  動き補償ユニット
73  フリッカー検出ユニット
74  イントラ予測処理ユニット
76  逆量子化ユニット
78  逆変換処理ユニット
80  加算器
82  参照フレームバッファ、参照ピクチャメモリ
【図１】
2017512025.tif 000003
【図２】
2017512025.tif 000004
【図３】
2017512025.tif 000005
【図４】
2017512025.tif 000006
【図５】
2017512025.tif 000007
【国際調査報告】
2017512025.tif 000008
2017512025.tif 000009
2017512025.tif 000010