IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ インテル コーポレイションの特許一覧

特開2022-97392密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード
<>
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図1
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図2
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図3
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図4
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図5
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図6
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図7
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図8
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図9
  • 特開-密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022097392
(43)【公開日】2022-06-30
(54)【発明の名称】密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロード
(51)【国際特許分類】
   H04N 19/127 20140101AFI20220623BHJP
   H04N 19/156 20140101ALI20220623BHJP
   H04N 19/174 20140101ALI20220623BHJP
   H04N 19/31 20140101ALI20220623BHJP
【FI】
H04N19/127
H04N19/156
H04N19/174
H04N19/31
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2021188560
(22)【出願日】2021-11-19
(31)【優先権主張番号】17/127,544
(32)【優先日】2020-12-18
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.HDMI
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ブリンダ ガネシュ
(72)【発明者】
【氏名】ニレシュ ジャイン
(72)【発明者】
【氏名】スミット モハン
(72)【発明者】
【氏名】ファオウジ コセンティニ
(72)【発明者】
【氏名】ジル ボイス
(72)【発明者】
【氏名】ジェイムズ ホーランド
(72)【発明者】
【氏名】ジージュイン レイ
(72)【発明者】
【氏名】チェキブ ノウイラ
(72)【発明者】
【氏名】フエド ベン アマラ
(72)【発明者】
【氏名】ハッセン トゥマル
(72)【発明者】
【氏名】セバスティアン ポソス
(72)【発明者】
【氏名】クレイグ ハースト
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159TB06
5C159TC08
5C159TC38
5C159TC51
5C159TD15
5C159UA02
5C159UA05
5C159UA16
(57)【要約】      (修正有)
【課題】ハードウェアシステム及びソフトウェアシステムにわたって、入力ビデオのビデオ符号化処理を分散させることに関連するシステム、方法及びプログラムを提供する。
【解決手段】方法は、ビデオのコンテンツを評価し、そして、ハードウェアシステムのみによってか又はソフトウェアシステムのみによってか或いはハイブリッドのハードウェア及びソフトウェアシステムによって、符号化操作を行うのが最良であるかを決定することを含む。
【選択図】図6
【特許請求の範囲】
【請求項1】
ビデオコーディングのためのシステムであって、
コーディングのために入力ビデオの少なくとも一部分を格納するように構成されるメモリと、
前記メモリに結合される1つ又は複数のプロセッサであって、前記1つ又は複数のプロセッサは、
前記入力ビデオのビデオピクチャグループの符号化、前記入力ビデオの特定のピクチャの符号化、又は、前記入力ビデオの前記特定のピクチャの少なくとも1つのタイルの符号化操作、のうちの少なくとも1つに対して、ハードウェア操作を適用する必要があるということを適応的に決定し、
ハードウェアへの機能呼び出しによって、前記ビデオピクチャグループの前記符号化、前記特定のピクチャの前記符号化、又は前記特定のピクチャの前記タイルの前記符号化操作を実行するとともに、ソフトウェアによって前記入力ビデオの残りの部分の少なくとも第2の符号化を実行して、出力ビットストリームを生成する、ように構成される、
システム。
【請求項2】
前記1つ又は複数のプロセッサは、
ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、前記ハードウェア及び前記ソフトウェアの機能的な能力にアクセスし、
前記ターゲット品質レベル、前記ターゲット操作待ち時間、及び、前記機能的な能力を使用してテーブルにアクセスすることに基づいて、前記ハードウェア操作を選択する、ように構成される、請求項1に記載のシステム。
【請求項3】
前記特定のピクチャは、前記入力ビデオのピクチャグループの中に存在し、前記特定のピクチャが、前記ピクチャグループの中のより上位の時間的な層の中に存在するということ、又は、前記特定のピクチャのための第1の品質ターゲットが、前記ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されるということ、のうちの1つに応答して、前記特定のピクチャの前記符号化について、前記ハードウェア操作を決定し、前記第2のピクチャが、前記ピクチャグループの中のより下位の時間的な層に存在するということ、又は、前記第2のピクチャのための第2の品質ターゲットが、前記ハードウェアのみのピクチャ符号化品質メトリックによって満足されないということに応答して、ソフトウェアによって少なくとも部分的に、前記ピクチャグループの中の第2のピクチャをコーディングする、請求項1又は2に記載のシステム。
【請求項4】
前記1つ又は複数のプロセッサは、
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされるということに応答して、複数パスの符号化を使用して前記第2のピクチャを符号化する、ように構成され、前記複数パスの符号化は、前記ハードウェア又は第2のハードウェアを使用する第1のパス、及び、ソフトウェアによって少なくとも部分的に実行される以降のパスを含む、請求項3に記載のシステム。
【請求項5】
前記1つ又は複数のプロセッサは、
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされないということを決定し、
特定の符号化ステージまでのソフトウェア符号化、及び、1つ又は複数の以降のステージから前記特定の符号化ステージまでについてのハードウェア符号化、を含む前記第2のフレームの単一パスの符号化を実行する、ように構成される、請求項3又は4に記載のシステム。
【請求項6】
前記特定の符号化ステージは、モード決定ステージを含み、前記1つ又は複数の以降のステージは、再構成ステージ、フィルタリングステージ、及びエントロピー符号化ステージを含む、請求項5に記載のシステム。
【請求項7】
前記特定のピクチャの前記タイルについての前記符号化操作は、前記特定のピクチャの前記タイルの符号化のための複数の第1の符号化操作のうちの1つを含み、前記複数の第1の符号化操作は、ハードウェアによって実行され、前記特定のピクチャの前記タイルの前記符号化は、ソフトウェアによって実行される1つ又は複数の第2の符号化操作を含む、請求項1乃至6のうちのいずれか1項に記載のシステム。
【請求項8】
前記第1の符号化操作は、動き補償されている時間的なフィルタリング、グローバル動き推定、平面ピクチャ分析、空間分析、開ループフレーム内サーチ、フィルム粒子合成、ピクチャベースの内挿補間、ピクチャ再構成、ループフィルタリング、又はエントロピー符号化のうちの1つ又は複数を含み、前記1つ又は複数の第2の符号化操作は、モード決定を含む、請求項7に記載のシステム。
【請求項9】
前記ハードウェアは、固定の機能の回路又は特定用途向け集積回路のうちの1つを含み、ソフトウェアによる前記第2の符号化は、汎用デバイスによって複数の行の命令コードを実行することを含む、請求項1乃至8のうちのいずれか1項に記載のシステム。
【請求項10】
前記1つ又は複数のプロセッサは、
第2のハードウェアへの第2の機能呼び出しによって、受信したビットストリームを復号化して、前記入力ビデオを生成する、ように構成される、請求項1乃至9のうちのいずれか1項に記載のシステム。
【請求項11】
ソフトウェアによる前記第2の符号化は、前記受信したビットストリームの前記復号化によって生成されるメタデータに少なくとも部分的に基づいている、請求項10に記載のシステム。
【請求項12】
ビデオコーディングのための方法であって、
コーディングのために入力ビデオを受信するステップと、
前記入力ビデオのビデオピクチャグループの符号化、前記入力ビデオの特定のピクチャの符号化、又は、前記入力ビデオの前記特定のピクチャの少なくとも1つのタイルの符号化操作、のうちの少なくとも1つに対して、ハードウェア操作を適用する必要があるということを適応的に決定するステップと、
ハードウェアによって、前記ビデオピクチャグループの前記符号化、前記特定のピクチャの前記符号化、又は前記特定のピクチャの前記タイルの前記符号化操作を実行するとともに、ソフトウェアによって前記入力ビデオの残りの部分の少なくとも第2の符号化を実行して、出力ビットストリームを生成するステップと、を含む、
方法。
【請求項13】
ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、前記ハードウェア及び前記ソフトウェアの機能的な能力にアクセスするステップと、
前記ターゲット品質レベル、前記ターゲット操作待ち時間、及び、前記機能的な能力を使用してテーブルにアクセスすることに基づいて、前記ハードウェア操作を選択するステップと、をさらに含む、請求項12に記載の方法。
【請求項14】
前記特定のピクチャは、前記入力ビデオのピクチャグループの中に存在し、前記特定のピクチャが、前記ピクチャグループの中のより上位の時間的な層の中に存在するということ、又は、前記特定のピクチャのための第1の品質ターゲットが、前記ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されるということ、のうちの1つに応答して、前記特定のピクチャの前記符号化について、前記ハードウェア操作を決定し、前記第2のピクチャが、前記ピクチャグループの中のより下位の時間的な層に存在するということ、又は、前記第2のピクチャのための第2の品質ターゲットが、前記ハードウェアのみのピクチャ符号化品質メトリックによって満足されないということに応答して、ソフトウェアによって少なくとも部分的に、前記ピクチャグループの中の第2のピクチャをコーディングする、請求項12又は13に記載の方法。
【請求項15】
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされるということに応答して、複数パスの符号化を使用して前記第2のピクチャを符号化するステップをさらに含み、前記複数パスの符号化は、前記ハードウェア又は第2のハードウェアを使用する第1のパスを実行すること、及び、ソフトウェアによって少なくとも部分的に以降のパスを実行すること、を含む、請求項14に記載の方法。
【請求項16】
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされないということを決定するステップと、
特定の符号化ステージまでのソフトウェア符号化、及び、1つ又は複数の以降のステージから前記特定の符号化ステージまでについてのハードウェア符号化、を含む前記第2のフレームの単一パスの符号化を実行するステップと、をさらに含む、請求項14又は15に記載の方法。
【請求項17】
複数の命令を含むコンピュータプログラムであって、前記複数の命令は、デバイスによって実行されることに応答して、前記デバイスに、
コーディングのために入力ビデオを受信するステップと、
前記入力ビデオのビデオピクチャグループの符号化、前記入力ビデオの特定のピクチャの符号化、又は、前記入力ビデオの前記特定のピクチャの少なくとも1つのタイルの符号化操作、のうちの少なくとも1つに対して、ハードウェア操作を適用する必要があるということを適応的に決定するステップと、
ハードウェアによって、前記ビデオピクチャグループの前記符号化、前記特定のピクチャの前記符号化、又は前記特定のピクチャの前記タイルの前記符号化操作を実行するとともに、ソフトウェアによって前記入力ビデオの残りの部分の少なくとも第2の符号化を実行して、出力ビットストリームを生成するステップと、を含むビデオコーディングを実行させる、
コンピュータプログラム。
【請求項18】
命令をさらに含み、前記命令は、前記デバイスによって実行されることに応答して、前記デバイスに、
ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、前記ハードウェア及び前記ソフトウェアの機能的な能力にアクセスするステップと、
前記ターゲット品質レベル、前記ターゲット操作待ち時間、及び、前記機能的な能力を使用してテーブルにアクセスすることに基づいて、前記ハードウェア操作を選択するステップと、を含むビデオコーディングを実行させる、請求項17に記載のコンピュータプログラム。
【請求項19】
前記特定のピクチャは、前記入力ビデオのピクチャグループの中に存在し、前記特定のピクチャが、前記ピクチャグループの中のより上位の時間的な層の中に存在するということ、又は、前記特定のピクチャのための第1の品質ターゲットが、前記ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されるということ、のうちの1つに応答して、前記特定のピクチャの前記符号化について、前記ハードウェア操作を決定し、前記第2のピクチャが、前記ピクチャグループの中のより下位の時間的な層に存在するということ、又は、前記第2のピクチャのための第2の品質ターゲットが、前記ハードウェアのみのピクチャ符号化品質メトリックによって満足されないということに応答して、ソフトウェアによって少なくとも部分的に、前記ピクチャグループの中の第2のピクチャをコーディングする、請求項17又は18に記載のコンピュータプログラム。
【請求項20】
命令をさらに含み、前記命令は、前記デバイスによって実行されることに応答して、前記デバイスに、
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされるということに応答して、複数パスの符号化を使用して前記第2のピクチャを符号化するステップを含むビデオコーディングを実行させ、前記複数パスの符号化は、前記ハードウェア又は第2のハードウェアへの第2の機能呼び出しによって第1のパスを実行すること、及び、ソフトウェアによって少なくとも部分的に以降のパスを実行すること、を含む、請求項19に記載のコンピュータプログラム。
【請求項21】
命令をさらに含み、前記命令は、前記デバイスによって実行されることに応答して、前記デバイスに、
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされないということを決定するステップと、
特定の符号化ステージまでのソフトウェア符号化、及び、1つ又は複数の以降のステージから前記特定の符号化ステージまでについての第2のハードウェア符号化、を含む前記第2のフレームの単一パスの符号化を実行するステップと、を含むビデオコーディングを実行させる、請求項19又は20に記載のコンピュータプログラム。
【請求項22】
システムであって、
コーディングのために入力ビデオを受信する手段と、
前記入力ビデオのビデオピクチャグループの符号化、前記入力ビデオの特定のピクチャの符号化、又は、前記入力ビデオの前記特定のピクチャの少なくとも1つのタイルの符号化操作、のうちの少なくとも1つに対して、ハードウェア操作を適用する必要があるということを適応的に決定する手段と、
ハードウェアによって、前記ビデオピクチャグループの前記符号化、前記特定のピクチャの前記符号化、又は前記特定のピクチャの前記タイルの前記符号化操作を実行するとともに、ソフトウェアによって前記入力ビデオの残りの部分の少なくとも第2の符号化を実行して、出力ビットストリームを生成する手段と、を含む、
システム。
【請求項23】
ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、前記ハードウェア及び前記ソフトウェアの機能的な能力にアクセスする手段と、
前記ターゲット品質レベル、前記ターゲット操作待ち時間、及び、前記機能的な能力を使用してテーブルにアクセスすることに基づいて、前記ハードウェア操作を選択する手段と、をさらに含む、請求項22に記載のシステム。
【請求項24】
前記特定のピクチャは、前記入力ビデオのピクチャグループの中に存在し、前記特定のピクチャが、前記ピクチャグループの中のより上位の時間的な層の中に存在するということ、又は、前記特定のピクチャのための第1の品質ターゲットが、前記ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されるということ、のうちの1つに応答して、前記特定のピクチャの前記符号化について、前記ハードウェア操作を決定し、前記第2のピクチャが、前記ピクチャグループの中のより下位の時間的な層に存在するということ、又は、前記第2のピクチャのための第2の品質ターゲットが、前記ハードウェアのみのピクチャ符号化品質メトリックによって満足されないということに応答して、ソフトウェアによって少なくとも部分的に、前記ピクチャグループの中の第2のピクチャをコーディングする、請求項22又は23に記載のシステム。
【請求項25】
前記第2の品質ターゲットを満たすのに複数パスの符号化が必要とされるということに応答して、複数パスの符号化を使用して前記第2のピクチャを符号化する手段をさらに含み、前記複数パスの符号化は、前記ハードウェア又は第2のハードウェアを使用する第1のパスを実行すること、及び、ソフトウェアによって少なくとも部分的に以降のパスを実行すること、を含む、請求項24に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、密度と品質との間のより良好なトレードオフのためのハードウェアへのビデオ符号化プロセスのオフロードに関する。
【背景技術】
【0002】
トランスコーディングシステムを含む圧縮/解凍(コーデック)システムにおいては、圧縮効率、ビデオ品質、及び計算の複雑さは、重要な性能基準である。視覚的品質は、ユーザ体験(user experience)の重要な側面であり、圧縮効率は、ビデオファイルを格納するのに必要となるメモリ記憶装置の量、及び/又は、ビデオコンテンツを伝送する及び/又はビデオコンテンツをストリーミングする(stream video content)のに必要となる帯域幅の量に影響を与え、計算の複雑さは、ビデオコンテンツを処理するのに必要となるシステムの複雑さ及び時間に影響を与える。例えば、メディアコーディング及びトランスコーディングは、いくつかの異なるキー操作又はツールを含む。これらのツールの各々は、さまざまな計算の複雑さを有し、望ましい品質レベル、圧縮率、及びターゲット待ち時間に応じて、複数の異なるパラメータを使用して実行されてもよい。そのようなコーディングシステム及びトランスコーディングシステムの設計は、ターゲット待ち時間の中で望ましい品質レベルを達成するように実行される必要があるツールの最適なサブセットを識別することに焦点を当てている。例えば、高品質のビデオコンテンツの生成は、複数のエンコーダパスの実行及び実行するのにより長い時間を要するであろうさまざまなタイプのモード間サーチ/モード内サーチの使用を含む場合がある。さらに、待ち時間要件は、また、いずれのツールを実行するかを指定することが可能である。例えば、ライブスポーツイベントのブロードキャストは、高品質のコーディングのみならず関連する待ち時間目標を必要とする。より低い品質の符号化のために、コーダは、典型的には、ある単一のエンコーダパスを行い、そして、より少ないモードサーチを実行するであろう。
【0003】
多種多様のコーディングコンテキストへの適用のために、そのようなコーダシステムの効率を改善するための継続的な必要性が存在する。これらの考慮事項及び他の考慮事項に関して、この出願において示されている改善が必要とされている。ビデオデータを圧縮しそして伝送したいという欲求がより広く普及するのに伴って、そのような改善は、非常に重要になる可能性がある。
【図面の簡単な説明】
【0004】
本明細書において説明されている事項は、例示として解説されており、複数の添付の図面に限定されるものではない。説明を簡潔且つ明瞭にするために、それらの図の中に図示されている複数の要素は、必ずしも、縮尺通りに描かれていない。例えば、いくつかの要素の寸法は、明確さのために、他の要素と比較して誇張されていてもよい。さらに、適切と考えられる場合は、対応する要素を示すために、複数の参照標識が複数の図の間で繰り返されている。
【0005】
図1】適応ハードウェア符号化操作及びソフトウェア符号化操作を含むビデオコーディングのための例示的なシステムの説明図である。
図2】ハイブリッド符号化のための入力ビデオの例示的な分割の説明図である。
図3】ハイブリッド符号化意思決定によってハードウェアとソフトウェアとの間で選択をするための例示的な技術の説明図である。
図4】ハイブリッドビデオ符号化においてハードウェアオフローディングを選択するための例示的なプロセスを図示するフロー図である。
図5】ピクチャ構造の例示的な階層的グループ、対応するコーディング順序、対応するソフトウェア及びハードウェアのコーディング同期の説明図である。
図6】ハイブリッド符号化パイプラインの中のハードウェアへの例示的な符号化操作オフロードの説明図である。
図7】選択的なソフトウェア及びハードウェア符号化操作を使用する適応ハイブリッドを含むビデオコーディングのための例示的なプロセスを図示するフロー図である。
図8】選択的なソフトウェア及びハードウェア符号化操作を使用する適応ハイブリッドを含むビデオコーディングのための例示的なシステムの説明図である。
図9】例示的なシステムの説明図である。
図10】本開示の少なくともいくつかの実装にしたがってすべてが配列されている例示的なデバイスを図示している。
【発明を実施するための形態】
【0006】
ここで、複数の同封されている図面を参照して、1つ又は複数の実施形態又は実装を説明する。特定の構成及び配置が議論されるが、この議論は、例示することのみを目的として行われるというということを理解すべきである。当業者は、本明細書の趣旨及び範囲から離れることなく、他の構成及び配置を使用することができるということを理解するであろう。本明細書において説明されている技術及び/又は配置は、また、本明細書において説明されているそれらの技術及び/又は配置以外のさまざまな他のシステム及び用途において使用されてもよいということは、当業者には明らかであろう。
【0007】
以下の説明は、例えば、システムオンチップ(SoC)アーキテクチャ等のアーキテクチャにおいて明らかにされてもよいさまざまな実装を記載しているが、本明細書において説明されている技術及び/又は配置の実装は、特定のアーキテクチャ及び/又はコンピューティングシステムに限定されるのではなく、同様の目的のために任意のアーキテクチャ及び/又はコンピューティングシステムによって実装されてもよい。例えば、複数の集積回路(IC)チップ及び/又はパッケージ、及び/又は、セットトップボックス、スマートフォン等のさまざまなコンピューティングデバイス及び/又は消費者電子(CE)デバイスを使用するさまざまなアーキテクチャは、本明細書において説明されている技術及び/又は配置を実装することが可能である。さらに、以下の説明は、論理的な実装、システム構成要素のタイプ及び相互関係、論理的区分化/一体化の選択等の数多くの特定の細部を記載してもよいが、請求項に記載されている主題は、そのような特定の細部を使用することなく実現可能である場合がある。他の例では、例えば、制御構造及び完全なソフトウェア命令シーケンス等のいくつかの事項は、本明細書に開示されている事項を不明瞭にしないように、詳細には示されないことがある。
【0008】
本明細書に開示されている事項は、ハードウェア、ファームウェア、ソフトウェア、又はそれらのいずれかの組み合わせによって実装されてもよい。本明細書において開示されている事項は、また、機械読み取り可能な媒体に格納されている命令として実装されてもよく、それらの命令は、1つ又は複数のプロセッサによって読み取られ及び実行されてもよい。機械読み取り可能な媒体は、いずれかの媒体及び/又はメカニズムを含んでもよく、その媒体及び/又はメカニズムは、(例えば、コンピューティングデバイス等の)機械によって読取可能な形態で情報を格納し又は伝送する。例えば、機械読み取り可能な媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、電気的な形態、光学的な形態、音響の形態又は他の形態の(例えば、搬送波、赤外線信号、ディジタル信号等の)伝搬信号等を含んでもよい。
【0009】
明細書中の"ある1つの実装(one implementation)"、"ある実装(an implementation)"、"ある例示的な実装(an example implementation)"等への言及は、説明されている実装が、ある特定の特徴、構造、又は特性を含んでもよいが、あらゆる実施形態が、必ずしも、その特定の特徴、構造、又は特性を含む場合があるとは限らないということを示す。さらに、そのような表現は、必ずしも同じ実装に言及するものではない。さらに、また、ある特定の特徴、構造、又は特性が、ある1つの実施形態に関連して説明されているときに、本明細書において明示的に説明されているか否かにかかわらず、他の実装に関連して、そのような特徴、構造、又は特性を実現することが当業者の知識の範囲内でにおいて行われるということが了解される。
【0010】
方法、デバイス、装置、コンピューティングプラットフォーム、及び物品は、ビデオコーディングに関連し、特に、ハードウェアへのビデオコーディングプロセスの適応的なオフロードに関連して、本明細書において説明されている。
【0011】
上記のように、ビデオ符号化においては、さまざまな計算の複雑さを有する複数のツールを使用して、入力ビデオをコーディングする。本明細書において説明されている符号化技術は、ビデオトランスコーディングに関して示されるが、いずれかの文脈の中で使用されてもよい。例えば、ビデオトランスコーディングは、受信したビットストリームを復号化して、ビデオを生成すること、及び、ビデオ解像度、ビットストリームフォーマット、ビットストリームサイズ等の複数の異なる特性を有するビデオコンテンツを表現する出力ビットストリームへとそのビデオを符号化することを含む。本明細書において説明されている符号化技術は、また、(例えば、複数の入力ビデオピクチャのクリップ又はシーケンス等の)受信した入力ビデオを符号化するのに使用されてもよい。複数の実施形態のうちのいくつかにおいて、そのような符号化は、符号化の複数の部分にハードウェアを適応的に適用することを含む。そのような符号化部分は、ビデオのピクチャのクリップ又はグループ、ビデオのピクチャ、又はビデオについての符号化操作(すなわち、少なくとも特定のピクチャのタイル)であってもよい。本明細書において使用されているように、"符号化操作(encode operation)"の語は、符号化のための出力を提供するタスク又はタスクのグループを示し、その符号化のための出力は、ビットストリーム部分、再構成されているフレーム部分、動きベクトル動きベクトルフィールド、ビデオ分析パラメータ、及び本明細書において説明されているいずれかの他のデータ又はデータ構造等のいずれかの適切なビデオデータを含む。本明細書において使用されているように、"タイル(tile)"の語は、ビデオピクチャのいずれかのサブピクチャ部分を示す。ビデオピクチャのタイルは、1つ又は複数のブロック(blocks)、1つ又は複数のスライス(slices)、或いは、1つ又は複数のコーディングユニット等を含む。タイルは、任意のサイズ又は形状を有してもよい。さらに、ピクチャは、入力ピクチャのサイズと等しくてもよく又は等しくなくてもよいブロックのグループ(又は、タイル又はコーディングユニット等)として定義される。受信したビットストリーム及び/又は出力ビットストリームは、標準準拠ビデオデータ等のいずれかの適切な符号化されているビデオデータを含んでもよい。例えば、受信したビットストリーム及び/又は出力ビットストリームは、H.264/MPEG-4高度ビデオコーディング(Advanced Video Coding (AVC))規格準拠、H.265高効率ビデオコーディング(HEVC)規格準拠、AOMedia Video 1(AV1)規格準拠、VP9規格準拠等であってもよい。
【0012】
複数の実施形態のうちのいくつかにおいて、複数の適応的な技術は、ハードウェアが、入力ビデオのビデオピクチャのグループの符号化に使用されるように構成されるか否か、入力ビデオのある特定のピクチャの符号化に使用されるか否か、又は入力ビデオの特定のピクチャ及びソフトウェアの符号化操作が、入力ビデオの残りの部分を符号化するのに使用されるように構成されるか否かといったように、ハードウェアがその部分に適用されるように構成されるか否かを決定するのに使用される。ハードウェアのそのような適応的選択は、ターゲットビデオ品質レベル、ターゲット操作待ち時間、及びハードウェアとソフトウェアの機能的能力にアクセスし、そして、ターゲット品質レベル、ターゲット待ち時間、及び機能的能力を使用してテーブルにアクセスすることに基づいてハードウェア操作を選択するといったように、本明細書において説明されている任意の技術を使用して実行されてもよく、それによって、そのテーブルは、ターゲット品質レベル、ターゲット待ち時間、及び機能的能力を、操作のためのハードウェアとソフトウェアの対応するハードウェア、ソフトウェア、又はそれらの混成物に相関させる。その次に、ビデオピクチャのグループの符号化、特定のピクチャの符号化、又は特定のピクチャについての符号化操作がハードウェアによって実行され、入力ビデオの少なくとも残りの部分がソフトウェアによって符号化されて、出力ビットストリームを生成する。
【0013】
本明細書において使用されているように、"ハードウェア"、"ハードウェアによって実装され"、"ハードウェアによって符号化され"の語及び同様の用語は、固定機能回路、特定用途向け集積回路、又は他の専用回路等のハードウェアリソースへの機能呼び出しによって実行される1つ又は複数の操作を示す。そのようなハードウェアは、中央プロセッサ、グラフィックスプロセッサ、ビデオプロセッサ、又はそのような処理複合体又はパイプラインの一部として実装されてもよい。"ソフトウェア"、"ソフトウェアによって実装され"、"ソフトウェアによって符号化され"の語、及び同様の語は、コンパイルされ、プロセッサ等の汎用デバイスによって実行されてもよい複数の命令(すなわち、命令の複数の行)によって実行される1つ又は複数の操作を示す。そのようなソフトウェアは、また、いずれかの処理デバイスによって実行されてもよいが、一方で、そのようなソフトウェアは、通常は、中央プロセッサによって実行され、その中央プロセッサは、システムリソースによって実行されるようにコンパイルされたタスクをルーティングする。ハードウェアの実装は、ソフトウェアの実装が完全な柔軟性を提供する一方で、操作がどのように実行されるかに関して、ほとんど又は全く柔軟性を伴わない。ハードウェアの実装とソフトウェアの実装との間の差は、実行される作業の粒度(すなわち、ピクチャグループのレベル、ピクチャレベル、又はピクセルレベルの粒度)に基づいて、ハードウェアの実装がそのレベルで単一の命令のみを可能とする(すなわち、フレーム符号化全体を提示する)一方で、ソフトウェアの実装は、各々の再分割部分についての個々のコードによって、いずれかのより高いレベルの粒度の操作を可能とする(すなわち、フレームのブロック又はピクセルをどのようにコーディングするかを指示するコードの行を使用してフレームを符号化する)。
【0014】
ビデオピクチャいずれのグループ又はいずれのピクチャが符号化されるか、或いは、いずれの符号化操作がハードウェアを使用して実行されるか、及び、いずれの符号化操作がソフトウェアを使用して実行されるかの決定は、ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び他の要因の評価等の本明細書において説明されているいずれかの技術を使用して実行されてもよい。本明細書で使用されているように、"ターゲットビデオ品質レベル"の語は、フル符号化を含むいずれかの符号化タスクの品質又は符号化ステージのパフォーマンス等についてのレベル又は値を示す。より高い品質レベルは、(例えば、フレーム符号化についての)より低い歪み、(例えば、フレーム内サーチ又は動き推定サーチのための)より完全なサーチ、又は(例えば、より多くのループフィルタの評価を含む)より大きな能力等のうちの1つ又は複数を示し、より低い品質は、反対の特性を示す。"ターゲット操作待ち時間"の語は、対応するタスクの速度を示す時間(又は、逆に、周波数値)を示す。そのようなターゲットビデオ品質レベル、ターゲット操作待ち時間、及び選択的に他のものは、その次に、関連するタスクのためのハードウェア及びソフトウェアの機能的能力と比較される。次に、ハードウェアの能力とソフトウェアの能力との間で、より密接な一致又はターゲットの要件を満たすことが可能である一致が、そのタスクのために選択される。前のタスク及び後のタスクは、また、現在のタスクについてのハードウェアの能力及びソフトウェアの能力に影響を与える場合があるということに留意すべきである。そのようなタスクの例及びハードウェアへのオフロードのためのそれらの相対的な適合性は、さらに、本明細書において説明されている。特に、ハードウェアによって実行されるタスクは、典型的には、より低いビデオ品質レベル能力(又は、少なくとも、より制限的な実装)及びより低い待ち時間を有し、一方で、ソフトウェアによって実行される同じタスクは、典型的には、より高いビデオ品質レベル能力及びより大きな待ち時間を有する。
【0015】
ビデオコーディングのコンテキスト(context of video coding)においては、そのコンテキストに応じて、さまざまな操作モード又はレベルが望ましく、それらのコンテキストは、(例えば、ビデオオンデマンド等の)待ち時間をほとんど無視したうえで必要とされる品質が最も高いコンテキストから、オンラインゲームコンテキスト等の許容可能である(又は、耐性がある)品質が低い待ち時間を必要とするコンテキストまで変化してもよい。他のコンテキストは、そのような特性の混成が必要である。例えば、より高い待ち時間を甘受しつつ要求する品質がより高いコンテキストから、品質がより低いという代償を払ってより低い待ち時間を要求するコンテキストにランク付けされるように、そのようなコンテキストは、放送コンテンツ、トップコンテンツを上回るプレミアム、及びライブストリーミングを含む。高品質/高遅延から低品質/低遅延の範囲(spectrum)においては、他のコンテキストを使用してもよい。特に、各々の使用モデル又はコンテキストは、エンコーダの設計における異なる操作モードにマッピングされ、各々のモードは、適切な品質レベル及び望ましい待ち時間を達成するために、符号化ツールの特定の較正を必要とする。例えば、各々の使用モデルで、符号化を完了するために行われる前処理の程度が異なってくるということにつながる。さらに、高品質のビデオコンテンツの生成は、複数のエンコーダパス(multiple encoder passes)の実行及びさまざまなタイプのモード間サーチ(inter mode search)/モード内サーチ(intra mode search)の使用を伴い、そのようなエンコーダは、実行に長い時間を要する。また、どのツールを実行するかを指定するには、時間が必要となる。例えば、ライブスポーツイベントのブロードキャストは、高品質のトランスコードのみならず、厳格な待ち時間ターゲットも必要とする。そのような使用のために、計算上複雑なツールを使用してもよいが、エンコーダは、その待ち時間要件を維持するために、単一のパス(single pass)しかを行うことができない。低品質を対象とする使用状況においては、エンコーダは、速度及び待ち時間の制約を維持するために、単一の符号化パス(single encoding pass)のみを実行し、そして、最小限の複雑なツールの限定されたセットを使用してもよい。他のコンテキスト及び使用モデルを使用してもよい。
【0016】
入力ビデオからのメディアトランスコーディング(media transcoding)及び符号化は、計算の複雑さの観点から、AV1及びHEVC等のより新しいコーデックの導入とともに増加してきた。これらのコーデックは、より計算集約的なツールを使用して、同様の品質レベルで改善された圧縮率を提供することに焦点を当てている。これらのツールを加速し、そして、計算コストを相殺するために、複数の実施形態のうちのいくつかにおいては、エンコーダツールは、ハードウェアによって実装される。一方で、領域目標(area goals)を満たすために(すなわち、制限のあるハードウェア表面領域(limited hardware surface area)を使用するために)、ハードウェアの実装は、ツール自体のサブセット、又は、ツールが動作することが可能であるパラメータの範囲のサブセットのみを取り扱うことが可能である。ハードウェア実装をより生産化可能にするために、これらのトレードオフを必要とする。一方で、結果として、複数の品質レベルのうちのすべてにおいて、ハードウェア実装を有効に使用することが不可能である場合がある。本明細書において説明されている複数の技術は、アルゴリズム的アプローチを提供し、そのアルゴリズム的アプローチは、メディアトランスコーディング及び符号化をサポートするハイブリッドソフトウェア(SW)及び専用ハードウェア(HW)加速ソリューションをより良好に活用する。複数の実施形態のうちのいくつかにおいては、ある特定の性能レベルが与えられて、そのSWエンコーダ及び/又はその専用HW加速ソリューションによって実行されるであろう複数のタスクの割り当ては、最適化アルゴリズムを使用して実行されて、最良の速度/待ち時間/品質のトレードオフを達成する。そのような技術は、例えば、ピクチャが、完全なソフトウェア符号化、完全なハードウェア符号化、又は、ハイブリッド符号化、のうちの1つを経験する必要があるか否かの決定を含み、それらの完全なソフトウェア符号化、完全なハードウェア符号化、又は、ハイブリッド符号化は、ソフトウエアが符号化する複数のピクチャのうちの一部、ハードウエアが符号化する他のピクチャ、或いは、ハードウエアが加速する(例えば、前処理又は遅延符号化操作等の)符号化プロセスのうちの複数の要素を使用してピクチャを符号化することによって符号化される他のピクチャ、及び、その符号化がソフトウエアによって行われる残りのピクチャに関して行われる。
【0017】
図1は、ビデオコーディングのための例示的なシステム100の説明図であり、そのビデオ符号化は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されている適応ハードウェア及びソフトウェア符号化操作を含む。図1に示されているように、システム100は、デコーダ101及びエンコーダ102を含み、そのエンコーダ102は、コントローラ103、ソフトウェア符号化モジュール104、ハードウェア符号化モジュール105を含むか又は実装する。システム100は、トランスコーディングしてビットストリーム113にするために、ビットストリーム110を受信してもよく、それによって、ビットストリームは、異なるビデオ解像度を表し、異なるビットストリームフォーマットを有し、異なるコーデックに準拠し、異なるビットストリームサイズ又はビットレートを有するといったように、ビットストリーム110に対して、複数の異なる特性を有する。デコーダ101は、ビットストリーム110を受信し、そして、そのビットストリーム110を復号化して、入力ビデオ111及び随意的なメタデータ112を生成する。複数の実施態様のうちのいくつかにおいて、デコーダ101は、ハードウェアによってビットストリーム110を完全に復号化する。例えば、デコーダ101を実装するのに使用されるハードウェアは、ハードウェア符号化モジュール105を実装するのに使用されるハードウェアとは別のハードウェアであってもよく、又は、部分的に共有されていてもよい。ビデオトランスコーディングに関して図示されているが、システム100は、そのシステムの中でデコーダ101を有している必要なく、ビデオ符号化のみを実行するように実装されてもよい。むしろ、処理は、入力ビデオ111を受信し又は獲得することから開始してもよい。
【0018】
ビットストリーム110及び113は、規格に準拠したビットストリーム等のいずれかの適切なビットストリームであってもよい。例えば、ビットストリーム110及び113のうちの一方又は双方は、AVC規格に準拠し、HEVC規格に準拠し、VP9規格に準拠し、AV1規格に準拠する等であってもよい。システム100は、例えば、パーソナルコンピュータ、ラップトップコンピュータ、タブレット、ファブレット、スマートフォン、ディジタルカメラ、ゲームコンソール、ウェアラブルデバイス、オールインワンデバイス、又はツーインワンデバイス等のいずれかの適切なデバイス、或いは、モバイルプラットフォーム等のプラットフォームによって実装されてもよい。例えば、本明細書において使用されているように、システム、デバイス、コンピュータ、又はコンピュータデバイスは、いずれかのそのようなデバイス又はプラットフォームを含んでもよい。
【0019】
システム100は、表現を明確にするために、示されていない他のモジュール又は構成要素を含んでいてもよい。例えば、エンコーダ102は、区分化モジュール、変換モジュール、量子化モジュール、フレーム内予測モジュール、動き推定モジュール、動き補償モジュール、走査モジュール、エントロピー符号化モジュール等のうちの1つ又は複数を含んでもよい。さらに、エンコーダ102は、ローカル復号化ループ及びデコーダ101を含んでもよく、それらのローカル復号化ループ及びデコーダ101の各々は、逆量子化モジュール、逆変換モジュール、及び再構成されている残差ブロックを参照ブロックと組み合わせるための加算器、非ブロック化フィルタリングモジュール、サンプル適応オフセット(SAO)フィルタリングモジュール等を含んでもよい。そのようなモジュール及びそのようなモジュールに関連する複数の操作は、当業者には知られており、表現における明確さのために本明細書においてはさらに説明されない。
【0020】
入力ビデオ111は、いずれかの適切な解像度で、いずれかの適切なビデオフレーム、ビデオピクチャ、ビデオフレームのシーケンス、ピクチャグループ、複数のピクチャグループ、又はビデオデータ等を含んでもよい。例えば、そのビデオは、ビデオグラフィックスアレイ(VGA)、高精細度(HD)、(例えば、1080p等の)フルHD、4K解像度ビデオ、5K解像度ビデオ、又は8K解像度ビデオ等であってもよく、ビデオは、いずれかの数のビデオフレーム、ビデオフレームのシーケンス、ピクチャ、又はピクチャグループ等を含んでもよい。本明細書において説明されている技術は、表現を明確にするために、ピクチャ及びブロックと関連して説明される。一方で、そのようなピクチャは、フレーム、ビデオフレーム、ビデオピクチャ、フレーム又はピクチャのシーケンス、又はビデオシーケンス等として特徴付けられてもよく、そのようなブロックは、コーディングユニット、コーディングブロック、マクロブロック、サブユニット、又はサブブロック等として特徴付けられてもよい。例えば、カラービデオデータのピクチャ又はフレームは、輝度平面又は輝度成分、及び、その輝度平面に関して同じ解像度又は異なる解像度での2つの色度平面又は色度成分を含んでもよい。入力ビデオ111は、複数のピクチャ又はフレームを含んでもよく、それらの複数のピクチャ又はフレームは、例えば、ピクセルのM×Nブロックに対応するデータを含むいずれかのサイズのブロックに分割されてもよい。そのようなブロックは、ピクセルデータの1つ又は複数の平面又はカラーチャネルからのデータを含んでもよい。本明細書において使用されているように、"ブロック"の語は、いずれかの適切なサイズのマクロブロック又はコーディングユニット等を含んでもよい。理解されるように、そのようなブロックは、また、予測又は変換等のためにサブブロックに分割されてもよい。
【0021】
デコーダ101がビットストリーム110を復号化して、入力ビデオ111を生成するコンテキストにおいて、デコーダ101は、随意的に、メタデータ112を生成してもよく、利用可能な場合には、そのメタデータ112を、ソフトウェア符号化モジュール104に、また、随意的に、ハードウェア符号化モジュール105に提供する。複数の実施態様のうちのいくつかにおいて、入力ビデオ111の少なくとも一部の符号化は、メタデータ112に基づいている。複数の実施形態のうちのいくつかにおいては、ソフトウェア符号化モジュール104が実行する入力ビデオ111の少なくとも一部の符号化は、メタデータ112に基づいている。ソフトウェアの柔軟性のために、ソフトウェアコーディング操作に、そのようなメタデータ112をより容易に組み込むことが可能であり、一方で、ハードウェア符号化モジュール105によるメタデータ112の使用は、ハードウェア機能があらかじめ定義され、したがって、メタデータ112の使用に対する柔軟性がより低いため、より困難であるということに留意すべきである。しかしながら、いずれの場合においても、メタデータ112は、1つ又は複数のいずれかの適切な技術を使用して、コーディング操作を支援するのに使用されてもよい。複数の実施形態のうちのいくつかにおいて、メタデータ112は、入力ビデオ111の複数のブロックについてのコーディングモードの決定を含み、そのようなコーディングモードの決定は、(例えば、サーチを制限することによって)モード選択を支援するために、又は、候補モードなどとして、符号化において使用されてもよい。本明細書において使用されているように、"コーディングモードの決定(coding mode decision)"の語は、例えば、フレーム内(intra)又はフレーム間(inter)、フレーム内であるときのフレーム内の方向(intra direction)、フレーム間であるときの動きベクトル(motion vector)、スキップ(skip)、又はマージ(merge)等のブロックについて選択されるいずれかのコーディングモード又は決定を示す。そのようなコーディングモードの決定は、区分化決定(partitioning decisions)及びブロックフィルタの選択(block filter selections)等を含んでもよい。
【0022】
エンコーダ102は、入力ビデオ111を受信し、随意的に、メタデータ112を受信し、そして、エンコーダ102は、ビットストリーム113を生成し、そのビットストリーム113は、本明細書において説明されているいずれかのフォーマット又は特性を有していてもよい。示されているように、エンコーダ102は、符号化コントローラ103を含み、その符号化コントローラ103は、ソフトウェアによって実装され、ソフトウェア符号化モジュール104へのソフトウェアコマンド114によってソフトウェアの形態の符号化の部分を実行して、符号化されているデータ115を受信し、そして、ハードウェアコマンド124によって入力ビデオ111の符号化の少なくとも複数の部分をオフロードして、符号化されているデータ125を受信することによって、入力ビデオ111の符号化を制御する。その次に、符号化されているデータ115及び符号化されているデータ125の複数の部分をパッケージ化して(package)、ビットストリーム113を生成する。また、示されているように、ソフトウェア符号化モジュール104は、ハードウェアコマンド134によって、ハードウェア符号化モジュール105に符号化タスクを直接的にオフロードして(offload)、符号化されているデータ135を受信してもよい。そのようなソフトウェアコマンド114及びハードウェアコマンド124、134は、本明細書において説明されているいずれかの符号化又はコーディング操作を実行するのに使用されてもよい。同様に、符号化されているデータ115、125、135は、圧縮ビデオデータ及びビデオデータ分析等のいずれかの符号化されているデータを含んでもよい。それにより、ハイブリッドのソフトウェア及びハードウェア符号化アーキテクチャが提供される。
【0023】
ハードウェア符号化モジュール105は、ハードウェアコマンド124及び134を使用して呼び出され(invoked)、それによって、ハードウェアコマンド124及び134は、ハードウェア符号化モジュール105があらかじめ定義されている機能を実行するための機能呼び出し(function call)(すなわち、単一の機能呼び出し)であってもよく、そのあらかじめ定義されている機能は、ピクチャ全体の符号化(encode of an entire picture)、動き推定(motion estimation)、動き分析(motion analysis)、ピクチャ再構成(picture reconstruction)等の本明細書において説明されているいずれかの操作であってもよい。固定機能回路、特定用途向け集積回路、又は他の専用回路等の適切な機能のための専用ハードウェアによって、ハードウェア符号化モジュール105を実装してもよい。中央プロセッサ、グラフィックスプロセッサ、ビデオプロセッサ、そのようないずれかの処理複合体、プロセッサパイプライン、又はマルチプロセッサシステムの一部として、ハードウェア符号化モジュール105を実装してもよい。ハードウェア符号化モジュール105は、同じ又は異なるデバイスに実装される1つ又は複数のそのようなモジュールを含んでもよい。
【0024】
ソフトウェア符号化モジュール104は、ソフトウェアコマンド114によって呼び出され、ソフトウェアコマンド114は、任意の数のあらかじめ定義されている機能を実行するためのコード又はコンパイルされているコードであってもよい。そのようなあらかじめ定義されている機能は、時間的フィルタリング(temporal filtering)、ピクチャ全体の符号化(encode of an entire picture)、ピクチャのモード決定(mode decisions for a picture)、グローバル動き推定(global motion estimation)、オープンループフレーム内サーチ(open loop intra searching)、ピクチャベースの内挿補間(picture-based interpolation)、動き分析(motion analysis)、ピクチャ再構成(picture reconstruction)等の本明細書において説明されているいずれかの符号化機能であってもよい。ハードウェア符号化モジュール105及びソフトウェア符号化モジュール104が実行する機能は、重複してもよいということに留意すべきである。すなわち、ハードウェア符号化モジュール105及びソフトウェア符号化モジュール104は、同じ機能を実行してもよい。しかしながら、それらの同じ機能は、より高い品質/より低い品質、より多くのサーチ/より少ないサーチ、より大きな数の評価される候補/より小さな数の評価される候補等の異なる特性又は制約を使用して実行されてもよく、それによって、ソフトウェア符号化モジュール104は、より高い品質、より多くのサーチ、より大きな数の評価される候補、及びより大きな柔軟性を提供し、一方で、ハードウェア符号化モジュール105は、一般的に、より低い品質、より少ないサーチ、より小さな数の評価される候補を提供し、低遅延の利点を有する柔軟性をほとんど又はまったく提供しない。したがって、ハードウェア符号化モジュール105の配置は、より低い品質を受け入れつつ、改善された速度のために、特定の機能又はタスクをオフロードすることと考えられてもよい。
【0025】
説明されているシステム及び技術は、ハイブリッドビデオコーダ等のハイブリッドインフラストラクチャにおいて、ソフトウェア又はハードウェアによって、メディアトランスコーディング又はメディア符号化のうちのいずれのコーディング操作が実行されるかを決定するための適応型及び階層型のアルゴリズムを提供する。複数の実施形態のうちのいくつかにおいて、ハイブリッドビデオコーダは、フルピクチャエンドトゥエンド(すなわち、フルピクチャ符号化)において実行される操作として定義されるマクロレベル又はピクチャレベル、及び、サブマクロレベル又はサブピクチャレベル等の符号化の複数のレベルで決定を行い、サブマクロレベル又はサブピクチャレベルは、コーディング全体の個々の構成要素を見て、そのような個々の構成要素又は操作がハードウェアによって実行されるか又はソフトウェアによって実行されるかを決定するものとして定義される。そのようなサブマクロレベル又はサブピクチャレベルの決定は、品質要件、待ち時間要件、及び個々のコーディング構成要素又はタスクのためのハードウェアがサポートする品質に基づいてもよい。
【0026】
図2は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されているハイブリッド符号化のための入力ビデオ111の例示的な分割200の説明図である。図2に示されているように、入力ビデオ111は、任意の数のピクチャを有する任意の数のピクチャグループ(groups of pictures)201に分割されてもよい。入力ビデオ111は、また、任意の数のビデオのクリップ(clips of video)に分割されてもよく(又は、入力ビデオ111それ自体がビデオのクリップであってもよく)、それらのビデオのクリップは、ピクチャグループ201に対応してもよく又は対応しなくてもよい。例えば、ビデオのクリップは、任意の数の時間的順序のビデオピクチャ(temporally sequential video pictures)を含んでいてもよく、"時間的順序(temporally sequential)"の語は、クリップの中のビデオピクチャが表示順になっているとともに、それらの間にピクチャを介在させることなく、互いに時間的に隣接しているということを示す。あるクリップは、ピクチャグループと同じビデオピクチャ又は任意の数のピクチャグループのビデオピクチャを含んでもよい。ピクチャグループ201は、また、図5に関して本明細書においてさらに説明されているように、あらかじめ定義されているコーディング階層(predefined coding hierarchy)におけるあらかじめ定義されている数のビデオピクチャ等の任意の数の時間的順序のビデオピクチャを含む。一方で、そのようなピクチャグループ201は、また、適応的であってもよい。
【0027】
図示されている例では、ピクチャグループ201は、ピクチャ202、203、204と、表示順序になっている任意の数の追加的なピクチャと、を含む。ピクチャグループ201は、また、本明細書においてさらに説明されているように、表示順序とは異なるコーディング順序で符号化されてもよい。ピクチャ202に関して示されているように、入力ビデオ111の各々のピクチャは、任意の数のピクセル又はピクセルサンプルを含む任意の数のブロック205に分割されるか又は任意の数のブロック205を含む。コーディングブロック及びコーディングユニット等として特徴付けられてもよいブロック205は、正方形又は長方形等の任意の形状及びサイズを有してもよい。ブロック205は、同じサイズ及び形状を有してもよく、又は、符号化の決定に基づいてサイズ及び形状が変化してもよい。ブロック205は、コーディングブロックであってもよく、ブロック205は、さらに、予測ブロック及び変換ブロックに分割されてもよいということに留意すべきである。
【0028】
示されているように、ブロック205の各々は、任意の数のピクセル206(又は、ピクセルサンプル)に分割されるか又は任意の数のピクセル206を含む。図示されている例では、ブロック205は、8×8(64)のピクセルサンプルを含むが、説明されているように、ブロック205の任意のサイズ及び形状を採用してもよい。各々のピクセル206は、輝度値(luma value)(Y)、輝度値及び色チャネル値(color channel values)(YUV)、3つの色チャネル値(RGB)、又は他の色チャネル表現(color channel representations)を含んでもよい。複数の実施形態のうちのいくつかでは、輝度チャネル(luma channel)及び色チャネルは、異なる解像度で提供される。
【0029】
入力ビデオ111の分割200に加えて、さまざまな符号化タスクが、そのような分割レベルで実行される。例えば、符号化タスクは、クリップ又はピクチャグループで、ピクチャ202、203、204のピクチャレベルで、ブロック205のブロックレベルで(又は、予測ブロック又は変換ブロックレベルで)、或いは、ピクセル206のレベルで実行されてもよい。本明細書においては、"符号化操作"の語、"コーディング操作"の語、及び同様の語は、入力ビデオ111の階層において任意のそのようなレベルで実行されるコーディング操作を示す。したがって、そのような符号化操作への入力は、クリップ、ピクチャグループ、ピクチャ、ブロック、又はピクセル(及び、他の任意の関連データ)であってよく、その出力は、符号化されているデータであってよい。そのような符号化されているデータは、ピクチャグループ、ピクチャ、ブロック、又はピクセルの圧縮バージョンであってもよく、或いは、ピクチャグループ、ピクチャ、ブロック、又はピクセルを表す(例えば、動きベクトル、再構成されているバージョン等の)データであってもよい。本明細書において説明されている技術は、粒度のそのような任意のレベル(any such level of granularity)に作用してもよい。特に、ハードウェア操作は、単一のハードウェア呼び出しとして、粒度の特定のレベル及び符号化操作についてそのような入力データをとり、粒度のより高いレベルの修正を行うことなく、出力データを返す。対照的に、粒度の特定のレベルについてのソフトウェア操作は、より高いレベルの粒度で(コードの行、コーディングモジュール、コンパイルされているコード等によって)修正可能である。
【0030】
図1に戻ると、複数の実施形態のうちのいくつかにおいて、符号化コントローラ103は、ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、符号化操作又はタスクのためのソフトウェア符号化モジュール104のソフトウェア符号化モジュールの機能的な能力及びハードウェア符号化モジュール105のハードウェア符号化モジュールの機能的な能力に基づいて、1つ又は複数のテーブルにアクセスすることによって、いずれの符号化操作を実行するべきであるかを決定する。本明細書中で使用されているように、"テーブル"の語は、いずれかの適切なデータ構造を含んでいてもよく、その適切なデータ構造は、1つ又は複数の対応する出力に1つ又は複数の入力を相関させる。例えば、階層ベースのハイブリッドビデオコーダを実現するために、エンコーダ102は、ターゲット品質レベル、動作の待ち時間、及び特定の符号化操作のためのハードウェア及びソフトウェアの機能的な能力にアクセスしてもよい。そのようなデータは、インデックスを付されているテーブルの中で編成されてもよく、迅速なルックアップ(quick lookup)は、ソフトウェアモジュールとハードウェアモジュールとの間の正しい実行モデル又はモジュールへと、符号化操作をマッピングするように実行されてもよい。複数の実施形態のうちのいくつかにおいて、ルックアップテーブルは、ハードウェア及びソフトウェアの能力を更新するために、実行の際に、データを事前に入力され(pre-populated with data)、そして、そのデータによって強化される。複数の実施形態のうちのいくつかにおいて、エンコーダ102は、ソフトウェアモジュール又はハードウェアモジュールに対する符号化操作の性能を評価し、そして、その操作に対応するビデオ品質メトリック(video quality metric)又は待ち時間(latency)に基づいて、対応するテーブル値を更新する。テーブル値を置き換えることが可能であり、以前の値及び新しい値の平均をとることが可能であり、複数の測定されている値に基づく移動平均を使用することが可能であり、或いは、調整されている値又はリアルタイム値に、あらかじめ定義されているテーブル値を調整するようにしてもよい。ルックアップテーブルに加えて、トランスコーディングのためにある与えられたフレームを送ってもよいターゲット及びピクチャコンテンツを分析する追加的な発見的方法を実行することが可能である。例えば、ピクチャの複雑さが評価されてもよく、そのピクチャの複雑さがしきい値よりも大きいときに、ハードウェアの代わりにソフトウェアを使用する。
【0031】
図3は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されているハイブリッドコーディング意思決定におけるハードウェアとソフトウェアとの間の選択のための例示的な技術300の説明図である。図3に示されているように、特定の粒度レベル(すなわち、クリップ、ピクチャグループ、ピクチャ、ブロック、又はピクセルレベル)について、ターゲットビデオ品質及び待ち時間311を受信する。1つ又は複数の任意の適切な技術を使用して、ターゲットビデオ品質及び待ち時間311を生成し又は受信してもよい。複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質及び待ち時間311は、コーディングコンテキスト及び/又は(ビデオオンデマンドコンテンツ、ブロードキャストコンテンツ、トップコンテンツを上回るプレミアム、ライブストリーミングコンテンツ、リアルタイムゲームコンテンツ等の)コーディングコンテンツに基づいてあらかじめ定義される。
【0032】
ターゲットビデオ品質及び待ち時間311は、いずれかの適切なデータ構造を使用して表されてもよく、その適切なデータ構造は、ターゲットビデオ品質及びターゲット待ち時間を示す。複数の実施形態のうちのいくつかにおいて、ターゲット待ち時間は、ターゲット時間継続期間として示される。複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質は、(例えば、0乃至10又はいずれかの他の範囲等の)ある与えられたスケールで品質を等級分けし又は格付けするメトリックとして示される。複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質は、ターゲット歪み、動きベクトルのターゲット精度等の符号化タスクに関連する特定の尺度として与えられる。複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質は、展開されるべき利用可能な特徴の指標を含む。
【0033】
図示されている例では、ピクチャレベルの符号化粒度が示される。にもかかわらず、任意の粒度を使用することが可能である。さらに、複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質を満たすことが可能である最も低いレベルで使用されるハードウェアへのオフロードと合わせて、複数の粒度レベル及び複数の対応するテーブルを使用することが可能である。例えば、クリップレベル又はピクチャグループを最初に評価し、クリップの品質がハードウェアによって満たされる場合に、そのクリップ又はピクチャグループのためにハードウェアを使用する。そうでない場合には、ピクチャレベルがピクチャの各々について評価され、ハードウェアによってピクチャ品質を満たすことが可能である場合には、ハードウェアは、そのピクチャのために使用される、等である。複数の実施形態のうちのいくつかにおいて、(示されているように)そのピクチャレベルでハードウェアを使用することが不可能である場合には、そのピクチャについての符号化操作を評価する。
【0034】
例えば、フルピクチャ符号化評価操作301は、ターゲットビデオ品質及び待ち時間311を使用してテーブル320にアクセスしてもよい。テーブル320は、(例えば、フレーム内ピクチャ、双方向ピクチャ、シーン変化ピクチャ、時間層ピクチャ等の)さまざまなピクチャタイプについての品質レベル321、ハードウェア待ち時間レベル322、及びソフトウェア待ち時間レベル323を含む。例えば、品質レベル321は、ハードウェアを使用して達成可能な品質レベルであってもよい。そのようなターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、ハードウェア及びソフトウェアの機能的な能力を使用して、ハードウェアとソフトウェアの間の適切な選択又はソフトウェア及びハードウェアのハイブリッドとハードウェアとの間の適切な選択が行われる。
【0035】
複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質及び待ち時間311に基づくピクチャのハードウェア符号化がターゲット品質レベルを満たすときに、ピクチャのハードウェア符号化が使用される。複数の実施形態のうちのいくつかにおいて、ハードウェア符号化がターゲット品質レベルを満たさず、且つ、ソフトウェア遅延が遅延ターゲットを満たすときに、(以下で説明されているように)ソフトウェア符号化又はソフトウェア及びハードウェアハイブリッド符号化が選択される。
【0036】
示されているように、ハードウェア符号化のみが選択されないときに、符号化ステージ評価操作302は、ターゲットビデオ品質及び待ち時間311を使用してテーブル330に再度アクセスしてもよい。テーブル330は、ハードウェア又はソフトウェアによって実行されるさまざまなエンコーダステージ331のために、品質レベル332、ハードウェア待ち時間333、ソフトウェア待ち時間334、及び(該当する場合には)他の情報335を含む。例えば、事前分析符号化ステージの場合には、ハードウェアによる事前分析の品質レベル、ソフトウェアによる事前分析の品質レベルが提供される。動き推定符号化ステージについて、ハードウェアによる動き推定の品質レベル、ソフトウェアによる動き推定の品質レベル、及びハードウェア動き推定がサポートするモードを含む他の情報が提供される。
【0037】
例えば、符号化ステージ評価操作302は、ターゲットビデオ品質及び待ち時間311を使用して、テーブル330にアクセスして、符号化のいずれのステージ又は操作がハードウェアにオフロードされるべきであるかを決定してもよい。テーブル330は、ハードウェア又はソフトウェアによって実行されるさまざまなエンコーダステージ331のために、品質レベル332、ハードウェア待ち時間333、ソフトウェア待ち時間334、及び(該当する場合には)他の情報335を含む。エンコーダステージ331は、例えば、ハードウェアによってサポートされるこれらのステージのみを含んでもよい。そのようなターゲットビデオ品質レベル、ターゲット操作待ち時間、及び各々の符号化ステージのためのハードウェア及びソフトウェアの機能的な能力を使用して、ハードウェアとソフトウェアの間の適切な選択又はソフトウェア及びハードウェアのハイブリッドとハードウェアとの間の適切な選択が行われる。複数の実施形態のうちのいくつかにおいて、ターゲットビデオ品質及び待ち時間311に基づく符号化ステージのためのハードウェア符号化が、ターゲット品質を満たすときに、その符号化ステージのためのハードウェア符号化が使用される。複数の実施形態のうちのいくつかにおいて、ハードウェア符号化が、その符号化ステージのためのターゲット品質レベルを満たさず、且つ、ソフトウェア待ち時間が、待ち時間ターゲットを満たすときに、その符号化ステージのためのソフトウェア符号化が選択される。
【0038】
特に、そのような技術は、完全なソフトウェア、ハイブリッドソフトウェア、又はメディアトランスコーディング又はメディア符号化をサポートする専用ハードウェア加速の間の選択を提供する。指定された性能レベルが与えられると、最適化アルゴリズムを使用して、ソフトウェアエンコーダ及び/又は専用のハードウェア加速によって実行されるタスクの割り当てを実行して、最良の速度/待ち時間/品質のトレードオフを達成する。複数の実施形態のうちのいくつかにおいて、説明されているように、アルゴリズムが決定を行うレベルは、トランスコードレベルの操作をオフロードすることが不可能であり、且つ、符号化品質を改善するための追加的な情報を提供するための補助として純粋にハードウェアを使用することが可能であるときに、(例えば、各々のピクチャについて操作を実行する必要がある場所を決定するといったように)マクロレベルに及び(例えば、特定の操作においていずれのツールを使用する必要があるかを決定するといったように)ミクロレベルに分割される。
【0039】
図4は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されているハイブリッドビデオ符号化におけるハードウェアオフローディングを選択するための例示的なプロセス400を図示しているフローチャートである。プロセス400は、図4に図示されているように、1つ又は複数の操作401乃至410を含んでもよい。プロセス400は、入力ビデオのハイブリッドハードウェア及びソフトウェアの符号化を実行するために、(例えば、システム100のエンコーダ102等の)デバイス又はシステムによって実行されてもよい。
【0040】
プロセス400は、操作401で開始し、操作401においては、処理のために入力ビデオピクチャを受信する。ビデオピクチャの処理に関して図示されているが、プロセス400は、例えば、ピクチャグループレベルのビデオクリップのように、図2に関して説明されている任意のレベルの粒度で実行されてもよい。
【0041】
処理は、決定操作402に続き、決定操作402においては、受信したピクチャの完全なハードウェア符号化が、受信したビデオピクチャのターゲットビデオ品質を満たすか否かに関する決定が行われる。受信したピクチャの完全なハードウェア符号化が、受信したビデオピクチャのターゲットビデオ品質を満たす場合には、処理は操作403に続き、操作403においては、ピクチャ全体のハードウェアのみの符号化が実行される。
【0042】
操作402におけるそのような決定は、1つ又は複数の任意の適切な技術を使用して行われてもよい。複数の実施形態のうちのいくつかにおいて、ビデオピクチャのための受信したターゲット品質は、ハードウェアによって達成可能な品質メトリックと比較され、ターゲット品質がしきい値又は品質メトリックによって満足される場合には、受信したピクチャは、ハードウェアを完全に使用して(すなわち、ピクチャをコーディングするための専用回路への単一命令呼び出しによって)符号化される。複数の実施形態のうちのいくつかにおいて、入力ピクチャのコンテンツ分析(content analysis)は、入力ピクチャの複雑性を評価することによって実行され、その入力ピクチャの複雑性に基づいて、コンテンツがコーディングの観点から複雑ではないと考えられる場合に、ハードウェア(HW)によって完全な符号化を実行するということが決定されるであろう。複数の実施形態のうちのいくつかにおいて、受信したピクチャの時間的なレベル又は階層配置は、操作402において評価されて、受信したビデオピクチャがハードウェアを使用して符号化されるべきであるか否かを決定してもよい。複数の実施態様のうちのいくつかにおいて、受信したビデオピクチャが非参照ピクチャである(すなわち、いかなる他のピクチャも、参照ピクチャとしてそのピクチャを使用しない)ときに、ハードウェア符号化を選択する。複数の実施態様のうちのいくつかにおいて、受信したビデオピクチャが、ピクチャグループ階層において(in a group of pictures hierarchy)、最も上位の時間的な層である(すなわち、いかなる他のピクチャも、参照ピクチャとしてそのピクチャを使用しない)又は2番目に上位の時間的な層の参照ピクチャである(すなわち、他のピクチャが参照しないピクチャのみが、参照ピクチャとしてそのピクチャを使用する)ときに、ハードウェア符号化を選択する。
【0043】
図5は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されているある1つの例示的な階層的ピクチャグループ構造500、対応するコーディング順序510、及び、対応するソフトウェア及びハードウェアのコーディング同期520の説明図である。図5に示されているように、階層Bのピクチャグループ(GOP)構造を表す階層的なピクチャグループ構造500は、階層的なピクチャグループ構造500の最も下位の時間的な層502 k=0において、IピクチャI0及び参照BピクチャB8,B16を含む。示されているように、IピクチャI0は、いかなる他のI0も参照することなくコーディングされる。最も下位の時間的な層502における参照BピクチャB8,B16のみならずIピクチャI0も、より上位の時間的な層503、504、505のすべてについての参照ピクチャとして使用されてもよい。時間的な層503 k=1における参照ピクチャB4,B12:時間的な層503、504についての同じホールドは、より上位の時間的な層504、505の双方についての参照ピクチャとして使用されてもよく、時間的な層504 k=2における参照ピクチャB2,B6,B10,B14は、最も上位の時間的な層505の参照ピクチャとして使用されてもよい。一方で、より上位の時間的な層は、より下位の時間的な層(又は、時間的な層503、504についての同じ層において)の参照ピクチャとしては使用されない。さらに、最も上位の時間的な層505 k=3の非参照ピクチャB1,B3,B5,B7,B9,B11,B13,B15は、階層的なピクチャグループ構造500における他のいかなるピクチャのための参照ピクチャとしても使用されない。階層的なB GOPに関して図示されているが、他のGOP構造を使用してもよい。本明細書で使用されているように、"最も下位の時間的な層"の語は、参照としていずれかの他の層によって使用される層を示し、"より下位の時間的な層"の語は、1つ又は複数の他の層によって使用される層を示し、"最も上位の時間的な層"の語は、参照として使用されない層を示す。
【0044】
ピクチャ構造500の階層グループについて、少なくとも部分的に参照ピクチャの構造及びそれらの依存性に基づいて、コーディング順序510が確立される。例えば、より上位の時間的な層のための参照ピクチャとして使用されるピクチャは、それらの参照ピクチャを参照するピクチャの前にコーディングされる必要がある。示されているように、階層的なピクチャグループ構造500について、コーディング順序510は、提示順序I0,B1,2,…,16とは異なるI0,B8,B4,B2,B1,B3,B6,B5,B7,B16,B12,B10,B9,B11,B14,B13,B15の順序で確立される。
【0045】
特に、階層的なピクチャグループ構造500において、それらのピクチャのほぼ50%は、相互参照を行うことがない非参照ピクチャである。そのようなピクチャは、いかなる他のピクチャのための参照フレームとしても使用されないので、そのようなピクチャのためにハードウェアのみの符号化を選択することによって、階層的なピクチャグループ構造500に対する品質の影響をごくわずかにして計算効率を達成することが可能である。説明されているように、複数の実施形態のうちのいくつかにおいて、最も上位の時間的な層505の非参照ピクチャ及び2番目に上位の時間的な層504の参照ピクチャの双方が、ハードウェアのみを使用してコーディングされるときに、品質を維持することが可能である。例えば、最も上位の時間的な層505の非参照ピクチャ(すなわち、いかなる他のピクチャによっても参照として使用されないピクチャ)及び時間的な層504のより下位のレベルのピクチャ(すなわち、いかなる他のピクチャによっても参照として使用されないピクチャによってのみ参照されるピクチャ)は、ハードウェアによって完全に符号化されてもよい。
【0046】
図4に戻って、ハードウェアのみの符号化が、そのビデオピクチャのために選択されないときに、処理は、決定操作404に続く。決定操作402及び操作403において説明されているように、複数の実施態様のうちのいくつかにおいて、そのビデオピクチャのための受信したターゲット品質は、ハードウェアによって達成可能な品質メトリックと比較される。ターゲット品質が、その品質メトリックによって満足されない場合に、受信したピクチャは、ハードウェアを完全に使用しては符号化されない(すなわち、ソフトウェアのみを使用するか、又は、一部の符号化タスクをハードウェアにオフロードするとともにソフトウェアを使用する)。複数の実施形態のうちのいくつかにおいて、受信したピクチャの時間的なレベル又は階層が評価される。複数の実施態様のうちのいくつかにおいて、受信したビデオピクチャが参照ピクチャである(すなわち、少なくとも1つの他のピクチャが、参照ピクチャとしてそのピクチャを使用する)ときに、ハードウェアのみの符号化は、選択されない。複数の実施態様のうちのいくつかにおいて、受信したビデオピクチャが、時間的な層において複数のピクチャによって参照され、それによって、他のピクチャが、また、参照ピクチャとして使用されるときに、ハードウェア符号化は、選択されない。
【0047】
図5を参照すると、説明されているように、複数の実施形態のうちのいくつかにおいて、非参照ピクチャは、ハードウェアのみを使用して符号化される。複数の実施態様のうちのいくつかにおいて、(例えば、時間的な層504、k=2、時間的な層503、k=1、及び/又は時間的な層502、k=0、非フレーム内ピクチャ等の)さらにより上位の時間的な層の参照ピクチャは、ソフトウェアにより符号化されているピクチャと組み合わせられているハードウェアにより符号化されているピクチャの品質が、それらのピクチャのターゲット品質レベルを満たすことが可能である限りは、ハードウェアを使用して符号化される。複数の実施態様のうちのいくつかにおいて、時間的な層505、504のピクチャは、ハードウェアのみを使用して符号化される。複数の実施態様のうちのいくつかにおいて、時間的な層505、504、503のピクチャは、ハードウェアのみを使用して符号化される。複数の実施態様のうちのいくつかにおいて、時間的な層505、504、503、502の非フレーム内ピクチャは、ハードウェアのみを使用して符号化される。
【0048】
図5は、また、ハードウェアコーディング同期520に関して、時間的な層505のピクチャがハードウェア符号化にオフロードされるときに、階層的なピクチャグループ構造500の複数の特定のピクチャを並列に処理することが可能である。例えば、ハードウェア符号化の非参照ピクチャB1は、IピクチャI0及び参照ピクチャB2のみを参照するので、参照ピクチャB2を完了した後であればいつでも符号化を開始することが可能である。同様に、非参照ピクチャB3は、参照ピクチャB2を完了した後であればいつでも開始することが可能であり、非参照ピクチャB5は、参照ピクチャB6を完了した後であればいつでも開始することが可能であり、非参照ピクチャB7は、参照ピクチャB6を完了した後であればいつでも開始することが可能である。複数の実施形態のうちのいくつかにおいて、ハードウェアコーディング同期520は、参照ピクチャB6に至るまで、すべての参照ピクチャを完了した後に、非参照ピクチャB1,B3,B5,B7のハードウェアコーディングを開始してもよい。さらに、ハードウェアコーディング同期520は、非参照ピクチャB1,B3,B5,B7のハードウェア符号化の完了の後に、各々のピクチャのための符号化パッケージがコーディング順序510で補正位置に挿入される同期点521を図示している。例えば、非参照ピクチャB1,B3,B5,B7のうちの少なくともいくつかは、ソフトウェアにおける参照ピクチャB16,B12,B10,B14の処理と並行して、ハードウェアによって処理されてもよく、そして、非参照ピクチャB1,B3,B5,B7の完了の後に、その符号化パッケージは、コーディング順序510にしたがって挿入されてもよい。そのような処理は、非参照ピクチャB9,B11,B13,B15等について反復されてもよい。
【0049】
次に、図4における決定操作404の説明に戻り、現在のフレームのための品質ターゲットを満たすのに、複数のパス(multiple passes)(すなわち、2つ又はそれ以上のパス)を必要とするか否かについての決定を使用する非ハードウェアのみのピクチャのための処理を継続する。そのような複数パス符号化は、任意の数のパスを含んでもよく、1つ又は複数の任意の適切な技術を使用して実行されてもよい。複数のパスを必要とする場合には、処理は、最終的な品質ターゲットを満たすのにソフトウェア符号化を必要とするか否かの決定が行われる決定操作405に続く。例えば、ソフトウェアのみの最終的な符号化パスを採用して、現在のピクチャの最終的な品質ターゲットを満たしてもよい。
【0050】
最終的な品質ターゲットを満たすのにソフトウェア符号化を必要とする場合には、処理は、操作406に続き、操作406においては、第1の符号化パスは、ハードウェアによって実行され、最終的な符号化パスは、ソフトウェアによって実行されて、ハイブリッド符号化を提供する。複数の実施形態のうちのいくつかにおいて、最終的な符号化パスは、第2の符号化パスである。複数の実施形態のうちのいくつかにおいて、ソフトウェアによって実行される最終的な符号化パスは、実行されるか又はハードウェアにオフロードされる最終的なパスの部分を含まない。
【0051】
最終的な品質ターゲットを満たすのに最終的なパスのみを符号化するソフトウェアを必要としない場合には、処理は、操作407に続き、操作407においては、第1の符号化パスは、ハードウェアによって実行され、最終的な符号化パスは、ソフトウェア及びハードウェアの組み合わせによって実行されて、ハイブリッド符号化を提供する。複数の実施形態のうちのいくつかにおいて、最終的な符号化パスは、第2の符号化パスである。複数の実施形態のうちのいくつかにおいて、ソフトウェア及びハードウェアによって実行される最終的な符号化パスは、ソフトウェアによって実行される複数の特定のステージ及び本明細書において説明されている任意の技術を使用してハードウェアによって実行される他のステージを含む。複数の実施形態のうちのいくつかにおいて、最終的な符号化パスは、ソフトウェアによってモード決定ステージまでのすべてのステージを実行し、そして、その次に、再構成ステージ、フィルタリングステージ、及びエントロピー符号化ステージを含む以降のステージのために、ハードウェアの実装に切り替えることを含む。
【0052】
決定操作404に戻って、現在のフレームのための品質ターゲットを満たすのに複数の符号化パスを必要としない場合には、処理は、決定操作408に続き、決定操作408においては、符号化が品質要件を満たすためにソフトウェアによって完全に実行される必要があるか否か、又は、ハードウェアが1つ又は複数の符号化操作を実行することによって符号化を支援することが可能であるか否かに関する決定が行われる。そのような決定は、1つ又は複数の任意の適切な技術を使用して行われてもよい。複数の実施形態のうちのいくつかにおいて、その決定は、ターゲットビデオ品質レベル及びターゲット待ち時間に基づいて行われる。複数の実施形態のうちのいくつかにおいて、ソフトウェアのみの符号化によってのみ、ターゲットビデオ品質レベルを満足することが可能である場合に、ソフトウェアのみの符号化が選択される。複数の実施形態のうちのいくつかにおいて、ハイブリッドソフトウェア及びハードウェアの符号化が、ターゲットビデオ品質レベルを満たすことが可能である場合には、ハイブリッド符号化が選択される。複数の実施形態のうちのいくつかにおいて、ターゲット待ち時間を満たすのに、ハイブリッドソフトウェア及びハードウェアの符号化を必要とし、且つ、ハイブリッドソフトウェア及びハードウェアの符号化が、ターゲットビデオ品質レベルの(例えば、10%又は5%等の)ある特定のパーセンテイジの範囲内の品質レベルを提供する場合に、ハイブリッド符号化が選択される。ターゲットビデオ品質レベル及びターゲット待ち時間に基づく他の選択技術、及び、ソフトウェアのみの機能又はハードウェア及びソフトウェアのハイブリッドの機能を使用してもよい。ソフトウェアのみの符号化を必要とする場合に、処理は、操作410に続き、操作410においては、符号化は、ハードウェアによる支援なしで、ソフトウェアによって完全に実行される。
【0053】
ソフトウェアのみの符号化を必要としない場合に、処理は、操作409に続き、操作409において、単一パス符号化は、ソフトウェアによって実行される複数の符号化操作のうちのいくつか及びハードウェアで実行される複数の符号化操作のうちのいくつかによって実行される。ソフトウェア符号化とハードウェア符号化との間の分配は、1つ又は複数の任意の適切な技術を使用して行われてもよい。複数の実施形態のうちのいくつかにおいて、モード決定は、ソフトウェアによって実行され、他の符号化操作は、ハードウェアの利用可能性(すなわち、システムがハードウェアによってサポートする符号化操作である)に依存して、ソフトウェアによって実行されるか、又は、ハードウェアにオフロードされる。複数の実施形態のうちのいくつかにおいて、1つ又は複数の事前のモード決定符号化操作は、ハードウェアにオフロードされる。複数の実施形態のうちのいくつかにおいて、動き補償されている時間的なフィルタリング(motion compensated temporal filtering)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、グローバル動き推定(global motion estimation)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、フラットIPP動き分析(flat IPP motion analysis)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、空間分析は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、オープンループフレーム内サーチ(open loop intra search)は、ハードウェアによって実行される。複数の実施態様のうちのいくつかにおいて、フィルム粒子合成(film grain synthesis)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、ピクチャベースの内挿補間(picture based interpolation)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、1つ又は複数の事後モード決定符号化操作(post-mode decision encode operations)は、ハードウェアにオフロードされる。複数の実施形態のうちのいくつかにおいて、ピクチャ再構成(picture reconstruction)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、ループフィルタリング(loop filtering)は、ハードウェアによって実行される。複数の実施形態のうちのいくつかにおいて、エントロピー符号化(entropy coding)は、ハードウェアによって実行される。ハードウェアにオフロードされる事前モード決定符号化操作及び事後モード決定符号化操作の組み合わせを使用してもよい。
【0054】
そのような技術は、改良された密度と品質との間でのトレードオフのためのハイブリッドビデオコーダ等のハイブリッドインフラストラクチャにおいて、メディアトランスコーディング又はメディア符号化のうちのいずれのコーディング操作が、ソフトウェア又はハードウェアによって実行されるかを決定するための適応的な且つ階層的なアルゴリズムを提供する。
【0055】
図6は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されているハイブリッド符号化パイプライン600の中でのハードウェアへの例示的な符号化操作のオフロードの説明図である。図6に示されているように、ハイブリッド符号化パイプライン600は、(ソフトウェア符号化モジュール104によって実装するか又は実装されてもよい)ソフトウェアエンコーダ601及び(ハードウェア符号化モジュール105によって実装するか又は実装されてもよい)ハードウェアエンコーダ602を含む。さらに、ソフトウェアエンコーダ601は、動き推定モジュール611、モード決定モジュール612、動き補償再構成モジュール613、ループ内フィルタリングモジュール614、及びエントロピー符号化モジュール615を実装する。動き推定モジュール611、モード決定モジュール612、動き補償再構成モジュール613、ループ内フィルタリングモジュール614、及びエントロピー符号化モジュール615の各々は、対応するステージを実行するのにソフトウェアを選択するときに、符号化ステージを実行する。ソフトウェアエンコーダ601は、また、他の符号化ステージを実装してもよい。
【0056】
同様に、ハードウェアエンコーダ602は、動き推定モジュール621、モード決定モジュール622、動き補償再構成モジュール623、ループ内フィルタリングモジュール624、及びエントロピー符号化モジュール625を実装する。動き推定モジュール621、モード決定モジュール622、動き補償再構成モジュール623、ループ内フィルタリングモジュール624、及びエントロピー符号化モジュール625の各々は、対応するステージを実行するのにハードウェアを選択するときに、それらの対応する符号化ステージを実行してもよく、又は、それらのモジュールは、符号化を支援してもよく、それによって、それらのモジュールは、ハードウェア符号化データを使用し、そして、符号化操作又はステージを完了する対応するソフトウェアモジュールに符号化されているデータを提供する。
【0057】
例えば、ハイブリッド符号化パイプライン600等のハイブリッド符号化解決方法は、(例えば、品質及び待ち時間に基づくトレードオフ等の)ハードウェアの能力に基づいて、ハードウェア又はソフトウェアによって各々のステージを選択的に実行することを選択するか、或いは、遷移点603、604、605、606、607に関して図6に示されているさまざまな点において、あらかじめ定義されているアプローチに基づいて、ハードウェア/ソフトウェアを入力し及び終了させることを選択してもよい。例えば、後者の技術は、ソフトウェアエンコーダ601とハードウェアエンコーダ602との間の通信のオーバーヘッドを最小にするという利点を提供する。図6及び以下の記載は、例示的なハードウェア/ソフトウェアハイブリッドアプローチを説明するが、他のアプローチを使用してもよい。
【0058】
複数の実施形態のうちのいくつかにおいて、動き推定及び事前分析は、ハードウェアエンコーダ602にオフロードされ、(モード決定、動き補償再構成、ループ内フィルタリング、及びエントロピー符号化等の)残りの符号化ステージは、遷移点603、604に関して示されているように、ソフトウェアエンコーダ601によって実行される(すなわち、この実施形態においては、遷移点605、606、607がバイパスされる一方で、遷移点603、604のみが使用される)。例えば、動き推定を含む事前分析の性質により、事前分析自体が、ハードウェアエンコーダ602にオフロードするのに適しているようにさせられる。
【0059】
複数の実施態様のうちのいくつかにおいて、ハードウェアとソフトウェアとの間の通信のオーバーヘッドが過剰でない限り、ハイブリッドシステムのための決定は、ハードウェアによって事前分析ステージを実行することを選択することを常に含む。複数の実施形態のうちのいくつかにおいて、動き推定を含む事前分析をオフロードする決定は、動き推定モジュール621によるモード探索(mode exploration)のためのハードウェアによるサポートに基づいている。例えば、ハードウェアの実装に応じて、動き推定モジュール621は、動き推定モードを評価するための複数の異なるレベルのサポートを提供してもよい。複数の実施形態のうちのいくつかにおいて、低品質の符号化及び中品質の符号化は、より少ないモードを探索し、それらのより少ないモードは、動き推定モジュール621のハードウェア展開によって発見される可能性が最も高い。複数の実施形態のうちのいくつかにおいて、高品質の符号化は、ハードウェアエンコーダがサポートしていないであろう複数の符号化モードをサーチしてもよい。複数の実施形態のうちのいくつかにおいて、ハードウェアエンコーダは、出力としてモードの優先順位を提供して、モード決定ステージを支援する。例えば、ターゲットビデオ品質レベルが低いか又は中程度であるときは、オフロードが実行され、また、ターゲットビデオ品質レベルが高いときは、オフロードは実行されない。複数の実施形態のうちのいくつかにおいて、動き推定モジュール621は、制限されているモード評価に基づいて最良のモードを提供することによって、ハードウェアの支援を提供し、動き推定モジュール611は、それらのモードを使用し、そして、さらなるモードを評価して、事前分析及び動き推定を完了する。
【0060】
加えて又は代替的に、動き補償再構成モジュール613及び動き補償再構成モジュール623を実行する動き補償ステージは、動き補償再構成モジュール623によってハードウェアの中で強化されて、グローバル動き補償等の機能に対するサポートを提供してもよい。そのような技術は、例えば、動き推定モジュール611が実装するソフトウェアが、カメラが移動しているシーンのためのサーチ領域を初期化することを可能とし、そのような動き推定は、ハードウェアが出力する動き補償ベクトルに基づいて、(例えば、動き推定モジュール621等の)ハードウェア又は(例えば、動き推定モジュール611等の)ソフトウェアによって実行されてもよい。複数の実施形態のうちのいくつかにおいて、(例えば、動き推定モジュール621及び/又は動き補償再構成モジュール623等の)ハードウェアは、3つの2分の1ピクセル位置(three half-pixel positions)を提供し、そのハードウェアは、内挿補間がハードウェアエンコーダによって有効化されないときに有益である。そのような技術は、特に、待ち時間が問題となっており、ハードウェアが、ソフトウェアによって行うことが可能である符号化ステージよりもより迅速にその符号化ステージを実行することが可能であるモードの場合に有益である。そのような技術は、オフロードの決定を行うのに役立つように、このプロセス単独の実行継続期間に関する情報を強化する必要がある場合がある。
【0061】
複数の実施形態のうちのいくつかにおいて、動き補償ステージ、再構成ステージ、ループ内フィルタリングステージ、及びエントロピー符号化ステージは、ハードウェアエンコーダ602にオフロードされ、一方で、前のステージは、ソフトウェアエンコーダ601によって実行される。そのような実施形態において、遷移点605が使用され、遷移点603、604、606、607は、使用されないか又はバイパスされる。そのような実施形態において、ソフトウェアエンコーダ601は、モジュール611を使用して動き推定を実行するとともに、モジュール612を使用してモード決定を実行して、いずれのモードを実行する必要があるかを決定する。そのようなモードがハードウェアエンコーダ602によってサポートされる場合に、ハードウェアへの直接的なオフロードが提供されてもよく、それによって、残りの符号化ステージは、ハードウェアエンコーダ602の動き補償再構成モジュール623、ループ内フィルタリングモジュール624、及びエントロピー符号化モジュール625によって実行される。複数の実施形態のうちのいくつかにおいて、モード決定モジュール612によってモード決定がバイアスされて、(加速のために)ハードウェアエンコーダ602によって利用可能である符号化ステージと、品質のために必要とされる符号化ステージと、を均衡させる。複数の実施形態のうちのいくつかにおいて、モード選択において、ハードウェアによって利用可能であるモードと比較して、(例えば、最小レート歪みモードをサーチする最適化において、ハードウェアにより利用可能ではないモードにある値を加算することによって、又は、ハードウェアにより利用可能であるモードからある値を差し引くことによって)ハードウェアによって利用可能ではないモードに対してペナルティが適用される。
【0062】
複数の実施形態のうちのいくつかにおいて、ループ内フィルタリングステージ及びエントロピー符号化ステージは、ハードウェアエンコーダ602にオフロードされ、一方で、前のステージは、ソフトウェアエンコーダ601によって実行される。そのような実施形態において、遷移点606が使用され、遷移点603、604、605、607は、使用されないか、又はバイパスされる。そのような実施形態において、ソフトウェアエンコーダ601は、モード決定モジュール612(及び、動き推定モジュール611及び事前分析)によってモード決定を実行し、ループ内フィルタリング及びエントロピー符号化に必要となる品質をサポートする能力を有するハードウェアエンコーダ602に基づいて、再構成されているピクチャの動き補償再構成を実行する。待ち時間が制約条件である場合に、そのような符号化経路及び適切なパラメータは、品質レベルの低下を最小に抑えながらターゲット待ち時間を達成するように選択されてもよい。
【0063】
複数の実施形態のうちのいくつかにおいて、エントロピー符号化ステージのみが、ハードウェアエンコーダ602にオフロードされ、一方で、前のすべてのステージは、ソフトウェアエンコーダ601によって実行される。そのような実施形態において、遷移点607が使用され、遷移点603、604、605、606は、使用されないか又はバイパスされる。そのような実施形態において、ソフトウェアエンコーダ601は、事前分析、動き推定、モード決定、動き補償、ピクチャ再構成、及びループ内フィルタリングを実行し、ハードウェアエンコーダ602は、エントロピー符号化モジュール625によってエントロピー符号化を実行する。そのような技術は、エントロピー符号化のハードウェア加速を利用しつつ、符号化において柔軟性を提供してもよい。
【0064】
図7は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されている選択的なソフトウェア及びハードウェア符号化操作を使用する適応ハイブリッドを含むビデオコーディングのためのある1つの例示的なプロセス700を図示するフローチャートである。プロセス700は、図7に図示されているように、1つ又は複数の操作701乃至704を含んでもよい。プロセス700は、ビデオコーディング又はトランスコーディングプロセスの少なくとも一部を形成してもよい。非限定的な例として、プロセス700は、システム100等の本明細書において説明されている任意のデバイス又はシステムが実行するビデオコーディングプロセス又はトランスコーディングプロセスのうちの少なくとも一部を形成してもよい。さらに、プロセス700は、図8のシステム800を参照して本明細書において説明されるであろう。
【0065】
図8は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されている選択的なソフトウェア及びハードウェア符号化操作を使用する適応ハイブリッドを含むビデオコーディングのためのある1つの例示的なシステム800の説明図である。図8に示されているように、システム800は、中央プロセッサ801、ビデオプロセッサ802、及びメモリ803を含む。また、示されているように、ビデオプロセッサ802は、デコーダ101を含んでもよく又は実装してもよく、ハードウェア符号化モジュール105及び中央プロセッサ801は、符号化コントローラ103及びソフトウェア符号化モジュール104を含んでもよく、又は実装してもよい。ある1つの実施形態において、メモリ803は、実装のための機械学習モデルを格納している。さらに、システム800の例において、メモリ803は、ビデオデータ、又は、ピクチャデータ、ターゲットビデオ品質レベル、ターゲット操作待ち時間、ハードウェア及びソフトウェアの機能的な能力、分析データ、動きベクトル、再構成されているピクセル値、フィルタパラメータ、量子化パラメータ、ビットストリームデータ、及び/又は、本明細書において説明されている任意の他のデータ等の関連するコンテンツを格納してもよい。
【0066】
示されているように、複数の実施態様のうちのいくつかにおいて、ビデオプロセッサ802は、デコーダ101及びハードウェア符号化モジュール105を実装する。複数の実施形態のうちのいくつかにおいて、デコーダ101及びハードウェア符号化モジュール105のうちの一方、双方、又は一部は、中央プロセッサ801又はグラフィックスプロセッサ等によって実装される。
【0067】
ビデオプロセッサ802は、本明細書において説明されている操作を提供することが可能である任意の数及び任意のタイプのビデオ処理ユニット、画像処理ユニット、又はグラフィックス処理ユニットを含んでもよい。そのような操作は、ソフトウェア、ハードウェア、又はそれらの組み合わせによって実装されてもよい。例えば、ビデオプロセッサ802は、メモリ803から得られるピクチャ又はピクチャデータ等を操作するために専用の回路を含んでもよい。中央プロセッサ801は、任意の数及び任意のタイプの処理ユニット又は処理モジュールを含んでもよく、それらの処理ユニット又は処理モジュールは、システム800のための制御及び他の高レベルの機能を提供することが可能であり、及び/又は、本明細書において説明されている任意の操作を提供することが可能である。メモリ803は、(例えば、静的なランダムアクセスメモリ(SRAM)、動的なランダムアクセスメモリ(DRAM)等の)揮発性メモリ又は(例えば、フラッシュメモリ等の)不揮発性メモリ等の任意のタイプのメモリであってもよい。非限定的な例では、メモリ803は、キャッシュメモリによって実装されてもよい。
【0068】
ある1つの実施形態において、デコーダ101及びハードウェア符号化モジュール105のうちの1つ又は複数又は部分は、実行ユニットによって実装される。EUは、例えば、論理コア又はコア等のプログラマブル論理又は回路を含んでもよく、それらのプログラマブル論理又は回路は、広いアレイのプログラマブル論理機能を提供することが可能である。ある1つの実施形態において、デコーダ101及びハードウェア符号化モジュール105の1つ又は複数又は部分は、固定の機能の回路又は特定用途向け集積回路等の専用ハードウェアによって実装される。固定の機能の回路は、専用論理又は専用回路を含んでもよく、また、固定の機能のエントリポイントのセットを提供してもよく、その固定の機能のエントリポイントのセットは、固定の目的又は固定の機能のために専用論理へとマッピングすることが可能である。特定用途向け集積回路は、(汎用ではなく)特定の用途のためにカスタマイズされている集積回路であってもよい。
【0069】
図7の説明に戻ると、プロセス700は、操作701で開始し、操作701において、コーディングのために入力ビデオを受信する。その入力ビデオは、任意の適切な解像度及び任意の適切なフォーマットのビデオであってもよい。複数の実施態様のうちのいくつかにおいて、プロセス700は、入力ビデオに基づいて、圧縮されているビットストリームを生成する符号化プロセスである。複数の実施形態のうちのいくつかにおいて、プロセス700は、受信したビットストリームが入力ビデオを生成するのに使用され、その入力ビデオは、次に、圧縮されて、出力ビットストリームとなるトランスコーディングプロセスである。複数の実施形態のうちのいくつかにおいて、プロセス700は、ハードウェアによって、受信したビットストリームを復号化して、入力ビデオを生成するステップをさらに含む。複数の実施形態のうちのいくつかにおいて、入力ビデオのソフトウェア符号化は、受信したビットストリームの復号化によって生成されるメタデータに少なくとも部分的に基づいている。出力ビットストリーム、及び、該当する場合には、受信したビットストリームは、コーデック準拠フォーマット等の任意のフォーマットとなっていてもよい。例えば、受信したビットストリーム及び/又は出力ビットストリームは、AVC規格準拠、HEVC規格準拠、AV1規格準拠、又はVP9規格準拠となっていてもよい。
【0070】
処理は、操作702に続き、操作702において、入力ビデオのビデオピクチャグループの符号化、入力ビデオのある特定のピクチャの符号化、又は、入力ビデオのその特定のピクチャの少なくとも1つのタイルについての符号化操作のうちの少なくとも1つに、ハードウェア操作を適用することを適応的に決定する。そのハードウェア操作は、ピクチャグループ又はクリップのレベル、ピクチャのレベル、タイルのレベル、スライスのレベル、又はブロックのレベル等の入力ビデオの粒度の任意のレベルで決定されてもよい。さらに、事前分析、動き推定、モード決定、動き補償、ピクチャ再構成、インループフィルタリング、又はエントロピー符号化等の任意の符号化ステージのために、そのような入力ビデオレベルについて、ハードウェア操作を決定してもよい。
【0071】
処理は、操作703に続き、操作703において、ビデオピクチャグループの符号化、特定のピクチャの符号化、又はその特定のピクチャのタイルについての符号化操作は、ハードウェアによって実行され、入力ビデオの残りの部分の少なくとも第2の符号は、ソフトウェアによって実行されて、出力ビットストリームを生成する。例えば、ビデオピクチャグループ(の符号化)がハードウェアのみを使用して実行されるコンテキストにおいては、他のピクチャグループ又はその一部は、ソフトウェアによって符号化され、特定のピクチャがハードウェアのみを使用して実行されるコンテキストでは、他のピクチャ又はその一部は、ソフトウェアによって符号化され、符号化操作がハードウェアのみを使用して実行されるコンテキストにおいては、特定のピクチャ、他のピクチャ、又は他のピクチャグループについての他の符号化操作は、ソフトウェアによって実行され又は符号化される。そのようなハードウェア操作は、符号化操作、符号化タスク、又は符号化ステージを実行するのに使用されるハードウェアへのハードウェア呼出し又は命令呼出しによって呼び出されてもよい。
【0072】
複数の実施形態のうちのいくつかにおいて、プロセス700は、ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、ハードウェア及びソフトウェアの機能的な能力にアクセスするステップと、ターゲット品質レベル、ターゲット操作待ち時間、及び機能的な能力を使用してテーブルにアクセスするステップに基づいて、ハードウェア操作を選択するステップと、をさらに含む。複数の実施形態のうちのいくつかにおいて、特定のピクチャは、入力ビデオのピクチャグループの中に存在し、特定のピクチャのうちの1つが、ピクチャグループの中のより上位の時間的な層に存在するか、又は、特定のピクチャのための第1の品質ターゲットが、ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されることに応答して、特定のピクチャの符号化について、ハードウェア操作を決定し、第2のピクチャが、そのピクチャグループの中のより下位の時間的な層に存在すること、又は、第2のピクチャのための第2の品質ターゲットが、ハードウェアのみのピクチャ符号化品質メトリックによって満足されないことに応答して、ソフトウェアによって少なくとも部分的に、ピクチャグループの中の第2のピクチャをコーディングする。複数の実施形態のうちのいくつかにおいて、プロセス700は、複数パスの符号化が、第2の品質ターゲットを満たすのに必要とされることに応答して、複数パスの符号化を使用して第2のピクチャを符号化するステップをさらに含み、複数パスの符号化は、ハードウェア又は第2のハードウェアを使用して第1のパスを実行するステップと、ソフトウェアによって少なくとも部分的に以降のパスを実行するステップと、を含む。複数の実施形態のうちのいくつかにおいて、プロセス700は、複数パスの符号化が第2の品質ターゲットを満たすのに必要とはされないということを決定するステップと、特定の符号化ステージまで、ソフトウェア符号化を含む第2のフレームの単一パスの符号化を実行するとともに、1つ又は複数の以降のステージから特定の符号化ステージまでについて、ハードウェア符号化を実行するステップと、をさらに含む。複数の実施形態のうちのいくつかにおいて、特定の符号化ステージは、モード決定ステージを含み、1つ又は複数の以降のステージは、再構成ステージ、フィルタリングステージ、及びエントロピー符号化ステージを含む。
【0073】
複数の実施形態のうちのいくつかにおいて、特定のピクチャのための符号化操作は、特定のピクチャの符号化のための複数の第1の符号化操作のうちの1つを含み、複数の第1の符号化操作は、ハードウェアによって実行され、特定のピクチャの符号化は、ソフトウェアによって実行される1つ又は複数の第2の符号化操作を含む。複数の実施形態のうちのいくつかにおいて、第1の符号化操作は、動き補償されている時間的なフィルタリング、グローバル動き推定、平面ピクチャ分析、空間分析、開ループフレーム内サーチ、フィルム粒子合成、ピクチャベースの内挿補間、ピクチャ再構成、ループフィルタリング、又は、エントロピー符号化のうちの1つ又は複数を含み、1つ又は複数の第2の符号化操作は、モード決定を含む。複数の実施形態のうちのいくつかにおいて、ハードウェアは、固定の機能の回路又は特定用途向け集積回路のうちの1つを含み、ソフトウェアによる第2の符号化は、汎用デバイスによって複数の行の命令コードを実行することを含む。
【0074】
処理は、操作704に続き、操作704においては、出力ビットストリーム又は結果として生じるビットストリームを出力する。出力ビットストリーム又は結果として生じるビットストリームは、最終的に復号化するために他のデバイスに送信されてもよく、最終的に復号化するためにローカルメモリ又はリモートメモリに格納されてもよい等である。説明されているように、出力ビットストリーム又は結果として生じるビットストリームは、AVC規格に準拠したフォーマット、HEVC規格に準拠したフォーマット、AV1規格に準拠したフォーマット、又はVP9規格に準拠したフォーマット等の任意の適切なフォーマットであってもよい。
【0075】
任意の数のビデオクリップ、ピクチャグループ、ピクチャ、又は符号化操作について、順次的に又は並列にのいずれかで任意の回数だけ、プロセス700を反復してもよい。説明されているように、プロセス700は、密度と品質との間でのより良好なトレードオフのためのハイブリッドソフトウェア及びハードウェアコーディングを含むビデオコーディング又はトランスコーディングを提供することが可能である。
【0076】
本明細書において説明されているシステムのさまざまな構成要素は、ソフトウェア、ファームウェア、及び/又は、ハードウェア、及び/又は、それらの任意の組み合わせで実装されてもよい。例えば、本明細書において説明されているデバイス又はシステムのさまざまな構成要素は、少なくとも部分的には、例えば、スマートフォン等のコンピューティングシステムの中に見られるようなコンピューティングシステムオンチップ(computing System-on-a-Chip (SoC))のハードウェアによって提供されてもよい。当業者は、本明細書において説明されているシステムが、対応する図の中で図示されていない追加的な構成要素を含んでもよいということを認識するであろう。例えば、本明細書において説明されているシステムは、明確さの観点から図示されていない追加的な構成要素を含む場合がある。複数の実施形態のうちのいくつかにおいて、本明細書において説明されている操作は、システムによって実行され、そのシステムは、本明細書において説明されている任意のデータを格納するためのメモリ及び本明細書において説明されているプロセス700の操作又は他の操作を実行するための1つ又は複数のプロセッサを含む。
【0077】
本明細書において説明されている例示的なプロセスの実装は、図示されている順序で示されている複数の操作のすべての実施を含んでもよいが、本開示は、この点に関して限定されず、さまざまな例において、本明細書における例示的なプロセスの実装は、示されている操作、図示されている順序とは異なる順序で実行される操作又は追加的な操作のサブセットのみを含んでもよい。
【0078】
加えて、本明細書において説明されている複数の操作のうちのいずれか1つ又は複数は、1つ又は複数のコンピュータプログラム製品が提供する複数の命令に応答して実施されてもよい。そのようなプログラム製品は、命令を提供する信号搬送用の媒体を含んでもよく、それらの命令は、例えば、プロセッサによって実行されるときに、本明細書において説明されている機能を提供することが可能である。1つ又は複数の機械読み取り可能な媒体の任意の形態で、コンピュータプログラム製品を提供してもよい。このようにして、例えば、1つ又は複数のグラフィックス処理ユニット又はプロセッサコアを含むプロセッサは、1つ又は複数の機械読み取り可能な媒体がプロセッサに伝達するプログラムコード及び/又は命令又は命令のセットに応答して、本明細書における例示的なプロセスの1つ又は複数のブロックを実施することが可能である。一般的に、機械読み取り可能な媒体は、プログラムコード及び/又は命令又は命令のセットの形態でソフトウェアを運んでもよく、それらのプログラムコード及び/又は命令又は命令のセットは、本明細書において説明されているデバイス及び/又はシステムのうちのいずれかに、それらのデバイス又はシステムの少なくとも複数の部分を実装するか又は本明細書において説明されている任意の他のモジュール又は構成要素を実装するようにさせることが可能である。複数の実施形態のうちのいくつかにおいて、本明細書において説明されている複数の操作は、非一時的な且つ機械読み取り可能な媒体によって実行され、その非一時的な且つ機械読み取り可能な媒体は、コンピューティングデバイスによって実行されることに応答して、そのコンピューティングデバイスにそれらの複数の操作を実行させる複数の命令を含む。
【0079】
本明細書において説明されている任意の実装において使用されているように、"モジュール"の語は、本明細書において説明されている機能を提供するように構成されるソフトウェア論理、ファームウェア論理、ハードウェア論理、及び/又は回路の任意の組み合わせを指す。ソフトウェアは、本明細書において説明されている任意の実装において使用されているソフトウェアパッケージ、コード及び/又は命令のセット又は命令、及び、"ハードウェア"として具体化されてもよく、例えば、単独で又は任意の組み合わせで、ハードワイヤード回路、プログラマブル回路、状態マシン回路、固定の機能の回路、実行ユニット回路、及び/又はプログラマブル回路が実行する命令を格納しているファームウェアを含んでもよい。それらのモジュールは、集合的に又は個別的に、例えば、集積回路(IC)及びシステムオンチップ(SoC)等のより大きなシステムの部分を形成する回路として具体化されてもよい。
【0080】
図9は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されている例示的なシステム900の説明図である。さまざまな実装において、システム900は、モバイルシステムであってもよいが、システム900は、この文脈には限定されない。例えば、システム900は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルディジタルアシスタント(PDA)、セルラ電話、セルラ電話/PDAの組み合わせ、テレビ、(例えば、スマートフォン、スマ-トタブレット、又はスマ-トテレビ等の)スマートデバイス、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、及び、(例えば、ポイントアンドシュートカメラ、スーパーズームカメラ、ディジタル一眼レフ(DSLR)カメラ等の)カメラ等に組み込まれてもよい。
【0081】
さまざまな実装において、システム900は、ディスプレイ920に結合されるプラットフォーム902を含む。プラットフォーム902は、1つ又は複数のコンテンツサービスデバイス930或いは1つ又は複数のコンテンツ配信デバイス940或いは他の同様のコンテンツソース等のコンテンツデバイスからコンテンツを受信してもよい。1つ又は複数のナビゲーション機能を含むナビゲーションコントローラ950を使用して、例えば、プラットフォーム902及び/又はディスプレイ920と対話してもよい。それらの構成要素の各々は、以下で詳細に説明される。
【0082】
さまざまな実装において、プラットフォーム902は、チップセット905、プロセッサ910、メモリ912、アンテナ913、記憶装置914、グラフィックスサブシステム915、アプリケーション916及び/又は送受信機918の任意の組み合わせを含んでもよい。チップセット905は、プロセッサ910、メモリ912、記憶装置914、グラフィックスサブシステム915、アプリケーション916及び/又は送受信機918の間で相互の通信を提供してもよい。例えば、チップセット905は、記憶装置914との間で相互の通信を提供することが可能である(示されていない)記憶アダプタを含んでもよい。
【0083】
プロセッサ910は、複合命令セットコンピュータ(Complex Instruction Set Computer (CISC))プロセッサ又は縮小命令セットコンピュータ(Reduced Instruction Set Computer (RISC))プロセッサ、x86命令セット互換プロセッサ、マルチコア、又は任意の他のマイクロプロセッサ又は中央処理ユニット(CPU)として実装されてもよい。さまざまな実装において、プロセッサ910は、デュアルコアプロセッサ及びデュアルコアモバイルプロセッサ等であってもよい。
【0084】
メモリ912は、これらには限定されないが、ランダムアクセスメモリ(RAM)、動的なランダムアクセスメモリ(DRAM)、又は静的なRAM(SRAM)等の揮発性メモリデバイスとして実装されてもよい。
【0085】
記憶装置914は、これらには限定されないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、取り付けられている記憶デバイス、フラッシュメモリ、バッテリバックアップSDRAM(同期DRAM(synchronous DRAM))、及び/又はネットワークアクセス可能な記憶デバイス等の不揮発性記憶デバイスとして実装されてもよい。さまざまな実装において、記憶装置914は、例えば、複数のハードドライブを含むときに、価値のあるディジタル媒体に対する記憶性能強化保護を増大させる技術を含んでもよい。
【0086】
グラフィックスサブシステム915は、ディスプレイのための静止画又はビデオ等の画像の処理を実行してもよい。グラフィックスサブシステム915は、例えば、グラフィックス処理ユニット(GPU)又はビジュアル処理ユニット(VPU)であってもよい。アナログインターフェイス又はディジタルインターフェイスを使用して、グラフィックスサブシステム915とディスプレイ920を通信可能に結合してもよい。例えば、インターフェイスは、高精細マルチメディアインターフェイス(High-Definition Multimedia Interface (HDMI))、ディスプレイポート(DisplayPort)、無線HDMI、及び/又は無線HD準拠技術のうちのいずれかであってもよい。グラフィックサブシステム915を一体化して、プロセッサ910又はチップセット905としてもよい。複数の実装のうちのいくつかにおいて、グラフィックスサブシステム915は、チップセット905に通信可能に結合されるスタンドアローンデバイスであってもよい。
【0087】
本明細書において説明されているグラフィックス処理技術及び/又はビデオ処理技術は、さまざまなハードウェアアーキテクチャによって実装されてもよい。例えば、グラフィックス機能及び/又はビデオ機能は、チップセットの中に一体化されてもよい。代替的に、個別のグラフィックス及び/又はビデオプロセッサを使用してもよい。さらに別の実装として、グラフィックス機能及び/又はビデオ機能は、マルチコアプロセッサを含む汎用プロセッサによって提供されてもよい。さらなる実施形態において、それらの複数の機能は、消費者電子デバイスの中に実装されてもよい。
【0088】
送受信機918は、さまざまな適切な無線通信技術を使用して信号を送信し及び受信することが可能である1つ又は複数の送受信機を含んでもよい。そのような技術は、1つ又は複数の無線ネットワークを横断する通信を含んでもよい。例示的な無線ネットワークは、(これらには限定されないが)無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線大都市圏ネットワーク(WMAN)、セルラネットワーク、及び衛星ネットワークを含む。そのようなネットワークを介して通信する際に、送受信機918は、任意のバージョンの1つ又は複数の適用可能な規格にしたがって動作してもよい。
【0089】
さまざまな実装において、ディスプレイ920は、任意のテレビジョンタイプのモニタ又はディスプレイを含んでもよい。ディスプレイ920は、例えば、コンピュータディスプレイスクリーン、タッチスクリーンディスプレイ、ビデオモニタ、テレビジョンのようなデバイス、及び/又はテレビジョンを含んでもよい。ディスプレイ920は、ディジタルであってもよく及び/又はアナログであってもよい。さまざまな実装において、ディスプレイ920は、ホログラフィックディスプレイであってもよい。また、ディスプレイ920は、視覚的投影を受信することが可能である透明表面であってもよい。そのような投影は、さまざまな形態の情報、画像、及び/又は対象物を伝達してもよい。例えば、そのような投影は、モバイル拡張現実感(MAR)アプリケーションのための視覚的オーバレイであってもよい。1つ又は複数のソフトウェアアプリケーション916の制御の下で、プラットフォーム902は、ディスプレイ920にユーザインターフェイス922を表示してもよい。
【0090】
さまざまな実装において、コンテンツサービスデバイス930は、国内、国際、及び/又は独立したサービスによってホストされ、したがって、例えば、インターネットによってプラットフォーム902にアクセス可能である。コンテンツサービスデバイス930は、プラットフォーム902及び/又はディスプレイ920に結合されてもよい。プラットフォーム902及び/又はコンテンツサービスデバイス930は、ネットワーク960に結合されて、ネットワーク960との間でメディア情報を(例えば、送信し及び受信するといったように)通信してもよい。コンテンツ配信デバイス940は、また、プラットフォーム902及び/又はディスプレイ920に結合されてもよい。
【0091】
さまざまな実装において、コンテンツサービスデバイス930は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、ディジタル情報及び/又はコンテンツを配信することが可能であるインターネットに対応したデバイス又は機器、及びコンテンツプロバイダとプラットフォーム902及び/又はディスプレイ920との間で、ネットワーク960を介して又は直接的に、コンテンツを一方向に又は双方向に通信することが可能である他の同様のデバイスを含んでもよい。コンテンツは、ネットワーク960を介して、システム900及びコンテンツプロバイダの構成要素のうちのいずれか1つとの間で一方向に及び/又は双方向に通信されてもよいということが理解されるであろう。コンテンツの例は、例えば、ビデオ、音楽、医療情報及びゲーム情報等を含む任意のメディア情報を含んでもよい。
【0092】
コンテンツサービスデバイス930は、メディア情報、ディジタル情報、及び/又は他のコンテンツを含むケーブルテレビジョンプログラミング等のコンテンツを受信してもよい。コンテンツプロバイダの複数の例は、ケーブルテレビ、衛星テレビ、ラジオ、インターネットのコンテンツプロバイダを含んでもよい。提供される複数の例は、本開示にしたがった複数の実装を何らかの形で制限することを意図するものではない。
【0093】
さまざまな実装において、プラットフォーム902は、1つ又は複数のナビゲーション機能を有するナビゲーションコントローラ950から制御信号を受信してもよい。それらのナビゲーション機能は、例えば、ユーザインターフェイス922と対話するのに使用されてもよい。さまざまな実施形態において、ナビゲーションは、ポインティングデバイスであってもよく、そのポインティングデバイスは、(特に、ヒューマンインターフェイスデバイス等の)コンピュータハードウェア構成要素であってもよく、そのコンピュータハードウェア構成要素は、ユーザが、コンピュータに(例えば、連続的なデータ及び多次元的なデータ等の)空間的なデータを入力することを可能とする。グラフィカルユーザインターフェイス(GUI)、テレビ、及びモニタ等の多くのシステムは、ユーザが、物理的なジェスチャを使用してコンピュータ又はテレビジョンを制御し、そして、コンピュータ又はテレビジョンにデータを提供することを可能とする。
【0094】
ナビゲーション機能の動きは、(例えば、ディスプレイ920等の)ディスプレイの上で、ポインタ、カーソル、フォーカスリングの動きによって複製され、又は、ディスプレイの上に表示される他の視覚的インジケータの動きによって複製されてもよい。例えば、ソフトウェアアプリケーション916の制御の下で、ナビゲーションに位置しているナビゲーション機能は、例えば、ユーザインターフェイス922の上に表示される仮想ナビゲーション機能にマッピングされてもよい。さまざまな実施形態において、ナビゲーション機能は、個別の構成要素でなくてもよく、プラットフォーム902及び/又はディスプレイ920に一体化されていてもよい。しかしながら、本開示は、本明細書に示されているか又は説明されている要素、或いは、本明細書に示されているか又は説明されている文脈には限定されない。
【0095】
さまざまな実装において、ドライバは、例えば、有効化されるときに、初期ブート後にボタンをタッチしてテレビのように、ユーザがプラットフォーム902を即座にオンにしそしてオフにすることを可能とする技術を含んでもよい。プログラム論理は、プラットフォームが"オフ"にされているときであっても、プラットフォーム902が、メディアアダプタ又は他のコンテンツサービスデバイス930又はコンテンツ配信デバイス940にコンテンツをストリーミングすることを可能とする。加えて、チップセット905は、例えば、5.1サラウンドサウンドオーディオ及び/又は高精細度7.1サラウンドサウンドオーディオについてのハードウェア及び/又はソフトウェアによるサポートを含んでもよい。ドライバは、一体化されているグラフィックプラットフォームのためのグラフィックドライバを含んでもよい。さまざまな実施形態において、グラフィックスドライバは、周辺構成要素相互接続(PCI)グラフィックスカードを含んでもよい。
【0096】
さまざまな実装において、システム900の中で示されている構成要素のうちのいずれか1つ又は複数は、一体化されてもよい。例えば、プラットフォーム902及びコンテンツサービスデバイス930を一体化してもよく、又は、プラットフォーム902及びコンテンツ配信デバイス940を一体化してもよく、又は、プラットフォーム902、コンテンツサービスデバイス930、及びコンテンツ配信デバイス940を一体化してもよい。さまざまな実施形態において、プラットフォーム902及びディスプレイ920は、一体化されているユニットであってもよい。ディスプレイ920及びコンテンツサービスデバイス930は、例えば、一体化されていてもよく、ディスプレイ920及びコンテンツ配信デバイス940は、一体化されていてもよい。これらの複数の例は、本開示を限定するものではない。
【0097】
さまざまな実施形態において、システム900は、無線システム、有線システム、又はその双方の組み合わせとして実装されてもよい。無線システムとして実装されるときに、システム900は、1つ又は複数のアンテナ、送信機、受信機、トランシーバー、増幅器、フィルタ、制御論理等の無線共有媒体によって通信するのに適する構成要素及びインターフェイスを含んでもよい。無線共用媒体のある1つの例は、RFスペクトラム等の無線スペクトラムの複数の部分を含んでもよい。有線システムとして実装されるときに、システム900は、入力/出力(I/O)アダプタ、対応する有線通信媒体にI/Oアダプタを接続するための物理的なコネクタ、ネットワークインターフェイスカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等の有線通信媒体によって通信するのに適する構成要素及びインターフェイスを含んでもよい。有線通信媒体の複数の例は、ワイヤ、ケーブル、金属リード、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、及び光ファイバ等を含んでもよい。
【0098】
プラットフォーム902は、情報を通信するための1つ又は複数の論理チャネル又は物理チャネルを確立することが可能である。情報は、メディア情報及び制御情報を含んでもよい。メディア情報は、ユーザにとって意図されたコンテンツを表す任意のデータを指してもよい。コンテンツの複数の例は、例えば、音声会話、ビデオ会議、ストリーミングビデオ、電子メール("email")メッセージ、ボイスメールメッセージ、英数字記号、グラフィックス、画像、ビデオ、及びテキスト等からのデータを含んでもよい。音声会話からのデータは、例えば、音声情報、無音期間、背景雑音、快適雑音、及びトーン等であってもよい。制御情報は、自動化システムのためのコマンド、命令、又は制御ワードを表す任意のデータを指してもよい。例えば、制御情報は、システムを通じてメディア情報をルーティングするのに使用されてもよく、又は、あらかじめ定義されている方法でメディア情報を処理するようにノードに指示してもよい。しかしながら、それらの複数の実施形態は、図9において示され又は説明されている要素又は文脈には限定されない。
【0099】
上記で説明されているように、システム900は、さまざまな物理的スタイル又はフォームファクタで具体化されていてもよい。図10は、本開示の複数の実装のうちの少なくともいくつかにしたがって配列されている例示的な小さな形態ファクタデバイス1000を示す。いくつかの例では、システム900は、デバイス1000によって実装されてもよい。他の例では、システム100又はその一部は、デバイス1000によって実装されてもよい。さまざまな実施形態において、例えば、デバイス1000は、無線能力を有するモバイルコンピューティングデバイスとして実装されてもよい。モバイルコンピューティングデバイスは、例えば、1つ又は複数のバッテリ等のモバイル電源又は電源及び処理システムを有する任意のデバイスを指してもよい。
【0100】
モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルディジタルアシスタント(PDA)、セルラ電話、セルラ電話/PDAの組み合わせ、(例えば、スマートフォン、スマートタブレット、又はスマートモバイルテレビ等の)スマートデバイス、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、及びカメラ等を含んでもよい。
【0101】
モバイルコンピューティングデバイスの複数の例は、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、眼鏡コンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣服コンピュータ、及び他の装着可能なコンピュータなど、人が装着するように構成されるコンピュータを含んでもよい。さまざまな実施形態において、例えば、モバイルコンピューティングデバイスは、音声通信及び/又はデータ通信と同様に、コンピュータアプリケーションを実行することができるスマートフォンとして実装されてもよい。複数の実施形態のうちのいくつかは、例として、スマートフォンとして実装されるモバイルコンピューティングデバイスを使用して説明することが可能であるが、他の実施形態も同様に他の無線モバイルコンピューティングデバイスを使用して実装することが可能であるということを理解することが可能である。それらの複数の実施形態は、この文脈においては限定されない。
【0102】
図10に示されているように、デバイス1000は、前面1001及び背面1002を有する筐体を含んでもよい。デバイス1000は、ディスプレイ1004、入力/出力(I/O)デバイス1006、及び集積アンテナ1008を含む。デバイス1000はまた、ナビゲーション機能1012を含んでもよい。I/Oデバイス1006は、モバイルコンピューティングデバイスに情報を入力するための任意の適切なI/Oデバイスを含んでもよい。I/Oデバイス1006の複数の例は、英数字キーボード、数字キーパッド、タッチパッド、入力キー、ボタン、スイッチ、マイクロホン、スピーカ、音声認識デバイス及びソフトウェア等を含んでもよい。情報はまた、マイクロホン(図示せず)を介してデバイス1000に入力されてもよく、又は音声認識デバイスによってディジタル化されてもよい。示されているように、デバイス1000は、(例えば、レンズ、アパーチャ、及び撮像センサを含む)カメラ1005及びデバイス1000の背面1002(又は、他の場所)に一体化されたフラッシュ1010を含んでもよい。他の例では、カメラ1005及びフラッシュ1010は、デバイス1000の前面1001に一体化されてもよく、又は、前面カメラ及び後面カメラの双方が設けられてもよい。カメラ1005及びフラッシュ1010は、例えば、アンテナ1008を介してデバイス1000から遠隔的に通信され、及び/又はディスプレイ1004に出力されるストリーミングビデオに処理されたピクチャデータを生成するためのカメラモジュールの構成要素であってもよい。
【0103】
さまざまな実施形態は、ハードウェア要素、ソフトウェア要素、又はそれらの組み合わせを使用して実装されてもよい。ハードウェア要素の複数の例は、プロセッサ、マイクロプロセッサ、回路、(例えば、トランジスタ、抵抗、コンデンサ、及びインダクタンス等の)回路素子、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、ディジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット等を含んでもよい。ソフトウェアの例は、ソフトウェア成分、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインターフェイス、アプリケーションプログラムインターフェイス、命令セット、計算コード、コンピュータコードセグメント、コンピュータコードセグメント、ワード、値、記号、又はそれらの任意の組み合わせを含んでもよい。ハードウェア要素及び/又はソフトウェア要素を使用して実施される実施形態を決定することは、望ましい計算速度、電力レベル、熱公差、処理サイクル予算、入力データ速度、出力データ速度、メモリ資源、データバス速度、及び他の設計又は性能制約などの任意の数の要因にしたがって変化させてもよい。
【0104】
少なくとも1つの実施形態の1つ又は複数の態様は、プロセッサの中のさまざまなロジックを表す機械読み取り可能な媒体に格納されている表現命令によって実装されてもよく、それらのさまざまなロジックは、機械によって読み取られたときに、機械に、本明細書において説明されている技術を実行するためのロジックを構成させる。そのような表現は、IPコアとして知られ、有形の機械読み取り可能な媒体に記憶され、さまざまな顧客又は製造施設に供給されて、ロジック又はプロセッサを実際に製造する製造機械にロードされる。
【0105】
本明細書において説明されている特定の特徴は、さまざまな実装を参照して説明されてきたが、この説明は、限定的な意義に解釈されることを意図してはいない。したがって、本開示が関係しているとともに当業者に明らかである本明細書において説明されている実装及び他の実装のさまざまな修正は、本開示の趣旨及び範囲の中に属すると考えられる。
【0106】
1つ又は複数の第1の実施形態において、ビデオコーディングのための方法は、コーディングのために入力ビデオを受信するステップと、入力ビデオのビデオピクチャグループの符号化、入力ビデオの特定のピクチャの符号化、又は、入力ビデオの特定のピクチャの少なくとも1つのタイルの符号化操作、のうちの少なくとも1つに対して、ハードウェア操作を適用する必要があるということを適応的に決定するステップと、ハードウェアによって、ビデオピクチャグループの符号化、特定のピクチャの符号化、又は特定のピクチャのタイルの符号化操作を実行するとともに、ソフトウェアによって入力ビデオの残りの部分の少なくとも第2の符号化を実行して、出力ビットストリームを生成するステップと、を含む。
【0107】
1つ又は複数の第2の実施形態において、さらに、第1の実施形態によれば、当該方法は、ターゲットビデオ品質レベル、ターゲット操作待ち時間、及び、ハードウェア及びソフトウェアの機能的な能力にアクセスするステップと、ターゲット品質レベル、ターゲット操作待ち時間、及び、機能的な能力を使用してテーブルにアクセスすることに基づいて、ハードウェア操作を選択するステップと、をさらに含む。
【0108】
1つ又は複数の第3の実施形態において、さらに、第1の実施形態又は第2の実施形態によれば、特定のピクチャは、入力ビデオのピクチャグループの中に存在し、特定のピクチャが、ピクチャグループの中のより上位の時間的な層の中に存在するということ、又は、特定のピクチャのための第1の品質ターゲットが、ハードウェア操作に対応するハードウェアのみのピクチャ符号化品質メトリックによって満足されるということ、のうちの1つに応答して、特定のピクチャの符号化について、ハードウェア操作を決定し、第2のピクチャが、ピクチャグループの中のより下位の時間的な層に存在するということ、又は、第2のピクチャのための第2の品質ターゲットが、ハードウェアのみのピクチャ符号化品質メトリックによって満足されないということに応答して、ソフトウェアによって少なくとも部分的に、ピクチャグループの中の第2のピクチャをコーディングする。
【0109】
1つ又は複数の第4の実施形態において、さらに、第1の実施形態から第3の実施形態のうちのいずれかによれば、第2の品質ターゲットを満たすのに複数パスの符号化が必要とされるということに応答して、複数パスの符号化を使用して第2のピクチャを符号化するステップをさらに含み、複数パスの符号化は、ハードウェア又は第2のハードウェアを使用する第1のパスを実行すること、及び、ソフトウェアによって少なくとも部分的に以降のパスを実行すること、を含む。
【0110】
1つ又は複数の第5の実施形態において、さらに、第1の実施形態から第4の実施形態のうちのいずれかによれば、当該方法は、第2の品質ターゲットを満たすのに複数パスの符号化が必要とされないということを決定するステップと、特定の符号化ステージまでのソフトウェア符号化、及び、1つ又は複数の以降のステージから特定の符号化ステージまでについてのハードウェア符号化、を含む第2のフレームの単一パスの符号化を実行するステップと、をさらに含む。
【0111】
1つ又は複数の第6の実施形態において、さらに、第1の実施形態から第5の実施形態のうちのいずれかによれば、当該方法は、特定の符号化ステージが、モード決定ステージを含み、1つ又は複数の以降のステージが、再構成ステージ、フィルタリングステージ、及びエントロピー符号化ステージを含むことをさらに含む。
【0112】
1つ又は複数の第7の実施形態において、さらに、第1の実施形態から第6の実施形態のうちのいずれかによれば、特定のピクチャのタイルについての符号化操作は、特定のピクチャのタイルの符号化のための複数の第1の符号化操作のうちの1つを含み、複数の第1の符号化操作は、ハードウェアによって実行され、特定のピクチャのタイルの符号化は、ソフトウェアによって実行される1つ又は複数の第2の符号化操作を含む。
【0113】
1つ又は複数の第8の実施形態において、第1の実施形態から第7の実施形態のうちのいずれかによれば、第1の符号化操作は、動き補償されている時間的なフィルタリング、グローバル動き推定、平面ピクチャ分析、空間分析、開ループフレーム内サーチ、フィルム粒子合成、ピクチャベースの内挿補間、ピクチャ再構成、ループフィルタリング、又はエントロピー符号化のうちの1つ又は複数を含み、1つ又は複数の第2の符号化操作は、モード決定を含む。
【0114】
1つ又は複数の第9の実施形態において、さらに、第1の実施形態から第8の実施形態のうちのいずれかによれば、ハードウェアは、固定の機能の回路又は特定用途向け集積回路のうちの1つを含み、ソフトウェアによる前記第2の符号化は、汎用デバイスによって複数の行の命令コードを実行することを含む。
【0115】
1つ又は複数の第10の実施形態において、さらに、第1の実施形態から第9の実施形態のうちのいずれかによれば、当該方法は、第2のハードウェアによって、受信したビットストリームを復号化して、入力ビデオを生成するステップをさらに含む。
【0116】
1つ又は複数の第11の実施形態において、第1の実施形態から第10の実施形態のうちのいずれかによれば、ソフトウェアによる第2の符号化は、受信したビットストリームの復号化によって生成されるメタデータに少なくとも部分的に基づいている。
【0117】
1つ又は複数の第12の実施形態において、デバイス又はシステムは、メモリ及び1つ又は複数のプロセッサを含み、それらの1つ又は複数のプロセッサは、上記の実施形態のうちのいずれか1つにしたがった方法を実行する。
【0118】
1つ又は複数の第13の実施形態において、少なくとも1つの機械読み取り可能な媒体は、複数の命令を含み、それらの複数の命令は、コンピューティングデバイスによって実行されることに応答して、コンピューティングデバイスに上記の実施形態のうちのいずれか1つにしたがった方法を実行させる。
【0119】
1つ又は複数の第14の実施形態において、装置は、上記の実施形態のうちのいずれか1つにしたがった方法を実行するための手段を含む。
【0120】
上記で説明されている複数の実施形態は、それらの複数の実施形態に限定されるものではなく、添付の特許請求の範囲の保護の範囲から離れることなく、修正及び変更を伴う実施形態を実行することが可能であるということが認識されるであろう。例えば、上記の複数の実施形態は、複数の特徴の特定の組み合わせを含んでもよい。一方で、上記の複数の実施形態は、この点に関しては限定されず、さまざまな実装において、上記の複数の実施形態は、そのような特徴のサブセットのみを実施すること、そのような特徴に関して異なる順序を実施すること、そのような特徴の異なる組み合わせを実施すること、及び/又は、明示的に列挙されている特徴以外の追加的な特徴を実施すること、を含んでもよい。したがって、それらの複数の実施形態の範囲は、添付の特許請求の範囲のみならず、添付の特許請求の範囲が権利を有する同等の発明のすべての範囲を参照して決定されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
【外国語明細書】