(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-24
(45)【発行日】2023-03-06
(54)【発明の名称】メディアタイトルのバッファ制約バージョンを生成する際の符号化演算の最適化
(51)【国際特許分類】
H04N 21/2662 20110101AFI20230227BHJP
H04N 21/24 20110101ALI20230227BHJP
H04N 19/115 20140101ALI20230227BHJP
H04N 19/152 20140101ALI20230227BHJP
【FI】
H04N21/2662
H04N21/24
H04N19/115
H04N19/152
(21)【出願番号】P 2021538241
(86)(22)【出願日】2020-01-08
(86)【国際出願番号】 US2020012810
(87)【国際公開番号】W WO2020146549
(87)【国際公開日】2020-07-16
【審査請求日】2021-09-08
(32)【優先日】2019-01-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506267178
【氏名又は名称】ネットフリックス・インコーポレイテッド
【氏名又は名称原語表記】NETFLIX, INC.
【住所又は居所原語表記】121 Albright Way Los Gatos, California 95032 UNITED STATES OF AMERICA
(74)【代理人】
【識別番号】100073184
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100123652
【氏名又は名称】坂野 博行
(74)【代理人】
【識別番号】100175042
【氏名又は名称】高橋 秀明
(72)【発明者】
【氏名】カサヴォニディス,イオアニス
【審査官】大西 宏
(56)【参考文献】
【文献】国際公開第2007/005750(WO,A2)
【文献】国際公開第2018/156997(WO,A1)
【文献】米国特許出願公開第2017/0064342(US,A1)
【文献】大上 貴充、渡辺 真太郎、三部 靖夫,分散ビデオトランスコーディングにおけるVBVバッファの整合性に関する検討,情報処理学会研究報告 IPSJ SIG Technical Reports,日本,社団法人情報処理学会,2004年03月05日,Vol.2004 No.25,pp. 31 - 36
【文献】Sanjeev Mehrotra; Weidong Zhao,Rate-distortion optimized client side rate control for adaptive media streaming,2009 IEEE International Workshop on Multimedia Signal Processing,米国,IEEE,2009年10月05日,https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5293246
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/10
H04N 7/14 - 7/173
H04N 7/20 - 7/56
H04N 21/00 -21/858
H04N 7/12
H04N 19/00 -19/98
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、前記方法が、
第1のセットの符号化ポイントおよびメディアタイトルに関連付けられた第1のサブシーケンスに基づいて、サブシーケンスエンコードポイントの第1の凸包を生成するステップと、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、
メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップと
を含む、コンピュータ実装方法。
【請求項2】
前記送信バッファ制約が、一定のビットレートビデオバッファベリファイア(VBV)制約または可変ビットレートVBV制約を含む、請求項1記載のコンピュータ実装方法。
【請求項3】
前記コンピュータ実装方法が、前記第1の符号化されたメディアシーケンスに関連付けられた最小バッファ占有率および前記送信バッファ制約に関連付けられたバッファサイズに基づいて、プリバッファリング時間を計算するステップをさらに含む、請求項1記載のコンピュータ実装方法。
【請求項4】
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれるメディアエンコードポイントと前記第1の凸包に含まれるサブシーケンスエンコードポイントとの各組み合わせについて、メディアエンコードポイントのセットに含まれる異なるメディアエンコードポイントを生成するステップと、
前記送信バッファ制約に基づいて、前記メディアエンコードポイントのセットに対して1回以上のフィルタリング演算を実行して、適合するメディアエンコードポイントのセットを生成するステップと、
前記適合するメディアエンコードポイントのセットにわたって、1回以上の凸包演算を実行して、前記第1のグローバル凸包を生成するステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項5】
前記メディアメトリックがビットレートを含み、前記第1のメディアエンコードポイントを選択するステップは、前記第1のメディアエンコードポイントに関連付けられた第1の平均ビットレートが前記第1のグローバル凸包に含まれる他の全てのメディアエンコードポイントに関連付けられた平均ビットレートより大きいことを判定するステップを含む、請求項1記載のコンピュータ実装方法。
【請求項6】
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれる第2のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2の符号化されたメディアシーケンスを生成するステップと、
前記第2の符号化されたメディアシーケンスおよび前記送信バッファ制約に関連付けられた送信レートに基づいて、最小バッファ占有率および最大バッファ占有率を計算するステップと、
前記最大バッファ占有率と前記最小バッファ占有率との差が前記送信バッファ制約に関連付けられたバッファサイズを超えていないことを判定するステップと、
前記差が前記バッファサイズを超えていないと判定されたことに応答して、前記第2の符号化されたメディアシーケンスに関連付けられた第2のメディアエンコードポイントを前記第1のグローバル凸包に追加するステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項7】
前記第1の凸包を生成するステップが、
前記第1のセットの符号化ポイントおよび前記第1のサブシーケンスに基づいて、第1のセットのサブシーケンスエンコードポイントを生成するステップと、
前記第1のセットのサブシーケンスエンコードポイントを含む領域を決定するステップと、
前記第1のセットのサブシーケンスエンコードポイントに含まれるサブシーケンスエンコードポイントがその第1の側に位置しない、前記領域に関連付けられた境界を識別するステップと、
前記境界に沿って位置しない前記第1のセットのサブシーケンスエンコードポイントに含まれる全てのサブシーケンスエンコードポイントを破棄するステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項8】
前記第1のセットの符号化ポイントに含まれる各符号化ポイントが、解像度とレート制御値との異なる組み合わせを指定する、請求項1記載のコンピュータ実装方法。
【請求項9】
前記コンピュータ実装方法が、前記メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割するステップをさらに含み、前記複数のサブシーケンスは第1のサブシーケンスを含む、請求項1記載のコンピュータ実装方法。
【請求項10】
前記メディアタイトルが、ビデオコンテンツおよびオーディオコンテンツのうちの少なくとも一方を含む、請求項1記載のコンピュータ実装方法。
【請求項11】
1つ以上の非一時的コンピュータ可読
記録媒体であって、1つ以上のプロセッサにより実行される際に、前記1つ以上のプロセッサに、
第1のセットの符号化ポイントにわたってメディアタイトルに関連付けられた第1のサブシーケンスを符号化して、それぞれが異なる符号化されたサブシーケンスに関連付けられる、第1のセットのサブシーケンスエンコードポイントを生成するステップと、
前記第1のセットのサブシーケンスエンコードポイントにわたって1つ以上の凸包演算を実行して、少なくとも2つのメディアメトリックに基づいて、サブシーケンスエンコードポイントの第1の凸包を計算するステップと、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルに関連付けられた1つ以上のサブシーケンスに関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、
第1のメディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップと
を実行させるための命令を含む、1つ以上の非一時的コンピュータ可読
記録媒体。
【請求項12】
システムであって、
命令を記憶する1つ以上のメモリと、
前記1つ以上のメモリに結合された1つ以上のプロセッサであって、前記命令を実行する際に、
メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割し、
第1のセットの符号化ポイントおよび前記複数のサブシーケンスに含まれる第1のサブシーケンスに基づいて、それぞれが異なる符号化されたサブシーケンスに関連付けられたサブシーケンスエンコードポイントの第1の凸包を生成し、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成し、
メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択し、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定する
ように構成された1つ以上のプロセッサと
を備える、システム。
【発明の詳細な説明】
【関連出願】
【0001】
本願は、2019年1月9日に出願された米国特許出願第16/244033号明細書の利益を主張し、参照により本明細書に援用するものとする。
【技術分野】
【0002】
本発明の実施形態は、概して、符号化技術に関し、より詳細には、メディアタイトルのバッファ制約バージョンを生成する際の符号化演算の最適化に関する。
【背景技術】
【0003】
典型的なメディアストリーミングサービスは、一定範囲の種々のエンドポイントデバイスで視聴することができるメディアタイトルのライブラリへのアクセスを提供する。各エンドポイントデバイスは、帯域幅およびレイテンシに影響を及ぼす種々の接続条件下でメディアストリーミングサービスに接続する場合がある。加えて、各種のエンドポイントデバイスは、メディアタイトルをエンドユーザに出力するための異なるハードウェアを含む場合がある。例えば、所定のエンドポイントデバイスは、特定のスクリーンサイズおよび特定のスクリーン解像度を有するディスプレイスクリーンを含む場合がある。
【0004】
多くの実現形態では、メディアストリーミングサービスに接続するエンドポイントデバイスは、エンドポイントアプリケーションを実行し、このアプリケーションにより、エンドポイントデバイスの接続条件およびプロパティに基づいて、所定のメディアタイトルにつき、エンドポイントデバイスへのストリーミングに適したメディアタイトルの符号化されたバージョンが決定される。具体的には、エンドポイントアプリケーションは、バッファリングまたは再バッファリングにより再生の中断を回避しながら、エンドポイントデバイス上のメディアタイトルの再生中に可能な限り最高の視覚品質を提供するメディアタイトルの特定の符号化されたバージョンを選択することを試みる。
【0005】
幾つかの実現形態では、エンドポイントアプリケーションは、ビットレートラダーに基づいて、メディアタイトルの特定の符号化されたバージョンを選択する。ビットレートラダーは、利用可能な帯域幅に基づいて、メディアタイトルの再生中に目標視覚品質を達成するように設計される。ビットレートラダー内の各ラングは、メディアタイトルの種々の事前に生成された符号化されたバージョンに対応する種々のビットレート-解像度ペアを指定する。所定のビットレート-解像度ペアに対応するメディアタイトルの符号化されたバージョンを生成するために、メディアタイトルに関連付けられたメディアコンテンツが、サンプリングされたメディアコンテンツを生成するための解像度でサンプリングされる。レート制御値が、ビットレートに基づいて選択され、ついで、エンコーダが使用されて、サンプリングされたメディアコンテンツを符号化する。
【0006】
上記の「モノリシック」符号化技術の1つの欠点は、所定のメディアタイトルに関連付けられたメディアコンテンツの複雑さがメディアタイトルにわたって変化することが多く、一方、メディアコンテンツの符号化に使用される解像度およびレート制御値が変化しないことである。その結果、メディアタイトルの比較的単純な部分を符号化することは、目標視覚品質を満たすために必要であるよりも多くの計算リソースおよび記憶リソースを消費する場合がある。例えば、メディアタイトルの比較的単純な部分は、メディアコンテンツのその部分が560キロビット/秒(kbps)のビットレートを使用して符号化されているかまたは3000kbpsのビットレートを使用して符号化されているかに関わらず、同じ視覚品質を有する場合がある。とりわけ、このような符号化の非効率性は、計算リソースおよび記憶リソースを浪費し、エンドポイントデバイスへのメディアタイトルの符号化されたバージョンのストリーミングに必要とされる帯域幅を増大させてしまう。
【0007】
他の実現形態では、これらのタイプの符号化の非効率性を低減するために、メディアストリーミングサービスプロバイダは、メディアタイトルにわたって解像度およびレート制御値を変更している。典型的には、サブシーケンスベースの符号化アプリケーションにより、メディアタイトルを、同様のプロパティにより特徴付けられる異なるサブシーケンスまたはフレームのセットに分割する。ついで、サブシーケンスベースの符号化アプリケーションにより、各種の異なる解像度およびレート制御値で、各サブシーケンスを何度も符号化して、符号化されたサブシーケンスを生成する。その後、サブシーケンスベースの符号化アプリケーションにより、最適化演算を実行して、メディアタイトルの種々の最適に符号化されたバージョンを生成する。メディアタイトルの各最適に符号化されたバージョンは、メディアタイトルの長さにわたる符号化されたサブシーケンスの異なる組み合わせを含み、解像度および/またはレート制御値は、構成要素の符号化されたサブシーケンス間で変化しうる。
【0008】
上記の「サブシーケンスベースの」符号化技術の1つの欠点は、メディアタイトルの最適に符号化されたバージョンがエンドポイントデバイスへの送信およびエンドポイントデバイスでのバッファリングに多くの場合に関連付けられる送信バッファ制約に必ずしも適合していないことである。一般的には、メディアタイトルの符号化されたバージョンが、関連する送信バッファ制約に適合する場合、エンドポイントデバイスは、特に、一定のビットレート送信チャネルにおいて、メディアタイトルを適切にバッファリングし、再生することができるようになる。しかしながら、メディアタイトルの符号化されたバージョンが関連する送信バッファ制約に適合していない場合、エンドポイントデバイスは、メディアタイトルを適切にバッファリングし、再生することができないであろう。後者の場合、視聴体験の全体的な品質を低下させる再生中断が、メディアタイトルをエンドポイントデバイスにストリーミングする際に発生するおそれがある。
【0009】
例として、TV放送で使用されるような、一定の帯域幅チャネルを介して送信されるメディアタイトルの符号化されたバージョンは、典型的には、一定ビットレート(CBR)ビデオバッファベリファイア(VBV)制約に適合することが要求される。一定の帯域幅チャネルでは、符号化されたビットが、固定レートでエンドポイントデバイスに関連付けられたデコーダに到着し、固定サイズを有する送信バッファに記憶される。メディアタイトルの特定のフレームを表示する一部として、デコーダは、関連付けられた符号化されたビットを、送信バッファから削除する。各フレームの符号化に使用されるビット数は、メディアタイトルにわたって変化する可能性があるため、送信バッファが記憶する符号化されたビット数も、メディアタイトルの再生中に変化する可能性がある。メディアタイトルの符号化されたバージョンがCBR VBV制約に適合している場合には、各フレームの符号化に使用されるビット数は、メディアタイトルの再生中に、送信バッファがオーバーフローしないまたはアンダーフローしないことを保証するための努力において制限される。しかしながら、送信バッファがオーバーフローした場合、送信バッファは、入ってくる符号化されたビットを記憶するためのスペースを有さない場合がある。その結果、フレームドロップが発生するおそれがある。さらに、送信バッファがアンダーフローした場合には、符号化されたビットを送信バッファから取り出すことができず、フレームフリーズが発生するおそれがある。
【発明の概要】
【発明が解決しようとする課題】
【0010】
前述したように、当技術分野において、メディアタイトルを符号化するためのより効果的な技術が必要とされている。
【課題を解決するための手段】
【0011】
本発明の一実施形態は、メディアタイトルを符号化するためのコンピュータ実装方法を説明する。この方法は、第1のセットの符号化ポイントおよびメディアタイトルに関連付けられた第1のサブシーケンスに基づいて、サブシーケンスエンコードポイントの第1の凸包を生成するステップと、送信バッファ制約、第1の凸包、およびメディアタイトルについての再生順序における第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、メディアメトリックに基づいて、第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、第1のメディアエンコードポイントに基づいて、メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップとを含む。
【0012】
先行技術に対する開示された技術の少なくとも1つの技術的利点は、符号化されたメディアシーケンスが個別に符号化されたサブシーケンスのセットと送信バッファ制約とに基づいて生成されることである。特に、各符号化されたメディアシーケンスに含まれる個別に符号化されたサブシーケンスを、種々の符号化ポイントに関連付けることができる。その結果、先行技術のモノリシック符号化技術に典型的に関連付けられた符号化の非効率性が低減される。さらに、最適に符号化されたメディアシーケンスが送信バッファ制約に適合することを保証することにより、メディアタイトルをエンドポイントデバイスにストリーミングする際の送信制限およびバッファリング制限に起因する視聴体験の劣化が低減される。これらの技術的利点により、先行技術のアプローチを上回る1つ以上の技術的進歩が提供される。
【図面の簡単な説明】
【0013】
種々の実施形態の上記で列挙された特徴を詳細に理解することができるように、上記で簡潔にまとめられた本発明の概念のより特定の説明を、種々の実施形態を参照することにより行うことができ、その幾つかを添付の図面に示す。ただし、添付の図面は、本発明の概念の典型的な実施形態を示すのみであり、したがって、けっして範囲を限定するとみなされるべきではなく、他の等しく有効な実施形態が存在することに留意されたい。
【
図1】本発明の1つ以上の態様を実装するように構成されたシステムの概念図である。
【
図2】本発明の種々の実施形態に係る
図1のバッファベースの符号化アプリケーションのより詳細な図である。
【
図3】本発明の種々の実施形態に係る
図2の符号化ポイントリストのより詳細な図である。
【
図4】本発明の種々の実施形態に係る
図2のサブシーケンスエンコードセットのうちの1つのより詳細な図である。
【
図5】本発明の種々の実施形態に係る
図2の凸包生成器により生成される例示的な凸包を示す図である。
【
図6】本発明の種々の実施形態に係る
図2のメディアエンコードポイントのうちの1つのより詳細な図である。
【
図7】本発明の種々の実施形態に係る
図2のサブシーケンスイテレータのより詳細な図である。
【
図8】本発明の種々の実施形態に係る
図2のバッファベースの符号化アプリケーションにより生成される例示的なグローバル凸包および例示的な最適に符号化されたメディアシーケンスを示す図である。
【
図9A】本発明の種々の実施形態に係るソースメディアタイトルを符号化するための方法ステップのフロー図を示す。
【
図9B】本発明の種々の実施形態に係るソースメディアタイトルを符号化するための方法ステップのフロー図を示す。
【発明を実施するための形態】
【0014】
下記の説明において、種々の実施形態のより完全な理解を提供するために、多数の特定の詳細が説明されている。ただし、本発明の概念は、これらの特定の詳細のうちの1つ以上がなくても実施することができることは、当業者には明らかであろう。
【0015】
メディアストリーミングサービスにより視聴者に提供される視覚体験全体を最適化するために、メディアストリーミングサービスプロバイダは、多くの場合に、メディアタイトルごとにビットレートラダーを生成する。所定のメディアタイトルについてのビットレートラダーにより、クライアント側エンドポイントデバイスが利用可能な帯域幅に基づいて、メディアタイトルの再生中に目標視覚品質を達成することが可能となる。ビットレートラダー内の各ラングは、メディアタイトルの種々の事前に生成された符号化されたバージョンに対応する種々のビットレート-解像度ペアを指定する。
【0016】
幾つかのメディアストリーミングサービスプロバイダは、モノリシック符号化技術を使用して、メディアタイトルの種々の符号化されたバージョンを生成する。この場合、メディアタイトルの各符号化されたバージョンは、異なるビットレートに関連付けられる。すなわち、所定のメディアタイトルに関連付けられたメディアコンテンツの符号化に使用される解像度およびレート制御値は、メディアタイトルにわたって変化しない。一方、所定のメディアタイトルに関連付けられたメディアコンテンツの複雑さは、典型的には、メディアタイトルにわたって変化するため、結果として生じるメディアタイトルの符号化されたバージョンは、多くの場合に、符号化の非効率性に関連付けられる。より具体的には、メディアタイトルの比較的単純な部分を符号化することは、目標視覚品質を満たすために必要とされるより多くの計算リソースおよび記憶リソースを消費する場合がある。さらに、メディアタイトルの符号化されたバージョンのストリーミングに必要な帯域幅が、不必要に大きくなる場合がある。
【0017】
例えば、映画は、比較的複雑なアクション部分および比較的単純なモノローグを含む場合がある。モノローグは、モノローグが3000キロビット/秒(kbps)のビットレートを使用して符号化されているかまたは560kbpsのビットレートを使用して符号化されているかにかかわらず、同じ視覚品質を有することができる。対照的に、3000kbpsのビットレートを使用してモノローグを符号化することに関連付けられた必要なリソース(例えば、計算リソース、記憶リソース、帯域幅など)は、560kbpsのビットレートを使用してモノローグを符号化することに関連付けられた必要なリソースを超えてしまう。したがって、3000kbpsのビットレートを使用して映画全体を符号化すると、計算リソースおよび記憶リソースを不必要に浪費し、エンドポイントデバイスへのムービーの符号化されたバージョンのストリーミングに必要な帯域幅が不必要に大きくなる。
【0018】
モノリシック符号化技術に典型的に関連付けられた符号化の非効率性を低減するために、幾つかのメディアストリーミングサービスプロバイダは、従来のサブシーケンスベースの符号化アプリケーションを使用して、所定のメディアタイトルの種々の符号化されたバージョンを生成する。従来のサブシーケンスベースのアプリケーションは、目標メトリック値、例えば、目標視覚品質または目標ビットレートに基づいて、メディアタイトルにわたる解像度およびレート制御値を変更する。この方法では、メディアタイトルの各符号化されたバージョンは、異なる目標メトリック値に関連付けられる。
【0019】
典型的には、従来のサブシーケンスベースの符号化アプリケーションは、メディアタイトルを種々のサブシーケンスに分割する。この場合、各サブシーケンスは、所定のカメラまたは他のキャプチャポイントから連続的にキャプチャされたメディアコンテンツを含むショットである。ついで、従来のサブシーケンスベースの符号化アプリケーションは、各種の異なる符号化ポイントにおいて、各サブシーケンスを何度も符号化して、符号化されたサブシーケンスを生成する。各符号化ポイントは、解像度とレート制御値との種々の組み合わせを指定する。その後、従来のサブシーケンスベースの符号化アプリケーションは、最適化演算を実行して、メディアタイトルの種々の符号化されたバージョンを生成する。
【0020】
最後に、従来のサブシーケンスベースの符号化アプリケーションは、メディアタイトルの符号化されたバージョンのうちの1つを、目標メトリック値に基づいて、メディアタイトルの最適に符号化されたバージョンとして選択する。メディアタイトルの最適に符号化されたバージョンは、メディアタイトルの長さにわたる符号化されたサブシーケンスの種々の組み合わせを含み、解像度およびレート制御値は、構成要素の符号化されたサブシーケンス間で変化する場合がある。その結果、従来のサブシーケンスベースの符号化アプリケーションにより、上記のモノリシック符号化技術に典型的に関連付けられた符号化の非効率性が低減される。
【0021】
このタイプのサブシーケンスベースの符号化技術の1つの欠点は、メディアシーケンスの最適に符号化されたバージョンがエンドポイントデバイスへの送信およびエンドポイントデバイスでのバッファリングに多くの場合に関連付けられる送信バッファ制約に必ずしも適合していないことである。メディアシーケンスの符号化されたバージョンが関連する送信バッファ制約に適合する場合には、関連付けられたエンドポイントデバイスは、メディアタイトルをより適切にバッファリングし、再生できるようになる。一方、メディアシーケンスの符号化されたバージョンが関連する送信バッファ制約に適合しない場合には、エンドポイントデバイスは、中断なしにメディアタイトルを適切にバッファリングし、再生することができなくなる。
【0022】
一般的な送信バッファ制約の一例は、一定のビットレート(CBR)ビデオバッファベリファイア(VBV)制約である。CBR VBV制約は、一定の帯域幅チャネルに関連付けられた送信レートおよびエンドポイントデバイスに関連付けられたバッファサイズを指定する。符号化されたビットは、その送信レートで一定の帯域幅チャネルを介してエンドポイントデバイスにストリーミングされる。符号化されたビットが、エンドポイントデバイスに関連付けられたデコーダに到着すると、符号化されたビットは、バッファサイズを有する送信バッファに記憶される。メディアタイトルの特定のフレームを表示する一部として、デコーダは、関連付けられた符号化されたビットを送信バッファから削除する。
【0023】
各フレームの符号化に使用されるビット数はメディアタイトルにわたって変化しうるため、送信バッファが記憶する符号化されたビット数も、メディアタイトルの再生中に変化しうる。最適に符号化されたメディアシーケンスがCBR VBV制約に適合する場合には、各フレームの符号化に使用されるビット数の変動は限定され、エンドポイントデバイスは、メディアタイトルをより適切にバッファリングし、再生することができるようになる。
【0024】
一方、最適に符号化されたメディアシーケンスがCBR VBV制約に適合しない場合には、各フレームの符号化に使用されるビット数の変動により、メディアタイトルの再生中に、送信バッファがアンダーフローしかつ/またはオーバーフローしてしまうおそれがある。その結果、関連付けられた視聴体験に悪影響を及ぼす再生の中断が発生するおそれがある。例えば、メディアタイトルの再生中の異なる時点で、送信バッファは、送信バッファが排出されたよりも速く再充填され、その結果、オーバーフローするおそれがある。送信バッファがオーバーフローした場合には、後続のフレームがドロップされ、メディアタイトルの再生が中断される場合がある。
【0025】
一方、開示された技術により、メディアストリーミングサービスプロバイダは、送信バッファ制約に従って、所定のメディアタイトルのサブシーケンスベースの符号化を実行することができる。最適に符号化されたメディアシーケンスに含まれる各符号化されたサブシーケンスは、送信バッファ制約に従って、潜在的に異なる最適化された符号化ポイントで個別に符号化される。その結果、開示された技術は、先行技術のサブシーケンスベースの符号化技術と比較して、再生中断の可能性を低減しながら、モノリシック符号化技術に関連付けられた符号化の非効率性を低減することができる。
【0026】
幾つかの実施形態では、バッファベースの符号化アプリケーションは、複数の符号化ポイントに基づいて、各サブシーケンスについての複数の符号化されたサブシーケンスを生成する。ついで、バッファベースの符号化アプリケーションは、符号化されたサブシーケンスおよび送信バッファ制約に基づいて、メディアタイトルについての再生順序で、符号化されたメディアシーケンスをインクリメントに生成する。より正確には、n回目の反復の間、バッファベースの符号化アプリケーションは、0番目のサブシーケンスから(n-1)番目のサブシーケンスまでにわたる、以前に生成された符号化されたメディアシーケンスを、n番目のサブシーケンスに関連付けられた符号化されたサブシーケンスと結合する。結果として生じる符号化されたメディアシーケンスは、0番目のサブシーケンスからn番目のサブシーケンスにわたる。
【0027】
バッファベースの符号化アプリケーションが各符号化されたメディアシーケンスを生成する際に、バッファベースの符号化アプリケーションは、送信バッファのバッファ占有率を追跡する。バッファベースの符号化アプリケーションが、特定の符号化されたメディアシーケンスについてのバッファ占有率の変動が送信バッファのサイズを超えると判定された場合には、バッファベースの符号化アプリケーションは、符号化されたメディアシーケンスを破棄する。また、バッファベースの符号化アプリケーションは、平均ビットレートと全体的な視覚品質との間の最適に達しないトレードオフに関連付けられた任意の符号化されたメディアシーケンスも廃棄する。それぞれがメディアタイトルの長さにわたる符号化されたメディアシーケンスを生成した後、バッファベースの符号化アプリケーションは、最適に符号化されたメディアシーケンスとして、最高の全体的な視覚品質を有する符号化されたメディアシーケンスを選択する。
【0028】
先行技術に対する開示された技術の1つの利点および技術的進歩は、最適に符号化されたメディアシーケンスが個別に符号化されたサブシーケンスのセットおよび送信バッファ制約に基づいて、再生順序でインクリメントに生成されることである。各構成要素の符号化されたサブシーケンスは、異なる符号化ポイントに関連付けられうるため、メディアタイトルの最適に符号化されたバージョンの全体的な視覚品質レベルは、通常、同じ平均ビットレートに関連付けられたメディアタイトルのモノリシックに符号化されたバージョンと比較して向上する。さらに、送信バッファ制約に適合しない符号化されたメディアシーケンスを破棄することにより、最適に符号化されたメディアシーケンスが送信バッファ制約に適合することが効率的に保証される。その結果、メディアタイトルをエンドポイントデバイスにストリーミングする際の送信バッファ制限に起因する視聴経験の劣化の可能性は、先行技術のサブシーケンスベースの符号化技術と比較して低減される。
【0029】
システムの概要
図1は、本発明の1つ以上の態様を実装するように構成されたシステム100の概念図である。示されているように、システム100は、限定されないが、任意の数の計算インスタンス110およびクラウド160を含む。一般的には、クラウド160は、カプセル化された共有リソース、ソフトウェア、データなどを含む。説明の目的で、同様のオブジェクトの複数のインスタンスは、オブジェクトを識別する参照符号および必要な場合にはインスタンスを識別する括弧付きの符号により示される。
【0030】
任意の数の計算インスタンス110は、クラウド160の外部に存在してもよく、一方、他の計算インスタンス110は、クラウド160の内部に存在してもよい。種々の実施形態では、システム100の任意の数のコンポーネントを、複数の地理的位置にわたって分散させることができる。さらに、システム100の任意の数のコンポーネントを、任意の組み合わせで、1つ以上のスタンドアロンデバイス、分散コンピューティング環境またはクラウド160に含ませるかまたはそれらにわたって分散させることができる。
【0031】
示されているように、各計算インスタンス110は、限定されないが、プロセッサ112およびメモリ116を含む。プロセッサ112は、命令を実行可能な任意の命令実行システム、装置またはデバイスであってよい。例えば、プロセッサ112は、中央処理装置(CPU)、グラフィック処理装置(GPU)、コントローラ、マイクロコントローラ、ステートマシンまたはそれらの任意の組み合わせを備えることができる。代替的な実施形態では、各計算インスタンス110は、任意の数のプロセッサ112を含むことができる。
【0032】
メモリ116は、計算インスタンス110のプロセッサ112により使用されるためのコンテンツ、例えばソフトウェアアプリケーションおよびデータを記憶する。メモリ116は、1つ以上のローカルもしくはリモートで容易に利用可能なメモリ、例えば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フロッピーディスク、ハードディスクまたは任意の他の形態のデジタル記憶装置であってよい。幾つかの実施形態では、記憶装置(図示せず)は、メモリ116を補足しまたは置き換えることができる。記憶装置は、プロセッサ112にアクセス可能な任意の数およびタイプの外部メモリを含むことができる。例えば、限定されないが、記憶装置は、セキュアデジタルカード、外部フラッシュメモリ、ポータブルコンパクトディスク読み出し専用メモリ(CD-ROM)、光学記憶デバイス、磁気記憶デバイスまたは前述のものの任意の適切な組み合わせを含むことができる。
【0033】
一般的には、計算インスタンス110は、1つ以上のアプリケーションを実装するように構成される。説明の目的のためのみであるが、各アプリケーションは、単一の計算インスタンス110のメモリ116に存在し、単一の計算インスタンス110のプロセッサ112上で実行されるように示されている。ただし、当業者に理解されるであろうように、各アプリケーションの機能は、任意の数の計算インスタンス110のメモリ116に存在し、任意の数の計算インスタンス110のプロセッサ112上で任意の組み合わせで実行される任意の数の他のアプリケーションにわたって分散させることができる。さらに、任意の数のアプリケーションの機能を、単一のアプリケーションまたはサブシステムに統合することができる。
【0034】
示されていないが、メディアストリーミングサービスは、一定範囲の種々のエンドポイントデバイスで視聴することができるメディアタイトルのライブラリへのアクセスを提供する。メディアタイトルのライブラリは、ソースメディアシーケンス122に関連付けられたメディアタイトルを含むが、これに限定されない。各エンドポイントデバイスは、限定されないが、帯域幅およびレイテンシに影響を及ぼす種々の接続条件下で、メディアストリーミングサービスに接続する場合がある。加えて、各種のエンドポイントデバイスは、メディアタイトルをエンドユーザに出力するための異なるハードウェアを含む場合がある。例えば、所定のエンドポイントデバイスは、特定のスクリーンサイズおよび特定のスクリーン解像度を有するディスプレイスクリーンを含む場合がある。
【0035】
本明細書において先に説明したように、多くの実施形態では、メディアストリーミングサービスに接続するエンドポイントデバイスは、エンドポイントアプリケーションを実行し、このアプリケーションにより、エンドポイントデバイスの接続条件およびプロパティに基づいて、所定のメディアタイトルについて、エンドポイントデバイスへのストリーミングに適したメディアタイトルの符号化されたバージョンが決定される。より具体的には、エンドポイントアプリケーションは、バッファリングまたは再バッファリングにより再生の中断を回避しながら、エンドポイントデバイス上のメディアタイトルの再生中に最良の視覚品質に関連付けられたメディアタイトルの特定の符号化されたバージョンを選択することを試みる。
【0036】
計算インスタンス110は、ストリーミング用のメディアタイトルの符号化されたバージョンを生成するように構成されている。より正確には、計算インスタンス110は、ソースメディアシーケンス122に基づいて、最適に符号化されたメディアシーケンス180を生成するように構成されている。ソースメディアシーケンス122は、限定されないが、メディアタイトルに関連付けられた任意の量およびタイプのメディアコンテンツを含む。メディアコンテンツの例は、幾つか例を挙げると、長編映画、TV番組のエピソードおよび音楽ビデオの任意の部分(全部を含む)を含むが、これらに限定されない。最適に符号化されたメディアシーケンス180は、メディアタイトルの事前に生成された符号化されたバージョンであり、ソースメディアシーケンス122に含まれるメディアコンテンツから導出された符号化されたメディアコンテンツを含むが、これに限定されない。
【0037】
本明細書において先に詳細に説明したように、所定のメディアタイトルに関連付けられたメディアコンテンツの複雑さおよびタイプは、多くの場合に、メディアタイトルにわたって変化する。従来のモノリシック符号化技術を使用すると、メディアコンテンツの符号化に使用される解像度およびレート制御値は、メディアタイトルにわたって変化しない。本明細書において言及するように、「レート制御値」は、関連付けられたレート制御モードでメディアコンテンツに対して符号化演算を実行する際に、エンコーダがどのようにビットを割り当てるかの指定に使用されるレート制御パラメータのための値である。レート制御パラメータの一例は、量子化パラメータ(QP)である。その結果、メディアタイトルの比較的単純な部分を符号化することは、目標視覚品質を満たすために必要であるよりも多くの計算リソースおよび記憶リソースを消費する場合がある。とりわけ、このような符号化の非効率性は、計算リソースおよび記憶リソースを浪費し、エンドポイントデバイスへのメディアタイトルの符号化されたバージョンのストリーミングに必要とされる帯域幅を増大させる。
【0038】
これらのタイプの符号化の非効率性を低減するために、従来のサブシーケンスベースの符号化技術は、解像度およびレート制御値がメディアタイトルにわたって変化するメディアタイトルの符号化されたバージョンを生成する。しかしながら、従来のサブシーケンスベースの符号化技術の1つの制限は、メディアタイトルの符号化されたバージョンがエンドポイントデバイスへの送信およびエンドポイントデバイスでのバッファリングに多くの場合に関連付けられる送信バッファ制約に必ずしも適合しないことである。その結果、これらの符号化されたメディアタイトルが再生のためにエンドポイントデバイスにストリーミングされた場合に、視聴体験を中断する再生の中断、例えばフリーズフレームおよびフリーズドロップが発生するおそれがある。
【0039】
より正確には、メディアタイトルの符号化されたバージョンのストリーミング中に、符号化されたビットがエンドポイントデバイスに関連付けられたデコーダに到着すると、符号化されたビットは送信バッファに記憶される。メディアタイトルの特定のフレームを表示する一部として、デコーダは、関連付けられた符号化されたビットを送信バッファから削除する。各フレームの符号化に使用されるビット数はメディアタイトルにわたって変化しうるため、送信バッファが記憶する符号化されたビット数も、メディアタイトルの再生中に変化しうる。メディアタイトルの符号化されたバージョンが関連する関連付けられた送信バッファ制約に適合する場合には、各フレームの符号化に使用されるビット数の変動は制限され、エンドポイントデバイスは、メディアタイトルをより適切にバッファリングし、再生することができるようになる。
【0040】
一方、メディアタイトルの符号化されたバージョンが関連する送信バッファ制約に適合していない場合には、各フレームの符号化に使用される符号化されたビット数の変動により、送信バッファがオーバーフローしまたはアンダーフローするおそれがある。送信バッファのオーバーフローおよびアンダーフローは、再生の中断、例えばフリーズフレームおよびフリーズドロップを引き起こすおそれがあり、これらは、これらの符号化されたメディアタイトルが再生のためにエンドポイントデバイスにストリーミングされた際に、視聴体験を中断してしまう。
【0041】
個別のサブシーケンスの符号化
先行技術と比較して、エンドポイントデバイスへのメディアタイトルのストリーミング中の視聴体験の品質を包括的に向上させるために、システム100は、限定されないが、サブシーケンスベースの符号化サブシステム120を含む。サブシーケンスベースの符号化サブシステム120は、計算インスタンス110(0)のメモリ116に存在し、計算インスタンス110(0)のプロセッサ112上で実行される。
【0042】
サブシーケンスベースの符号化サブシステム120は、送信バッファ制約170に基づいて、最適に符号化されたメディアシーケンス180を生成する。送信バッファ制約170は、限定されないが、送信レート172、バッファサイズ174および制約タイプ176を含む。送信レート172は、符号化されたビットがエンドポイントデバイスに送信されるレートを指定する。バッファサイズ174は、エンドポイントデバイスに関連付けられた送信バッファの最小サイズを指定する。制約タイプ176は、符号化されたビットがストリーミング中にどのように送信されかつ/または記憶されるかを指定する。代替的な実施形態では、システム100は、任意の技術的に実現可能な方式で指定された任意の数およびタイプの送信バッファ制約170を含むことができる。このような幾つかの実施形態では、バッファベースの符号化アプリケーション140は、全ての送信バッファ制約170に基づいて、符号化されたメディアシーケンス180を生成する。
【0043】
1つの一般的な制約タイプ176は、一定のビットレート(CBR)ビデオバッファベリファイア(VBV)制約である。CBR VBV制約は、送信レート172で、最小バッファサイズ174の送信バッファへの符号化されたビットの連続送信を指定する。その結果、送信バッファがフルになった場合には、エンドポイントデバイスは、送信された符号化されたビットの一部を記憶できなくなる。当業者には理解されるであろうように、CBR VBV制約は、通常、TV放送で使用されるような一定の帯域幅チャネルを介してストリーミングされるメディアタイトルの符号化されたバージョンの要件である。
【0044】
別の一般的な制約タイプ176は、可変ビットレート(VBR)VBV制約である。VBR VBV制約は、送信レート172で最小バッファサイズ174の送信バッファへの符号化されたビットの条件付き送信を指定する。送信バッファがフルでない場合には、符号化されたビットの送信が進行する。一方、送信バッファがフルである場合には、符号化されたビットの送信は、送信バッファがフルでなくなるまで一時停止する。光学ディスク記憶装置(例えば、Blu-Rayプレーヤ)を含む幾つかのエンドポイントデバイスは、メディアタイトルのシームレスな再生を保証するために、メディアタイトルの符号化されたバージョンがVBR VBV制約に適合することを必要とする。
【0045】
特に、アダプティブストリーミングで使用される幾つかのハードウェアベースのエンドポイントデバイスでは、送信バッファのプリバッファリング能力のレベルにおける制限のために、メディアタイトルの符号化されたバージョンがVBV制約に適合することが求められる。アダプティブストリーミングでは、エンドポイントデバイスは、メディアタイトルの再生中に、メディアタイトルの異なる符号化されたバージョン間で切り替えることができる。アダプティブストリーミングを容易にするために、本明細書に記載された任意の数の技術を、異なる送信バッファ制約170に基づいて複数回実行して、複数の最適に符号化されたメディアシーケンス160を生成することができる。代替的な実施形態では、サブシーケンスベースの符号化サブシステム120を、送信バッファ制約170のセットに基づいて、最適に符号化されたメディアシーケンス180のセットを生成するように修正することができる。このような実施形態では、各最適に符号化されたメディアシーケンス180(x)が、異なる送信バッファ制約170(x)に適合する。
【0046】
示されているように、サブシーケンスベースの符号化サブシステム120は、限定されないが、サブシーケンス分析器130およびバッファベースの符号化アプリケーション140を含む。サブシーケンス分析器130は、ソースメディアシーケンス122を任意の数のサブシーケンス132(0)~132(S)に分割する。サブシーケンス132は共に、ソースメディアシーケンス122にわたる重複しない連続したフレームのセットである。フレームの各セットは、ピクチャのグループ(GOP)、フレームのシーケンス、フレームの複数のシーケンスなどを含む、各種の異なる構成を表すことができる。例えば、幾つかの実施形態では、各サブシーケンス132は、ソースメディアシーケンス122に含まれる異なるショットである。本明細書で言及するように、「ショット」は、通常、同様の空間-時間特性を有し、中断されない期間にわたって実行されるフレームのシーケンスである。
【0047】
ソースメディアシーケンス122を受信すると、サブシーケンス分析器130は、任意の数およびタイプの基準に基づいて、ソースメディアシーケンス122に対して任意の数の分析演算を実行して、サブシーケンス132を決定する。例えば、種々の実施形態では、サブシーケンス分析器130は、一貫性メトリックが指定された範囲内にあるフレームのセットを識別するように構成されていてよい。他の実施形態では、
図1に示されているように、サブシーケンス分析器130は、任意の数のショットチェンジ134に基づいて、サブシーケンス132を決定する。
【0048】
より具体的には、サブシーケンス分析器130は、ソースメディアシーケンス122を、クラウド160に存在するショット検出器124に送信する。ショット検出器124は、ソースメディアシーケンス122に基づいて、任意の数のショット検出アルゴリズムを実行して、ショットチェンジ134を識別する。ショット検出アルゴリズムの幾つかの例は、マルチスケール絶対差分和アルゴリズム、動き補償残留エネルギアルゴリズム、差分アルゴリズムのヒストグラム、ヒストグラムアルゴリズムの差分などを含むが、これらに限定されない。ショットチェンジ134はそれぞれ、異なるショットペア間の境界を指定する。ついで、ショット検出器124は、ショットチェンジ134をサブシーケンス分析器130に送信する。その後、サブシーケンス分析器130は、ショットチェンジ134に基づいて、ソースメディアシーケンス122に対して分割演算を実行して、サブシーケンス132を決定する。
【0049】
幾つかの実施形態では、サブシーケンス分析器130および/またはサブシーケンスベースの符号化サブシステム120は、サブシーケンス132を生成することの一部として、任意の数およびタイプの追加の演算を実行することができる。例えば、種々の実施形態では、サブシーケンス分析器130は、ソースメディアシーケンス122から無関係なピクセルを除去する。例えば、サブシーケンス分析器130は、ソースメディアシーケンス122の境界セクションに沿って黒いバーに含まれるピクセルを除去することができる。
【0050】
種々の実施形態では、サブシーケンスベースの符号化サブシステム120により、各サブシーケンス132の最初のフレームが符号化演算中にキーフレームとして符号化されることが保証される。一般的な問題として、符号化されたメディアシーケンスに含まれる同じサブシーケンス132からの「キーフレーム」および後続の全てのフレームが、符号化されたメディアシーケンスに含まれる任意の進行中のフレームとは無関係に復号化される。
【0051】
サブシーケンスベースの符号化サブシステム120により、異なるサブシーケンス132の異なる初期フレームが、任意の技術的に実現可能な方式で、キーフレームとして符号化されることを保証できる。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、メディアコンテンツを符号化する際に、キーフレーム位置リスト(図示せず)に基づいて、キーフレームとしてフレームを符号化するように、符号化アプリケーション162を構成する。他の実施形態では、バッファベースの符号化アプリケーション140および/または符号化アプリケーション162は、メディアコンテンツを符号化する際に、任意の数の符号化演算を実行して、異なるサブシーケンス132の異なる初期フレームをキーフレームとして符号化することができる。
【0052】
当業者には理解されるであろうように、再生中に、ソースメディアシーケンス122に関連付けられたメディアタイトルは、任意の数の関連する基準に基づいて、視聴体験を最適化するために、位置合わせされたキーフレームにおいて、異なる最適に符号化されたメディアシーケンス180の復号化されたバージョン間で切り替え可能である。関連する基準の例は、現在の接続帯域幅、現在の接続レイテンシ、次のサブシーケンス132のコンテンツなどを含む。
【0053】
示されているように、バッファベースの符号化アプリケーション140は、サブシーケンス132および送信バッファ制約170に基づいて、最適に符号化されたメディアシーケンス180を生成する。最適に符号化されたメディアシーケンス180は、サブシーケンス132(0)~132(S)のそれぞれに関連付けられたS+1個の符号化されたサブシーケンス(
図1には図示せず)を含むが、これに限定されない。各符号化されたサブシーケンスは、関連付けられたサブシーケンス132に含まれるメディアコンテンツから導出された符号化されたメディアコンテンツを含む。
【0054】
図2に関連してより詳細に説明するように、各サブシーケンス132につき、バッファベースの符号化アプリケーション140は、符号化ポイントリストに基づいて、複数の符号化されたサブシーケンスを生成する。符号化ポイントリストは、任意の数の符号化ポイントを含むことができる。各符号化ポイントは、限定されないが、解像度およびレート制御値を含む。バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で符号化されたサブシーケンスを生成することができる。さらに、一般的な問題として、バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、所定の解像度および所定のレート制御値に基づいて、ビデオコンテンツから導出された符号化されたビデオコンテンツを生成することができる。
【0055】
例えば、幾つかの実施形態では、所定のサブシーケンス132および所定の符号化ポイントに対応する符号化されたサブシーケンスを生成するために、バッファベースの符号化アプリケーション140は、解像度に基づいて、サブシーケンスに対してサンプリング演算を実行して、サンプリングされたサブシーケンスを生成する。ついで、バッファベースの符号化アプリケーション140は、サンプリングされたサブシーケンスをレート制御値で符号化して、符号化されたサブシーケンスを生成するように、符号化アプリケーション162を構成する。
【0056】
示されているように、符号化アプリケーション162はクラウド160に存在し、1つ以上の並列エンコーダ164を介して符号化演算を効率的に実行するように構成されている。各並列エンコーダ164は、任意の数の計算インスタンス110を含むことができる。代替的な実施形態では、バッファベースの符号化アプリケーション140が符号化演算を実行することができ、システム100は、符号化アプリケーション162を省略することができる。同じまたは他の実施形態では、システム100は、サンプリングアプリケーションを含むことができ、バッファベースの符号化アプリケーション140は、サンプリング演算を実行するように、サンプリングアプリケーションを構成することができる。
【0057】
種々の実施形態では、バッファベースの符号化アプリケーション140は、任意の組み合わせかつ任意の技術的に実現可能な方式で、任意のレベルの粒度(例えば、フレームごと、サブシーケンス132ごと、ソースメディアシーケンス122ごとなど)でサンプリング演算および符号化演算を実行することができる。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、所定の解像度に基づいて、ソースメディアシーケンス122に対してサンプリング演算を実行して、サンプリングされたメディアシーケンスを生成することができる。その後、解像度に関連付けられた各符号化ポイントについて、バッファベースの符号化アプリケーション140は、関連付けられたレート制御値で、関連付けられたサブシーケンス132に対応するサンプリングされたメディアコンテンツを符号化するように、符号化アプリケーション162を構成することができる。
【0058】
各符号化されたサブシーケンスについて、バッファベースの符号化アプリケーション140は、ビットレート、クオリティスコアおよび歪みレベルを計算する。バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、所定の符号化されたサブシーケンスについてのビットレート、クオリティスコアおよび歪みレベルを計算することができる。ついで、各符号化されたサブシーケンスについて、バッファベースの符号化アプリケーション140は、サブシーケンスエンコードポイント(
図1には図示せず)を生成する。
図4に関連してより詳細に説明するように、各サブシーケンスエンコードポイントは、限定されないが、符号化されたサブシーケンス、関連付けられた符号化ポイント、符号化されたサブシーケンスのビットレート、符号化されたサブシーケンスのクオリティスコアおよび符号化されたサブシーケンスの歪みレベルを含む。
【0059】
各サブシーケンス132(x)につき、バッファベースの符号化アプリケーション140は、サブシーケンス132(x)に関連付けられたサブシーケンスエンコードポイントに基づいて、異なる凸包を生成する。このようにして、所定のサブシーケンス132(x)に関連付けられた凸包は、サブシーケンス132(x)に関連付けられた任意の数のサブシーケンスエンコードポイントを含む。一般的には、所定のサブシーケンス132について、関連付けられた凸包に含まれるサブシーケンスエンコードポイントは、異なる歪みレベルについてのビットレートを最小化する。
【0060】
図2および
図7に関連してより詳細に説明するように、バッファベースの符号化アプリケーション140は、時間的再生順序で各凸包を反復的に処理して、メディアエンコードポイントの異なる関連付けられたグローバル凸包を生成する。説明の目的のためのみであるが、「再生順序」は、エンドポイントデバイスがサブシーケンス132(0)からサブシーケンス132(S)までのサブシーケンス132を再生する順序に対応する。
【0061】
i番目のグローバル凸包内の各メディアエンコードポイントは、0番目のサブシーケンスからi番目のサブシーケンスにわたるメディアタイトルの一部に関連付けられる。特に、各メディアエンコードポイントは、異なる符号化されたメディアシーケンスに関連付けられる。各符号化されたメディアシーケンスは、(i+1)個の符号化されたサブシーケンスを含むが、これに限定されない。この場合、各符号化されたサブシーケンスは、サブシーケンス132(0)~132(i)に関連付けられた凸包の異なる1つに含まれる。重要なことに、i番目のグローバル凸包に含まれる各メディアエンコードポイントは、送信バッファ制約170に従って、異なる全体的歪みレベルについての平均ビットレートを最小化する。
【0062】
バッファベースの符号化アプリケーション140は、再生順序において最後に発生するサブシーケンス132(S)に関連付けられたグローバル凸包に基づいて、最適に符号化されたメディアシーケンス180を決定する。サブシーケンス132(S)に関連付けられたグローバル凸包は、本明細書では「最終的な」凸包とも称される。バッファベースの符号化アプリケーション140は、最終的なグローバル凸包に関連付けられた符号化されたメディアシーケンスの平均ビットレートを比較し、最適に符号化されたメディアシーケンス180を、最高平均ビットレートを有する符号化されたメディアシーケンスに等しくセットする。
【0063】
当業者には理解されるであろうように、最適に符号化されたメディアシーケンス180は、最終的なグローバル凸包に関連付けられた任意の他の符号化されたメディアシーケンスより高い全体的な品質レベルを有する。その結果、最適化されたメディアシーケンス180は、送信バッファ制約170への適合およびエンドポイントデバイス上でのメディアタイトルの再生中での全体的な視覚品質の最適化の両方を行うメディアタイトルの符号化されたバージョンである。代替的な実施形態では、バッファベースの符号化アプリケーション140は、最終的なグローバル凸包と任意の数およびタイプのメディアメトリックに関連付けられた任意の数およびタイプの基準とに基づいて、任意の技術的に実現可能な方式で、最適に符号化されたメディアシーケンス180を選択することができる。
【0064】
本明細書で言及するように、メディアメトリックは、符号化されたビデオコンテンツ、ビデオコンテンツ、オーディオコンテンツおよび/または符号化されたオーディオコンテンツのうちの1つ以上のプロパティに対応する任意の測定値であってよい。メディアメトリックの幾つかの例は、ビットレート、歪みメトリック、オーディオ品質メトリック、視覚品質メトリックなどを含むが、これらに限定されない。視覚品質メトリックの例は、幾つか例を挙げると、ピーク信号対雑音比(PSNR)、線形ビデオマルチメソッド評価融合((VMAF)メトリック)および調和VMAF(VMAFh)を含むが、これらに限定されない。
【0065】
図2に関連してより詳細に説明するように、バッファベースの符号化アプリケーション140は、場合により、最適に符号化されたメディアシーケンス180および送信バッファ制約170に基づいて、最適化されたプリバッファリング時間182を計算する。一般的には、ストリーミング中、プリバッファリング時間は、メディアタイトルの再生を開始する前にメディアタイトルのストリーミングが開始した後、エンドポイントデバイスが待機する合計時間を指定する。プリバッファリング時間中、送信バッファは、符号化されたビットを記憶し、その結果、エンドポイントデバイスが、メディアタイトルの再生を開始すると、送信バッファは、プリバッファリング時間により決定される初期占有率を有する。
【0066】
最後に、バッファベースの符号化アプリケーション140は、最適に符号化されたメディアシーケンス180および場合により最適化されたプリバッファリング時間182を、エンドポイントデバイスへの配信のためにCDN190に送信する。代替的な実施形態では、バッファベースの符号化アプリケーション140は、最適化されたプリバッファリング時間182、最適に符号化されたメディアシーケンス180および/または任意の数の符号化されたサブシーケンスが任意の技術的に実現可能な方式でエンドポイントデバイスに配信されるようにすることができる。同じまたは他の実施形態では、サブシーケンスベースの符号化アプリケーションに関連付けられた任意の量およびタイプの機能を、任意の数の計算インスタンス110および/または任意の数のエンドポイントデバイスにおいて、任意の技術的に実現可能な方式で実装することができまたはこれらにわたって分散させることができる。
【0067】
説明の目的のためのみであるが、本明細書に記載された技術は、ビデオ符号化の文脈で説明されている。ただし、当業者には理解されるであろうように、本明細書に記載された技術を、ビデオ符号化の代わりにまたはビデオ符号化に加えて、オーディオ符号化を最適化するように修正することができる。例えば、幾つかの実施形態では、オーディオトラックを、「オーディオシーン」に分割することができる。オーディオシーンを、オーディオレンダリングハードウェアを介してサンプリングすることができる。サンプリングされたオーディオシーンを、量子化パラメータおよび/またはビットレート設定により構成されるオーディオエンコーダを介して符号化することができる。符号化されたオーディオシーンのクオリティスコアを、知覚オーディオ品質メトリック、例えば、オーディオ品質の知覚評価(PEAQ)アルゴリズムを介して計算することができる。特に、オーディオエンコーダ、任意の数の関連付けられた構成パラメータ、解像度および/またはレート制御値を、任意の組み合わせで本明細書に記載された技術のいずれかに基づいて、各オーディオシーンについて最適化することができる。
【0068】
さらに、本明細書に記載された技術は、メディアストリーミングの文脈において記載されるが、本明細書に記載された技術を、任意のタイプのメディア消費のための符号化を最適化するように修正することができる。例えば、これらの技術を、オンラインビデオゲーム、スクリーンコンテンツ共有、双方向ビデオ会議、電子通信などのための符号化を最適化するように変更することができる。
【0069】
本明細書に記載された技術は、限定的ではなく例示的であり、本発明のより広い精神および範囲から逸脱することなく変更可能であることに留意されたい。記載された実施形態の範囲および精神から逸脱しない、サブシーケンスベースの符号化サブシステム120、サブシーケンス分析器130、バッファベースの符号化アプリケーション140、ショット検出器124、符号化アプリケーション162およびコンテンツ配信ネットワーク190により提供される機能に対する多くの修正および変更が当業者に明らかであろう。全体として、本明細書で概説された技術は、個別に符号化されたサブシーケンスと任意の数およびタイプの送信バッファ制約とに基づいて、任意の技術的に実現可能な方式で、符号化されたメディアシーケンスを生成することに適用可能である。
【0070】
本明細書に示しているシステム100は例示的なものであり、変形および修正が可能であることが理解されるであろう。例えば、本明細書に記載されたサブシーケンスベースの符号化サブシステム120、サブシーケンス分析器130、バッファベースの符号化アプリケーション140、ショット検出器124、符号化アプリケーション162およびコンテンツ配信ネットワーク190により提供される機能を、任意の数のソフトウェアアプリケーション(1つを含む)、ハードウェアデバイス(例えば、ハードウェアベースのエンコーダ)およびシステム100の任意の数のコンポーネントに統合することができまたはそれらにわたって分散させることができる。さらに、
図1における種々のユニット間の接続トポロジーを、所望に応じて修正することができる。
【0071】
図2は、本発明の種々の実施形態に係る
図1のバッファベースの符号化アプリケーション140のより詳細な図である。示されているように、バッファベースの符号化アプリケーション140は、限定されないが、符号化ポイントリスト210、サブシーケンスエンコードセット220、凸包生成器230、凸包240、サブシーケンスイテレータ250、グローバル凸包260、および選択エンジン290を含む。サブシーケンスエンコードセット220の数は、サブシーケンス132の数に等しい。同様に、凸包240の数は、サブシーケンス132の数に等しい。一般的には、サブシーケンス132(x)は、サブシーケンスエンコードセット220(x)および凸包240(x)に関連付けられる。
【0072】
示されているように、符号化ポイントリスト210は、任意の数の符号化ポイント212(0)~212(P)を含む。
図3に関連してより詳細に説明するように、各符号化ポイント212は、限定されないが、解像度およびレート制御値を含む。代替的な実施形態では、各符号化ポイント212は、任意の技術的に実現可能な方式で、符号化演算に影響を及ぼす任意の数およびタイプのパラメータを指定することができる。例えば、幾つかの実施形態では、各符号化ポイント212は、符号化アプリケーション162に関連付けられた「速度」構成パラメータについての値を指定することができる。
【0073】
演算中、バッファベースの符号化アプリケーション140は、サブシーケンス132(0)~132(S)および符号化ポイントリスト210に基づいて、サブシーケンスエンコードセット220(0)~220(S)を生成する。各サブシーケンスエンコードセット220(0)~220(S)は、限定されないが、サブシーケンスエンコードポイント222(0)~222(P)を含む。各サブシーケンスエンコードセット220に含まれるサブシーケンスエンコードポイント222の数は、符号化ポイントリスト210に含まれる符号化ポイント212の数に等しい。
図4に関連してより詳細に説明するように、各サブシーケンスエンコードポイント222(x)は、限定されないが、関連付けられた符号化ポイント212(x)、符号化されたサブシーケンス、ビットレート、クオリティスコアおよび歪みレベルを含む。
【0074】
サブシーケンス132(x)と符号化ポイント212(y)との各組み合わせについて、バッファベースの符号化アプリケーション140は、対応するサブシーケンスエンコードポイント222(y)を生成し、サブシーケンスエンコードポイント222(y)をサブシーケンスエンコードセット220(x)に追加する。より具体的には、バッファベースの符号化アプリケーション140は、符号化ポイント212(y)に含まれる解像度およびレート制御値でサブシーケンス132(x)を符号化するように、符号化アプリケーション162を構成する。ついで、バッファベースの符号化アプリケーション140は、符号化されたサブシーケンスのビットレート、符号化されたサブシーケンスのクオリティスコアおよび符号化されたサブシーケンスの歪みレベルを計算する。その結果、バッファベースの符号化アプリケーション140は、(S+1)x(P+1)の種々のサブシーケンスエンコードポイント222を生成する。
【0075】
代替的な実施形態では、各サブシーケンス132(x)を、異なる符号化ポイントリスト210(x)に関連付けることができ、符号化ポイントリスト210(x)内の符号化ポイント212の数は、他の符号化ポイントリスト210のいずれかにおける符号化ポイント212の数と異なってもよい。補完的な方式では、サブシーケンスエンコードセット220(x)に含まれるサブシーケンスエンコードポイント222の数は、他のサブシーケンスエンコードセット220のいずれかに含まれるサブシーケンスエンコードポイント222の数と異なっていてもよい。
【0076】
バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、各符号化されたサブシーケンスを生成し、関連付けられたビットレート、関連付けられたクオリティスコアおよび関連付けられた歪みレベルを決定することができる。例えば、幾つかの実施形態では、サブシーケンス132(x)および符号化ポイント212(y)の両方に関連付けられた符号化されたサブシーケンスを生成するために、バッファベースの符号化アプリケーション140は、まず、サンプリング演算を実行して、サンプリングされたサブシーケンスを生成する。より具体的には、バッファベースの符号化アプリケーション140は、符号化ポイント212(y)に含まれる解像度に基づいて、サブシーケンス132(x)をサンプリングして、サンプリングされたサブシーケンスを生成する。その後、バッファベースの符号化アプリケーション140は、符号化アプリケーション162に、符号化ポイント212(y)に含まれるレート制御値を使用してサンプリングされたサブシーケンスを符号化させて、符号化されたサブシーケンスを生成させる。
【0077】
幾つかの実施形態では、符号化されたサブシーケンスのクオリティスコアを決定するために、バッファベースの符号化アプリケーション140は、符号化されたサブシーケンスを復号化して、復号化されたサブシーケンスを生成する。ついで、バッファベースの符号化アプリケーション140は、復号化されたサブシーケンスを目標解像度に再サンプリング(すなわち、アップサンプリングまたはダウンサンプリング)して、エンドポイントデバイスのクラスの表示特性に関連する再構築されたサブシーケンスを生成する。
【0078】
代替的な実施形態では、バッファベースの符号化アプリケーション140は、任意の数の解像度について任意の数のクオリティスコアを計算することができる。例えば、特定のビデオは、3840×2160の解像度で配信されうるが、1920×1080の解像度の多数のディスプレイにより消費されることが意図されうる。別のクラスのエンドポイントデバイス、例えばラップトップコンピュータは、1280×720の解像度で同じビデオを表示することが期待される。さらに別のクラスのエンドポイントデバイス、例えば、タブレットまたはスマートフォンデバイスは、960×540の解像度で同じビデオを表示することが期待される。バッファベースの符号化アプリケーション140は、これらの異なるクラスのエンドポイントデバイスのうちの1つを対応して考慮する際に、品質を評価するために、復号化されたサブシーケンスをこれらの全ての目標解像度にアップサンプリングすることができる。
【0079】
ついで、バッファベースの符号化アプリケーション140は、再構成されたサブシーケンスを分析して、品質メトリック(QM)のクオリティスコアを生成する。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、VMAF(または調和VMAF)アルゴリズムを実装して、関連付けられた再構築されたサブシーケンスに基づいて、各符号化されたサブシーケンスについてのVMAFスコアを生成する。多数のビデオ品質メトリック、例えばVMAFスコアは、異なる目標解像度で計算することができるが、異なる解像度に関連付けられた符号化されたサブシーケンス間で品質を比較する場合、アプリケーションが、復号化後に、再サンプリングのために同じ目標解像度を使用する必要があることは明らかである。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、再構築されたサブシーケンスを生成するために、復号化されたサブシーケンスを1920×1080に再サンプリングする。その後、バッファベースの符号化アプリケーション140は、関連付けられた再構築されたサブシーケンスに基づいて、符号化されたサブシーケンスについてのクオリティスコアを計算する。
【0080】
バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、ビットレートを生成することができる。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、符号化されたサブシーケンスに含まれる符号化されたビットの総数を、関連付けられたサブシーケンス132の長さで除算することができる。同じまたは他の実施形態では、バッファベースの符号化アプリケーション140は、クオリティスコアおよびクオリティスコアを歪みレベルに変換するための任意の技術的に実現可能な技術に基づいて、歪みレベルを計算することができる。例えば、バッファベースの符号化アプリケーション140は、クオリティスコアを反転させて、歪みレベルを決定することができる。別の例では、バッファベースの符号化アプリケーション140が、一定値からクオリティスコアを差し引いて、歪みレベルを決定することができる。
【0081】
各サブシーケンス132(x)について、凸包生成器230は、サブシーケンスエンコードセット220(x)に基づいて、凸包240(x)を生成する。各凸包240(x)は、限定されないが、所定の歪みレベルについてのビットレートを最小化するサブシーケンスエンコードセット220(x)に含まれるサブシーケンスエンコードポイント222を含む。凸包生成器230が、サブシーケンスエンコードセット220(0)に基づいて、凸包240(0)をどのように生成するかの詳細な例は、
図5に関連して説明する。
【0082】
サブシーケンスイテレータ250は、メディアタイトルについての再生順序で、凸包240を順次処理する。より具体的には、0で始まりSで終わる表示iについて、サブシーケンスイテレータ250(i)のインスタンスは、サブシーケンス132(i)に関連付けられた凸包240(i)を処理する。
図7に関連してより詳細に説明するように、サブシーケンスイテレータ250(i)は、グローバル凸包260(i-1)および凸包240(i)に基づいて、グローバル凸包260(i)を生成する。グローバル凸包260(i)は、サブシーケンス132(0)~132(i)に関連付けられ、限定されないが、任意の数のメディアエンコードポイント270を含む。グローバル凸包260(i)に含まれるメディアエンコードポイント270の数は、他のグローバル凸包260のいずれかにおけるメディアエンコードポイント270の数と異なってもよい。
【0083】
図6に関連してより詳細に説明するように、各メディアエンコードポイント270は、限定されないが、サブシーケンスエンコードリスト、符号化されたメディアシーケンス、平均ビットレート、全体的な歪みレベル、現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率を含む。グローバル凸包260(i)に含まれる各メディアエンコードポイント270について、サブシーケンスエンコードリストは、(i+1)個のサブシーケンスエンコードポイントを指定する。より正確には、サブシーケンスエンコードリストは、サブシーケンス132(0)~132(i)のそれぞれについての異なるサブシーケンスエンコードポイントを指定する。符号化されたメディアシーケンスは、限定されないが、サブシーケンスエンコードリストで指定された(i+1)個のサブシーケンスエンコードポイントに含まれる(i+1)個の符号化されたサブシーケンスを含む。平均ビットレートおよび全体的な歪みレベルはそれぞれ、符号化されたメディアシーケンスのビットレートおよび符号化されたメディアシーケンスの歪みレベルを指定する。
【0084】
現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率は、符号化されたメディアシーケンスを送信バッファ制約170に従って例示的なエンドポイントデバイスにストリーミングする際に、例示的な送信バッファの特性を指定する。現在のバッファ占有率は、符号化されたメディアシーケンスが例示的なエンドポイントデバイス上で再生するために復号化される際に、例示的な送信バッファに記憶されるビットの数を指定する。最小バッファ占有率および最大バッファ占有率はそれぞれ、例示的なエンドポイントデバイスへの符号化されたメディアシーケンスのストリーミング中に、例示的な送信バッファに記憶されるビットの最小数および最大数を指定する。
【0085】
示されていないが、グローバル凸包260(0)を生成するために、バッファベースの符号化アプリケーション140は、サブシーケンスイテレータ250(0)を初期化する。より正確には、バッファベースの符号化アプリケーション140は、単一の初期化メディアエンコードポイント270を含む初期グローバル凸包260(-1)を生成する。バッファベースの符号化アプリケーション140は、初期化メディアエンコードポイント270に含まれるサブシーケンスエンコードリストを空のセットに等しくセットし、初期化メディアエンコードポイント270に含まれる符号化されたサブシーケンスをNULLに等しくセットする。バッファベースの符号化アプリケーション140は、初期化メディアエンコードポイント270に含まれる現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率のそれぞれを、バッファサイズ174に等しくセットする。代替的な実施形態では、バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、サブシーケンスイテレータ250(0)を初期化することができる。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、指定されたプリバッファリング時間に基づいて、サブシーケンスイテレータ250(0)を初期化することができる。
【0086】
演算中、グローバル凸包260(i)を生成するために、サブシーケンスイテレータ250(i)は、グローバル凸包260(i-1)に関連付けられたサブシーケンスエンコードリストのそれぞれを、凸包240(i)に含まれるサブシーケンスエンコードポイントのそれぞれと組み合わせて、新たなサブシーケンスエンコードリストを生成する。したがって、グローバル凸包260(i-1)が、N個のメディアエンコードポイント270を含み、凸包240(i)が、M個のサブシーケンスエンコードポイントを含む場合、サブシーケンスイテレータ250(i)は、(N×M)個の新たなサブシーケンスエンコードリストを生成する。
【0087】
各新たなサブシーケンスエンコードリストについて、サブシーケンスイテレータ250(i)は、新たなメディアエンコードポイント270を生成する。より正確には、所定の新たなサブシーケンスエンコードリストについて、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードリスト中で指定されたサブシーケンスエンコードポイントに含まれる種々の符号化されたサブシーケンスを集約して、符号化されたメディアシーケンスを生成する。サブシーケンスイテレータ250(i)は、符号化されたメディアシーケンスに基づいて、平均ビットレートおよび全体的な歪みレベルを計算する。ついで、サブシーケンスイテレータ250(i)は、符号化されたメディアシーケンスおよび送信バッファ制約170に基づいて、現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率を計算する。その後、サブシーケンスイテレータ250(i)は、新たなサブシーケンスエンコードリスト、関連付けられた符号化メディアシーケンス、平均ビットレート、全体的な歪みレベル、現在のバッファ占有率、最小バッファ占有率、および最大バッファ占有率を含む、新たなメディアエンコードポイント270を生成する。サブシーケンスイテレータ250(i)は、新たなメディアエンコードポイント270をメディアエンコードセット(
図2には図示せず)に追加する。
【0088】
その後、サブシーケンスイテレータ250(i)は、送信バッファ制約170に基づいて、メディアエンコードセットに対してフィルタリング演算を実行し、適合するメディアエンコードセット(
図1には図示せず)を生成する。フィルタリング演算の一部として、サブシーケンスイテレータ250(i)は、送信バッファ制約170に適合しないメディアエンコードセットに含まれる任意のメディアエンコードポイント270を破棄する。ついで、サブシーケンスイテレータ250(i)は、平均ビットレートと全体的な視覚品質との間の最適に達しないトレードオフに関連付けられた、適合するメディアエンコードセットに含まれる任意のメディアエンコードポイント270を廃棄して、グローバル凸包260(i)を生成する。
【0089】
重要なことに、サブシーケンス132(0)~132(i)を含むメディアタイトルの部分について、グローバル凸包260(i)に含まれる各メディアエンコードポイント270は、送信バッファ制約170に従って種々の全体的な歪みレベルについての平均ビットレートを最小化する。さらに、グローバル凸包260(i)は、典型的には、関連付けられたメディアエンコードセットより顕著に少ないメディアエンコードポイントを含むため、後続のサブシーケンスメディアエンコードセットのそれぞれに含まれるサブシーケンスエンコードポイントの数が低減される。その結果、後続のグローバル凸包260の生成に必要な時間が最適化される。
【0090】
例えば、メディアエンコードセットが、100個のメディアエンコードポイント270を含み、サブシーケンスイテレータ250(i)が、送信バッファ制約170に基づいて、60個のメディアエンコードポイント270を破棄するものと仮定する。さらに、サブシーケンスイテレータ250(i)は、40個の残りのメディアエンコードポイント270のうちの30個が平均ビットレートと全体的な視覚品質との間の最適に達しないトレードオフに関連付けられたことを決定したと仮定する。結果として得られるグローバル凸包260(i)は、10個のメディアエンコードポイント270を含むことになる。その後、サブシーケンスイテレータ250(i+1)は、グローバル凸包260(i)に含まれる10個のメディアエンコードポイント270を、凸包240(i+1)に含まれるA個のポイントと組み合わせて、(10×A)個のメディアエンコードポイント270を含む新たなメディアエンコードセットを生成することになる。
【0091】
示されているように、選択エンジン290は、グローバル凸包260(S)に基づいて、最適に符号化されたメディアシーケンス180を決定する。本明細書に先に説明したように、グローバル凸包260(S)は、全てのサブシーケンス132(0)~132(S)に関連付けられる。最適化されたメディアシーケンス180を決定するために、選択エンジン290は、グローバル凸包260(S)に含まれるメディアエンコードポイント270の平均ビットレートを比較して、最高平均ビットレートを有する最適化されたメディアエンコードポイント270を決定する。ついで、選択エンジン290は、最適に符号化されたメディアシーケンス180を、最適化されたメディアエンコードポイント270に含まれる符号化されたメディアシーケンスに等しくセットする。
【0092】
当業者には理解されるであろうように、最適に符号化されたメディアシーケンス180は、グローバル凸包260(S)に関連付けられた任意の他の符号化されたメディアシーケンスより高い全体的な品質レベルを有する。その結果、最適化されたメディアシーケンス180は、送信バッファ制約170への適合およびエンドポイントデバイス上でのメディアタイトルの再生中での全体的な視覚品質の最適化の両方を行うメディアタイトルの符号化されたバージョンである。代替的な実施形態では、選択エンジン290は、グローバル凸包260(S)と任意の数およびタイプのメディアメトリックに関連付けられた任意の数およびタイプの基準とに基づいて、任意の技術的に実現可能な方式で、最適に符号化されたメディアシーケンス180を選択することができる。
【0093】
幾つかの実施形態では、サブシーケンスイテレータ250は、メディアエンコードポイント270に含まれる符号化されたメディアシーケンスを生成しない。各メディアエンコードポイント270について、サブシーケンスイテレータ250は、関連付けられたサブシーケンスエンコードリストに基づいて、関連付けられた符号化されたメディアサブシーケンスのプロパティを決定する。特に、サブシーケンスイテレータ250は、サブシーケンスエンコードリストに基づいて、平均ビットレート、全体的な歪みレベル、現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率を計算する。最適化されたメディアエンコードポイント270を選択した後、選択エンジン290は、最適化されたメディアエンコードポイント270に含まれるサブシーケンスエンコードリストに基づいて、最適に符号化されたメディアシーケンス180を生成する。より正確には、選択エンジン290は、最適化されたメディアエンコードポイント270に含まれるサブシーケンスエンコードリストに指定された種々の符号化されたサブシーケンスを集約して、最適に符号化されたメディアシーケンス180を生成する。このようにして、各サブシーケンスエンコードリストは、関連付けられた符号化されたメディアサブシーケンスがどのように生成されるかを指定する「符号化レシピ」である。
【0094】
選択エンジン290は、最適に符号化されたメディアシーケンス180を決定した後、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられているかどうかを判定する。一般的には、プリバッファリング時間は、エンドポイントデバイスがメディアタイトルの再生を開始する前に記憶する符号化されたビットの総数を指定する。選択エンジン290は、送信バッファ制約170が任意の技術的に実現可能な方式で構成可能なプリバッファリング時間に関連付けられているかどうかを判定することができる。
【0095】
例えば、幾つかの実施形態では、制約タイプ176がCRB VBVである場合には、選択エンジン290は、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられていると判定する。そうでない場合、選択エンジン290は、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられていないと判定する。他の実施形態では、選択エンジン290は、グラフィックユーザインターフェース(図示せず)を介して受信されたユーザ入力に基づいて、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられているかどうかを判定する。
【0096】
選択エンジン290が、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられていることを判定した場合には、選択エンジン290は、最適化されたメディアエンコードポイント270に基づいて、最適化されたプリバッファリング時間182を計算する。より正確には、選択エンジン290は、バッファサイズ174と最適化されたメディアエンコードポイント270に含まれる最小バッファ占有率との差に等しい初期バッファ占有率をセットする。ついで、選択エンジン290は、最適化されたプリバッファリング時間182を、初期バッファ占有率と送信レート172との商に等しくセットする。代替的な実施形態では、バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、最適化されたプリバッファリング時間182および/または初期バッファ占有率を計算することができる。ついで、選択エンジン290は、最適に符号化されたメディアシーケンス180と共にエンドポイントデバイスに配信するために、最適化されたプリバッファリング時間182を、コンテンツ配信ネットワーク(CDN)190に送信する。
【0097】
送信バッファ制約170が、構成可能なプリバッファリング時間に関連付けられているかどうかにかかわらず、選択エンジン290は、エンドポイントデバイスへの配信のために、最適に符号化されたメディアシーケンス180をCDN190に送信する。種々の実施形態では、選択エンジン290は、最適に符号化されたメディアシーケンス180に含まれる個々の符号化されたサブシーケンスのそれぞれを識別するように構成されていてもよい。ついで、選択エンジン290は、エンドポイントデバイスへの配信のために、識別された符号化されたサブシーケンスを、CDN190に送信することができる。
【0098】
代替的な実施形態では、選択エンジン290は、技術的に実現可能な方式で、任意の数およびタイプの符号化されたサブシーケンス、構成パラメータなどを計算し、これらをCDN190または任意の数のエンドポイントデバイスに送信することができる。例えば、幾つかの実施形態では、選択エンジン290は、最適化されたプリバッファリング時間182の代わりに、初期バッファ占有率をCDN190に送信することができる。他の実施形態では、選択エンジン290は、最適に符号化されたメディアシーケンス180および場合により最適化されたプリバッファリング時間182を、任意の数のエンドポイントデバイスに、任意の技術的に実現可能な方式で送信することができる。例えば、選択エンジン290は、最適に符号化されたメディアシーケンス180をエンドポイントデバイスにストリーミングする一部として、システムヘッダを介してプリバッファリング時間をシグナリングすることができる。
【0099】
図3は、本発明の種々の実施形態に係る
図2の符号化ポイントリスト210のより詳細な図である。示されているように、符号化ポイントリスト210は、任意の数の符号化ポイント212(0)~212(P)を含む。各符号化ポイント212は、限定されないが、解像度314およびレート制御値316を含む。レート制御値316は、符号化中のビットレートと歪みレベルまたは品質との間のトレードオフを指定する任意のパラメータについての値でありうる。例えば、幾つかの実施形態では、レート制御値316は、ビデオコンテンツを符号化する際に、ビットレートおよび歪みレベルに関して単調な履行を可能にする量子化パラメータ(QP)についての値である。「QP」が高いほど、低品質を犠牲にして、結果として生じるビットレートは低くなる。
【0100】
説明の目的のためのみであるが、解像度314および符号化ポイント212(0)~212(3)、212(P-1)および212(P)についてのレート制御値316を斜体で示す。示されているように、符号化ポイント212(0)は、640×360の解像度314およびレート制御値316 QP=51を含む。符号化ポイント212(1)は、960×540の解像度314およびレート制御値316 QP=51を含む。符号化ポイント212(2)は、1280×720の解像度314およびレート制御値316 QP=51を含む。符号化ポイント212(3)は、1920×1080の解像度314およびレート制御値316 QP=51を含む。符号化ポイント212(P-1)は、1280×720の解像度314およびレート制御値316 QP=0を含む。符号化ポイント212(P)は、1920×1080の解像度314およびレート制御値316 QP=0を含む。
【0101】
示された例示的な符号化ポイント212が示すように、解像度314とレート制御値316との任意の組み合わせは、任意の2つの符号化ポイント212間で異なる場合がある。一般的には、バッファベースの符号化アプリケーション140は、任意の技術的に実現可能な任意の方式で、符号化リスト210を取得しまたは生成することができる。例えば、幾つかの実施形態では、バッファベースの符号化アプリケーション140は、8つの解像度314の順列および符号化アプリケーション162により許可された全てのレート制御値316に基づいて、符号化リスト210を生成することができる。有利には、多種多様な符号化ポイント212のために、バッファベースの符号化アプリケーション140は、各サブシーケンス132についての多種多様な異なる符号化されたサブシーケンスを生成する。
【0102】
図4は、本発明の種々の実施形態に係る
図2のサブシーケンスエンコードセット220のうちの1つのより詳細な図である。サブシーケンスエンコードセット220(0)は、サブシーケンス132(0)に関連付けられる。示されているように、サブシーケンスエンコードセット220(0)は、限定されないが、サブシーケンスエンコードポイント222(0)~222(P)を含む。一般的には、サブシーケンスエンコードセット220に含まれるサブシーケンスエンコードポイント222の数は、符号化ポイントリスト210に含まれる符号化ポイント212の数に等しい。さらに、サブシーケンスエンコードポイント222(x)は、符号化ポイント212(x)に関連付けられる。
【0103】
各サブシーケンスエンコードポイント222は、限定されないが、関連付けられた符号化ポイント212、符号化されたサブシーケンス430、符号化されたサブシーケンス430のビットレート432、符号化されたサブシーケンス430のクオリティスコア434、および符号化されたサブシーケンス430の歪みレベル436を含む。
図2に関連して本明細書に先に説明したように、バッファベースの符号化アプリケーション140は、関連付けられた符号化ポイント212および関連付けられたサブシーケンス132に基づいて、任意の技術的に実現可能な方式で、符号化されたサブシーケンス430を生成することができる。その後、バッファベースの符号化アプリケーション140は、符号化されたサブシーケンス430に基づいて、任意の技術的に実現可能な方式で、ビットレート432、クオリティスコア434、および歪みレベル436を決定することができる。クオリティスコア434は、任意の品質メトリックの値でありうる。
【0104】
説明の目的のためのみであるが、サブシーケンスエンコードポイント222(0)に含まれる符号化ポイント212(0)およびサブシーケンスエンコードポイント222(P)に含まれる符号化ポイント212(P)の例示的な値を斜体で示している。符号化ポイント212(0)は、限定されないが、640×360の解像度314およびレート制御値316 QP=51を含む。したがって、バッファベースの符号化アプリケーション140は、640×360の解像度314およびレート制御値316 QP=51でサブシーケンス132(0)を符号化して、符号化されたサブシーケンス430(0)を生成するように、符号化アプリケーション162を構成する。対照的に、符号化ポイント212(P)は、限定されないが、1920×1080の解像度314およびレート制御値316 QP=0を含む。したがって、バッファベースの符号化アプリケーション140は、1920×1080の解像度314およびレート制御値316 QP=0でサブシーケンス132(0)を符号化して、符号化されたサブシーケンス430(P)を生成するように、符号化アプリケーション162を構成する。
【0105】
図5に、本発明の種々の実施形態に係る
図2の凸包生成器230により生成される例示的な凸包240(0)を示す。特に、凸包生成器230は、サブシーケンスエンコードセット220(0)に基づいて、凸包240(0)を生成する。示されているように、グラフ500は、限定されないが、ビットレート軸510および歪み軸520を含む。
【0106】
演算中、サブシーケンスエンコードセット220(0)に含まれるサブシーケンスエンコードポイント222のそれぞれについて、凸包生成器230は、グラフ500内に対応するプロットされたサブシーケンスエンコードポイント222を生成する。凸包生成器230は、ビットレート軸510に沿ってビットレート432と歪み軸520に沿って歪みレベル436とを位置決めすることにより、所定のサブシーケンスエンコードポイント222をプロットする。ついで、凸包生成器230は、プロットされたサブシーケンスエンコードポイント222を評価して、凸包240(0)を決定する。
【0107】
より具体的には、凸包生成器230は、プロットされたサブシーケンスエンコードポイント222を識別するが、ここで、プロットされたサブシーケンスエンコードポイント222の全てが境界の一方の側(この場合、境界の右側)に存在する境界を形成し、また、任意の2つの連続する識別されてプロットされたサブシーケンスエンコードポイント222が直線で接続され、プロットされた全ての残りのサブシーケンスエンコードポイント222が同じ側に残るようにする。凸包240(0)は、識別されたサブシーケンスエンコードポイント222のセットを含む。
【0108】
説明の目的のためのみであるが、凸包240(0)に含まれるサブシーケンスエンコードポイント222は、グラフ500において十字で示される。一方、残りのサブシーケンスエンコードポイント222は、グラフ500において塗りつぶされた円として示される。特に、サブシーケンスエンコードポイント222(P)は、凸包240(0)に含まれる。一方、サブシーケンスエンコードポイント222(0)は、凸包240(0)に含まれない。
【0109】
当業者であれば、凸包を生成するための多くの技術が数学の分野において周知であり、このような技術の全てが凸包240の生成に実装可能であることを理解するであろう。一実施形態では、凸包生成器230は、機械学習技術を適用して、関連付けられたサブシーケンス132および/またはソースメディアシーケンス122の種々のパラメータに基づいて、凸包240に含まれるサブシーケンスエンコードポイント222を推定する。このようにして、これまでに検討された計算の一部を合理化しかつ/または完全に回避することができる。
【0110】
異なる符号化されたサブシーケンスの結合
図6は、本発明の種々の実施形態に係る
図2のメディアエンコードポイント270のうちの1つのより詳細な図である。説明の目的のためのみであるが、
図6に示されたメディアエンコードポイント270(k)は、サブシーケンス132(0)~132(i)に関連付けられたグローバル凸包260(i)に含まれる。示されているように、メディアエンコードポイント270(k)は、限定されないが、サブシーケンスエンコードリスト610、符号化されたメディアシーケンス630、平均ビットレート632、全体的な歪みレベル636、現在のバッファ占有率650、最小バッファ占有率652、および最大バッファ占有率654を含む。
【0111】
サブシーケンスエンコードリスト610は、限定されないが、エンコード選択620(0)~620(i)を含む。この場合、エンコード選択620の数は、グローバル凸包260(i)に関連付けられたサブシーケンス132の数に等しい。より具体的には、サブシーケンスエンコードリスト610は、グローバル凸包260(i)に関連付けられた各サブシーケンス132(x)についての種々のエンコード選択620(x)を含む。エンコード選択620はそれぞれ、異なるサブシーケンスエンコードポイント222を指定する。一般的には、エンコード選択620(x)は、サブシーケンス132(x)に関連付けられたサブシーケンスエンコードセット220(x)に含まれるサブシーケンスエンコードポイント222のうちの1つを指定する。
【0112】
説明の目的のためのみであるが、エンコード選択620(0),620(1)および620(i)の例示的な値を斜体で示している。エンコード選択620(0)は、サブシーケンスエンコードセット220(0)におけるサブシーケンスエンコードポイント222(5)を指定する。エンコード選択620(1)は、サブシーケンスエンコードセット220(1)におけるサブシーケンスエンコードポイント222(0)を指定する。エンコード選択620(i)は、サブシーケンスエンコードセット220(i)におけるサブシーケンスエンコードポイント222(P)を指定する。
【0113】
符号化されたメディアシーケンス630は、限定されないが、サブシーケンスエンコードリスト610において指定された(i+1)個のサブシーケンスエンコードポイント222に含まれる(i+1)個の符号化されたサブシーケンス430を含む。平均ビットレート632および全体的な歪みレベル636はそれぞれ、符号化されたメディアシーケンス630のビットレートおよび符号化されたメディアシーケンス630の歪みレベルを指定する。サブシーケンスイテレータ250(i)および/またはバッファベースの符号化アプリケーション140は、任意の技術的に実現可能な方式で、符号化されたメディアシーケンス630、平均ビットレート632、および全体的な歪みレベル636を決定することができる。
【0114】
図2に関連して説明したように、現在のバッファ占有率650、最小バッファ占有率652、および最大バッファ占有率654は、バッファサイズ174に等しいサイズを有する例示的な送信バッファの特性を指定する。より正確には、現在のバッファ占有率650は、符号化されたメディアシーケンス630が例示的なエンドポイントデバイス上で再生するために復号化される際に、例示的な送信バッファに記憶されるビット数を指定する。最小バッファ占有率652は、例示的なエンドポイントデバイスへの符号化されたメディアシーケンス630のストリーミング中に例示的な送信バッファに記憶される最小ビット数を指定する。最大バッファ占有率654は、例示的なエンドポイントデバイスへの符号化されたメディアシーケンス630のストリーミング中に例示的な送信バッファに記憶される最大ビット数を指定する。
【0115】
図7は、本発明の種々の実施形態に係る
図2のサブシーケンスイテレータ250(i)のより詳細な図である。演算中、サブシーケンスイテレータ250(i)は、グローバル凸包260(i-1)、凸包240(i)および送信バッファ制約170に基づいて、グローバル凸包260(i)を生成する。説明の目的のためのみであるが、グローバル凸包260(i-1)は、限定されないものの、V個のメディアエンコードポイント270を含む。
図6に関連して説明したように、各メディアエンコードポイント270は、異なるサブシーケンスエンコードリスト610を含む。したがって、グローバル凸包260(i-1)は、V個のサブシーケンスエンコードリスト610に関連付けられる。凸包240(i)は、限定されないが、A個のサブシーケンスエンコードポイント222を含む。示されているように、サブシーケンスイテレータ250(i)は、限定されないが、結合エンジン710、フィルタリングエンジン730およびグローバル凸包生成器750を含む。
【0116】
結合エンジン710は、グローバル凸包260(i-1)、凸包240(i)および送信バッファ制約170に基づいて、メディアエンコードセット720を生成する。まず、結合エンジン710は、グローバル凸包260(i-1)に関連付けられたV個のサブシーケンスエンコードリスト610のそれぞれを、凸包240(i)に含まれるA個のサブシーケンスエンコードポイント222のそれぞれと結合して、(A×V)個の新たなサブシーケンスエンコードリスト610を生成する。サブシーケンスエンコードリスト610(x)をサブシーケンスエンコードポイント222(y)と結合するために、結合エンジン710は、サブシーケンスエンコードポイント222(y)をサブシーケンスエンコードリスト610(x)に追加して、新たなサブシーケンスエンコードリスト610(z)を生成する。特に、グローバル凸包260(i-1)に関連付けられた各サブシーケンスエンコードリスト610は、サブシーケンス132(0)~132(i-1)に関連付けられ、凸包240(i)に含まれる各サブシーケンスエンコードポイント222は、サブシーケンス132(i)に関連付けられる。その結果、各新たなサブシーケンスエンコードリスト610は、サブシーケンス132(0)~132(i+1)に関連付けられる。
【0117】
新たなサブシーケンスエンコードリスト610ごとに、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードリスト610に基づいて、新たなメディアエンコードポイント270を生成し、ついで、新たなメディアエンコードポイント270をメディアエンコードセット720に追加する。より正確には、新たなサブシーケンスエンコードリスト610(z)について、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードリスト610(z)で指定されたサブシーケンスエンコードポイント222に含まれる種々の符号化されたサブシーケンス430を集約して、符号化されたメディアシーケンス630(z)を生成する。その後、サブシーケンスイテレータ250(i)は、符号化されたメディアシーケンス630(z)に基づいて、平均ビットレート632(z)および全体的な歪みレベル636(z)を計算する。サブシーケンスイテレータ250(i)は、任意の技術的に実現可能な方式で、平均ビットレート632(z)および全体的な歪みレベル636(z)を計算することができる。
【0118】
例えば、幾つかの実施形態では、サブシーケンスイテレータ250(i)は、符号化されたメディアシーケンス630(z)に含まれる各符号化されたサブシーケンス430のビットレート432を、関連付けられた持続時間により重み付けして、重み付けされたビットレートを生成する。サブシーケンスイテレータ250(i)は、重み付けされたビットレートを合計し、ついで、結果として生じる重み付けされた合計を、符号化されたメディアシーケンス630(z)の合計持続時間で除算して、平均ビットレート632(z)を計算する。サブシーケンスイテレータ250(i)は、同様の方式で、全体的な歪みレベル636(z)を計算する。
【0119】
代替的な実施形態では、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードリスト610(x)とサブシーケンスエンコードリスト610(z)が導出されたサブシーケンスエンコードポイント222(y)とに基づいて、平均ビットレート632(z)を計算する。より正確には、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードリスト610(x)に関連付けられた平均ビットレート632(x)を、符号化されたメディアシーケンス630(x)の継続時間により重み付けして、重み付けされたメディアビットレートを生成する。同様に、サブシーケンスイテレータ250(i)は、サブシーケンスエンコードポイント222(y)に含まれるビットレート432を、符号化されたサブシーケンス430(y)の持続時間により重み付けして、重み付けされたサブシーケンスビットレートを生成する。サブシーケンスイテレータ250(i)は、重み付けされたメディアビットレートと重み付けされたサブシーケンスビットレートとを合計し、ついで、結果として生じる重み付けされた合計を符号化されたメディアシーケンス630(z)の全持続時間で除算して、平均ビットレート632(x)を計算する。サブシーケンスイテレータ250(i)は、同様の方式で、全体的な歪みレベル636(z)を計算する。
【0120】
サブシーケンスイテレータ250(i)は、符号化されたメディアシーケンス630(z)および送信バッファ制約170に基づいて、現在のバッファ占有率650(z)、最小バッファ占有率652(z)、および最大バッファ占有率654(z)を計算する。現在のバッファ占有率650(z)は、符号化されたメディアシーケンス630(z)が例示的なエンドポイントデバイス上で再生するために復号化される際に、例示的な送信バッファに記憶されるビット数を指定する。最小バッファ占有率652(z)および最大バッファ占有率654(z)はそれぞれ、送信バッファ制約170に従って、例示的なエンドポイントデバイスへの符号化されたメディアシーケンス630(z)のストリーミング中に例示的な送信バッファに記憶されるビットの最小数および最大数を指定する。サブシーケンスイテレータ250(i)は、現在のバッファ占有率650(z)、最小バッファ占有率652(z)および最大バッファ占有率654(z)を、送信バッファ制約170と一致する任意の技術的に実現可能な方式で計算することができる。
【0121】
例えば、幾つかの実施形態では、サブシーケンスイテレータ250(i)は、まず、サブシーケンスエンコードリスト610(x)と新たなサブシーケンスエンコードリスト610(z)が導出されたサブシーケンスエンコードポイント222(y)とに基づいて、現在のバッファ占有率650(z)を計算する。より正確には、サブシーケンスイテレータ250(i)は、排出されるビット数を、サブシーケンスエンコードポイント222(y)に含まれる符号化されたサブシーケンス430(y)に含まれる符号化されたビットの数に等しくセットする。また、サブシーケンスイテレータ250(i)は、再充填ビット数カウントを、送信速度172と符号化されたサブシーケンス430(y)の再生持続時間との積に等しくセットする。ついで、サブシーケンスイテレータ250(i)は、再充填されたビット数から排出されたビット数を差し引いて、サブシーケンスデルタを決定する。
【0122】
サブシーケンスイテレータ250(i)は、潜在的なバッファ占有率を、サブシーケンスデルタとサブシーケンスエンコードリスト610(x)に関連付けられた現在のバッファ占有率650(x)との合計に等しくセットする。制約タイプ176がCBR VBVである場合には、サブシーケンスイテレータ250(i)は、現在のバッファ占有率650(z)を、潜在的なバッファ占有率に等しくセットする。一方、制約タイプ176がVBR VBVである場合には、サブシーケンスイテレータ250(i)は、現在のバッファ占有率650(z)を、バッファサイズ174の最小値および潜在的なバッファ占有率に等しくセットする。
その後、サブシーケンスイテレータ250(i)は、最小バッファ占有率652(z)を、現在のバッファ占有率650(z)の最小値およびサブシーケンスエンコードリスト610(x)に関連付けられた最小バッファ占有率652(x)に等しくセットする。補完的な方式では、サブシーケンスイテレータ250(i)は、最大バッファ占有率654(z)を、現在のバッファ占有率650(z)の最大値およびサブシーケンスエンコードリスト610(x)に関連付けられた最大バッファ占有率654(x)に等しくセットする。
代替的な実施形態では、サブシーケンスイテレータ250は、任意の技術的に実現可能な方式かつ任意の粒度レベルで、現在のバッファ占有率650、最小バッファ占有率652および最大バッファ占有率654を計算することができる。例えば、幾つかの実施形態では、サブシーケンスイテレータ250(i)は、次の連続時間関数(1)、すなわち
【0123】
【0124】
に基づくフレームレベルの粒度で現在のバッファ占有率650を計算する。
【0125】
関数(1)において、O(t)は、時刻tにおけるバッファ占有率であり、O0は、時刻0における初期バッファ占有率であり、tは、時刻であり、Rは、平均フレームレートであり、ΔTは、連続する表示時間の時間間隔(すなわち、フレームレートの逆数)であり、Siは、i番目のフレームの圧縮されたフレームサイズである。
【0126】
示されているように、フィルタリングエンジン730は、メディアエンコードセット720および送信バッファ制約170に基づいて、適合するメディアエンコードセット740を生成する。より正確には、フィルタリングエンジン730は、適合するメディア符号化セット740を空のセットに初期化する。その後、メディアエンコードセット720を含む各メディアエンコードポイント270(z)について、フィルタリングエンジン730は、関連付けられた符号化されたメディアシーケンス630(z)が送信バッファ制約170に適合しているかどうかを判定する。符号化されたメディアシーケンス630(z)が送信バッファ制約170に適合していることをフィルタリングエンジン730が判定した場合には、フィルタリングエンジン730は、メディアエンコードポイント270(z)を、適合するメディアエンコードセット740に追加する。対照的に、符号化されたメディアシーケンス630(z)が送信バッファ制約170に適合していないことをフィルタリングエンジン730が判定した場合には、フィルタリングエンジン730は、メディアエンコードポイント270(z)を、適合するメディアエンコードセット740に追加しない。
【0127】
フィルタリングエンジン730は、符号化されたメディアシーケンス630(z)が任意の技術的に実現可能な方式で送信バッファ制約170に適合しているかどうかを判定することができる。例えば、幾つかの実施形態では、フィルタリングエンジン730は、最大バッファ占有率654(z)と最小バッファ占有率652(z)との間のバッファ差を計算する。バッファ差がバッファサイズ174を超えない場合には、フィルタリングエンジン730は、符号化されたメディアシーケンス630(z)が送信バッファ制約170に適合していると判定する。そうでない場合、フィルタリングエンジンは、符号化されたメディアシーケンス630(z)が送信バッファ制約170に適合していないと判定する。
【0128】
グローバル凸包生成器750は、適合するメディアエンコードセット740に含まれるメディアエンコードポイント270にわたって凸包演算を実行して、グローバル凸包260(i)を生成する。一般的には、グローバル凸包260(i)に含まれる各メディアエンコードポイント270は、種々の全体的な歪みレベル636についての平均ビットレート632を最小化する。グローバル凸包生成器750は、任意の技術的に実現可能な方式で、任意の数およびタイプの凸包演算を実行して、グローバル凸包260(i)を生成することができる。当業者であれば、凸包を生成するための多くの技術が数学の分野で周知であり、このような技術は全て、グローバル凸包260(i)を生成するために実装できることを理解するであろう。
【0129】
例えば、幾つかの実施形態では、適合するメディアエンコードセット740に含まれる各メディアエンコードポイント270について、グローバル凸包生成器750は、グラフ内に対応するプロットされたメディアエンコードポイント270(図示せず)を生成する。グローバル凸包生成器750は、ビットレート軸510に沿った平均ビットレート632と歪み軸520に沿った全体的な歪みレベル636とを位置決めすることにより、所定のメディアエンコードポイント270をプロットする。ついで、グローバル凸包生成器750は、プロットされたメディアエンコードポイント270を評価して、グローバル凸包260(i)を決定する。
【0130】
より具体的には、グローバル凸包生成器750は、プロットされたメディアエンコードポイント270を識別するが、ここで、プロットされたメディアエンコードポイント270の全てが境界の一方の側に存在する境界を形成し、また、任意の2つの連続する識別されたプロットされたメディアエンコードポイント270が直線で接続され、全ての残りのプロットされたメディアエンコードポイント270が同じ側に残るようにする。特に、複数のプロットされたメディアエンコードポイント270がグラフに関して互いに比較的小さい距離内にある場合には、グローバル凸包生成器750は、最高の現在のバッファ占有率650を有するメディアエンコードポイント270を選択する。凸包260(i)は、識別されたメディアエンコードポイント270のセットを含む。
【0131】
図8に、本発明の種々の実施形態に係る
図2のバッファベースの符号化アプリケーション140により生成される例示的なグローバル凸包260(S)および例示的な最適に符号化されたメディアシーケンス180を示す。より具体的には、サブシーケンスイテレータ250(S)は、メディアエンコードポイント270のグローバル凸包260(S)を生成する。この場合、各メディアエンコードポイントは、送信バッファ制約170に適合し、種々の全体的な歪みレベル636についての平均ビットレート632を最小化する。説明の目的で、ビットレート軸510および歪み軸520を含むがこれらに限定されないグラフ900の一部として、
図8に、プロットされたメディアエンコードポイント270を示す。
【0132】
図2に関連して先に説明したように、選択エンジン290は、全てのサブシーケンス132(0)~132(S)に関連付けられたグローバル凸包260(S)に基づいて、最適に符号化されたメディアシーケンス180を決定する。より具体的には、選択エンジン290は、グローバル凸包260(S)に含まれるメディアエンコードポイント270の平均ビットレート632を比較し、最適化されたメディアエンコードポイント270(W)が最高平均ビットレート632を有することを決定する。ついで、選択エンジン290は、最適に符号化されたメディアシーケンス180を、メディアエンコードポイント270(W)に含まれる符号化されたメディアシーケンス630(W)に等しくセットする。
【0133】
当業者には理解されるであろうように、最適に符号化されたメディアシーケンス180は、グローバル凸包260(S)に関連付けられた任意の他の符号化されたメディアシーケンス630より高い全体的な品質レベルを有する。その結果、最適化されたメディアシーケンス180は、送信バッファ制約170への適合およびエンドポイントデバイス上でのメディアタイトルの再生中での全体的な視覚品質の最適化の両方を行うメディアタイトルの符号化されたバージョンである。代替的な実施形態では、選択エンジン290は、グローバル凸包260(S)と任意の数およびタイプのメディアメトリックに関連付けられた任意の数およびタイプの基準とに基づいて、任意の技術的に実現可能な方式で、最適に符号化されたメディアシーケンス180を選択することができる。
【0134】
示されているように、最適に符号化されたメディアシーケンス180は、限定されないが、QP=40で符号化されたサブシーケンス132(0)の960×540バージョン、続いて、QP=11で符号化されたサブシーケンス132(1)の640×360バージョン、続いて、QP=47で符号化されたサブシーケンス132(2)の1280×720バージョン、続いて、QP=26で符号化されたサブシーケンス132(3)の960×540バージョンを含み、QP=2で符号化されたサブシーケンス132(4)の640×360バージョンで終了する。有利には、
図8に示されているように、解像度314およびレート制御値316はそれぞれ、最適に符号化されたメディアシーケンス180に含まれるサブシーケンス132にわたって変化する場合がある。
【0135】
説明の目的のためのみであるが、例示的なグローバル凸包260(S)に関連付けられた制約タイプ176は、CRB VBVである。その結果、選択エンジン290が、最適に符号化されたメディアシーケンス180を決定した後、選択エンジン290は、最適化されたプリバッファリング時間182を計算する。示されているように、選択エンジン290は、初期バッファ占有率を、バッファサイズ174とメディアエンコードポイント270(W)に含まれる最小バッファ占有率652(W)との差に等しくセットする。ついで、選択エンジン290は、最適化されたプリバッファリング時間182を、初期バッファ占有率と送信レート172との商に等しくセットする。代替的な実施形態では、選択エンジン290は、任意の技術的に実現可能な方式で、最適化されたプリバッファリング時間182および/または初期バッファ占有率を計算することができる。
【0136】
図9A~
図9Bに、本発明の種々の実施形態に係るソースメディアタイトルを符号化するための方法ステップのフロー図を示す。方法ステップは、
図1~
図8のシステムを参照して説明されているが、当業者であれば、方法ステップを任意の順序で実装するように構成された任意のシステムが本発明の範囲内にあることを理解するであろう。
【0137】
示されているように、方法900は、ステップ902で開始される。ここでは、サブシーケンス分析器130が、ソースメディアシーケンス122をサブシーケンス132に分割する。ステップ904において、バッファベースの符号化アプリケーション140が、符号化ポイントリスト210に含まれる各符号化ポイント212にわたる各サブシーケンス132を符号化して、符号化されたサブシーケンス430を生成する。代替的な実施形態では、各サブシーケンス132(x)を、異なる符号化ポイントリスト210(x)に関連付けることができる。特定のサブシーケンス132(x)および特定の符号化ポイント212(y)の両方に関連付けられた符号化されたサブシーケンス430を生成するために、バッファベースの符号化アプリケーション140は、関連付けられた解像度314および関連付けられたレート制御値316で、選択されたサブシーケンス132を符号化する。
【0138】
ステップ906では、各符号化されたサブシーケンス430について、バッファベースの符号化アプリケーション140が、ビットレート432、クオリティスコア434、および歪みレベル436を計算する。ステップ906の一部として、バッファベースの符号化アプリケーション140は、新たなサブシーケンスエンコードポイント222を生成する。サブシーケンスエンコードポイント222は、限定されないが、符号化ポイント212、符号化されたサブシーケンス430、ビットレート432、クオリティスコア434、および歪みレベル436を含む。
【0139】
ステップ908では、各サブシーケンス132(x)に対して、凸包生成器230が、関連付けられたサブシーケンスエンコードポイント222に基づいて、異なる凸包240(x)を生成する。特に、解像度314およびレート制御値316は、凸包240(x)に含まれるサブシーケンスエンコードポイント222の間で変化しうる。ステップ910で、バッファベースの符号化アプリケーション140が、単一の初期化メディアエンコードポイント270(-1)を含むように先のグローバル凸包260をセットし、凸包240(0)を選択する。初期化メディアエンコードポイント270(-1)は、限定されないが、空のサブシーケンスエンコードリスト610、NULLの符号化されたメディアシーケンス630、バッファサイズ174の現在のバッファ占有率650、バッファサイズ174の最小バッファ占有率652、およびバッファサイズ174の最大バッファ占有率654を含む。
【0140】
ステップ912では、結合エンジン710が、先のグローバル凸包260および選択された凸包240に基づいて、メディアエンコードセット720を生成する。まず、結合エンジン710は、現在のメディアエンコードセット720を空のセットに初期化する。その後、先のグローバル凸包260に含まれる各メディアエンコードポイント270(x)について、結合エンジン710は、P個の新たなメディアエンコードポイント270をメディアエンコードセット720に追加する。ここで、Pは、選択された凸包240に含まれるサブシーケンスエンコードポイント222の総数である。
【0141】
サブシーケンスエンコードポイント222(y)およびメディアエンコードポイント270(x)の両方に関連付けられた新たなメディアエンコードポイント270を生成するために、結合エンジン710は、サブシーケンスエンコードポイント222(y)をメディアエンコードポイント270(x)に含まれるサブシーケンスエンコードリスト610(x)に追加して、新たなサブシーケンスエンコードリスト610を生成する。新たなサブシーケンスエンコードリスト610は、新たなメディアエンコードポイント270に含まれる。ついで、結合エンジン710は、新たなサブシーケンスエンコードリスト610に基づいて、メディアエンコードポイント270に含まれる新たな符号化されたメディアシーケンス630を生成する。最後に、結合エンジン710は、新たな符号化されたメディアシーケンス630および送信バッファ制約170に基づいて、新たなメディアエンコードポイント270に含まれる平均ビットレート632、全体的な歪みレベル636、現在のバッファ占有率650、最小バッファ占有率652、および最大バッファ占有率654を計算する。
【0142】
ステップ914では、フィルタリングエンジン730が、送信バッファ制約170に基づいて、メディアエンコードセット720に対してフィルタリング演算を実行して、適合するメディアエンコードセット740を生成する。より正確には、フィルタリングエンジン730は、最大バッファ占有率654と最小バッファ占有率652との差がバッファサイズ174より大きいメディアエンコードセット740に含まれるメディアエンコードポイント270を削除する。ステップ916において、グローバル凸包生成器750は、適合するメディアエンコードセット740に基づいて、現在のグローバル凸包260を生成する。
【0143】
ステップ918では、サブシーケンスイテレータ250が、選択された凸包240が最終的な凸包240(S)であり、その結果、ソースメディアシーケンス122に含まれる最終的なサブシーケンス132(S)に関連付けられているかどうかを判定する。ステップ918において、選択された凸包240が最終的な凸包240(S)ではないことをサブシーケンスイテレータ250が判定した場合には、方法900は、ステップ920に進む。ステップ920において、サブシーケンスイテレータ250は、次の凸包240を選択し、先のグローバル凸包260を現在のグローバル凸包260に等しくセットする。ついで、方法900は、ステップ912に戻る。ステップ912において、サブシーケンスイテレータ250は、先のグローバル凸包260および選択された凸包240に基づいて、新たな現在のグローバル凸包260を生成する。
【0144】
一方、ステップ918において、選択された凸包240が最終的な凸包240(S)であることをサブシーケンスイテレータ250が判定した場合には、方法900は、ステップ922に直接に進む。ステップ922では、選択エンジン290が、現在のグローバル凸包260に含まれるメディアエンコードポイント270の最高平均ビットレート632を有するメディアエンコードポイント270を選択する。ステップ924で、選択エンジン290は、最適に符号化されたメディアシーケンス180を、選択されたメディアエンコードポイント270に含まれる符号化されたメディアシーケンス630に等しくセットする。
【0145】
ステップ926で、選択エンジン290は、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられているかどうかを判定する。ステップ926において、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられていないことを選択エンジン290が判定した場合には、方法900は、ステップ928に進む。ステップ928において、選択エンジン290は、エンドポイントデバイスにストリーミングするために、最適に符号化されたメディアシーケンス180をコンテンツ配信ネットワーク190に送信する。ついで、方法900は終了する。
【0146】
一方、ステップ926において、送信バッファ制約170が構成可能なプリバッファリング時間に関連付けられていることを選択エンジン290が判定した場合には、方法900は、ステップ930に直接に進む。ステップ930で、選択エンジン290は、選択されたメディアエンコードポイント270および送信バッファ制約170に基づいて、最適化されたプリバッファリング時間182を計算する。ステップ932において、選択エンジン290は、エンドポイントデバイスにストリーミングするために、最適に符号化されたメディアシーケンス180および最適化されたプリバッファリング時間182をコンテンツ配信ネットワーク190に送信する。ついで、方法900は終了する。
【0147】
まとめると、開示された技術により、送信バッファ制約に適合する最適に符号化されたメディアシーケンスを生成するために、ソースメディアシーケンスの効率的かつ最適な符号化が可能となる。サブシーケンスベースの符号化サブシステムは、限定されないが、サブシーケンス分析器およびバッファベースの符号化アプリケーションを含む。最初に、サブシーケンス分析器は、ソースメディアシーケンスを複数のサブシーケンスに分割する。各サブシーケンスについて、バッファベースの符号化サブシステムは、符号化リストに基づいて、複数の符号化されたサブシーケンスを生成する。符号化リストは、限定されないが、任意の数の符号化ポイントを含む。この場合、各符号化ポイントは、解像度とレート制御値との異なる組み合わせを指定する。
【0148】
各符号化されたサブシーケンスについて、バッファベースの符号化アプリケーションは、異なるサブシーケンスエンコードポイントを生成する。各サブシーケンスエンコードポイントは、限定されないが、関連付けられた符号化されたサブシーケンス、関連付けられた符号化ポイント、符号化されたサブシーケンスのビットレート、符号化されたサブシーケンスのクオリティスコア、および符号化されたサブシーケンスの歪みレベルを含む。その後、各サブシーケンスについて、凸包生成器は、そのサブシーケンスに関連付けられたサブシーケンスエンコードポイントのサブセットを含む凸包を生成する。一般的には、所定のサブシーケンスについて、関連付けられた凸包に含まれるサブシーケンスエンコードポイントは、種々の歪みレベルに対するビットレートを最小化する。
【0149】
ついで、サブシーケンスイテレータは、時間的再生順序でサブシーケンスを反復的に処理して、各サブシーケンスについてのメディアエンコードポイントの異なるグローバル凸包を生成する。n番目のサブシーケンスについて、サブシーケンスイテレータは、送信バッファ制約、メディアエンコードポイントの(n-1)番目のグローバル凸包およびn番目のサブシーケンスに関連付けられたサブシーケンスエンコードポイントのn番目の凸包に基づいて、メディアエンコードポイントのn番目のグローバル凸包を計算する。送信バッファ制約は、限定されないが、送信レート、バッファサイズおよび制約タイプを指定する。各メディアエンコードポイントは、限定されないが、サブシーケンスエンコードリスト、符号化されたメディアシーケンス、平均ビットレート、全体的な歪みレベル、現在のバッファ占有率、最小バッファ占有率および最大バッファ占有率を含む。
【0150】
n番目のグローバル凸包における各メディアエンコードポイントは、0番目のサブシーケンスからn番目のサブシーケンスにわたるメディアタイトルの一部に関連付けられる。n番目のグローバル凸包を生成するために、サブシーケンスイテレータは、(n-1)番目のグローバル凸包に含まれるV個のメディアエンコードポイントのそれぞれを、n番目の凸包に含まれるA個のサブシーケンスエンコードポイントのそれぞれと組み合わせて、(V×A)個のメディアエンコードポイントを含むメディアエンコードセットを生成する。ついで、サブシーケンスイテレータは、送信バッファ制約、最小バッファ占有率および最大バッファ占有率に基づいて、メディアエンコードセットに対してフィルタリング演算を実行し、適合するメディアエンコードセットを生成する。最後に、サブシーケンスイテレータは、平均ビットレートおよび全体的な歪みレベルに基づいて、適合するメディアエンコードセットのサブセットであるn番目のグローバル凸包を生成する。一般的には、0番目のサブシーケンスからn番目のサブシーケンスにわたるメディアタイトルの部分について、n番目のグローバル凸包に含まれるメディアエンコードポイントは、異なる全体的な歪みレベルについての平均ビットレートを最小化する。
【0151】
メディアタイトル全体にわたる最終的なグローバル凸包を生成した後、バッファベースの符号化アプリケーションに含まれる選択エンジンは、最終的なグローバル凸包に含まれるメディアエンコードポイントのうちの1つを、最適化されたメディアエンコードとして選択する。最適化されたメディアエンコードポイントは、最終的なグローバル凸包に含まれる他の全てのメディアエンコードポイントの平均ビットレートより高い平均ビットレートを有する。ついで、選択エンジンは、最適に符号化されたメディアシーケンスを、最適化されたメディアエンコードポイントに含まれる符号化されたメディアシーケンスに等しくセットする。制約タイプが、構成可能なプリバッファリング時間に関連付けられている場合には、選択エンジンは、最適化されたメディアエンコードポイントに含まれるバッファサイズおよび最小バッファ占有率に基づいて、最適化されたプリバッファリング時間を計算する。最後に、選択エンジンは、エンドポイントデバイスへの配信のために、最適に符号化されたメディアシーケンスおよび場合により、最適化されたプリバッファリング時間を、コンテンツ配信ネットワークに送信する。
【0152】
開示された技術の少なくとも1つの利点および技術的進歩は、符号化されたメディアシーケンスが、個別に符号化されたサブシーケンスのセットおよび送信バッファ制約に基づく再生順序でインクリメントに生成されることである。符号化されたメディアシーケンスを生成するために、種々の符号化ポイントを使用して符号化されたサブシーケンスを集約することにより、先行技術のモノリシック符号化技術に典型的に関連付けられた符号化の非効率性が低減される。さらに、グローバル凸包から送信バッファ制約に適合しない符号化されたメディアシーケンスを除外することにより、最適に符号化されたメディアシーケンスが送信バッファ制約に適合することが効率的に保証される。その結果、最適に符号化されたメディアシーケンスの全体的な視覚品質は、エンドポイントデバイス上でのメディアタイトルの再生中の送信バッファ制限に起因する再生中断の可能性を増大させることなく向上する。これらの技術的利点は、先行技術を上回る1つ以上の技術的進歩を提供する。
【0153】
1.幾つかの実施形態では、コンピュータ実装方法が、第1のセットの符号化ポイントおよびメディアタイトルに関連付けられた第1のサブシーケンスに基づいて、サブシーケンスエンコードポイントの第1の凸包を生成するステップと、送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップとを含む。
【0154】
2.前記送信バッファ制約が、一定のビットレートビデオバッファベリファイア(VBV)制約または可変ビットレートVBV制約を含む、条項1記載のコンピュータ実装方法。
【0155】
3.前記コンピュータ実装方法が、前記第1の符号化されたメディアシーケンスに関連付けられた最小バッファ占有率および前記送信バッファ制約に関連付けられたバッファサイズに基づいて、プリバッファリング時間を計算するステップをさらに含む、条項1または2記載のコンピュータ実装方法。
【0156】
4.前記第1のグローバル凸包を生成するステップが、前記第2のグローバル凸包に含まれるメディアエンコードポイントと前記第1の凸包に含まれるサブシーケンスエンコードポイントとの各組み合わせについて、メディアエンコードポイントのセットに含まれる異なるメディアエンコードポイントを生成するステップと、前記送信バッファ制約に基づいて、前記メディアエンコードポイントのセットに対して1回以上のフィルタリング演算を実行して、適合するメディアエンコードポイントのセットを生成するステップと、前記適合するメディアエンコードポイントのセットにわたって、1回以上の凸包演算を実行して、前記第1のグローバル凸包を生成するステップとを含む、条項1から3までのいずれか1つ記載のコンピュータ実装方法。
【0157】
5.前記メディアメトリックがビットレートを含み、前記第1のメディアエンコードポイントを選択するステップは、前記第1のメディアエンコードポイントに関連付けられた第1の平均ビットレートが前記第1のグローバル凸包に含まれる他の全てのメディアエンコードポイントに関連付けられた平均ビットレートより大きいことを判定するステップを含む、条項1から4までのいずれか1つ記載のコンピュータ実装方法。
【0158】
6.前記第1のグローバル凸包を生成するステップが、前記第2のグローバル凸包に含まれる第2のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2の符号化されたメディアシーケンスを生成するステップと、前記第2の符号化されたメディアシーケンスおよび前記送信バッファ制約に関連付けられた送信レートに基づいて、最小バッファ占有率および最大バッファ占有率を計算するステップと、前記最大バッファ占有率と前記最小バッファ占有率との差が前記送信バッファ制約に関連付けられたバッファサイズを超えていないことを判定するステップと、前記差が前記バッファサイズを超えていないと判定されたことに応答して、前記第2の符号化されたメディアシーケンスに関連付けられた第2のメディアエンコードポイントを前記第1のグローバル凸包に追加するステップとを含む、条項1から5までのいずれか1つ記載のコンピュータ実装方法。
【0159】
7.前記第1の凸包を生成するステップが、前記第1のセットの符号化ポイントおよび前記第1のサブシーケンスに基づいて、第1のセットのサブシーケンスエンコードポイントを生成するステップと、前記第1のセットのサブシーケンスエンコードポイントを含む領域を決定するステップと、前記第1のセットのサブシーケンスエンコードポイントに含まれるサブシーケンスエンコードポイントがその第1の側に位置しない、前記領域に関連付けられた境界を識別するステップと、前記境界に沿って位置しない前記第1のセットのサブシーケンスエンコードポイントに含まれる全てのサブシーケンスエンコードポイントを破棄するステップとを含む、条項1から6までのいずれか1つ記載のコンピュータ実装方法。
【0160】
8.前記第1のセットの符号化ポイントに含まれる各符号化ポイントが、解像度とレート制御値との異なる組み合わせを指定する、条項1から7までのいずれか1つ記載のコンピュータ実装方法。
【0161】
9.前記コンピュータ実装方法が、前記メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割するステップをさらに含み、前記複数のサブシーケンスは第1のサブシーケンスを含む、条項1から8までのいずれか1つ記載のコンピュータ実装方法。
【0162】
10.前記メディアタイトルが、ビデオコンテンツおよびオーディオコンテンツのうちの少なくとも一方を含む、条項1から9までのいずれか1つ記載のコンピュータ実装方法。
【0163】
11.幾つかの実施形態では、1つ以上の非一時的コンピュータ可読媒体が、1つ以上のプロセッサにより実行される際に、1つ以上のプロセッサに、第1のセットの符号化ポイントにわたってメディアタイトルに関連付けられた第1のサブシーケンスを符号化して、それぞれが異なる符号化されたサブシーケンスに関連付けられる第1のセットのサブシーケンスエンコードポイントを生成するステップと、前記第1のセットのサブシーケンスエンコードポイントにわたって1つ以上の凸包演算を実行して、少なくとも2つのメディアメトリックに基づいて、サブシーケンスエンコードポイントの第1の凸包を計算するステップと、送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルに関連付けられた1つ以上のサブシーケンスに関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、第1のメディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップとを実行させるための命令を含む。
【0164】
12.前記送信バッファ制約が、送信レートおよびバッファサイズの少なくとも一方を指定する、条項11記載の1つ以上の非一時的コンピュータ可読媒体。
【0165】
13.前記1つ以上の非一時的コンピュータ可読媒体が、前記第1の符号化されたメディアシーケンスに関連付けられた最小バッファ占有率および前記送信バッファ制約に関連付けられたバッファサイズに基づいて、プリバッファリング時間を計算するステップをさらに含む、条項11または12記載の1つ以上の非一時的コンピュータ可読媒体。
【0166】
14.前記第1のグローバル凸包を生成するステップが、前記第2のグローバル凸包に含まれる第3のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2のメディアエンコードポイントを生成するステップと、前記第3のメディアエンコードポイントおよび前記第1の凸包に含まれる第2のサブシーケンスエンコードポイントに基づいて、第4のメディアエンコードポイントを生成するステップと、前記第2のメディアエンコードポイントを、前記送信バッファ制約に基づいて、適合するエンコードポイントのセットに加えるが、前記第4のメディアエンコードポイントを加えないステップと、前記適合するメディアエンコードポイントのセットにわたって、1回以上の凸包演算を実行して、前記第1のグローバル凸包を生成するステップとを含む、条項11から13までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0167】
15.前記第1のメディアメトリックがビットレートを含み、前記第1のメディアエンコードポイントを選択するステップは、前記第1のメディアエンコードポイントに関連付けられた第1の平均ビットレートが前記第1のグローバル凸包に含まれる他の全てのメディアエンコードポイントに関連付けられた平均ビットレートより大きいことを判定するステップを含む、条項11から14までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0168】
16.前記第1のグローバル凸包を生成するステップが、前記第2のグローバル凸包に含まれる第2のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2の符号化されたメディアシーケンスを生成するステップと、前記第2の符号化されたメディアシーケンスおよび前記送信バッファ制約に関連付けられた送信レートに基づいて、最小バッファ占有率および最大バッファ占有率を計算するステップと、前記最大バッファ占有率と前記最小バッファ占有率との差が前記送信バッファ制約に関連付けられたバッファサイズを超えていないことを判定するステップと、前記差が前記バッファサイズを超えていないと判定されたことに応答して、前記第2の符号化されたメディアシーケンスに関連付けられた第2のメディアエンコードポイントを前記第1のグローバル凸包に追加するステップとを含む、条項11から15までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0169】
17.前記第1のグローバル凸包を生成するステップが、前記送信バッファ制約、前記第1の凸包および前記第2のグローバル凸包に基づいて、適合するメディアエンコードポイントのセットを生成するステップと、前記適合するメディアエンコードポイントのセットを含む領域を決定するステップと、前記適合するメディアエンコードポイントのセットに含まれる適合するメディアエンコードポイントがその第1の側に位置しない、前記領域に関連付けられた境界を識別するステップと、前記境界に沿って位置しない前記適合するメディアエンコードポイントのセットに含まれる全ての適合するメディアエンコードポイントを破棄するステップとを含む、条項11から16までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0170】
18.前記第1の符号化されたメディアシーケンスが、第1の符号化されたサブシーケンスおよび第2の符号化されたサブシーケンスを含み、前記第1の符号化されたサブシーケンスが、前記第1のセットの符号化ポイントに含まれる第1の符号化ポイントに関連付けられており、前記第2の符号化されたサブシーケンスが、前記第1の符号化ポイントとは等しくない前記第1のセットの符号化ポイントに含まれる第2の符号化ポイントに関連付けられている、条項11から17までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0171】
19.前記メディアタイトルに関連付けられた前記第1のサブシーケンスが、ショットシーケンスを含む、条項11から18までのいずれか1つ記載の1つ以上の非一時的コンピュータ可読媒体。
【0172】
20.幾つかの実施形態では、システムが、命令を記憶する1つ以上のメモリと、前記1つ以上のメモリに結合された1つ以上のプロセッサであって、前記命令を実行する際に、メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割し、第1のセットの符号化ポイントおよび前記複数のサブシーケンスに含まれる第1のサブシーケンスに基づいて、それぞれが異なる符号化されたサブシーケンスに関連付けられたサブシーケンスエンコードポイントの第1の凸包を生成し、送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成し、メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択し、前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するように構成された1つ以上のプロセッサとを備える。
【0173】
特許請求の範囲のいずれかに列挙された特許請求の範囲の構成要件および/または本願に記載された任意の構成要件のいずれかの任意かつ全ての組み合わせは、任意に、本発明および保護の企図された範囲内に該当する。
【0174】
種々の実施形態の説明を例証の目的で提示してきたが、網羅的であることもまたは開示された実施形態に限定されることも意図するものではない。記載された実施形態の範囲および精神から逸脱しない多くの修正および変形が当業者には明らかであろう。
【0175】
本実施形態の態様は、システム、方法またはコンピュータプログラム製品として具現化することができる。したがって、本開示の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)または本明細書において、全て一般的には「モジュール」または「システム」と称されうるソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとる場合がある。加えて、本開示に記載された任意のハードウェアおよび/またはソフトウェア技術、プロセス、機能、コンポーネント、エンジン、モジュールまたはシステムを、回路または回路のセットとして実装することができる。さらに、本開示の態様は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
【0176】
1つ以上のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってよい。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線または半導体のシステム、装置もしくはデバイスまたは前述のものの任意の適切な組み合わせでありうるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、1つ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラマブル読出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読出し専用メモリ(CD-ROM)、光学記憶デバイス、磁気記憶デバイスまたは前述のものの任意の適切な組み合わせを含むであろう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置またはデバイスによりまたはこれに関連して使用するためのプログラムを収容しまたは記憶することができる任意の有形媒体であってよい。
【0177】
本開示の態様は、本開示の実施形態に係る方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して上で説明した。フローチャート図および/またはブロック図の各ブロックならびにフローチャート図および/またはブロック図におけるブロックの組み合わせは、コンピュータプログラム命令により実装することができると理解されたい。これらのコンピュータプログラム命令は、機械を製造するために、汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供可能である。命令は、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行された際に、フローチャート図および/またはブロック図の1つ以上のブロックで指定された機能/動作の実装が可能となる。このようなプロセッサは、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサまたはフィールドプログラマブルゲートアレイであってよいが、これらに限定されない。
【0178】
図中のフローチャート図およびブロック図は、本開示の種々の実施形態に係るシステム、方法およびコンピュータプログラム製品の可能な構成のアーキテクチャ、機能および演算を示す。この点に関して、フローチャート図またはブロック図における各ブロックは、指定された論理関数を実装するための1つ以上の実行可能命令を含む、モジュール、セグメントまたはコードの一部を表すことができる。また、幾つかの代替的な構成では、ブロック内に記載された関数は、図に記載されている順序から外れて実行される場合があることに留意されたい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよく、または含まれる機能に応じて、場合により逆の順序で実行されてもよい。また、ブロック図および/またはフローチャート図の各ブロックならびにブロック図および/またはフローチャート図におけるブロックの組み合わせは、指定された機能または動作を実行する専用ハードウェアベースのシステムまたは専用ハードウェアとコンピュータ命令との組み合わせにより実装できることに留意されたい。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態1
コンピュータ実装方法であって、前記方法が、
第1のセットの符号化ポイントおよびメディアタイトルに関連付けられた第1のサブシーケンスに基づいて、サブシーケンスエンコードポイントの第1の凸包を生成するステップと、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、
メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップと
を含む、コンピュータ実装方法。
実施形態2
前記送信バッファ制約が、一定のビットレートビデオバッファベリファイア(VBV)制約または可変ビットレートVBV制約を含む、実施形態1記載のコンピュータ実装方法。
実施形態3
前記コンピュータ実装方法が、前記第1の符号化されたメディアシーケンスに関連付けられた最小バッファ占有率および前記送信バッファ制約に関連付けられたバッファサイズに基づいて、プリバッファリング時間を計算するステップをさらに含む、実施形態1記載のコンピュータ実装方法。
実施形態4
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれるメディアエンコードポイントと前記第1の凸包に含まれるサブシーケンスエンコードポイントとの各組み合わせについて、メディアエンコードポイントのセットに含まれる異なるメディアエンコードポイントを生成するステップと、
前記送信バッファ制約に基づいて、前記メディアエンコードポイントのセットに対して1回以上のフィルタリング演算を実行して、適合するメディアエンコードポイントのセットを生成するステップと、
前記適合するメディアエンコードポイントのセットにわたって、1回以上の凸包演算を実行して、前記第1のグローバル凸包を生成するステップと
を含む、実施形態1記載のコンピュータ実装方法。
実施形態5
前記メディアメトリックがビットレートを含み、前記第1のメディアエンコードポイントを選択するステップは、前記第1のメディアエンコードポイントに関連付けられた第1の平均ビットレートが前記第1のグローバル凸包に含まれる他の全てのメディアエンコードポイントに関連付けられた平均ビットレートより大きいことを判定するステップを含む、実施形態1記載のコンピュータ実装方法。
実施形態6
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれる第2のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2の符号化されたメディアシーケンスを生成するステップと、
前記第2の符号化されたメディアシーケンスおよび前記送信バッファ制約に関連付けられた送信レートに基づいて、最小バッファ占有率および最大バッファ占有率を計算するステップと、
前記最大バッファ占有率と前記最小バッファ占有率との差が前記送信バッファ制約に関連付けられたバッファサイズを超えていないことを判定するステップと、
前記差が前記バッファサイズを超えていないと判定されたことに応答して、前記第2の符号化されたメディアシーケンスに関連付けられた第2のメディアエンコードポイントを前記第1のグローバル凸包に追加するステップと
を含む、実施形態1記載のコンピュータ実装方法。
実施形態7
前記第1の凸包を生成するステップが、
前記第1のセットの符号化ポイントおよび前記第1のサブシーケンスに基づいて、第1のセットのサブシーケンスエンコードポイントを生成するステップと、
前記第1のセットのサブシーケンスエンコードポイントを含む領域を決定するステップと、
前記第1のセットのサブシーケンスエンコードポイントに含まれるサブシーケンスエンコードポイントがその第1の側に位置しない、前記領域に関連付けられた境界を識別するステップと、
前記境界に沿って位置しない前記第1のセットのサブシーケンスエンコードポイントに含まれる全てのサブシーケンスエンコードポイントを破棄するステップと
を含む、実施形態1記載のコンピュータ実装方法。
実施形態8
前記第1のセットの符号化ポイントに含まれる各符号化ポイントが、解像度とレート制御値との異なる組み合わせを指定する、実施形態1記載のコンピュータ実装方法。
実施形態9
前記コンピュータ実装方法が、前記メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割するステップをさらに含み、前記複数のサブシーケンスは第1のサブシーケンスを含む、実施形態1記載のコンピュータ実装方法。
実施形態10
前記メディアタイトルが、ビデオコンテンツおよびオーディオコンテンツのうちの少なくとも一方を含む、実施形態1記載のコンピュータ実装方法。
実施形態11
1つ以上の非一時的コンピュータ可読媒体であって、1つ以上のプロセッサにより実行される際に、前記1つ以上のプロセッサに、
第1のセットの符号化ポイントにわたってメディアタイトルに関連付けられた第1のサブシーケンスを符号化して、それぞれが異なる符号化されたサブシーケンスに関連付けられる、第1のセットのサブシーケンスエンコードポイントを生成するステップと、
前記第1のセットのサブシーケンスエンコードポイントにわたって1つ以上の凸包演算を実行して、少なくとも2つのメディアメトリックに基づいて、サブシーケンスエンコードポイントの第1の凸包を計算するステップと、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルに関連付けられた1つ以上のサブシーケンスに関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成するステップと、
第1のメディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択するステップと、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定するステップと
を実行させるための命令を含む、1つ以上の非一時的コンピュータ可読媒体。
実施形態12
前記送信バッファ制約が、送信レートおよびバッファサイズの少なくとも一方を指定する、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態13
前記1つ以上の非一時的コンピュータ可読媒体が、前記第1の符号化されたメディアシーケンスに関連付けられた最小バッファ占有率および前記送信バッファ制約に関連付けられたバッファサイズに基づいて、プリバッファリング時間を計算するステップをさらに含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態14
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれる第3のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2のメディアエンコードポイントを生成するステップと、
前記第3のメディアエンコードポイントおよび前記第1の凸包に含まれる第2のサブシーケンスエンコードポイントに基づいて、第4のメディアエンコードポイントを生成するステップと、
前記第2のメディアエンコードポイントを、前記送信バッファ制約に基づいて、適合するエンコードポイントのセットに加えるが、前記第4のメディアエンコードポイントを加えないステップと、
前記適合するメディアエンコードポイントのセットにわたって、1回以上の凸包演算を実行して、前記第1のグローバル凸包を生成するステップと
を含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態15
前記第1のメディアメトリックがビットレートを含み、前記第1のメディアエンコードポイントを選択するステップは、前記第1のメディアエンコードポイントに関連付けられた第1の平均ビットレートが前記第1のグローバル凸包に含まれる他の全てのメディアエンコードポイントに関連付けられた平均ビットレートより大きいことを判定するステップを含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態16
前記第1のグローバル凸包を生成するステップが、
前記第2のグローバル凸包に含まれる第2のメディアエンコードポイントおよび前記第1の凸包に含まれる第1のサブシーケンスエンコードポイントに基づいて、第2の符号化されたメディアシーケンスを生成するステップと、
前記第2の符号化されたメディアシーケンスおよび前記送信バッファ制約に関連付けられた送信レートに基づいて、最小バッファ占有率および最大バッファ占有率を計算するステップと、
前記最大バッファ占有率と前記最小バッファ占有率との差が前記送信バッファ制約に関連付けられたバッファサイズを超えていないことを判定するステップと、
前記差が前記バッファサイズを超えていないと判定されたことに応答して、前記第2の符号化されたメディアシーケンスに関連付けられた第2のメディアエンコードポイントを前記第1のグローバル凸包に追加するステップと
を含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態17
前記第1のグローバル凸包を生成するステップが、
前記送信バッファ制約、前記第1の凸包および前記第2のグローバル凸包に基づいて、適合するメディアエンコードポイントのセットを生成するステップと、
前記適合するメディアエンコードポイントのセットを含む領域を決定するステップと、
前記適合するメディアエンコードポイントのセットに含まれる適合するメディアエンコードポイントがその第1の側に位置しない、前記領域に関連付けられた境界を識別するステップと、
前記境界に沿って位置しない前記適合するメディアエンコードポイントのセットに含まれる全ての適合するメディアエンコードポイントを破棄するステップと
を含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態18
前記第1の符号化されたメディアシーケンスが、第1の符号化されたサブシーケンスおよび第2の符号化されたサブシーケンスを含み、前記第1の符号化されたサブシーケンスが、前記第1のセットの符号化ポイントに含まれる第1の符号化ポイントに関連付けられており、前記第2の符号化されたサブシーケンスが、前記第1の符号化ポイントとは等しくない前記第1のセットの符号化ポイントに含まれる第2の符号化ポイントに関連付けられている、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態19
前記メディアタイトルに関連付けられた前記第1のサブシーケンスが、ショットシーケンスを含む、実施形態11記載の1つ以上の非一時的コンピュータ可読媒体。
実施形態20
システムであって、
命令を記憶する1つ以上のメモリと、
前記1つ以上のメモリに結合された1つ以上のプロセッサであって、前記命令を実行する際に、
メディアタイトルに関連付けられたソースメディアシーケンスを、複数のショットチェンジに基づいて、複数のサブシーケンスに分割し、
第1のセットの符号化ポイントおよび前記複数のサブシーケンスに含まれる第1のサブシーケンスに基づいて、それぞれが異なる符号化されたサブシーケンスに関連付けられたサブシーケンスエンコードポイントの第1の凸包を生成し、
送信バッファ制約、前記第1の凸包、および前記メディアタイトルについての再生順序における前記第1のサブシーケンスの前に生じるメディアタイトルの一部に関連付けられたメディアエンコードポイントの第2のグローバル凸包に基づいて、メディアエンコードポイントの第1のグローバル凸包を生成し、
メディアメトリックに基づいて、前記第1のグローバル凸包に含まれる第1のメディアエンコードポイントを選択し、
前記第1のメディアエンコードポイントに基づいて、前記メディアタイトルの再生中に続いてエンドポイントデバイスにストリーミングされる第1の符号化されたメディアシーケンスを決定する
ように構成された1つ以上のプロセッサと
を備える、システム。
【0179】
以上の説明は、本開示の実施形態を対象としているが、本開示の他の実施形態および更なる実施形態を本開示の基本的な範囲から逸脱することなく考案することができ、本開示の範囲は、下記の特許請求の範囲により決定される。