(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-17
(45)【発行日】2024-05-27
(54)【発明の名称】コンテンツおよびネットワーク解析を使用してビデオフレームを適応的にエンコードする
(51)【国際特許分類】
H04N 19/166 20140101AFI20240520BHJP
H04N 19/126 20140101ALI20240520BHJP
H04N 19/132 20140101ALI20240520BHJP
H04N 19/149 20140101ALI20240520BHJP
【FI】
H04N19/166
H04N19/126
H04N19/132
H04N19/149
(21)【出願番号】P 2022521285
(86)(22)【出願日】2019-11-14
(86)【国際出願番号】 CN2019118301
(87)【国際公開番号】W WO2021092821
(87)【国際公開日】2021-05-20
【審査請求日】2022-11-09
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】リン,ユイン ビヤオ
(72)【発明者】
【氏名】ワーン,チャーンリヤーン
(72)【発明者】
【氏名】ジャーン,シイミン
(72)【発明者】
【氏名】ホーァ,ファン
(72)【発明者】
【氏名】ボイス,ジル
(72)【発明者】
【氏名】シュリカンタム,シュリ ランジャン
【審査官】岩井 健二
(56)【参考文献】
【文献】米国特許出願公開第2019/0335192(US,A1)
【文献】米国特許出願公開第2019/0208214(US,A1)
【文献】米国特許出願公開第2019/0104306(US,A1)
【文献】米国特許出願公開第2018/0278979(US,A1)
【文献】米国特許出願公開第2013/0094564(US,A1)
【文献】中国特許出願公開第103974060(CN,A)
【文献】Yuriy A. Reznik, et al.,OPTIMAL MULTI-CODEC ADAPTIVE BITRATE STREAMING,ICMEW,IEEE,2019年07月,pp.348-353
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
ビデオフレームを適応的にエンコードするための装置であって:
ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測するネットワークアナライザと;
受信したフレームに基づいてラダー情報を生成するコンテンツアナライザと;
予測された前記瞬間ビットレートおよび前記ラダー
情報に基づいて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する適応決定実行器
であって、前記フレームレートおよび前記ビデオ解像度は前記予測された瞬間ビットレートおよび前記ラダー情報に基づいて決定され、前記ターゲットフレームサイズは、データのサイズであって、前記フレームレートおよび前記ビデオ解像度に基づいて決定される、適応決定実行器と;
前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて前記フレームをエンコードするエンコーダと;を有
し、
前記コンテンツアナライザは、受信したビデオのセットに対して複数の所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行するタイトル毎のエンコーディングトレーナを有する、
装置。
【請求項2】
前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて量子化パラメータを生成するレートコントローラを有し、前記エンコーダは、前記量子化パラメータに基づいて前記フレームをエンコードする、
請求項1に記載の装置。
【請求項3】
前記ネットワークアナライザは、前記受信したチャネルスループットフィードバックおよび受信した履歴データの前記瞬間ビットレートを予測する、
請求項1または2に記載の装置。
【請求項4】
前記ネットワークアナライザは、第1のパッケージ送信時間に基づいて前記瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを有する、
請求項1乃至3のいずれか1項に記載の装置。
【請求項5】
前記コンテンツアナライザは、前記フレームのシーン変化を検出し、前記フレームに対するフレーム複雑性インデックスを生成するためにリアルタイムで前記フレームを解析するフレームアナライザを有する、
請求項1乃至
4のいずれか1項に記載の装置。
【請求項6】
前記コンテンツアナライザは、フレームアナライザを有し、前記フレームアナライザは、入力として複数のハードウェアカウンタを備える完全に接続されたレイヤーを有する、
請求項1乃至
5のいずれか1項に記載の装置。
【請求項7】
前記適応決定実行器は、予測された前記瞬間ビットレートおよび前記ラダー情報に基づいて前記フレームレートおよび前記ビデオ解像度を選択し、前記フレームレートおよび前記ビデオ解像度に基づいて前記ターゲットフレーム
サイズを計算する、
請求項1乃至
6のいずれか1項に記載の装置。
【請求項8】
前記適応決定実行器は、前記ラダー情報が空であることを検出したことに応答して、以前にエンコードされたフレームの量子化パラメータおよび前記以前にエンコードされたフレームの生成されたビットに基づいて、前記フレームレートおよび前記ビデオ解像度を選択する、
請求項1乃至
7のいずれか1項に記載の装置。
【請求項9】
前記
タイトル毎のエンコーディングトレーナは、各トレーニングビデオおよび複数の予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築す
る、
請求項1乃至
8のいずれか1項に記載の装置。
【請求項10】
ビデオフレームを適応的にエンコードする方法であって:
プロセッサによって、ネットワークから受信したチャネルスルー
プットフィードバックに基づいて瞬間ビットレートを予測することと;
前記プロセッサによって、受信したフレームに基づいてラダー情報を生成することと;
前記プロセッサによって、予測された前記瞬間ビットレートおよび前記ラダー
情報に基づいて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定すること
であって、前記フレームレートおよび前記ビデオ解像度は前記予測された瞬間ビットレートおよび前記ラダー情報に基づいて決定され、前記ターゲットフレームサイズは、データのサイズであって、前記フレームレートおよび前記ビデオ解像度に基づいて決定される、決定することと;
前記プロセッサによって、前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて前記フレームをエンコードすることと;
前記プロセッサによって、受信したビデオのセットに対して複数の所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングをタイトル毎に実行することと;を含む、
方法。
【請求項11】
前記フレームをエンコードすることは、前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて量子化パラメータを生成すること、および前記量子化パラメータに基づいて前記フレームをエンコードすることを含む、
請求項
10に記載の方法。
【請求項12】
前記瞬間ビットレートを予測することは、前記受信したチャネルスループットフィードバックおよび受信した履歴データに基づく、
請求項
10または
11に記載の方法。
【請求項13】
前記瞬間ビットレートを予測することは、第1のパッケージ送信時間に基づく、
請求項
10乃至
12のいずれか1項に記載の方法。
【請求項14】
前記フレーム内のシーン変化を検出すること、および前記フレームに対するフレーム複雑性インデックスを生成することを含む、
請求項
10乃至
13のいずれか1項に記載の方法。
【請求項15】
完全に接続されたレイヤーを備えるニューラルネットワークによって、シーン変化および前記フレームに基づくフレーム複雑性を検出することを含む、
請求項
10乃至
14のいずれか1項に記載の方法。
【請求項16】
予測された前記瞬間ビットレートおよび前記ラダー情報に基づいて前記フレームレートおよび前記ビデオ解像度を選択することと、前記フレームレートおよび前記ビデオ解像度に基づいて前記ターゲットフレーム
サイズを計算することとを含む、
請求項
10乃至
15のいずれか1項に記載の方法。
【請求項17】
前記ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび前記以前にエンコードされたフレームの生成されたビットに基づいて、前記フレームレートおよび前記ビデオ解像度を選択することを含む、
請求項
10乃至
16のいずれか1項に記載の方法。
【請求項18】
複数のトレーニングビデオを受信することと;
複数のビットレート、解像度、およびフレームレートで前記複数のトレーニングビデオの各々をエンコードすることと;
前記解像度および前記フレームレートの異なる組み合わせで同じビットレートを使用してエンコードされた前記トレーニングビデオの品質を解析することと;
各トレーニングビデオおよび複数の予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築することと;を含む、
請求項
10乃至
17のいずれか1項に記載の方法。
【請求項19】
ビデオフレームを適応的にエンコードするためのシステムであって:
ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測する手段と;
受信したフレームに基づいてラダー情報を生成する手段と;
予測された前記瞬間ビットレートおよび前記ラダー
情報に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する手段
であって、前記フレームレートおよび前記ビデオ解像度は前記予測された瞬間ビットレートおよび前記ラダー情報に基づいて決定され、前記ターゲットフレームサイズは、データのサイズであって、前記フレームレートおよび前記ビデオ解像度に基づいて決定される、決定する手段と;
前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて前記フレームをエンコードする手段と;を有
し、
前記ラダー情報を生成する手段は、受信したビデオのセットに対して複数の所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行するタイトル毎のエンコーディングトレーナを有する、
システム。
【請求項20】
前記フレームレート、前記ビデオ解像度、および前記ターゲットフレームサイズに基づいて量子化パラメータを生成する手段を有し、前記
エンコードする手段は、前記量子化パラメータに基づいて前記フレームをエンコードする、
請求項
19に記載のシステム。
【請求項21】
前記瞬間ビットレートを予測する手段は、前記受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測する、
請求項
19または
20に記載のシステム。
【請求項22】
前記瞬間ビットレートを予測する手段は、第1のパッケージ送信時間に基づいて前記瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを有する、
請求項
19乃至
21のいずれか1項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
エンコーダは、伝送のためにビデオフレームを圧縮することがある。例えば、エンコーダは、元の表現よりも少ないビットを使用して、ビデオフレームを圧縮された形式にエンコードすることができる。圧縮は、ロッシー(非可逆(lossy))またはロスレス(可逆(lossless))のいずれかであることができる。ロスレス圧縮は、統計的冗長性を識別し、除去することによってビットを削減する。ロスレス圧縮では情報は失われない。ロッシー圧縮は、不必要または重要でない情報を除去することによってビットを削減する。
【図面の簡単な説明】
【0002】
【
図1】コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードするための例示的なシステムを示すブロック図である。
【0003】
【
図2】ネットワーク帯域幅予測のための例示的なディープラーニングネットワークを示す図である。
【0004】
【
図3】コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードするための方法を示すフローチャートである。
【0005】
【
図4】チェックアップ(checkup)テーブルを作成するための方法を示すフローチャートである。
【0006】
【
図5】コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードすることができる例示的なコンピューティングデバイスを示すブロック図である。
【0007】
【
図6】
図6は、コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードするためのコードを格納するコンピュータ可読媒体を示すブロック図である。
【0008】
同様のコンポーネントおよび特徴を参照するために、開示および図面の全体にわたって同じ番号が使用される。100シリーズの数字は、
図1で最初に見出される特徴を指し、200シリーズの数字は、
図2の特徴を指す。
【発明を実施するための形態】
【0009】
リアルタイムビデオストリーミングは、最も重要なインターネットビデオアプリケーションの一つである。いくつかの例では、リアルタイムビデオストリーミングは、クラウドビデオゲーム、家庭内ストリーミング、リモートレンダリング、およびリアルタイムビデオストリーミングを含み得る。これらのアプリケーションでは、ビデオをエンコードおよび送信の関連する待ち時間が、特にユーザインタラクション(user interaction)を必要とするアプリケーションについて、ユーザエクスペリエンス(user experience)を決定することがある。多くのソリューションにおいて、ビデオエンコーダは、推定されたネットワーク帯域幅を反映する平均ビットレートでビデオをエンコードする役割を果たす。トランスポートは、エンコードされたビデオをパケットで送信し、ネットワーク通信および帯域幅変動を実行し、推定ネットワーク帯域幅をビデオエンコーダに提供する役割を果たす。ビデオエンコーダは、トランスポートフィードバックに従って調節され得るが、一般に、ビデオエンコーダとトランスポートとは、緩く結合される(loosely coupled)。特に、ビデオエンコーダレート制御は、漸進的なレート変化(gradually rate change)に依存するモデルを使用し得る。漸進的な変化の結果、急速なネットワークスループットの低下がある場合、大きい遅延およびフレーム低下が生じる可能性がある。例えば、遅延は5秒以上であり得る。他のタイプのアプリケーションの中でも、リアルタイムゲームストリーミングでは、この種の遅延は許容できない可能性がある。さらに、ネットワークスループットが改善されると、既存のソリューションは、新たに利用可能な帯域幅でより良い品質を達成するのに十分な速さで応答しない可能性がある。従って、潜在的な帯域幅は、品質を改善するために使用されるのではなく、無駄になる可能性がある。
【0010】
高度ビデオコーディング圧縮規格(H.264)のためのスケーラブルビデオコーディング(SVC)および高効率ビデオコーディング(HEVC)圧縮規格H.265のためのスケーラブル拡張(Scalable Extensions)を備えたHEVCなどのスケーラブルビデオコーディングは、可変チャネル条件を処理するために使用され得る。スケーラブルビデオコーディングは、もし十分な数のレイヤーが使用される場合、ネットワーク変動に迅速に応答することができるが、スケーラブルビデオコーディングは、安定したネットワーク条件において、比較的高いエンコーディング複雑性と低い圧縮効率を有する。特に、実際のネットワーク変動を処理するために、スケーラブルコーディングのレイヤーの数は、高くなければならない。その結果,エンコーディング複雑性が高い。チャネルが安定である場合、圧縮効率は、多数のレイヤーの使用のために比較的低い場合がある。
【0011】
本開示は、概して、ビデオを適応的にエンコードするための技術に関する。具体的には、本明細書に記載される技術は、コンテンツおよびネットワーク解析を使用してビデオを適応的にエンコードするための装置、方法およびシステムを含む。例示的な装置は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレート(instant bitrate)を予測するためのネットワークアナライザを含む。この装置はまた、受信したフレームに基づいてラダー(ladder)情報を生成するためのコンテンツアナライザを含む。装置はさらに、予測された瞬間ビットレートおよびラダー出力に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する適応決定実行器(adaptive decision executer)を含む。装置はさらに、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードするエンコーダを含む。
【0012】
従って、本明細書に記載された技術は、より良好な視覚体験を伴う、ビデオの非常に低い待ち時間のストリーミングを可能にする。加えて、本明細書に記載する技術は、急速なネットワークスループットの低下に関連する遅延およびフレームドロップを防止し得る。さらに、この技術は現在のビデオコーデックにシームレスに統合することができる。実験トレーニング結果は、本明細書に記載された技術が、実際のネットワーク帯域幅変化と成功裏に予測されたネットワークチャネル変化との間に強い相関をもたらすことを示す。
【0013】
図1は、コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードするための例示的なシステムを示すブロック図である。例示的なシステム100は、
図3および4の方法300および400を使用して、
図5のコンピューティングデバイス500内に実装することができる。
【0014】
例示的なシステム100は、ネットワークアナライザ102を含む。システム100はまた、ネットワークアナライザ102に通信可能に(communicatively)結合されたコンテンツアナライザ104を含む。システムはさらに、ネットワークアナライザ102およびコンテンツアナライザ104に通信可能に結合された適応決定実行器106を含む。システム100は、コンテンツアナライザ104および適応決定実行器106に通信可能に結合されたフレームエンコーダ108を含む。ネットワークアナライザ102は、ネットワーク帯域幅推定器110を含む。ネットワーク帯域幅推定器110は、ネットワーク112に通信可能に結合される。ネットワークアナライザ102はまた、ネットワーク帯域幅推定器110に通信可能に結合された履歴ネットワークデータ生成器(historic network data generator)114を含む。ネットワークアナライザ102はまた、ネットワーク帯域幅推定器110および履歴ネットワークデータ生成器114に通信可能に結合された瞬間帯域幅予測器116をさらに含む。例えば、瞬間帯域幅予測器116は、機械学習(ML)を使用してトレーニングされたニューラルネットワークであり得る。
【0015】
コンテンツアナライザ104は、タイトル毎のエンコーディングトレーナ118を含む。例えば、タイトル毎のエンコーディングトレーナ118はニューラルネットワークであり得る。また、コンテンツアナライザ104は、タイトル毎/シーンラダー決定実行器120を含む。また、コンテンツアナライザ104は、フレームアナライザ122をさらに含む。例えば、フレームアナライザ122は、また、機械学習(ML)を使用してトレーニングされたニューラルネットワークであり得る。フレームアナライザ122は、関心領域マップ124を生成することが示されている。コンテンツアナライザ104は、フレームアナライザ122に通信可能に結合された、画像の適応グループ(GOP)決定実行器126をさらに含む。適応GOP決定実行器126はオフライントレーニングモデル128を受信することが示されている。
【0016】
適応決定実行器106は、フレームレートコントローラ130を含む。適応決定実行器106はまた、フレームレートコントローラ130に通信可能に結合された解像度コントローラ312を含む。適応決定実行器106はまた、解像度コントローラ312に通信可能に結合されたターゲットフレームサイズ計算器134をさらに含む。
【0017】
フレームエンコーダ108は、トランスポート制御されたビットレート制御(TCBRC)レートコントローラ136を含む。フレームエンコーダ108はまた、TCBRCレートコントローラ136に通信可能に結合されたエンコーダ138を含む。
【0018】
図1の例では、ネットワークアナライザ102は、ネットワーク112からのチャネルフィードバックに基づいて将来のチャネル帯域幅変化を予測することができる。例えば、ネットワークアナライザ102は、機械学習アルゴリズムであり得る、瞬間帯域幅予測器116を使用して将来のチャネル帯域幅変化を予測することができる。加えて、コンテンツアナライザ104は、各ビットレートに対して最適なビデオ解像度およびフレームレートを見出すために、ビデオコンテンツを解析することができる。例えば、コンテンツアナライザ104は、これもまた機械学習アルゴリズムであり得る、フレームアナライザ122によってビデオフレームを解析することができる。エンコーディングプロセスの間、適応決定実行器106は、ターゲットフレームサイズ、ビデオ解像度、およびフレームレートをオンザフライで(その場で(on the fly))決定することができる。次いで、エンコーダ138は、ターゲットフレームサイズ、ビデオ解像度およびフレームレートに基づいてフレームをエンコードすることができる。従って、エンコーディングプロセスは、トランスポートに強固に結合され、ネットワークアナライザ102からのリアルタイムチャネル条件およびコンテンツアナライザ104からのコンテンツ解析に従って調整される。
【0019】
例えば、ネットワークアナライザ102は、ネットワーク112からチャネルスループットフィードバックを受信することができる。ネットワーク帯域幅(BW)推定器110は、チャネルスループットフィードバックに基づいてネットワーク112上で利用可能な帯域幅を推定することができる。履歴ネットワークデータ生成器114は、経時的に推定された帯域幅に基づいて履歴ネットワークデータを生成することができる。例えば、履歴ネットワークデータ生成器114は、前の20フレームのような、所定の数の過去のフレームに基づいて履歴ネットワークデータを生成することができる。いくつかの例では、瞬間帯域幅予測器116は、履歴ネットワークデータを組み合わせることによって、瞬間ビットレートを予測することができる。種々の例では、次のチャネルフィードバックがネットワーク112から受信されるとき、瞬間帯域幅予測器116は、以前の予測を修正し、新しい予測を生成することができる。瞬間帯域幅予測器116は、予測された瞬間ビットレートを適応決定実行器106に提供することができる。
【0020】
種々の例では、コンテンツアナライザ104は、タイトル毎のエンコーディングトレーナ118およびフレームアナライザ122を含む。タイトル毎のエンコーディングトレーナ118は、受信したトレーニングビデオのセットに対してオフライントレーニングを実行することができる。例えば、タイトル毎のエンコーディングトレーナ118は、各ビットレートラダーの各ビデオセグメントに最適なビデオ解像度およびフレームレートを見出すために、最も人気のあるビデオゲームのセットに対してオフライントレーニングを実行することができる。フレームアナライザ122は、待ち時間のないリアルタイムで各フレームのオンザフライ解析を提供することができる。一例として、ゲームコンテンツに対して、フレームアナライザ122は、レンダリングアプリケーションプログラムインターフェース(API)およびレンダリングコールから生成されるハードウェア(HW)カウンタから提供される情報を利用することができる。種々の例では、122からの出力は、124の関心領域マップを生成するために使用され、GOP構造は、適応GOP決定実行器126によって決定される。幾つかの例では、コンテンツアナライザ104は、各ビットレートラダーの各ビデオセグメントに最適なビデオ解像度およびフレームレートを見出すために、解析結果をオフライントレーニングモデル128と組み合わせることができる。例えば、クラウドゲーム分野では、いくつかの人気ゲームタイトルが最も頻繁にプレイされることがある。従って、これらの人気の高いゲームについてより良い品質を提供することは、追加的なリソースを投入する価値があるかもしれない。様々な例において、タイトル毎のエンコーディングトレーニングは、この目的のために設計され得る。例えば、トレーニングプロセスの間、各ゲームタイトルは、複数のビットレート、複数の解像度および複数の異なるフレームレートでエンコードされ得る。次に、機械学習アルゴリズムを使用して、同じビットレートのエンコードされたビデオの品質を解析することができる。例えば、エンコードされたビデオは、同じビットレートを有し得るが、解像度とフレームレートの異なる組み合わせを有し得る。特定のビットレートを有する各ビデオセグメントに対して、解像度とフレームレートの最良の組み合わせが選択され得る。トレーニングプロセスの後、コンテンツアナライザ104は、予め選択された各ビットレートを有する各セグメントに対するラダー情報を含むチェックアップテーブルを構築し得る。例えば、ラダー情報は、予め選択された各ビットレートを有する各セグメントに対するビットレート適応解像度およびフレームレート選択を含み得る。2メガビット/秒(Mbps)から8Mbpsのビットレートにおける様々な例示的なゲームに対するビットレート情報を持つチェックアップテーブルの例を表1に示す。
【表1】
表1の例では、各ビットレートに対する最良の品質の組み合わせが、ゲームタイトルの各々に対する計算されたピーク信号対雑音比(PSNR)を使用して生成された。太字で示した組み合わせは、1920x1080ではなく、1280x720の減少した解像度でレンダリングしていることを示している。表に示されるように、例えば、Game_7およびGame_9は、利用可能な帯域幅が7Mbpsまたは8Mbpsであっても、最良のパフォーマンスのためにレンダリング中に1280x720解像度を使用し得る。例えば、フレームは1280x720で送信され、クライアントデバイスでデコードされた後に1920x1080にアップスケールされる。このようにして、待ち時間は、100msまたは任意の他の所定の閾値のような許容可能な閾値レベル未満に低減され、維持され得る。
【0021】
いくつかの例では、フレームアナライザ122は、シーン変化があるかどうかを決定するために、リアルタイムで各フレームを解析し、フレーム複雑性インデックスを提供することができる。様々な例では、フレームアナライザ122は、エンコーダの能力を十分に活用するために関心領域マップを生成することもできる。例えば、関心領域は、人間の顔であり得る。いくつかの例では、より小さい量子化パラメータ(QP)が、顔を周囲の領域より高精細に現わすために、関心領域に使用され得る。いくつかの例では、より多いビットが、品質を高めるためにシーン変更フレームに割り当てられ得る。フレーム複雑性インデックスは、所与のビット数でフレームをエンコードすることの困難さを示し得る。例えば、複雑性インデックスは、所与のQPでフレームをエンコードするために使用されることになるビット数を示すことができる。一例として、ゲームコンテンツに対して、シーン変化およびフレーム複雑性を生成するフレームアナライザ122は、入力として30のHWカウンタを有する完全に接続されたレイヤーを使用して構築され得る。
【0022】
適応決定実行器106は、予測された瞬間ビットレートおよびコンテンツアナライザ104から出力されるラダー情報に応じて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定することができる。例えば、コンテンツ解析およびネットワーク解析が完了した後、推定された瞬間ビットレートおよびラダー情報は適応決定実行器106に送信される。推定された瞬間ビットレートおよびラダー情報に基づいて、適応決定実行器106は、フレームレートおよびビデオ解像度を選択することができる。例えば、ネットワークアナライザ102が、4Mbpsが利用可能であると予測し、コンテンツアナライザ104が、4Mbpsがフレームレートと解像度の特定の最良の組み合わせであることを示す場合、示されたフレームレートと解像度は4Mbpsのビットレートで使用され得る。例えば、特定のゲームまたはアプリケーションに対するチェックアップテーブルで解像度を調べることができ、それに応じて最適な解像度に基づいてフレームレートを選択することができる。別の例では、ネットワークアナライザ102が、2Mbpsが利用可能であることを示す場合、2Mbpsに対するフレームレートおよび解像度の最良の組み合わせを代わりに使用することができる。次に、適応決定実行器106は、フレームレートとビデオ解像度に基づいてターゲットフレームサイズを計算することができる。一例として、推定された瞬間ビットレートがBR1であり、フレームレートがFR1である場合、ターゲットフレームサイズはBR1/FR1である。FR1が半減すれば、ターゲットフレームサイズを100%増やすことができまる。
【0023】
様々な例では、コンテンツ解析が利用できないときに、フレームレートおよびビデオ解像度を決定するために、別のファクタも利用され得る。例えば、このファクタは、QP値と前のエンコードされたフレームの生成されたビットの組み合わせであり得る。いくつかの例では、適応決定実行器106は、QP値が閾値より大きく、前の生成ビットがターゲットフレームサイズ以上であることを検出したことに応答して、現在のフレームに対するビデオ解像度を低減することができる。様々な例では、適応決定実行器106は、解像度正規化瞬間ビットレート(resolution normalized instant bitrate)が閾値より小さく、QP値が閾値より大きいことを検出することに応答して、フレームレート変更(frame rate change)を適用することができる。例えば、フレームレート変更は、フレームドロップであり得る。
【0024】
フレームエンコーダ108は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてビデオフレームをエンコードすることができる。例えば、TCBRCレートコントローラ136は、現在のフレームのエンコーディングのための量子化パラメータを導出することができる。次いで、エンコーダ138は、導出された量子化パラメータに基づいてフレームをエンコードすることができる。いくつかの例では、エンコーダ138は、現在のフレームに使用されるQPを、後続のフレームの決定に使用される適応決定実行器106にフィードバックすることができる。いくつかの例では、適応決定実行器106は、後続のフレームのフレームレート、解像度、およびターゲットフレームサイズを決定する際に現在のフレームのQPを使用することができる。例えば、QPが50である場合には、適応決定実行器106は、より多くの圧縮を適用するためにQPをそれ以上上げることができないことを考慮することができる。従って、一例として、予測された瞬間ビットレートが低下する場合、後続のフレームレートは低減され得る。
【0025】
このようにして、待ち時間は閾値レベル未満に維持することができる。一例として、送信されたフレームの待ち時間は、100ミリ秒(ms)を超えることができない。フレームがクライアントデバイスに低い待ち時間で送信された後、より良好な視覚的外観を提供するために、フレームもアップスケールされ得る。例えば、1280x720で送信されるフレームは、フレームがデコードされた後、クライアントデバイスのモニタに表示するために、1920x1080にアップスケールされ得る。
【0026】
図1のダイアグラムは、例示的なシステム100が、
図1に示されるコンポーネントの全てを含むものであることを示すことを意図するものではない。むしろ、例示的なシステム100は、少ない、または
図1に示されていない追加のコンポーネント(例えば、追加のモデル、ネットワークアナライザ、エンコーダなど)を使用して実装することができる。
【0027】
図2は、ネットワーク帯域幅予測のための例示的なディープラーニングネットワークを示すブロック図である。例示的なディープラーニングネットワーク200は、
図3の方法300を使用して、
図1のシステム100または
図5のコンピューティングデバイス500に実装することができる。例えば、ディープラーニングネットワーク200は、ネットワークアナライザ102またはネットワークアナライザ530の瞬間帯域幅予測器116に使用することができる。
【0028】
ディープラーニングネットワーク200の例は、リカレントニューラルネットワーク(RNN)である。ディープラーニングネットワーク200は、入力202を含む。例えば、入力の合計サイズ204は20であり得る。入力202は、フレームx0~x19に対応し得る。一例として、入力202は、フレームx0~x19の各々についての第1のパッケージ遅延と、フレームx0~x19の各々についてのフレームサイズであり得る。いくつかの例では、第1のパッケージ遅延に対するWebリアルタイム通信(WebRTC)APIフィードバックが使用され得る。他の例では、リアルタイムストリーミングプロトコル(RTSP)ネットワーク制御プロトコルが、パッケージ遅延を取得するために使用され得る。一例として、フレームx0は現在のフレームを表し得、一方、フレームx1~x19は前のフレームを表し得る。
【0029】
ディープラーニングネットワーク200は、時系列である(time sequenced)相互接続セル206を含む。例えば、フレームx1に対応するセル206を、フレームx0に対応するセル206に接続され得る。セルは、各々、いくつかの特徴(features)208を有する。例えば、特徴の数208は100であり得る。
【0030】
ディープラーニングネットワーク200はまた、20の全ての入力からの特徴を1つのセルに結合する高密度レイヤー(dense layer)210を含む。例えば、高密度レイヤー210は、入力202に基づく出力予測であり得る。一例として、予測は、予測された瞬間ビットレートであり得る。
【0031】
種々の例では、ネットワーク帯域幅予測器は、ネットワークからのフィードバックに基づいて帯域幅を予測するために、ディープラーニングアルゴリズムを使用して構築することができる。例えば、ネットワーク帯域幅予測器は、主に第1のパッケージ送信時間(package transmission time)に基づいて帯域幅を予測するように構築することができる。いくつかの例では、ディープラーニングネットワーク200は、20の入力および合計200の重みを有するリカレントニューラルネットワーク(RNN)であり得る。例えば、20の入力は、1つの現在の入力および19の以前の入力を含み得る。
【0032】
図2のダイアグラムは、例示的なディープラーニングネットワーク200が、
図2に示された全てのコンポーネントを含むものであることを示すことを意図するものではない。むしろ、例示的なディープラーニングネットワーク200は、より少ない、または、
図2に示されていない追加のコンポーネント(例えば、追加のレイヤー、入力、特徴など)を使用して実装されることができる。
【0033】
図3は、コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコーディングするための方法を示すフローチャートである。例示的な方法300は、
図1のシステム100、
図5のコンピューティングデバイス500、または
図6のコンピュータ可読媒体600内に実装される。いくつかの例では、方法300は、
図2のディープラーニングネットワーク200を使用して実装することができる。
【0034】
ブロック302において、プロセッサは、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測する。いくつかの例では、プロセッサは、受信したチャネルスループットフィードバックおよび受信した履歴データに基づいて瞬間ビットレートを予測することができる。いくつかの例では、プロセッサは、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測することができる。例えば、チャネルスループットフィードバックは、パッケージ送信時間の形態で受信され得る。
【0035】
ブロック304において、プロセッサは受信したフレームに基づいてラダー情報を生成する。いくつかの例では、プロセッサはオフライントレーニングを実行して、受信されたビデオのセットに対して複数の所定の予め選択されたビットレートで、最適なビデオ解像度およびフレームレートを生成することができる。種々の例では、プロセッサは、フレーム内のシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成することができる。例えば、シーン変化およびフレーム複雑性は、完全に接続されたレイヤーを有するニューラルネットワークによって、フレームに基づいて検出することができる。
【0036】
ブロック306において、プロセッサは、予測された瞬間ビットレート、およびラダー情報に基づいて、フレームレート、ビデオ解像度およびターゲットフレームサイズを決定する。例えば、プロセッサは、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択することができる。一例として、ラダー情報は、いくつかの瞬間ビットレートを与えられた種々のゲームタイトルに対するターゲットビデオ解像度を含み得る。例えば、ラダー情報は、
図4の方法400を使用して構築されたチェックアップテーブルから受信され得る。次いで、プロセッサは、フレームレートおよびビデオ解像度に基づいてターゲットフレームサイズを計算し得る。例えば、ターゲットフレームサイズは、ビット単位で測定され得る。
【0037】
ブロック308では、プロセッサは、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードする。種々の例では、プロセッサは、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成し、量子化パラメータに基づいてフレームをエンコードすることができる。例えば、プロセッサは、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算することができる。いくつかの例では、プロセッサは、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択することができる。例えば、ラダー情報は特定のフレームに対して利用できないことがある。
【0038】
このプロセスフローダイアグラムは、例示的な方法300のブロックが任意の特定の順序で実行されるべきであること、またはブロックの全てが、すべての場合に含まれるべきであることを示すことを意図していない。さらに、図示されていない任意の数の追加ブロックが、特定の実装の詳細に応じて、例示的な方法300内に含まれ得る。例えば、エンコードされたフレームは、表示のためにクライアントデバイスに送信され得る。
【0039】
図4は、チェックアップテーブルを構築するための方法を示すフローチャートである。例示的な方法400は、
図1のシステム100、
図5のコンピューティングデバイス500、または
図6のコンピュータ可読媒体600内に実装される。
【0040】
ブロック402において、プロセッサは、いくつかのトレーニングビデオを受信する。例えば、トレーニングビデオは、人気のあるゲームのストリームまたは使用中のアプリケーションのストリームであり得る。
【0041】
ブロック404において、プロセッサは、複数のトレーニングビデオの各々を複数のビットレート、解像度、およびフレームレートでエンコードする。例えば、プロセッサは、いくつかのビットレート、いくつかの解像度、およびいくつかのフレームレートで、ビデオゲームのいくつかのストリームをエンコードすることができる。
【0042】
ブロック406において、プロセッサは、解像度およびフレームレートの異なる組み合わせで同じビットレートを使用して、エンコードされたトレーニングビデオの品質を解析する。例えば、エンコードされたビデオの品質は、PSNRを使用して解析され得る。種々の例において、最良のPSNRを有する解像度およびフレームレートの組み合わせが選択され得る。
【0043】
ブロック408において、プロセッサは、各トレーニングビデオおよびいくつかの予め選択されたビットレートのそれぞれに対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築する。例えば、プロセッサは、同じビットレートにおける解像度およびフレームレートの異なる組み合わせを有するエンコードされたビデオの品質の機械学習解析に基づいて、予め選択されたビットレートでの各ビデオゲームに対するビットレート適応解像度およびフレームレート選択を含むチェックアップテーブルを構築することができる。
【0044】
このプロセスフローダイアグラムは、例示的な方法400のブロックが任意の特定の順序で実行されるべきであること、またはブロックのすべてが、すべての場合に含まれるべきであることを示すことを意図していない。さらに、図示されていない任意の数の追加ブロックが、特定の実装の詳細に応じて、例示的な方法400内に含まれ得る。
【0045】
次に、
図5を参照すると、コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードすることができる例示的なコンピューティングデバイスを示すブロック図が示されている。コンピューティングデバイス500は、とりわけ、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、またはウェアラブルデバイスであり得る。いくつかの例では、コンピューティングデバイス500は、ビデオゲームまたは他のアプリケーションのためにビデオストリームをレンダリングおよび送信するクラウドコンピューティングデバイスであり得る。コンピューティングデバイス500は、記憶された命令を実行するように構成された中央処理装置(CPU)502と、CPU502によって実行可能である命令を記憶するメモリデバイス504とを含み得る。CPU502は、バス506によってメモリデバイス504に結合され得る。加えて、CPU502は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または任意の数の他の構成であることができる。さらに、コンピューティングデバイス500は、複数のCPU502を含み得る。いくつかの例では、CPU502は、マルチコアプロセッサアーキテクチャを持つシステムオンチップ(SoC)であり得る。いくつかの例では、CPU502は、画像処理のために使用される専用デジタル信号プロセッサ(DSP)であることができる。メモリデバイス504は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、または他の任意の適切なメモリシステムを含むことができる。例えば、メモリデバイス504は、ダイナミックランダムアクセスメモリ(DRAM)を含み得る。
【0046】
メモリデバイス504は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、または他の任意の適切なメモリシステムを含むことができる。例えば、メモリデバイス504は、ダイナミックランダムアクセスメモリ(DRAM)を含み得る。
【0047】
コンピューティングデバイス500はまた、グラフィックス処理ユニット(GPU)508を含み得る。図示のように、CPU502はバス506を介してGPU508に結合され得る。GPU508は、コンピューティングデバイス500内の任意の数のグラフィックス動作を実行するように構成され得る。例えば、GPU508は、コンピューティングデバイス500のユーザに表示されるグラフィックス画像、グラフィックスフレーム、ビデオなどをレンダリングまたは操作するように構成され得る。
【0048】
メモリデバイス504は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、または他の任意の適切なメモリシステムを含むことができる。例えば、メモリデバイス504は、ダイナミックランダムアクセスメモリ(DRAM)を含み得る。メモリデバイス504は、シーケンスに依存しない処理を実行するために複数の畳み込みニューラルネットワークをトレーニングするための命令を実行するように構成されたデバイスドライバ510を含み得る。デバイスドライバ510は、ソフトウェア、アプリケーションプログラム、アプリケーションコードなどであり得る。
【0049】
CPU502はまた、バス506を介して、コンピューティングデバイス500を1つ以上の入出力(I/O)デバイス514に接続するように構成されたI/Oデバイスインターフェース512に接続され得る。I/Oデバイス514は、例えば、キーボードおよびポインティングデバイスを含み得、ポインティングデバイスは、とりわけ、タッチパッドまたはタッチスクリーンを含み得る。I/Oデバイス514は、コンピューティングデバイス500の内蔵コンポーネントであり得る、または、コンピューティングデバイス500に外部接続されるデバイスであり得る。いくつかの例では、メモリ504は、直接メモリアクセス(DMA)を介してI/Oデバイス514に通信可能に結合され得る。
【0050】
CPU502はまた、バス506を介して、コンピューティングデバイス500をディスプレイデバイス518に接続するように構成されたディスプレイインターフェース516にリンクされ得る。ディスプレイデバイス518は、コンピューティングデバイス500の内蔵コンポーネントであるディスプレイスクリーンを含み得る。ディスプレイデバイス518はまた、とりわけ、コンピューティングデバイス500の内部または外部に接続される、コンピュータモニタ、テレビジョン、またはプロジェクタを含み得る。
【0051】
コンピューティングデバイス500はまた、ストレージデバイス520を含む。ストレージデバイス520は、ハードドライブ、光学ドライブ、サムドライブ、ドライブのアレイ、ソリッドステートドライブ、またはそれらの任意の組み合わせのような物理メモリである。ストレージデバイス520はまた、リモートストレージドライブを含み得る。
【0052】
コンピューティングデバイス500はまた、ネットワークインターフェースコントローラ(NIC)522を含み得る。NIC522は、バス506を介してコンピューティングデバイス500をネットワーク524に接続するように構成され得る。ネットワーク524は、とりわけ、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、またはインターネットであり得る。いくつかの例では、デバイスは、無線技術を介して他のデバイスと通信し得る。例えば、デバイスは、無線ローカルエリアネットワーク接続を介して他のデバイスと通信し得る。いくつかの例では、Bluetooth(登録商標)または同様のテクノロジーを介して、デバイスを他のデバイスに接続し、通信し得る。
【0053】
コンピューティングデバイス500は、さらに、カメラ526を含む。例えば、カメラ526は、1つ以上のイメージングセンサを含み得る。いくつかの例では、カメラ526は、ビデオフレームを生成するためのプロセッサを含み得る。
【0054】
コンピューティングデバイス500は、さらに、トランスポートおよびコンテンツ適応エンコーダ528を含む。例えば、トランスポートおよびコンテンツ適応エンコーダ528を使用して、コンテンツおよびネットワーク解析に基づいてフレームを適応的にエンコードすることができる。トランスポートおよびコンテンツ適応エンコーダ528は、ネットワークアナライザ530、コンテンツアナライザ532、適応決定実行器534、およびフレームエンコーダ536を含むことができる。いくつかの例では、トランスポートおよびコンテンツ適応エンコーダ528のコンポーネント530~536の各々は、マイクロコントローラ、埋め込みプロセッサ、またはソフトウェアモジュールであり得る。ネットワークアナライザ530は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測することができる。例えば、ネットワークアナライザ530は、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測することができる。いくつかの例では、ネットワークアナライザ530は、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測することができる。例えば、ネットワークアナライザ530は、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを含み得る。コンテンツアナライザ532は、受信したフレームに基づいてラダー情報を生成することができる。いくつかの例では、コンテンツアナライザ532は、オフライントレーニングを実行して、受信したビデオのセットに対して複数の所定の予め選択されたビットレートで、最適なビデオ解像度およびフレームレートを生成することができる。種々の例では、コンテンツアナライザ532は、受信したフレームをリアルタイムで解析して、フレーム内のシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成することができる。例えば、コンテンツアナライザ532は、入力として複数のハードウェアカウンタを有する完全に接続されたレイヤーを含むフレームアナライザを含み得る。一例として、フレームアナライザは、ディープラーニングニューラルネットワークであり得る。いくつかの例では、コンテンツアナライザ532は、各トレーニングビデオおよび複数の予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築するために、タイトル毎のエンコーディングトレーナを含み得る。適応決定実行器534は、予測された瞬間ビットレートおよびラダー出力に基づいて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定することができる。いくつかの例では、適応決定実行器534は、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算することができる。種々の例では、適応決定実行器534は、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を代替的に選択することができる。フレームエンコーダ536は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードすることができる。
【0055】
図5のブロック図は、コンピューティングデバイス500が、
図5に示すコンポーネントのすべてを含むものであることを示すことを意図したものではない。むしろ、コンピューティングデバイス500は、より少ない、または、追加のバッファ、追加のプロセッサなどのような、
図5に示されていない追加のコンポーネントを含むことができる。コンピューティングデバイス500は、特定の実装の詳細に応じて、
図5に示されていない任意の数の追加のコンポーネントを含み得る。例えば、コンピューティングデバイス300はまた、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成するレートコントローラを含むことができる。次いで、エンコーダ536は、量子化パラメータに基づいてフレームをエンコードし得る。さらに、ネットワークアナライザ530、コンテンツアナライザ532、適応決定実行器534、およびフレームエンコーダ536の機能のいずれかは、ハードウェアおよび/またはプロセッサ502で部分的に、または全体的に実装され得る。例えば、機能性は、特定用途向け集積回路、プロセッサ502に実装される論理、または任意の他のデバイスに実装され得る。加えて、CPU502の機能のいずれかは、ハードウェアおよび/またはプロセッサに部分的にまたは全体的に実装され得る。例えば、トランスポートおよびコンテンツ適応エンコーダ528の機能は、特定用途向け集積回路、プロセッサに実装された論理、GPU508のような専用グラフィックス処理ユニットに実装された論理、または任意の他のデバイスに実装され得る。
【0056】
図6は、コンテンツおよびネットワーク解析を使用してフレームを適応的にエンコードするためのコードを記憶するコンピュータ可読媒体600を示すブロック図である。コンピュータ可読媒体600は、コンピュータバス604を介してプロセッサ602によってアクセスされ得る。さらに、コンピュータ可読媒体600は、プロセッサ602に本明細書に記載の方法を実行させるように構成されたコードを含み得る。いくつかの実施形態では、コンピュータ可読媒体600は、非一時的コンピュータ可読媒体であり得る。いくつかの例では、コンピュータ可読媒体600は記憶媒体であり得る。
【0057】
本明細書で議論される種々のソフトウェアコンポーネントは、
図6に示されるように、1つ以上のコンピュータ可読媒体600に記憶され得る。例えば、ネットワークアナライザモジュール606は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測するように構成され得る。例えば、ネットワークアナライザモジュール606は、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測するように構成され得る。いくつかの例では、アナライザモジュール606は、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測するように構成され得る。コンテンツアナライザモジュール608は、受信したフレームに基づいてラダー情報を生成するように構成され得る。いくつかの例では、コンテンツアナライザモジュール608は、オフライントレーニングを実行して、受信したビデオのセットに対して複数の所定の予め選択されたビットレートで、最適なビデオ解像度およびフレームレートを生成するように構成され得る。様々な例では、コンテンツアナライザモジュール608は、フレーム内のシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成するように構成され得る。例えば、コンテンツアナライザモジュール608は、完全に接続されたレイヤーを有するニューラルネットワークによって、シーン変化およびフレームに基づくフレーム複雑性を検出するように構成され得る。様々な例では、コンテンツアナライザモジュール608は、各トレーニングビデオおよび複数の予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築するように構成され得る。適応決定実行モジュール610は、予測された瞬間ビットレートおよびラダー出力に基づいて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定するように構成され得る。例えば、適応決定実行モジュール610は、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算するように構成され得る。いくつかの例では、適応決定実行モジュール610は、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択するように構成され得る。フレームエンコーダモジュール612は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードするように構成され得る。
【0058】
図6のブロック図は、コンピュータ可読媒体600が、
図6に示されるコンポーネントの全てを含むものであることを示すことを意図していない。さらに、コンピュータ可読媒体600は、特定の実装の詳細に応じて、
図6に示されていない任意の数の追加のコンポーネントを含み得る。例えば、コンピュータ可読媒体600は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成するように構成されたレートコントローラモジュールをさらに含み得る。フレームエンコーダモジュール612は、量子化パラメータに基づいてフレームをエンコードし得る。
【0059】
例
例1は、ビデオフレームを適応的にエンコードするための装置である。装置は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測するネットワークアナライザを含む。装置はまた、受信したフレームに基づいてラダー情報を生成するコンテンツアナライザを含む。装置はさらに、予測された瞬間ビットレートおよびラダー出力に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する適応決定実行器を含む。また、装置は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードするエンコーダをさらに含む。
【0060】
例2は、オプションの特徴を含むまたは除外する、例1の装置を含む。この例では、装置は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成するレートコントローラを含み、エンコーダは、量子化パラメータに基づいてフレームをエンコードする。
【0061】
例3は、オプションの特徴を含むまたは除外する、例1~2のいずれか1つの装置を含む。この例では、ネットワークアナライザは、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測する。
【0062】
例4は、オプションの特徴を含むまたは除外する、例1~3のいずれか1つの装置を含む。この例では、ネットワークアナライザは、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを含む。
【0063】
例5は、オプションの特徴を含むまたは除外する、例1~4のいずれか1つの装置を含む。この例では、コンテンツアナライザは、受信したビデオのセットに対していくつかの所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行するタイトル毎のエンコーディングトレーナを含む。
【0064】
例6は、オプションの特徴を含むまたは除外する、例1~5のいずれか1つの装置を含む。この例では、コンテンツアナライザは、フレームのシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成するためにフレームをリアルタイムで解析するフレームアナライザを含む。
【0065】
例7は、オプションの特徴を含むまたは除外する、例1~6のいずれか1つの装置を含む。この例では、コンテンツアナライザは、フレームアナライザを含み、フレームアナライザは、入力としていくつかのハードウェアカウンタを備える完全に接続されたレイヤーを含む。
【0066】
例8は、オプションの特徴を含むまたは除外する、例1~7のいずれか1つの装置を含む。この例では、適応決定実行器は、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートとビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算する。
【0067】
例9は、オプションの特徴を含むまたは除外する、例1~8のいずれか1つの装置を含む。この例では、適応決定実行器は、ラダー情報が空であることを検出したことに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択する。
【0068】
例10は、オプションの特徴を含むまたは除外する、例1~9のいずれか1つの装置を含む。この例では、コンテンツアナライザは、各トレーニングビデオおよびいくつかの予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築するタイトル毎のエンコーディングトレーナを含む。
【0069】
例11は、ビデオフレームを適応的にエンコードする方法である。方法は、プロセッサによって、ネットワークから受信したチャネルスルーアウトフィードバックに基づいて瞬間ビットレートを予測することを含む。方法は、プロセッサによって、受信したフレームに基づいてラダー情報を生成することを含む。方法は、プロセッサによって、予測された瞬間ビットレートおよびラダー出力に基づいて、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定することを含む。方法は、プロセッサによって、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードすることを含む。
【0070】
例12は、オプションの特徴を含む、または除外する、例11の方法を含む。この例では、フレームをエンコードすることは、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成することと、量子化パラメータに基づいてフレームをエンコードすることとを含む。
【0071】
例13は、オプションの特徴を含むまたは除外する、例11~12のいずれか1つの方法を含む。この例では、瞬間ビットレートを予測することは、受信したチャネルスループットフィードバックおよび受信した履歴データに基づく。
【0072】
例14は、オプションの特徴を含むまたは除外する、例11~13のいずれか1つの方法を含む。この例では、瞬間ビットレートを予測することは、第1のパッケージ送信時間に基づく。
【0073】
例15は、オプションの特徴を含むまたは除く、例11~14のいずれか1つの方法を含む。この例では、方法は、受信したビデオのセットに対して、いくつかの所定の予め選択されたビットレートで、最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行することを含む。
【0074】
例16は、オプションの特徴を含むまたは除外する、例11~15のいずれか1つの方法を含む。この例では、方法は、フレーム内のシーン変化を検出することと、フレームに対するフレーム複雑性インデックスを生成することとを含む。
【0075】
例17は、オプションの特徴を含むまたは除外する、例11~16のいずれか1つの方法を含む。この例では、方法は、完全に接続されたレイヤーを有するニューラルネットワークによって、シーン変化およびフレームに基づくフレーム複雑性を検出することを含む。
【0076】
例18は、オプションの特徴を含むまたは除外する、例11~17のいずれか1つの方法を含む。この例では、方法は、予測される瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択することと、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算することとを含む。
【0077】
例19は、オプションの特徴を含むまたは除外する、例11~18のいずれか1つの方法を含む。この例では、方法は、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択することを含む。
【0078】
例20は、オプションの特徴を含むまたは除外する、例11~19のいずれか1つの方法を含む。この例では、方法は、いくつかのトレーニングビデオを受信すること;
いくつかのトレーニングビデオの各々をいくつかのビットレート、解像度、およびフレームレートでエンコードすることを含む。方法は、また、解像度およびフレームレートの異なる組み合わせで同じビットレートを使用して、エンコードされたトレーニングビデオの品質を解析することを含む。方法は、また、各トレーニングビデオおよびいくつかの予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築することをさらに含む。
【0079】
例21は、ビデオフレームを適応的にエンコードするためのシステムである。システムは、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測する手段を含む。システムは、受信したフレームに基づいてラダー情報を生成する手段を含む。システムは、予測された瞬間ビットレートおよびラダー出力に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する手段と;フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードする手段と;を含む。
【0080】
例22は、オプションの特徴を含むまたは排除する、例21のシステムを含む。この例では、システムは、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成する手段を含み、エンコーダは、量子化パラメータに基づいてフレームをエンコードする。
【0081】
例23は、オプションの特徴を含むまたは除外する、例21~22のいずれか1つのシステムを含む。この例では、瞬間ビットレートを予測する手段は、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測する。
【0082】
例24は、オプションの特徴を含むまたは除外する、例21~23のいずれか1つのシステムを含む。この例では、瞬間ビットレートを予測する手段は、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを含む。
【0083】
例25は、オプションの特徴を含むまたは除外する、例21~24のいずれか1つのシステムを含む。この例では、ラダー情報を生成する手段は、受信したビデオのセットに対していくつかの所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行するタイトル毎のエンコーディングトレーナを含む。
【0084】
例26は、オプションの特徴を含むまたは除外する、例21~25のいずれか1つのシステムを含む。この例では、ラダー情報を生成する手段は、フレームのシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成するために、リアルタイムでフレームを解析するフレームアナライザを含む。
【0085】
例27は、オプションの特徴を含むまたは除外する、例21~26のいずれか1つのシステムを含む。この例では、ラダー情報を生成する手段は、フレームアナライザを含み、フレームアナライザは、入力としていくつかのハードウェアカウンタを有する完全に接続されたレイヤーを含む。
【0086】
例28は、オプションの特徴を含むまたは除外する、例21~27のいずれか1つのシステムを含む。この例では、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する手段は、予測される瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算する。
【0087】
例29は、オプションの特徴を含むまたは除外する、例21~28のいずれか1つのシステムを含む。この例では、フレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する手段は、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択する。
【0088】
例30は、オプションの特徴を含むまたは除外する、例21~29のいずれか1つのシステムを含む。この例では、ラダー情報を生成する手段は、各トレーニングビデオおよびいくつかの予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築するタイトル毎のエンコーディングトレーナを含む。
【0089】
例31は、ビデオフレームを適応的にエンコードするための装置である。この装置は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測するネットワークアナライザを含む。装置は、受信したフレームに基づいてラダー情報を生成するコンテンツアナライザを含む。装置は、予測された瞬間ビットレートおよびラダー出力に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する適応決定実行器を含む。装置は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードするエンコーダを含む。
【0090】
例32は、オプションの特徴を含むまたは除外する、例31の装置を含む。この例では、装置は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成するレートコントローラを含み、エンコーダは、量子化パラメータに基づいてフレームをエンコードする。
【0091】
例33は、オプションの特徴を含むまたは除外する、例31~32のいずれか1つの装置を含む。この例では、ネットワークアナライザは、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測する。
【0092】
例34は、オプションの特徴を含むまたは除外する、例31~33のいずれか1つの装置を含む。この例では、ネットワークアナライザは、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測するようにトレーニングされたディープラーニングニューラルネットワークを含む。
【0093】
例35は、オプションの特徴を含むまたは除外する、例31~34のいずれか1つの装置を含む。この例では、コンテンツアナライザは、受信したビデオのセットに対していくつかの所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行するタイトル毎のエンコーディングトレーナを含む。
【0094】
例36は、オプションの特徴を含むまたは除外する、例31~35のいずれか1つの装置を含む。この例では、コンテンツアナライザは、フレームのシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成するために、フレームをリアルタイムで解析するフレームアナライザを含む。
【0095】
例37は、オプションの特徴を含むまたは除外する、例31~36のいずれか1つの装置を含む。この例では、コンテンツアナライザは、フレームアナライザを含み、フレームアナライザは、いくつかのハードウェアカウンタを入力として有する完全に接続されたレイヤーを含む。
【0096】
例38は、オプションの特徴を含むまたは除外する、例31~37のいずれか1つの装置を含む。この例では、適応決定実行器は、予測された瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算する。
【0097】
例39は、オプションの特徴を含むまたは除外する、例31~38のいずれか1つの装置を含む。この例では、適応決定実行器は、ラダー情報が空であることを検出したことに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択する。
【0098】
例40は、オプションの特徴を含むまたは除外する、例31~39のいずれか1つの装置を含む。この例では、コンテンツアナライザは、各トレーニングビデオおよびいくつかの予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築するタイトル毎のエンコーディングトレーナを含む。
【0099】
例41は、命令が記憶されたビデオフレームを適応的にエンコードするための少なくとも1つのコンピュータ可読媒体である。コンピュータ可読媒体は、ネットワークから受信したチャネルスループットフィードバックに基づいて瞬間ビットレートを予測するようにプロセッサに指示する命令を含む。コンピュータ可読媒体は、受信したフレームに基づいてラダー情報を生成し;予測された瞬間ビットレートおよびラダー出力に基づいてフレームレート、ビデオ解像度、およびターゲットフレームサイズを決定する、ようにプロセッサに指示する命令を含む。コンピュータ可読媒体は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいてフレームをエンコードするようにプロセッサに指示する命令を含む。
【0100】
例42は、オプションの特徴を含むまたは排除する、例41のコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、フレームレート、ビデオ解像度、およびターゲットフレームサイズに基づいて量子化パラメータを生成する命令を含み、エンコーダは、量子化パラメータに基づいてフレームをエンコードする。
【0101】
例43は、オプションの特徴を含むまたは除外する、例41~42のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、受信したチャネルスループットフィードバックおよび受信した履歴データの瞬間ビットレートを予測する命令を含む。
【0102】
例44は、オプションの特徴を含むまたは除外する、例41~43のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、第1のパッケージ送信時間に基づいて瞬間ビットレートを予測する命令を含む。
【0103】
例45は、オプションの特徴を含むまたは除外する、例41~44のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、受信したビデオのセットに対していくつかの所定の予め選択されたビットレートで最適なビデオ解像度およびフレームレートを生成するためにオフライントレーニングを実行する命令を含む。
【0104】
例46は、オプションの特徴を含むまたは除外する、例41~45のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、フレーム内のシーン変化を検出し、フレームに対するフレーム複雑性インデックスを生成するために、リアルタイムでフレームを解析する命令を含む。
【0105】
例47は、オプションの特徴を含むまたは除外する、例41~46のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、完全に接続されたレイヤーを有するニューラルネットワークによって、シーン変化およびフレームに基づくフレーム複雑性を検出する命令を含む。
【0106】
例48は、オプションの特徴を含むまたは除外する、例41~47のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、予測される瞬間ビットレートおよびラダー情報に基づいてフレームレートおよびビデオ解像度を選択し、フレームレートおよびビデオ解像度に基づいてターゲットフレームレートを計算する命令を含む。
【0107】
例49は、オプションの特徴を含むまたは除外する、例41~48のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、ラダー情報が空であることを検出することに応答して、以前にエンコードされたフレームの量子化パラメータおよび以前にエンコードされたフレームの生成されたビットに基づいて、フレームレートおよびビデオ解像度を選択する命令を含む。
【0108】
例50は、オプションの特徴を含むまたは除外する、例41~49のいずれか1つのコンピュータ可読媒体を含む。この例では、コンピュータ可読媒体は、各トレーニングビデオおよびいくつかの予め選択されたビットレートの各々に対するビットレート適応解像度およびフレームレートを含むチェックアップテーブルを構築する命令を含む。
【0109】
本明細書に記載および図示された全てのコンポーネント、特徴、構造、特性などが、特定の態様または複数の態様に含まれる必要はない。明細書にコンポーネント、特徴、構造または特性が、含まれ「得る」、含まれる「かもしれない」、含まれることが「できる」または含まれ「てもよい」と記載されている場合、例えば、その特定のコンポーネント、特徴、構造または特性を含める必要はない。明細書または請求項が「1つの(「a」または「an」)」要素に言及している場合、それは、要素の1つのみが存在することを意味しない。本明細書または請求項が「追加の」要素を指す場合、それは、追加の要素のうちの2つ以上が存在することを排除しない。
【0110】
特定の実装を参照していくつかの態様が説明されているが、いくつかの態様に従って他の実装が可能であることに留意されたい。加えて、図面および/または本明細書に説明される回路素子または他の特徴の配置および/または順序は、図示および説明される特定の方法で配置する必要はない。いくつかの態様に従って、多くの他の構成が可能である。
【0111】
図に示された各システムにおいて、要素はそれぞれ、場合によっては、表される要素が異なるおよび/または類似している可能性があることを示唆するために、同一の参照番号または異なる参照番号を有する場合がある。しかし、要素は、異なる実装を有し、本明細書に図示されまたは記載されたシステムのいくつかまたは全てと共に動作するのに十分にフレキシブル(flexible)であり得る。図中に示されている種々の要素は、同一であっても、異なるものであってもよい。どれを第1の要素と呼び、どれを第2の要素と呼ぶかは、任意である。
【0112】
前述の例における詳細は、1つ以上の態様において任意の場所で使用され得ることが理解されるべきである。例えば、上述のコンピューティングデバイスの全てのオプションの特徴は、本明細書に記載の方法またはコンピュータ可読媒体のいずれかに関して実装することもできる。さらに、フローダイアグラムおよび/または状態ダイアグラムは、態様を説明するために本明細書中で使用されることがあるが、技術は、これらのダイアグラムまたは本明細書中の対応する説明に限定されない。例えば、フローは、各図示されたボックス若しくは状態を通って移動する必要はなく、または、本明細書に図示され記載されたのと全く同じ順序で移動する必要もない。
【0113】
本技術は、本明細書に挙げられた特定の詳細に限定されるものではない。実際、本開示の利点を有する当業者であれば、前述の説明および図面からの多くの他の変更が、本技術の範囲内でなされ得ることを理解するであろう。従って、本技術の範囲を定義するのは、その補正を含む以下の特許請求の範囲である。