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

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

▶ ネットフリックス・インコーポレイテッドの特許一覧

<>
  • 特許-符号化タスクを最適化するための技術 図1
  • 特許-符号化タスクを最適化するための技術 図2
  • 特許-符号化タスクを最適化するための技術 図3
  • 特許-符号化タスクを最適化するための技術 図4A
  • 特許-符号化タスクを最適化するための技術 図4B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-08
(45)【発行日】2023-02-16
(54)【発明の名称】符号化タスクを最適化するための技術
(51)【国際特許分類】
   H04N 21/845 20110101AFI20230209BHJP
【FI】
H04N21/845
【請求項の数】 12
(21)【出願番号】P 2020531615
(86)(22)【出願日】2018-12-11
(65)【公表番号】
(43)【公表日】2021-02-22
(86)【国際出願番号】 US2018064825
(87)【国際公開番号】W WO2019118386
(87)【国際公開日】2019-06-20
【審査請求日】2021-04-09
(31)【優先権主張番号】15/840,998
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506267178
【氏名又は名称】ネットフリックス・インコーポレイテッド
【氏名又は名称原語表記】NETFLIX, INC.
【住所又は居所原語表記】121 Albright Way Los Gatos, California 95032 UNITED STATES OF AMERICA
(74)【代理人】
【識別番号】100073184
【弁理士】
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100123652
【弁理士】
【氏名又は名称】坂野 博行
(74)【代理人】
【識別番号】100175042
【弁理士】
【氏名又は名称】高橋 秀明
(72)【発明者】
【氏名】ムーティ,アヌシュ
(72)【発明者】
【氏名】マノハラ,メガ
【審査官】松元 伸次
(56)【参考文献】
【文献】特表2010-529809(JP,A)
【文献】米国特許出願公開第2012/0147958(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H03M3/00-9/00
H04N7/10-7/173
7/20-7/56
19/00-21/858
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第1の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第1の符号化されたチャンクを生成させるステップと、
第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第2の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第2の符号化されたチャンクを生成させるステップと
を含み、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
方法。
【請求項2】
前記第2のショットシーケンスが、前記少なくとも1つの照合基準を満たしていないことを判別するステップは、
前記第1のチャンクのサイズと前記第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項3】
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
前記第1のチャンクのサイズおよび前記最大チャンクサイズに基づいて、前記第2のショットシーケンスを、前記第3のショットシーケンスと第4のショットシーケンスとに分割するステップと、
前記第3のショットシーケンスを、前記第2のチャンクに割り当てるステップと、
前記第4のショットシーケンスを、前記第1のチャンクに割り当てるステップと
を含む、請求項2記載のコンピュータ実装方法。
【請求項4】
前記第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、前記第1の符号化されたチャンクを生成させるステップは、
前記第1のチャンクに基づいて符号化タスクを生成するステップと、
前記符号化タスクをタスクキューに格納するステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項5】
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
前記第2のショットシーケンスのサイズが最大チャンクサイズを超えていることを判別するステップと、
前記第2のショットシーケンスを、第3のショットシーケンスと第4のショットシーケンスに分割するステップと、
前記第3のショットシーケンスを、前記第2のチャンクに割り当てるステップと
を含む、請求項1記載のコンピュータ実装方法。
【請求項6】
前記第1のショットシーケンスを割り当てる前に、1つまたは複数のシーン検出演算を実行して、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
前記複数のショットシーケンスは、前記第1のショットシーケンスおよび前記第2のショットシーケンスを含む、請求項1記載のコンピュータ実装方法。
【請求項7】
前記少なくとも1つの照合基準は、ショットシーケンスの、チャンクへの1対1のマッピングを指定する、請求項1記載のコンピュータ実装方法。
【請求項8】
前記第1のショットシーケンスを割り当てる前に、前記ソースビデオシーケンスまたはリソース制約のうちの少なくとも1つに基づいて、前記少なくとも1つの照合基準を決定するステップをさらに含む、請求項1記載のコンピュータ実装方法。
【請求項9】
前記第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、前記第2の符号化されたチャンクを生成させるステップの前に、
前記ソースビデオシーケンスに含まれている第4のショットシーケンスが、前記第2のチャンクに関する少なくとも1つの照合基準を満たしていることを判別するステップと、
前記第4のショットシーケンスを、前記第2のチャンクに割り当てるステップと
をさらに含む、請求項1記載のコンピュータ実装方法。
【請求項10】
プロセッサによって実行された場合に、前記プロセッサに以下のステップを実行させる命令を含む、コンピュータ可読ストレージ媒体であって、
当該ステップは、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスが、第1のチャンクに関する1つまたは複数の照合基準を満たしていることを判別するステップと、
前記第1のショットシーケンスを、前記第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する前記1つまたは複数の照合基準に含まれている第1の照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第1の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第1の符号化されたチャンクを生成させるステップと、
第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第2の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第2の符号化されたチャンクを生成させるステップと
であり、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
コンピュータ可読ストレージ媒体。
【請求項11】
システムであって、
当該システムは、
ショット照合アプリケーションを格納するメモリと、
前記メモリに結合されたプロセッサと
を含み、
前記ショット照合アプリケーションは、前記プロセッサによって実行された場合に、前記プロセッサに以下のステップを行わせ、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第1の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第1の符号化されたチャンクを生成させるステップと、
前記第1の符号化インスタンスに対して実質的に並列に符号化演算を実行する第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化することにより、第2の符号化されたチャンクを生成させるステップであって、前記それぞれのショットシーケンスは当該ショットシーケンスのために判別された符号化パラメータに基づき独立して符号化される、前記第2の符号化されたチャンクを生成させるステップステップと
を行わせ、
を行わせ、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
システム。
【請求項12】
前記ショット照合アプリケーションは、
前記第1のチャンクのサイズと前記第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
によって、前記プロセッサに、前記第2のショットシーケンスが前記少なくとも1つの照合基準を満たしていないことを判別させる、請求項11記載のシステム。
【発明の詳細な説明】
【関連出願】
【0001】
本願は、2017年12月13日に出願された米国特許出願番号第15/840998号の利益を主張し、これにより、同号を参照によって本明細書に援用するものとする。
【技術分野】
【0002】
本発明の実施形態は、一般に、ビデオ技術に関し、より具体的には、符号化タスクを最適化するための技術に関する。
【背景技術】
【0003】
ソースビデオシーケンスをリアルタイム配信するためには、ソースビデオシーケンスを効率的に符号化することが不可欠である。全体的な符号化時間を短縮するために、典型的なストリーミングビデオプロバイダは、複数の符号化インスタンス間で符号化作業を並列化する分散型符号化システムを実装することができる。符号化作業の並列化に加えて、いくつかのストリーミングビデオプロバイダは、ショットベースの分散型符号化システムを実装しており、このようなショットベースの分散型符号化システムは、それぞれのショットごとに、ショットのための符号化パラメータを個別化して、符号化処理中に使用されるビットレートの特定の品質レベルを満たすような、対応する符号化されたショットを生成する。
【0004】
典型的なショットベースの分散型符号化システムでは、符号化プリプロセッサが、1つのソースビデオシーケンスを複数の個々のショットシーケンスに細分する。それぞれのショットシーケンスは、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間-時間特性を有しており、連続した期間にわたって実行される。符号化プリプロセッサは、それぞれのショットシーケンスごとに、それぞれ異なる符号化タスクを生成して、これらの符号化タスクをタスクキューに追加する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。最後に、アセンブラが、複数の個々に符号化されたショットシーケンスを合成して、1つの全体的な符号化されたビデオシーケンスを生成する。
【0005】
ショットベースの分散型符号化システムの1つの限界は、ソースビデオシーケンスのリアルタイム配信の準備に必要とされる符号化タスクの数が、望ましくないほど多くなる可能性があることである。より具体的には、幅広い種々のインターネット接続および種々の視聴デバイスにわたって視聴体験を最適化するために、ストリーミングサービスプロバイダは、典型的に、それぞれのソースビデオシーケンスに対して、複数の符号化されたビデオシーケンスを提供する。例えば、それぞれのソースビデオシーケンスに対して、ストリーミングサービスプロバイダは、441個のそれぞれ異なる符号化されたビデオシーケンスを提供することができ、この場合、それぞれの符号化されたビデオシーケンスは、63個の目標品質レベルと、7つの解像度とからなるそれぞれ異なる順列を表している。2915個のショットを含む1つのソースビデオシーケンスのリアルタイム配信を準備するために、ショットベースの符号化システムは、1285515個のそれぞれ異なる符号化タスクを生成し、すなわち、441個のそれぞれ異なる符号化されたビデオシーケンスにわたって、それぞれのショットごとに1つのタスクを生成する。
【0006】
符号化タスクの数が増えるにつれて、符号化タスクをタスクキューから符号化インスタンスに送信するために必要とされる帯域幅と、符号化タスクをタスクキューに格納するために必要とされるメモリとの両方が増加する。その結果、符号化タスクの数が増えるにつれて、集中型メッセージングサブシステムと、ショットベースの分散型符号化システムとの全体的な性能が低下する可能性がある。さらに、潜在的に数百にもなるソースビデオシーケンスのライブラリをリアルタイム配信のために準備する場合には、未分配の符号化タスクを格納するために必要とされるメモリが、タスクキューに割り振られたメモリを超えてしまう可能性がある。結果として、ショットベースの分散型符号化システムは、種々のソースビデオシーケンスを適切に符号化することができず、機能しなくなる可能性さえある。
【発明の概要】
【発明が解決しようとする課題】
【0007】
前述の説明のように、当技術分野で必要とされるのは、ビデオシーケンスを符号化するためのより効率的な技術である。
【課題を解決するための手段】
【0008】
本発明の1つの実施形態は、ビデオシーケンスを符号化するためのコンピュータ実装方法を説明するものである。当該方法は、ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、ソースビデオシーケンスに含まれている第2のショットシーケンスが、第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、第2のショットシーケンス、または第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップと、第1の符号化インスタンスに、第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップとを含み、第1の符号化されたチャンクと、第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【0009】
本開示の技術の1つの利点は、ショットシーケンスがチャンクに照合されるので、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数が、チャンクの数に等しくなることである。特に、チャンクの数を、ショットシーケンスの数よりも格段に少なくすることが可能である。その結果、従来のショットベースの符号化分散システムによってもたらされる符号化タスクの数に起因するリソースの非効率性を、格段に軽減することができる。さらに、チャンクが、特定の種類のエンコーダの要件(例えば、ショットシーケンス境界と、GOP境界との位置合わせ)を満たすことが保証されるように、照合基準を選択することができる。
【図面の簡単な説明】
【0010】
本発明の上に挙げた特徴を詳細に理解することができるように、上に簡潔に要約した本発明を、実施形態を参照することによってより具体的に説明することができ、これらの実施形態の一部が、添付の図面に示されている。しかしながら、添付の図面は、本発明の典型的な実施形態を示しているに過ぎず、したがって、本発明の範囲を限定するものと見なされるべきではなく、本発明が、他の同等に効果的な実施形態を容認することができることに留意すべきである。
図1】本発明の1つまたは複数の態様を実装するように構成された分散型符号化システムの概念図である。
図2】本発明の種々の実施形態による、図1のショット照合アプリケーションのより詳細な図である。
図3】本発明の種々の実施形態による、図1のショット照合アプリケーションによって複数の異なる照合戦略を使用して生成されたチャンクの、種々の例を示す図である。
図4A】本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図である。
図4B】本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図である。
【発明を実施するための形態】
【0011】
以下の記載では、本発明のより完全な理解を提供するために、多数の特定の詳細が説明されている。しかしながら、これらの特定の詳細のうちの1つまたは複数がなくても本発明が実施可能であることは、当業者には明らかであろう。
【0012】
本開示の技術を使用して、リアルタイム配信のためにソースビデオシーケンスを効率的に符号化することができる。まず始めに、ショット分析器が、1つのソースビデオシーケンスを複数のショットシーケンスに分割し、これらのショットシーケンスを戦略エンジンに送信する。戦略エンジンは、ショットシーケンスを受信すると、これらのショットシーケンスの特性をリソース制約と組み合わせて評価し、ショットの、チャンクへの割り当てを導く照合基準を選択する。これらの照合基準に基づいて、ショット・ツー・チャンク・マッパー(shot-to-chunk mapper)は、それぞれのショットシーケンスごとに、ショットシーケンスをチャンクに割り当てる。特に、ショット・ツー・チャンク・マッパーは、複数のショットシーケンスを単一のチャンクに割り当てることができる。
【0013】
タスク生成器が、ショット・ツー・チャンク・マッパーから個々のショット割り当てを受信すると、タスク生成器は、1つまたは複数のチャンクを生成する。タスク生成器は、それぞれのチャンクごとに、関連する符号化タスクを生成して、これらの符号化タスクをタスクキューに格納する。それぞれの符号化タスクは、並列エンコーダに含まれている複数の符号化インスタンスのうちの1つに分配される。関連する符号化インスタンスは、それぞれの符号化タスクごとに、個々の符号化されたチャンクを生成し、この符号化されたチャンク内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なる符号化パラメータによって個々に符号化されている。最後に、チャンクアセンブラが、複数の個々の符号化されたチャンクを合成して、1つの符号化されたビデオシーケンスを生成する。
【0014】
有利には、ショットシーケンスを、照合基準に基づいてチャンクに割り当てることにより、ソースビデオシーケンスの符号化に付随する全体的な効率が、利用可能なリソースに関して最適化される。特に、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数が、チャンクの数に等しくなり、チャンクの数は、ショットシーケンスの数よりも少ないことが多い。
【0015】
システムの概要
図1は、本発明の1つまたは複数の態様を実装するように構成された分散型符号化システム100の概念図である。図示のように、分散型符号化システム100は、仮想プライベートクラウド(すなわち、カプセル化された共有リソース、ソフトウェア、データなど)102を含み、この仮想プライベートクラウド102は、入力データを送信可能な、かつ/またはビデオコンテンツを表示可能な、種々のデバイスに接続されている。そのようなデバイスには、限定するわけではないが、ゲームコンソール103、スマートフォン104、スマートテレビジョン(TV)105、ラップトップ106、タブレット107、およびデスクトップコンピュータ108が含まれる。代替的な実施形態では、分散型符号化システム100は、任意の数および/または任意の種類の入力デバイス、出力デバイス、および/または入出力デバイスを、任意の組み合わせで含むことができる。
【0016】
仮想プライベートクラウド102は、限定するわけではないが、任意の数および任意の種類のコンピューティングインスタンス110を含む。仮想プライベートクラウド102は、入力デバイス(例えば、ラップトップ106)から入力ユーザ情報を受信し、1つまたは複数のコンピューティングインスタンス110は、このユーザ情報に基づいて動作し、仮想プライベートクラウド102は、処理された情報をユーザに送信する。仮想プライベートクラウド102は、従来のブラウン管、液晶ディスプレイ、発光ダイオードなどのような任意の数のデバイスの表示機能を介して、出力情報をユーザに伝達する。
【0017】
代替的な実施形態では、仮想プライベートクラウド102の代わりに、パブリッククラウドまたはハイブリッドクラウドのような任意の種類のクラウドコンピューティング環境を使用してもよい。他の実施形態では、分散型符号化システム100は、仮想プライベートクラウド102の代わりに、任意の分散型コンピュータシステムを含むことができる。さらに他の実施形態では、分散型符号化システム100は、仮想プライベートクラウド102を含まず、その代わりに、複数のプロセッサ(例えば、任意の組み合わせでの中央処理ユニットおよび/またはグラフィック処理ユニット)が実装されている単一のコンピューティングユニットを含む。
【0018】
説明のために、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照符号と、必要に応じて、インスタンスを識別する括弧付きの数字とを用いて示されている。コンピューティングインスタンス110(P)について図示されるように、それぞれのコンピューティングインスタンス110は、限定するわけではないが、プロセッサ112およびメモリ116を含む。プロセッサ112は、命令を実行することができる任意の命令実行システム、装置、またはデバイスであり得る。例えば、プロセッサ112は、中央処理装置(CPU)、グラフィック処理装置(GPU)、コントローラ、マイクロコントローラ、状態機械、またはこれらの任意の組み合わせを含むことができる。メモリ116は、コンピューティングインスタンス110のプロセッサ112によって使用するための、ソフトウェアアプリケーションおよびデータのようなコンテンツを格納している。
【0019】
メモリ116は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フロッピーディスク、ハードディスク、または任意の他の形式のデジタルストレージのような、ローカルまたはリモートの1つまたは複数の容易に利用可能なメモリであり得る。いくつかの実施形態では、メモリ116に加えて、またはメモリ116の代わりに、ストレージ(図示せず)を使用することができる。ストレージは、プロセッサ112にアクセス可能な、任意の数および任意の種類の外部メモリを含むことができる。例えば、限定するわけではないが、ストレージは、セキュアデジタルカード、外部フラッシュメモリ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光学ストレージデバイス、磁気ストレージデバイス、または上記の任意の適切な組み合わせを含むことができる。
【0020】
一般に、仮想プライベートクラウド102に含まれているコンピューティングインスタンス110は、1つまたは複数のアプリケーションを実装するように構成されている。より具体的には、分散型符号化システム100に含まれているコンピューティングインスタンス110は、ソースビデオシーケンス120を、符号化されたビデオシーケンス190としてリアルタイム配信するために、ソースビデオシーケンス120を符号化するように構成されている。ソースビデオシーケンス120をリアルタイム配信するためには、ソースビデオシーケンス120を効率的に符号化することが不可欠であるので、分散型符号化システム100は、符号化作業を、複数のコンピューティングインスタンス110にわたって並列化する。
【0021】
図示のように、コンピューティングインスタンス110(P)は、符号化プリプロセッサ130として構成されており、コンピューティングインスタンス110(1)~110(N)は、並列エンコーダ160として構成されており、コンピューティングインスタンス110(M)は、アセンブラ180として構成されている。並列エンコーダ160として構成されているコンピューティングインスタンス110(1)~110(N)は、本明細書では「符号化インスタンス」とも称する。符号化時間を最適化するために、それぞれの符号化インスタンスは、符号化演算を独立して、かつ実質的に並行して実行する。本明細書で称されるように、符号化演算を「実質的に並行して」実行することは、1つの符号化作業のそれぞれ異なる部分を実行することを含み、この場合、1つの符号化作業のそれぞれ異なる部分は、部分的または完全に時間的にオーバーラップして実行される。
【0022】
代替的な実施形態では、任意の数のコンピューティングインスタンス110を、任意の組み合わせで、符号化プロセッサ130、並列エンコーダ160、およびアセンブラ180として構成することができる。例えば、いくつかの実施形態では、コンピューティングインスタンス110(1)を、符号化プリプロセッサ130およびアセンブラ180の両方として構成することができ、コンピューティングインスタンス110(2)~110(33)を、並列エンコーダ160として構成することができる。
【0023】
いくつかのストリーミングビデオプロバイダは、従来のショットベースの分散型符号化システムを実装しており、この従来のショットベースの分散型符号化システムは、それぞれのショットごとに、ショットのための符号化パラメータを個別化して、符号化処理中に使用されるビットレートの特定の品質レベルを満たすような、対応する符号化されたショットを生成する。一般的に、それぞれのショットシーケンスは、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間-時間特性を有しており、連続した期間にわたって実行される。従来の符号化プリプロセッサは、それぞれのショットシーケンスごとに、それぞれ異なる符号化タスクを生成して、これらの符号化タスクをタスクキューに追加する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。最後に、アセンブラが、複数の個々に符号化されたショットシーケンスを合成して、1つの全体的な符号化されたビデオシーケンスを生成する。
【0024】
従来のショットベースの分散型符号化システムの1つの限界は、ソースビデオシーケンスのリアルタイム配信の準備に必要とされる符号化タスクの数が、望ましくないほど多くなる可能性があることである。より具体的には、幅広い種々のインターネット接続および種々の視聴デバイスにわたって視聴体験を最適化するために、ストリーミングサービスプロバイダは、典型的に、それぞれのソースビデオシーケンスに対して、複数の符号化されたビデオシーケンスを提供する。例えば、それぞれのソースビデオシーケンスに対して、ストリーミングサービスプロバイダは、441個のそれぞれ異なる符号化されたビデオシーケンスを提供することができ、この場合、それぞれの符号化されたビデオシーケンスは、63個の目標品質レベルと、7つの解像度とからなるそれぞれ異なる順列を表している。2915個のショットを含む1つのソースビデオシーケンスのリアルタイム配信を準備するために、ショットベースの符号化システムは、1285515個のそれぞれ異なる符号化タスクを生成し、すなわち、441個のそれぞれ異なる符号化されたビデオシーケンスにわたって、それぞれのショットごとに1つのタスクを生成する。
【0025】
符号化タスクの数が増えるにつれて、符号化タスクをタスクキューから符号化インスタンスに送信するために必要とされる帯域幅と、符号化タスクをタスクキューに格納するために必要とされるメモリとの両方が増加する。その結果、符号化タスクの数が増えるにつれて、集中型メッセージングサブシステムと、ショットベースの分散型符号化システムとの全体的な性能が低下する可能性がある。さらに、潜在的に数百にもなるソースビデオシーケンスのライブラリをリアルタイム配信のために準備する場合には、未分配の符号化タスクを格納するために必要とされるメモリが、タスクキューに割り振られたメモリを超えてしまう可能性がある。結果として、従来のショットベースの分散型符号化システムは、種々のソースビデオシーケンスを適切に符号化することができず、機能しなくなる可能性さえある。
【0026】
ショットベースの符号化のためのリソース効率の最適化
従来のショットベースの符号化システムの前述した限界に対処するために、符号化プリプロセッサ130は、限定するわけではないが、ショット照合アプリケーション140を含む。ショット照合アプリケーション140は、1つまたは複数のコンピューティングインスタンス110に関連するメモリ116内に常駐し、1つまたは複数のコンピューティングインスタンス110に関連するプロセッサ112上で実行される。
【0027】
図2に関連してより詳細に説明されるように、ショット照合アプリケーション140は、1つのソースビデオシーケンス120を複数のショットシーケンス(図1には図示せず)に分割する。続いて、ショット照合アプリケーション140は、リソース制約142と組み合わせてショットシーケンスを分析して、照合基準(図1には図示せず)を決定する。リソース制約142の例には、いくつかを挙げると、メモリの帯域幅、タスクキュー132のサイズ、符号化タスク150の最大数、および符号化インスタンスに関連する特性が含まれる。照合基準には、限定するわけではないが、照合戦略が含まれる。次いで、ショット照合アプリケーション140は、照合基準に基づいて、1つまたは複数のチャンクにわたってショットシーケンスを分配する。本明細書で称されるように、「チャンク」は、1つまたは複数のショットシーケンスを含む。
【0028】
例えば、いくつかの実施形態では、照合戦略は、「全て」、「個々」、「固定」、または「整数」である。「全て」の照合戦略の場合、ショット照合アプリケーション140は、全てのショットシーケンスを単一のチャンクに順次に割り当てる。「個々」の照合戦略の場合には、ショット照合アプリケーション140は、それぞれのショットシーケンスをそれぞれ異なるチャンクに順次に割り当てる。「固定」の照合戦略は、目標チャンクサイズを指定する追加的な照合制約に関連している。「固定」の照合戦略の場合には、ショット照合アプリケーション140は、ショットシーケンスをそれぞれのチャンクに順次に割り当て、それぞれのチャンクのサイズが目標チャンクサイズに等しくなることを保証するために、必要に応じてショットシーケンスを細分する。「整数」の照合戦略も、目標チャンクサイズを指定する追加的な照合制約に関連している。「整数」の照合戦略の場合には、ショット照合アプリケーション140は、それぞれのチャンクのサイズが目標チャンクサイズを超えないことを保証しながら、整数個のショットシーケンスをそれぞれのチャンクに順次に割り当てる。
【0029】
一般に、ショット照合アプリケーション140は、従来のショットベースの符号化システムに関連した限界を軽減するような照合基準を選択する。例えば、ショットシーケンスの数が比較的多い場合、かつ/またはメモリの帯域幅が比較的小さいことをリソース制約142が示している場合には、ショット照合アプリケーション140は、「固定」または「整数」の照合戦略を選択する。さらに、ショット照合アプリケーション140は、符号化タスク150の数がショットシーケンスの数よりも格段に少なくなることを保証するような目標チャンクサイズを選択する。いくつかの実施形態では、符号化タスク150の各々がGOP(group-of-pictures)境界に整列するように符号化インスタンスが要求していることを、リソース制約142が示している場合には、ショット照合アプリケーション140は、「固定」の照合戦略と、GOPのサイズの倍数である目標チャンクサイズとを選択することができる。
【0030】
ショット照合アプリケーション140は、それぞれのチャンクごとに、それぞれ異なる符号化タスク150を生成して、これらの符号化タスク150をタスクキュー132に追加する。一般的に、ショット照合アプリケーション140がT個のチャンクを生成する場合には、ショット照合アプリケーション140は、符号化タスク150(1)~150(T)も生成する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスク150をタスクキュー132から符号化インスタンスに送信する。
【0031】
符号化タスク150(x)は、対応するチャンクに含まれているそれぞれのショットシーケンスを順次にかつ独立して符号化して、符号化されたチャンク170(x)を生成するように、符号化インスタンスを構成する。符号化インスタンスは、それぞれのショットシーケンスごとに、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。したがって、符号化されたチャンク170(x)内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なるパラメータによって符号化されている。続いて、符号化インスタンスが、複数のそれぞれ異なる符号化されたショットシーケンスを合成して、1つの符号化されたチャンク170(x)を生成する。
【0032】
符号化インスタンスが、符号化されたチャンク170(1)~170(T)の生成を完了した後、アセンブラ180が、複数の個々の符号化されたチャンク170を合成して、1つの符号化されたビデオシーケンス190を生成する。有利には、符号化されたビデオシーケンス190内のそれぞれのショットシーケンスは、潜在的にそれぞれ異なる符号化パラメータによって符号化されている。その結果、分散型符号化システム100は、それぞれのショットシーケンスごとに個々に符号化パラメータを最適化した場合に本来備わっている符号化効率を提供する。さらに、符号化タスク150の数が制御されるように照合基準をカスタマイズすることにより、ショット照合アプリケーション140は、従来のショットベースの分散型符号化システムにしばしば付随するリソースの非効率性および非柔軟性を軽減する。
【0033】
本明細書に示されている分散型符号化システム100が例示であり、変形および修正が可能であることは理解されるであろう。例えば、本明細書で説明されているショット照合アプリケーション140と、並列エンコーダ160と、アセンブラ180とによって提供される機能を、(1つを含む)任意の数のソフトウェアアプリケーションと、任意の数の分散型符号化システム100のコンポーネントとに統合または分配してもよい。さらに、図1の種々のユニット間の接続トポロジは、必要に応じて変更可能である。
【0034】
本明細書で説明されている技術は、限定ではなく例示であり、本発明のより広い思想および範囲から逸脱することなく変更可能であることに留意すべきである。例えば、いくつかの実施形態では、符号化インスタンスの各々は、任意の技術的に実現可能な手法で、それぞれのショットシーケンスに対して任意の数および任意の種類の符号化パラメータを決定することができる。同じまたは他の実施形態において、符号化プリプロセッサ130は、集中型メッセージングサブシステムを含まなくてもよいし、かつ/またはショット照合アプリケーション140は、タスクキュー132を含まなくてもよい。そのような実施形態では、ショット照合アプリケーションおよび/または符号化プリプロセッサ130は、任意の技術的に実現可能な手法で、符号化タスク150を符号化インスタンスに送信することができる。
【0035】
ショットシーケンスをチャンクに照合する
図2は、本発明の種々の実施形態による、図1のショット照合アプリケーション140のより詳細な図である。図示のように、ショット照合アプリケーション140は、限定するわけではないが、ショット分析器210と、戦略エンジン230と、ショット・ツー・チャンク・マッパー250と、タスク生成器280とを含む。
【0036】
動作中、ショット分析器210は、ソースビデオシーケンス120を受信して、このソースビデオシーケンス120を任意の数のショットシーケンス220に分割する。ショットシーケンス220の各々は、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間-時間特性を有しており、連続した期間にわたって実行される。ショット分析器210は、任意の技術的に実現可能な手法で、ソースビデオシーケンス120をショットシーケンス220に分割することができる。例えば、ショット分析器210は、1つまたは複数のショット検出アルゴリズムを実装することができる。
【0037】
戦略エンジン230は、ショットシーケンス220およびリソース制約142を受信して、照合基準240を生成する。図示のように、照合基準240は、限定するわけではないが、照合戦略242と、目標チャンクサイズ244と、余裕246とを含む。本明細書で図1に関連して前述したように、照合戦略242は、ショットシーケンス220をチャンク270に照合するためのアルゴリズムを指定する。照合戦略242の例には、限定するわけではないが、「全て」、「個々」、「固定」、および「整数」が含まれる。目標チャンクサイズ244は、チャンク270の各々に対する最適なサイズを指定する。補完的に、余裕246は、目標チャンクサイズ244からの許容可能な偏差を指定する。
【0038】
特に、ショット照合アプリケーション140は、照合戦略242が「固定」または「整数」である場合には、目標チャンクサイズ244および余裕246を強制するが、照合戦略が「全て」または「個々」である場合には、目標チャンクサイズ244および余裕246を無視する。例えば、照合戦略242が「固定」または「整数」であって、かつ目標チャンクサイズ244が180秒であり、かつ余裕が10秒である場合には、ショット照合アプリケーション140は、チャンク270の各々のサイズが170秒~190秒の間となることを保証する。対照的に、照合戦略242が「全て」である場合には、ショット照合アプリケーション140は、ソースビデオシーケンス120のサイズを有する単一のチャンク170を生成する。照合戦略242が「個々」である場合には、ショット照合アプリケーション140は、それぞれのショットシーケンス220(x)ごとに、これらのショットシーケンス220(x)のサイズを有するそれぞれ異なるチャンク170(x)を生成する。
【0039】
種々の実施形態では、ショット照合アプリケーション140は、照合戦略242に基づいて、それぞれ異なる一連の照合基準240を決定および/または強制する。例えば、いくつかの実施形態では、照合戦略242が「全て」または「個々」である場合には、戦略エンジン230は、目標チャンクサイズ244も余裕246も決定しない。同じまたは他の実施形態において、照合基準240は、照合戦略230が「個々」である場合に適用可能な最大チャンクサイズを含む。この実施形態では、戦略エンジン230が「個々」の照合戦略242を設定した場合に、戦略エンジン230は、最大チャンクサイズを決定する。或る特定のショットシーケンス220のサイズが最大チャンクサイズを超えた場合には、ショット照合アプリケーション140は、そのショットシーケンス220を、それぞれが最大チャンクサイズを超えないようなサイズを有する複数のショットシーケンス220へと細分する。
【0040】
代替的な実施形態では、戦略エンジン230は、任意の種類のデータに基づいて、任意の技術的に実現可能な手法で、任意の数および任意の種類の照合基準240を生成することができる。例えば、いくつかの実施形態では、照合戦略242のための対応する値は、本明細書で説明されている「全て」、「個々」、「固定」、および「整数」の照合戦略とは異なっていてもよい。同じまたは他の実施形態において、戦略エンジン230は、グラフィカルユーザインターフェースを介して受信されたデータに基づいて、照合基準240のための値を受信および/または決定することができる。
【0041】
ショット・ツー・チャンク・マッパー250は、ショットシーケンス220および照合基準240を受信して、ショット割り当て260を生成する。ショット・ツー・チャンク・マッパー250は、ショットシーケンス220を順次に、同時に、またはこれらの任意の組み合わせで受信することができる。ただし、ショット・ツー・チャンク・マッパー250は、ソースビデオシーケンス120に関連するビデオタイムラインにおいてショットシーケンスが発生した順序で、ショットシーケンス220を処理する。
【0042】
図示のように、ショット・ツー・チャンク・マッパー250は、限定するわけではないが、現在チャンク識別子(ID)252と、現在チャンクサイズ254とを含む。現在チャンク識別子252は、タスク生成器280によって生成されるチャンク270を一意に指定するものである。一般に、タスク生成器280は、ショット・ツー・チャンク・マッパー250がショット割り当て260を生成した後に、チャンク270を生成する。なお、単なる説明のために、現在チャンク識別子252によって指定されたチャンク270は、そのチャンク270がその時点でタスク生成器280によって生成されたかどうかに関わらず、本明細書では「現在チャンク270」と称する。現在チャンクサイズ254は、前もって生成されたショット割り当て260に基づいて、現在チャンク270のサイズを格納する。
【0043】
まず始めに、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を1に等しく設定し、現在チャンクサイズ254を0に等しく設定する。照合戦略242が「固定」または「整数」である場合には、ショット・ツー・チャンク・マッパー250は、最大ショットサイズ(図示せず)を、目標ショットサイズ244と余裕246との合計として計算する。
【0044】
次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220の各々を(ビデオタイムラインに関して)順次に、照合基準240に基づいて処理する。照合戦略242が「全て」である場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を現在チャンク270(単一のチャンク270(1))に割り当てるショット割り当て260(x)を生成する。次いで、ショット・ツー・チャンク・マッパー250は、次のショットシーケンス220(x+1)を処理する。しかしながら、照合戦略が「個々」である場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を現在チャンク270(チャンク270(x))に割り当てるショット割り当て260(x)を生成する。次いで、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、次のショットシーケンス220(x+1)を処理する。
【0045】
照合戦略242が「固定」である場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)のサイズと現在チャンクサイズ254とを合計して、仮のチャンクサイズを生成する。仮のチャンクサイズが最大チャンクサイズを超えていない場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を現在チャンク270に割り当てるショット割り当て260を生成する。続いて、仮のチャンクサイズが目標チャンクサイズ244よりも小さい場合には、ショット・ツー・チャンク・マッパー250は、現在チャンクサイズ254を仮のチャンクサイズに等しく設定する。しかしながら、仮のチャンクサイズが目標チャンクサイズ244以上である場合には、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、現在チャンクサイズ254を0に等しく設定する。次いで、ショット・ツー・チャンク・マッパー250は、次のショットシーケンス220(x+1)を処理する。
【0046】
しかしながら、照合戦略242が「固定」である場合であって、かつ仮のチャンクサイズが最大チャンクサイズよりも大きい場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を複数のショットシーケンス220に細分する。ショット・ツー・チャンク・マッパー250は、任意の技術的に実現可能な手法で、ショットシーケンス220(x)を細分することができる。
【0047】
いくつかの実施形態では、ショットシーケンス220(x)を細分するために、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)に含まれているフレームの中から、目標チャンクサイズ244を超えることなく現在チャンク270に割り当てることができる初期サブセットを決定する。次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)に含まれているフレームであって、かつ初期サブセットにも含まれていないフレームを選択する。ショット・ツー・チャンク・マッパー250は、目標チャンクサイズ244に基づいて、選択されたフレームを1つまたは複数の新しいショットシーケンス220に割り当てる。最後に、ショット・ツー・チャンク・マッパー250は、選択されたフレームをショットシーケンス220(x)から削除する。特に、いくつかの実施形態では、ショット・ツー・チャンク・マッパー250は、新しいショットシーケンス220を適切に生成するために、任意の数の演算を実行することができる。例えば、ショット・ツー・チャンク・マッパー250は、それぞれの新しいショットシーケンス220の始めに、インターフレーム(Iフレーム)を挿入することができる。
【0048】
ショット・ツー・チャンク・マッパー250がショットシーケンス220(x)を複数のショットシーケンス220に細分した後、ショット・ツー・チャンク・マッパー250は、クロップされたショットシーケンス220(x)を現在チャンク270に割り当てるショット割り当て260を生成する。ショットシーケンス220(x’)が新たに生成されるたびに、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、ショットシーケンス220(x’)を新しい現在チャンク270に割り当てるショット割り当て260を生成する。最後に、最終ショットシーケンス220(x’)のサイズが目標チャンクサイズ244以上である場合には、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、現在チャンクサイズ254を0に等しく設定する。しかしながら、最終ショットシーケンス220(x’)のサイズが目標チャンクサイズ244よりも小さい場合には、ショット・ツー・チャンク・マッパー250は、現在チャンクサイズ254を最終ショットシーケンス220(x’)のサイズに等しく設定する。次いで、ショット・ツー・チャンク・マッパー250は、次のショットシーケンス220(x+1)を処理する。
【0049】
照合戦略242が「整数」である場合であって、かつショットシーケンス220(x)のサイズが最大ショットサイズを超えている場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を複数のショットシーケンス220に細分する。ショット・ツー・チャンク・マッパー250は、チャンク270の各々が照合基準240を満たすことを保証する任意の技術的に実現可能な手法で、ショットシーケンス220(x)を細分し、クロップされたショットシーケンス220(x)と、追加的なショットシーケンス220とを割り当てることができる。次いで、ショット・ツー・シーン・マッパー250は、次のショットシーケンス220(x+1)を処理する。
【0050】
照合戦略242が「整数」である場合であって、かつショットシーケンス220(x)のサイズが最大ショットサイズを超えていない場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)のサイズと現在チャンクサイズ254とを合計して、仮のチャンクサイズを生成する。仮のチャンクサイズが最大チャンクサイズを超えていない場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を現在チャンク270に割り当てるショット割り当て260を生成する。しかしながら、仮のチャンクサイズが最大チャンクサイズを超えている場合には、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、仮のチャンクサイズをショットシーケンス220(x)のサイズに等しく設定する。次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(x)を現在チャンク270に割り当てるショット割り当て260を生成する。
【0051】
ショットシーケンス220(x)に対応するショット割り当て260が生成された後、仮のチャンクサイズが目標チャンクサイズ244の余裕246の範囲内にない場合には、ショット・ツー・チャンク・マッパー250は、現在チャンクサイズ254を仮のチャンクサイズに等しく設定する。しかしながら、仮のチャンクサイズが目標チャンクサイズ244の余裕246の範囲内にある場合には、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、現在チャンクサイズ254を0に等しく設定する。次いで、ショット・ツー・シーン・マッパー250は、次のショットシーケンス220(x+1)を処理する。
【0052】
当業者が認識するように、ショット・ツー・シーン・マッパー250は、任意の数のショットシーケンス220を複数のショットシーケンス220に細分することができるので、ショット割り当て260の数は、ショット分析器210によって生成されたショットシーケンス220の数に必ずしも等しくなるとは限らない。
【0053】
代替的な実施形態では、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220を、任意の技術的に実現可能な順序で処理することができる。例えば、照合戦略242が「整数」である場合には、ショット・ツー・チャンク・マッパー250は、複数のショットシーケンス220のうちのどのショットシーケンスが現在チャンク270に最も適合するかに基づいて、ショットシーケンス220を処理することができる。
【0054】
タスク生成器280は、ショット割り当て260に基づいてチャンク270を生成する。ショット割り当て260は、任意の技術的に実現可能な手法で指定可能である。次いで、タスク生成器280は、それぞれのチャンク270ごとに、対応する符号化タスク150を生成して、これらの符号化タスク150をタスクキュー132に追加する。
【0055】
本明細書に示されているショット照合アプリケーション140が例示であり、変形および修正が可能であることは理解されるであろう。例えば、本明細書で説明されているショット照合アプリケーション140と、ショット分析器210と、戦略エンジン230と、ショット・ツー・チャンク・マッパー250と、タスク生成器280とによって提供される機能を、(1つを含む)任意の数のソフトウェアアプリケーションと、任意の数の分散型符号化システム100のコンポーネントとに統合または分配してもよい。
【0056】
本明細書で説明されている技術は、限定ではなく例示であり、本発明のより広い思想および範囲から逸脱することなく変更可能であることに留意すべきである。記載された実施形態の範囲および思想から逸脱することなく、ショット照合アプリケーション140と、ショット分析器210と、戦略エンジン230と、ショット・ツー・チャンク・マッパー250と、タスク生成器280とによって提供される機能に対する多数の修正および変形が、当業者には明らかであろう。例えば、種々の実施形態では、任意の数の技術またはデバイスを実装することができ、その一方で、その他の技術を、任意の技術的に実現可能な手法で省略または置換してもよい。
【0057】
図3は、本発明の種々の実施形態による、図1のショット照合アプリケーション140によって複数の異なる照合戦略242を使用して生成されたチャンク270の、種々の例を示す。図示のように、ソースビデオシーケンス120は、限定するわけではないが、11個のショットシーケンス220(1)~220(11)を含む。説明のために、ショットシーケンス220の各々の開始は、ビデオタイムラインに沿って配置された番号付きの丸によって示されている。例えば、ショットシーケンス220(3)の開始は、3の番号が付された丸によって示されている。4つの照合戦略242(1)~242(4)の各々に関して、ショット照合アプリケーション140によって生成されたチャンク270は、太線の矩形として示されており、これらの太線の矩形は、ビデオタイムラインのそれぞれの図示に沿って、塗りつぶされたものと塗りつぶされていないものとが交互に配置されている。
【0058】
「全て」の照合戦略242(1)の場合には、ショット・ツー・チャンク・マッパー250は、他の照合基準240のいずれにも関係なく、全てのショットシーケンス220(1)~220(11)を単一のチャンク270(1)に割り当てる。チャンク270の総数、ひいては、符号化タスク150の総数は、1である。
【0059】
対照的に、照合戦略242が「個々」である場合には、ショット・ツー・チャンク・マッパー250は、他の照合基準240のいずれにも関係なく、ショットシーケンス220の各々をそれぞれ異なるチャンク270に割り当てる。「個々」の照合戦略242(2)について示されているように、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(1)をチャンク270(1)に割り当て、ショットシーケンス220(2)をチャンク270(2)に割り当て、ショットシーケンス220(3)をチャンク270(3)に割り当て、以下も同様に割り当てる。チャンク270の総数、ひいては、符号化タスク150の総数は、11である。特に、それぞれのチャンク270のサイズは、それぞれ他のチャンク270のサイズと異なっていてもよい。
【0060】
本明細書で図2に関連して前述したように、「固定」の照合戦略242(3)および「整数」の照合戦略242(4)は、目標チャンクサイズ244および余裕246に関連している。単なる説明のために、余裕246は、ゼロに等しく、目標チャンクサイズ244は、太線の点線の矩形として示されており、矩形の長さは、ビデオタイムラインに沿った時間間隔を視覚的に示している。
【0061】
一般に、照合戦略242が「固定」である場合には、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220をチャンク270に順次に割り当て、チャンク270の各々が目標チャンクサイズ244および余裕246を満たすことを保証するために、必要に応じてショットシーケンス270を細分する。単なる説明のために、特定のショットシーケンス220(x)を細分することによって結果的に生じる新しいショットシーケンス220は、丸の中の記号(x’)によって示されている。
【0062】
「固定」の照合戦略242(3)について示されているように、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(1)~220(4)をチャンク270(1)に割り当てる。次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(5)を、クロップされたショットシーケンス220(5)とショットシーケンス220(5’)とに細分して、クロップされたショットシーケンス220(5)をチャンク270(1)に割り当て、ショットシーケンス220(5’)をチャンク270(2)に割り当てる。続いて、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(6)~220(8)をチャンク270(2)に割り当てる。次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(9)を、クロップされたショットシーケンス220(9)とショットシーケンス220(9’)とに細分して、クロップされたショットシーケンス220(9)をチャンク270(2)に割り当て、ショットシーケンス220(9’)をチャンク270(3)に割り当てる。また、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(10)をチャンク270(3)に割り当てる。最後に、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(11)を、クロップされたショットシーケンス220(11)とショットシーケンス220(11’)とに細分して、クロップされたショットシーケンス220(11)をチャンク270(3)に割り当て、ショットシーケンス220(11’)をチャンク270(4)に割り当てる。
【0063】
「固定」の照合戦略242(3)の場合には、チャンク270の総数は、4に等しく、ショットシーケンス220の数は、14である。特に、余裕246はゼロに等しいので、チャンク270(1)~270(3)の各々のサイズは、目標チャンクサイズ244に等しい。最終チャンク270(4)のサイズは、目標チャンクサイズ244よりも小さい。なぜなら、このチャンク270(4)は、ソースビデオシーケンス120の最後のフレームを含んでいるからである。余裕246がゼロに等しくない代替的な実施形態では、チャンク270の各々のサイズは、余裕246の大きさと同じだけ、目標チャンクサイズ244より小さくてもよいし、または大きくてもよい。
【0064】
一般に、照合戦略242が「整数」である場合には、ショット・ツー・チャンク・マッパー250は、目標チャンクサイズ244および余裕246に基づいて、最大チャンクサイズを計算する。次いで、ショット・ツー・チャンク・マッパー250は、チャンク270の各々のサイズが最大チャンクサイズを超えないことを保証しながら、整数個のショットシーケンス220をチャンク270の各々に順次に割り当てる。ある特定のショットシーケンス220のサイズが最大チャンクサイズよりも大きい場合には、ショット・ツー・チャンク・マッパー250は、そのショットシーケンス220を複数のショットシーケンス220に細分する。
【0065】
「整数」の照合戦略242(4)について示されているように、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(1)~220(4)をチャンク270(1)に割り当てる。続いて、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(5)~220(7)をチャンク270(2)に割り当てる。次いで、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(8)~220(10)をチャンク270(3)に割り当てる。最後に、ショット・ツー・チャンク・マッパー250は、ショットシーケンス220(11)をチャンク270(4)に割り当てる。したがって、「整数」の照合戦略242(3)の場合には、チャンク270の総数は、4に等しく、チャンク270の各々のサイズは、それぞれ他のチャンク270のサイズとは異なる。
【0066】
代替的な実施形態では、照合基準240は、任意の数および任意の種類の基準を含むことができ、これらの基準を、ショット・ツー・チャンク・マッパー250は、任意の数の異なる照合戦略242および/または任意の他の照合基準240と組み合わせて適用することができる。例えば、いくつかの実施形態では、照合基準240のうちの1つを、最大チャンクサイズとすることができ、ショット・ツー・チャンク・マッパー250は、この最大チャンクサイズを照合戦略242に関係なく適用する。そのような実施形態では、ショット・ツー・チャンク・マッパー250は、最大チャンクサイズを超えているショットシーケンス220の各々を複数のチャンク270に細分し、この場合、複数のチャンク270の各々のサイズは、最大チャンクサイズを超えない。有利には、最大チャンクサイズを強制することにより、それぞれ他のショットシーケンス220よりも著しく長いショットシーケンス220が、並列エンコーダ160にボトルネックを形成するといったことがなくなることが保証される。
【0067】
図4A図4Bは、本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図を示す。これらの方法ステップは、図1図3のシステムを参照して説明されているが、当業者は、これらの方法ステップを任意の順序で実施するように構成された如何なるシステムも、本発明の範囲内に含まれていることを理解するであろう。
【0068】
図示のように、方法400は、ステップ402において開始し、ここで、ショット分析器210は、ソースビデオシーケンス120を受信して、このソースビデオシーケンス120を複数のショットシーケンス220に分割する。ステップ404において、戦略エンジン230は、ショットシーケンス220およびリソース制約142の分析に基づいて、照合基準240を決定する。照合基準240は、限定するわけではないが、照合戦略242と、照合戦略242に関連する任意の数(ゼロを含む)の追加的な制約とを含む。例えば、照合戦略242が「固定」または「整数」であることを戦略エンジン230が判別した場合には、戦略エンジン230は、目標チャンクサイズ244および余裕246も計算する。
【0069】
代替的な実施形態では、戦略エンジン230は、任意の量および任意の種類のデータに基づいて、任意の技術的に実現可能な手法で、任意の数および任意の種類の照合基準240を決定することができる。例えば、戦略エンジン230は、グラフィカルユーザインターフェース(GUI)を介して、照合戦略242の値と、最大チャンクサイズとを受信することができる。
【0070】
ステップ406において、ショット照合アプリケーション140は、ソースビデオシーケンス120に含まれている第1のショットシーケンス220を選択し、現在チャンク識別子252を1に等しく設定し、現在チャンクサイズ254を0に等しく設定する。ステップ408において、ショット・ツー・チャンク・マッパー250は、照合基準240と、任意選択的に現在チャンクサイズ254とに基づいて、選択されたショットシーケンス220全体を現在チャンク270に割り当てるかどうかを判別する。より具体的には、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220全体を現在チャンク270に割り当てることが照合基準240を満たすかどうかを判別する。
【0071】
選択されたショットシーケンス220全体を現在チャンク270に割り当てることが照合基準240を満たしていることをショット・ツー・チャンク・マッパー250が判別した場合には、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220全体を現在チャンク270に割り当てることを決定する。しかしながら、選択されたショットシーケンス220全体を現在チャンク270に割り当てることが照合基準240を満たしていないことをショット・ツー・チャンク・マッパー250が判別した場合には、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス全体を現在チャンク270に割り当てないことを決定する。
【0072】
ステップ408において、選択されたショットシーケンス220全体を現在チャンク270に割り当てないことを、ショット・ツー・チャンク・マッパー250が決定した場合には、方法400は、ステップ410に進む。ステップ410において、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220のサイズが最大チャンクサイズを超えているかどうか、または照合基準240が「固定」であるかどうかを判別する。ショット・ツー・チャンク・マッパー250は、任意の数の照合基準240に基づいて、任意の技術的に実現可能な手法で、最大チャンクサイズを決定することができる。例えば、ショット・ツー・チャンク・マッパー250は、最大チャンクサイズを計算するために、目標チャンクサイズ244と余裕246との加算演算を実施することができる。
【0073】
ステップ410において、選択されたショットシーケンス220のサイズが最大チャンクサイズを超えておらず、かつ照合戦略242が「固定」でないことをショット・ツー・チャンク・マッパー250が判別した場合には、方法400は、ステップ412に進む。ステップ412において、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、現在チャンクサイズ254をゼロに等しく設定する。次いで、方法400は、直接的にステップ416に進む。
【0074】
しかしながら、ステップ410において、選択されたショットシーケンス220のサイズが最大チャンクサイズを超えているか、または照合戦略242が「固定」であることをショット・ツー・チャンク・マッパー250が判別した場合には、方法400は、直接的にステップ414に進む。ステップ414で、ショット・ツー・チャンク・マッパー250は、目標チャンクサイズ244に基づいて、選択されたショットシーケンス220を複数のショットシーケンス220に細分する。結果として、ソースビデオシーケンス120に含まれているショットシーケンス220の総数が増加する。ショット・ツー・チャンク・マッパー250は、任意の技術的に実現可能な手法で、選択されたショットシーケンス220を複数のショットシーケンス220に細分することができる。
【0075】
例えば、いくつかの実施形態では、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220に含まれているフレームの中から、照合基準240を満たしながら現在チャンク270に割り当てることができる初期サブセットを決定する。次いで、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220に含まれているフレームであって、かつ初期サブセットにも含まれていないフレームを選択する。ショット・ツー・チャンク・マッパー250は、目標チャンクサイズ244に基づいて、選択されたフレームを1つまたは複数の新しいショットシーケンス220に割り当てる。最後に、ショット・ツー・チャンク・マッパー250は、選択されたフレームを選択されたショットシーケンス220から削除する。
【0076】
次に、ステップ408に戻ると、選択されたショットシーケンス220全体を現在チャンク270に割り当てることを、ショット・ツー・チャンク・マッパー250が決定した場合には、方法400は、直接的にステップ416に進む。
【0077】
ステップ416において、ショット・ツー・チャンク・マッパー250は、選択されたショットシーケンス220を現在チャンク270に割り当てる新しいショット割り当て260を生成し、選択されたショットシーケンス220のサイズを現在チャンクサイズ254に加算する。ステップ418において、ショット・ツー・チャンク・マッパー250は、現在チャンク270が完成したかどうかを判別する。ショット・ツー・チャンク・マッパー250は、任意の技術的に実現可能な手法で、現在チャンク270が完成したかどうかを判別することができる。
【0078】
例えば、照合戦略242が「個々」である場合には、ショット・ツー・チャンク・マッパー250は、1つのショットシーケンス220が現在チャンク270に割り当てられたときに、現在チャンク270が完成したことを判別する。いくつかの実施形態では、照合戦略242が「整数」である場合には、ショット・ツー・チャンク・マッパー250は、現在チャンク270のサイズが目標のチャンクサイズ244の余裕246の範囲内になったときに、現在チャンク270が完成したことを判別する。
【0079】
ステップ418において、現在チャンク270が完成していないことをショット・ツー・チャンク・マッパー250が判別した場合には、方法は、直接的にステップ422に進む。しかしながら、ステップ418において、現在チャンク270が完成していることをショット・ツー・チャンク・マッパー250が判別した場合には、方法は、ステップ420に進む。ステップ420において、ショット・ツー・チャンク・マッパー250は、現在チャンク識別子252を増分して、現在チャンクサイズ254をゼロに等しく設定する。
【0080】
ステップ422において、ショット・ツー・チャンク・マッパー250は、新しいショット割り当て260をタスク生成器280に送信する。ステップ424において、ショット照合アプリケーション140は、選択されたショットシーケンス220がソースビデオシーケンス120に含まれている最後のショットシーケンス220であるかどうかを判別する。ステップ424において、選択されたショットシーケンス220がソースビデオシーケンス120に含まれている最後のショットシーケンス220ではないことをショット照合アプリケーション140が判別した場合には、方法400は、ステップ426に進む。ステップ426において、ショット照合アプリケーション140は、ソースビデオシーケンス120に含まれている次のショットシーケンス220を選択する。次いで、方法400は、ステップ408に戻り、ここで、ショット・ツー・チャンク・マッパー250は、新しいショット割り当て260を生成する。
【0081】
しかしながら、ステップ424において、選択されたショットシーケンス220がソースビデオシーケンス120に含まれている最後のショットシーケンス220であることをショット照合アプリケーション140が判別した場合には、方法400は、直接的にステップ428に進む。ステップ428において、タスク生成器280は、ショット割り当て260に基づいてチャンク270を生成する。ステップ430において、タスク生成器280は、それぞれのチャンク270ごとに、対応する符号化タスク150を生成して、これらの符号化タスク150をタスクキュー132に追加する。
【0082】
ステップ432において、それぞれの符号化タスク150ごとに、符号化タスク150が符号化インスタンスに分配される。特定の符号化タスク150(x)の受信に応答して、符号化インスタンスは、対応するチャンク270(x)に含まれているショットシーケンス220の各々を順次かつ個々に符号化して、符号化されたチャンク170(x)を生成する。ステップ434において、アセンブラ180は、複数の符号化されたチャンク170を合成して、1つの符号化されたビデオシーケンス190を生成する。次いで、方法400は、終了する。
【0083】
有利には、符号化されたビデオシーケンス190内の符号化されたショットシーケンス220は、潜在的にそれぞれ異なる符号化パラメータによって符号化可能である。その結果、分散型符号化システム100により、従来のショットベースの分散システムに付随する符号化効率が提供され、その一方で、任意選択的に、個々の符号化タスク150の数が低減される。
【0084】
要約すると、本開示の技術を使用して、リアルタイム配信のためにソースビデオシーケンスを効率的に符号化することができる。ショット照合アプリケーションは、限定するわけではないが、ショット分析器と、戦略エンジンと、ショット・ツー・チャンク・マッパーと、タスク生成器とを含む。動作中、ショット分析器が、1つのソースビデオシーケンスを複数のショットシーケンスに分割し、これらのショットシーケンスを戦略エンジンに送信する。戦略エンジンは、ショットシーケンスを受信すると、これらのショットシーケンスの特性をリソースの制約と組み合わせて評価し、どのようにして照合アプリケーションがショットをチャンクに照合するかを指定する照合戦略を選択する。
【0085】
「整数」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、目標チャンクサイズを決定し、それぞれのチャンクのサイズが目標チャンクサイズを超えないことを保証しながら、整数個のショットシーケンスをそれぞれのチャンクに順次に割り当てる。「固定」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、目標チャンクサイズを選択し、ショットシーケンスをそれぞれのチャンクに順次に割り当て、それぞれのチャンクのサイズが目標チャンクサイズに等しくなることを保証するために、必要に応じてショットシーケンスを細分する。「全て」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、全てのショットシーケンスを単一のチャンクに順次に割り当てる。「個々」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、それぞれのショットシーケンスをそれぞれ異なるチャンクに順次に割り当てる。タスク生成器が、ショット・ツー・チャンク・マッパーから個々のショット割り当てを受信すると、タスク生成器は、1つまたは複数のチャンクを生成する。タスク生成器は、それぞれのチャンクごとに、対応する符号化タスクを生成して、これらの符号化タスクをタスクキューに格納する。
【0086】
並列エンコーダに含まれている符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、符号化タスクに関連するチャンクに含まれているそれぞれのショットシーケンスを順次に符号化する。より具体的には、符号化インスタンスは、それぞれのショットシーケンスごとに、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。このようにして、符号化インスタンスは、符号化されたチャンクを生成し、この符号化されたチャンク内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なる符号化パラメータによって個々に符号化されている。最後に、チャンクアセンブラが、複数の個々の符号化されたチャンクを合成して、1つの符号化されたビデオシーケンスを生成する。
【0087】
有利には、照合基準は、ソースビデオシーケンスのショットベースの符号化を符号化システムが効率的に実行することを可能にし、その一方で、利用可能なリソースの使用を最適化する。特に、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数は、チャンクの数に等しく、そのチャンクの数は、照合基準によって決定される。その結果、従来のショットベースの分散型符号化システムによって生成および処理される符号化タスクの数に起因するリソースの非効率性を、照合基準によって軽減することが可能となる。さらに、種々のエンコーダに関連する要件に基づいて照合戦略および/または目標チャンクサイズを選択することにより、照合アプリケーションは、ストリーミングビデオプロバイダが、種々のエンコーダを使用してソースビデオシーケンスのリアルタイム配信を最適化することを可能にする。
【実施例
【0088】
実施例1.いくつかの実施形態では、コンピュータ実装方法は、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第2のショットシーケンスが、第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
第2のショットシーケンス、または第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
を含み、
第1の符号化されたチャンクと、第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【0089】
実施例2.第2のショットシーケンスが、少なくとも1つの照合基準を満たしていないことを判別するステップは、
第1のチャンクのサイズと第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施例1記載のコンピュータ実装方法。
【0090】
実施例3.第2のショットシーケンス、または第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
第1のチャンクのサイズおよび最大チャンクサイズに基づいて、第2のショットシーケンスを、第3のショットシーケンスと第4のショットシーケンスとに分割するステップと、
第3のショットシーケンスを、第2のチャンクに割り当てるステップと、
第4のショットシーケンスを、第3のチャンクに割り当てるステップと
を含む、実施例1または2記載のコンピュータ実装方法。
【0091】
実施例4.第1の符号化インスタンスに、第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップは、
第1のチャンクに基づいて符号化タスクを生成するステップと、
符号化タスクをタスクキューに格納するステップと
を含む、実施例1から3までのいずれか1つ記載のコンピュータ実装方法。
【0092】
実施例5.第2のショットシーケンス、または第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
第2のショットシーケンスのサイズが最大チャンクサイズを超えていることを判別するステップと、
第2のショットシーケンスを、第3のショットシーケンスと第4のショットシーケンスに分割するステップと、
第3のショットシーケンスを、第2のチャンクに割り当てるステップと
を含む、実施例1から4までのいずれか1つ記載のコンピュータ実装方法。
【0093】
実施例6.第1のショットシーケンスを割り当てる前に、1つまたは複数のシーン検出演算を実行して、ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
複数のショットシーケンスは、第1のショットシーケンスおよび第2のショットシーケンスを含む、実施例1から5までのいずれか1つ記載のコンピュータ実装方法。
【0094】
実施例7.少なくとも1つの照合基準は、ショットシーケンスの、チャンクへの1対1のマッピングを指定する、実施例1から6までのいずれか1つ記載のコンピュータ実装方法。
【0095】
実施例8.第1のショットシーケンスを割り当てる前に、ソースビデオシーケンスおよびリソース制約のうちの少なくとも1つに基づいて、少なくとも1つの照合基準を決定するステップをさらに含む、実施例1から7までのいずれか1つ記載のコンピュータ実装方法。
【0096】
実施例9.第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
ソースビデオシーケンスに含まれている第4のショットシーケンスが、第2のチャンクに関する少なくとも1つの照合基準を満たしていることを判別するステップと、
第4のショットシーケンスを、第2のチャンクに割り当てるステップと
をさらに含む、実施例1から8までのいずれか1つ記載のコンピュータ実装方法。
【0097】
実施例10.いくつかの実施形態では、コンピュータ可読ストレージ媒体は、プロセッサによって実行された場合に、プロセッサに以下のステップを実行させる命令を含み、当該ステップは、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスが、第1のチャンクに関する1つまたは複数の照合基準を満たしていることを判別するステップと、
第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第2のショットシーケンスが、第1のチャンクに関する1つまたは複数の照合基準に含まれている第1の照合基準を満たしていないことを判別するステップと、
第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
であり、
第1の符号化されたチャンクと、第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【0098】
実施例11.第2のショットシーケンスが、少なくとも1つの照合基準を満たしていないことを判別するステップは、
第1のチャンクのサイズと第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施例10記載のコンピュータ可読ストレージ媒体。
【0099】
実施例12.第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
第3のショットシーケンスが、第2のチャンクに関する第1の照合基準を満たしていないことを判別するステップと、
第2のチャンクのサイズおよび最大チャンクサイズに基づいて、第3のショットシーケンスを、第4のショットシーケンスと第5のショットシーケンスとに分割するステップと、
第4のショットシーケンスを、第2のチャンクに割り当てるステップと、
第5のショットシーケンスを、第3のチャンクに割り当てるステップと
をさらに含む、実施例10または11記載のコンピュータ可読ストレージ媒体。
【0100】
実施例13.第1のショットシーケンスが、1つまたは複数の照合基準を満たしていることを判別するステップの前に、1つまたは複数のシーン検出演算を実行して、ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
複数のショットシーケンスは、第1のショットシーケンスおよび第2のショットシーケンスを含む、実施例10から12までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0101】
実施例14.第1の照合基準は、ショットシーケンスの、チャンクへの1対1のマッピングを指定する、実施例10から13までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0102】
実施例15.第1の照合基準は、チャンクサイズよりも小さいそれぞれのショットシーケンスが単一のチャンクにマッピングされるかどうかを指定する、実施例10から14までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0103】
実施例16.第1のショットシーケンスが、1つまたは複数の照合基準を満たしていることを判別するステップの前に、ソースビデオシーケンスおよびリソース制約のうちの少なくとも1つに基づいて、第1の照合基準を決定するステップをさらに含む、実施例10から15までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0104】
実施例17.第1の照合基準を決定するステップは、ソースビデオシーケンスに含まれている複数のショットシーケンスを、リソース制約と組み合わせて評価して、チャンクサイズを決定するステップを含む、実施例10から16までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0105】
実施例18.リソース制約は、メモリの帯域幅、タスクキューのサイズ、または符号化タスクの最大数を含む、実施例10から17までのいずれか1つ記載のコンピュータ可読ストレージ媒体。
【0106】
実施例19.いくつかの実施形態では、システムは、
ショット照合アプリケーションを格納するメモリと、
メモリに結合されたプロセッサと
を含み、
ショット照合アプリケーションは、プロセッサによって実行された場合に、プロセッサに以下のステップを行わせ、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第2のショットシーケンスが、第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
第1の符号化インスタンスに対して実質的に並列に符号化演算を実行する第2の符号化インスタンスに、第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
を行わせ、
第1の符号化されたチャンクと、第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【0107】
実施例20.ショット照合アプリケーションは、
第1のチャンクのサイズと第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
によって、プロセッサに、第2のショットシーケンスが少なくとも1つの照合基準を満たしていないことを判別させる、実施例19記載のシステム。
【0108】
任意の請求項に記載された任意の請求項要素のいずれか1つおよび全ての組み合わせ、および/または本願に記載された任意の要素のいずれか1つおよび全ての組み合わせは、如何なる手法でも、本発明および保護の意図された範囲内に含まれている。
【0109】
種々の実施形態の説明は、例示する目的で提示したものであって、網羅的であること、または開示された実施形態に限定することを意図したものではない。記載された実施形態の範囲および思想から逸脱することなく、多数の修正および変形が、当業者には明らかであろう。
【0110】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として実装可能である。したがって、本開示の態様は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらの実施形態を、本明細書では総称的に「モジュール」または「システム」と称することができる。さらに、本開示の態様は、1つまたは複数のコンピュータ可読媒体内に実装されたコンピュータプログラム製品の形態をとることができ、このようなコンピュータ可読媒体上には、コンピュータ可読プログラムコードが実装されている。
【0111】
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体であり得る。コンピュータ可読ストレージ媒体は、例えば、限定するわけではないが、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、もしくは前述のものの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のより具体的な例(網羅的ではない列挙)には、以下のもの、すなわち、1つまたは複数のワイヤを有する電気接続部、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、光学ストレージデバイス、磁気ストレージデバイス、または前述のものの任意の適切な組み合わせが含まれる。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに接続して使用するためのプログラムを含有または格納することができる任意の有形の媒体であり得る。
【0112】
本開示の態様は、本開示の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して上述されている。フローチャート図および/またはブロック図のそれぞれのブロック、ならびにフローチャート図および/またはブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装可能であることが理解されるであろう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、またはマシンを生成するための他のプログラム可能なデータ処理装置のプロセッサに提供可能である。命令は、コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置を介して実行されると、フローチャート図および/またはブロック図の1つまたは複数のブロックにおいて指定された機能/動作の実施を可能にする。そのようなプロセッサは、限定するわけではないが、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルゲートアレイであり得る。
【0113】
図面のフローチャート図およびブロック図は、本開示の種々の実施形態によるシステム、方法、およびコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、および演算を示す。これに関して、フローチャート図またはブロック図におけるそれぞれのブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替的な実装形態において、ブロックに記載されている機能が、図面に記載されている順序とは異なる順序で実施される場合があることにも留意すべきである。例えば、相前後して図示されている2つのブロックが、実際には、実質的に同時に実行されたり、または関係する機能によっては、これらのブロックが逆の順序で実行されたりする場合がある。また、ブロック図および/またはフローチャート図のそれぞれのブロック、ならびにブロック図および/またはフローチャート図におけるブロックの組み合わせが、指定された機能または動作を実行する専用のハードウェアベースのシステムによって、または専用のハードウェアとコンピュータ命令との組み合わせによって実装可能であることにも留意すべきである。
以下、本発明の好ましい実施形態を項分け記載する。
実施形態1
コンピュータ実装方法であって、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
を含み、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
方法。
実施形態2
前記第2のショットシーケンスが、前記少なくとも1つの照合基準を満たしていないことを判別するステップは、
前記第1のチャンクのサイズと前記第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施形態1に記載のコンピュータ実装方法。
実施形態3
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
前記第1のチャンクのサイズおよび前記最大チャンクサイズに基づいて、前記第2のショットシーケンスを、前記第3のショットシーケンスと前記第4のショットシーケンスとに分割するステップと、
前記第3のショットシーケンスを、前記第2のチャンクに割り当てるステップと、
前記第4のショットシーケンスを、第3のチャンクに割り当てるステップと
を含む、実施形態2に記載のコンピュータ実装方法。
実施形態4
前記第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップは、
前記第1のチャンクに基づいて符号化タスクを生成するステップと、
前記符号化タスクをタスクキューに格納するステップと
を含む、実施形態1に記載のコンピュータ実装方法。
実施形態5
前記第2のショットシーケンス、または前記第2のショットシーケンスから導出された第3のショットシーケンスを、第2のチャンクに割り当てるステップは、
前記第2のショットシーケンスのサイズが前記最大チャンクサイズを超えていることを判別するステップと、
前記第2のショットシーケンスを、前記第3のショットシーケンスと第4のショットシーケンスに分割するステップと、
前記第3のショットシーケンスを、前記第2のチャンクに割り当てるステップと
を含む、実施形態1に記載のコンピュータ実装方法。
実施形態6
前記第1のショットシーケンスを割り当てる前に、1つまたは複数のシーン検出演算を実行して、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
前記複数のショットシーケンスは、前記第1のショットシーケンスおよび前記第2のショットシーケンスを含む、実施形態1に記載のコンピュータ実装方法。
実施形態7
前記少なくとも1つの照合基準は、ショットシーケンスの、チャンクへの1対1のマッピングを指定する、実施形態1に記載のコンピュータ実装方法。
実施形態8
前記第1のショットシーケンスを割り当てる前に、前記ソースビデオシーケンスおよびリソース制約のうちの少なくとも1つに基づいて、前記少なくとも1つの照合基準を決定するステップをさらに含む、実施形態1に記載のコンピュータ実装方法。
実施形態9
前記第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
前記ソースビデオシーケンスに含まれている第4のショットシーケンスが、前記第2のチャンクに関する少なくとも1つの照合基準を満たしていることを判別するステップと、
前記第4のショットシーケンスを、前記第2のチャンクに割り当てるステップと
をさらに含む、実施形態1に記載のコンピュータ実装方法。
実施形態10
プロセッサによって実行された場合に、前記プロセッサに以下のステップを実行させる命令を含む、コンピュータ可読ストレージ媒体であって、
当該ステップは、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスが、第1のチャンクに関する1つまたは複数の照合基準を満たしていることを判別するステップと、
前記第1のショットシーケンスを、前記第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する前記1つまたは複数の照合基準に含まれている第1の照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
であり、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
コンピュータ可読ストレージ媒体。
実施形態11
前記第2のショットシーケンスが、前記少なくとも1つの照合基準を満たしていないことを判別するステップは、
前記第1のチャンクのサイズと前記第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施形態10に記載のコンピュータ可読ストレージ媒体。
実施形態12
前記第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
第3のショットシーケンスが、前記第2のチャンクに関する前記第1の照合基準を満たしていないことを判別するステップと、
前記第2のチャンクのサイズおよび前記最大チャンクサイズに基づいて、前記第3のショットシーケンスを、第4のショットシーケンスと第5のショットシーケンスとに分割するステップと、
前記第4のショットシーケンスを、前記第2のチャンクに割り当てるステップと、
前記第5のショットシーケンスを、第3のチャンクに割り当てるステップと
をさらに含む、実施形態11に記載のコンピュータ可読ストレージ媒体。
実施形態13
前記第1のショットシーケンスが、前記1つまたは複数の照合基準を満たしていることを判別するステップの前に、1つまたは複数のシーン検出演算を実行して、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
前記複数のショットシーケンスは、前記第1のショットシーケンスおよび前記第2のショットシーケンスを含む、実施形態10に記載のコンピュータ可読ストレージ媒体。
実施形態14
前記第1の照合基準は、ショットシーケンスの、チャンクへの1対1のマッピングを指定する、実施形態10に記載のコンピュータ可読ストレージ媒体。
実施形態15
前記第1の照合基準は、チャンクサイズよりも小さいそれぞれのショットシーケンスが単一のチャンクにマッピングされるかどうかを指定する、実施形態10に記載のコンピュータ可読ストレージ媒体。
実施形態16
前記第1のショットシーケンスが、前記1つまたは複数の照合基準を満たしていることを判別するステップの前に、前記ソースビデオシーケンスおよびリソース制約のうちの少なくとも1つに基づいて、前記第1の照合基準を決定するステップをさらに含む、実施形態10に記載のコンピュータ可読ストレージ媒体。
実施形態17
前記第1の照合基準を決定するステップは、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを、前記リソース制約と組み合わせて評価して、チャンクサイズを決定するステップを含む、実施形態16に記載のコンピュータ可読ストレージ媒体。
実施形態18
前記リソース制約は、メモリの帯域幅、タスクキューのサイズ、または符号化タスクの最大数を含む、実施形態17に記載のコンピュータ可読ストレージ媒体。
実施形態19
システムであって、
当該システムは、
ショット照合アプリケーションを格納するメモリと、
前記メモリに結合されたプロセッサと
を含み、
前記ショット照合アプリケーションは、前記プロセッサによって実行された場合に、前記プロセッサに以下のステップを行わせ、すなわち、
ソースビデオシーケンスに含まれている第1のショットシーケンスを、第1のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第2のショットシーケンスが、前記第1のチャンクに関する少なくとも1つの照合基準を満たしていないことを判別するステップと、
前記第2のショットシーケンスを、第2のチャンクに割り当てるステップと、
第1の符号化インスタンスに、前記第1のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第1の符号化されたチャンクを生成するステップと、
前記第1の符号化インスタンスに対して実質的に並列に符号化演算を実行する第2の符号化インスタンスに、前記第2のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第2の符号化されたチャンクを生成するステップと
を行わせ、
前記第1の符号化されたチャンクと、前記第2の符号化されたチャンクとを合成して、1つの符号化されたビデオシーケンスの少なくとも一部を生成する、
システム。
実施形態20
前記ショット照合アプリケーションは、
前記第1のチャンクのサイズと前記第2のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
によって、前記プロセッサに、前記第2のショットシーケンスが前記少なくとも1つの照合基準を満たしていないことを判別させる、実施形態19に記載のシステム。

【0114】
上記は、本開示の実施形態に関するものであるが、本開示の基本的な範囲から逸脱することなく、本開示の他のさらなる実施形態を想到することができ、本開示の範囲は、以下の特許請求の範囲によって定められている。
図1
図2
図3
図4A
図4B