(57)【要約】  種々の実施形態において、ショット照合アプリケーションは、複数の符号化インスタンスに、少なくとも２つのショットシーケンスを含むソースビデオシーケンスを符号化させる。ショット照合アプリケーションは、第１のショットシーケンスを、第１のチャンクに割り当てる。続いて、ショット照合アプリケーションは、第２のショットシーケンスが、第１のチャンクに関する照合基準を満たしていないことを判別する。その結果、ショット照合アプリケーションは、第２のショットシーケンス、または第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てる。ショット照合アプリケーションは、第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させる。同様に、ショット照合アプリケーションは、第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させる。最後に、チャンクアセンブラは、第１の符号化されたチャンクと、第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスを生成する。
2021507574.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
ソースビデオシーケンスに含まれている第１のショットシーケンスを、第１のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第２のショットシーケンスが、前記第１のチャンクに関する少なくとも１つの照合基準を満たしていないことを判別するステップと、
前記第２のショットシーケンス、または前記第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、前記第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
第２の符号化インスタンスに、前記第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
を含み、
前記第１の符号化されたチャンクと、前記第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する、
方法。
【請求項２】
前記第２のショットシーケンスが、前記少なくとも１つの照合基準を満たしていないことを判別するステップは、
前記第１のチャンクのサイズと前記第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、請求項１記載のコンピュータ実装方法。
【請求項３】
前記第２のショットシーケンス、または前記第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップは、
前記第１のチャンクのサイズおよび前記最大チャンクサイズに基づいて、前記第２のショットシーケンスを、前記第３のショットシーケンスと前記第４のショットシーケンスとに分割するステップと、
前記第３のショットシーケンスを、前記第２のチャンクに割り当てるステップと、
前記第４のショットシーケンスを、第３のチャンクに割り当てるステップと
を含む、請求項２記載のコンピュータ実装方法。
【請求項４】
前記第１の符号化インスタンスに、前記第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップは、
前記第１のチャンクに基づいて符号化タスクを生成するステップと、
前記符号化タスクをタスクキューに格納するステップと
を含む、請求項１記載のコンピュータ実装方法。
【請求項５】
前記第２のショットシーケンス、または前記第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップは、
前記第２のショットシーケンスのサイズが前記最大チャンクサイズを超えていることを判別するステップと、
前記第２のショットシーケンスを、前記第３のショットシーケンスと第４のショットシーケンスに分割するステップと、
前記第３のショットシーケンスを、前記第２のチャンクに割り当てるステップと
を含む、請求項１記載のコンピュータ実装方法。
【請求項６】
前記第１のショットシーケンスを割り当てる前に、１つまたは複数のシーン検出演算を実行して、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
前記複数のショットシーケンスは、前記第１のショットシーケンスおよび前記第２のショットシーケンスを含む、請求項１記載のコンピュータ実装方法。
【請求項７】
前記少なくとも１つの照合基準は、ショットシーケンスの、チャンクへの１対１のマッピングを指定する、請求項１記載のコンピュータ実装方法。
【請求項８】
前記第１のショットシーケンスを割り当てる前に、前記ソースビデオシーケンスおよびリソース制約のうちの少なくとも１つに基づいて、前記少なくとも１つの照合基準を決定するステップをさらに含む、請求項１記載のコンピュータ実装方法。
【請求項９】
前記第２の符号化インスタンスに、前記第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
前記ソースビデオシーケンスに含まれている第４のショットシーケンスが、前記第２のチャンクに関する少なくとも１つの照合基準を満たしていることを判別するステップと、
前記第４のショットシーケンスを、前記第２のチャンクに割り当てるステップと
をさらに含む、請求項１記載のコンピュータ実装方法。
【請求項１０】
プロセッサによって実行された場合に、前記プロセッサに以下のステップを実行させる命令を含む、コンピュータ可読ストレージ媒体であって、
当該ステップは、すなわち、
ソースビデオシーケンスに含まれている第１のショットシーケンスが、第１のチャンクに関する１つまたは複数の照合基準を満たしていることを判別するステップと、
前記第１のショットシーケンスを、前記第１のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第２のショットシーケンスが、前記第１のチャンクに関する前記１つまたは複数の照合基準に含まれている第１の照合基準を満たしていないことを判別するステップと、
前記第２のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、前記第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
第２の符号化インスタンスに、前記第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
であり、
前記第１の符号化されたチャンクと、前記第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する、
コンピュータ可読ストレージ媒体。
【請求項１１】
前記第２のショットシーケンスが、前記少なくとも１つの照合基準を満たしていないことを判別するステップは、
前記第１のチャンクのサイズと前記第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、請求項１０記載のコンピュータ可読ストレージ媒体。
【請求項１２】
前記第２の符号化インスタンスに、前記第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
第３のショットシーケンスが、前記第２のチャンクに関する前記第１の照合基準を満たしていないことを判別するステップと、
前記第２のチャンクのサイズおよび前記最大チャンクサイズに基づいて、前記第３のショットシーケンスを、第４のショットシーケンスと第５のショットシーケンスとに分割するステップと、
前記第４のショットシーケンスを、前記第２のチャンクに割り当てるステップと、
前記第５のショットシーケンスを、第３のチャンクに割り当てるステップと
をさらに含む、請求項１１記載のコンピュータ可読ストレージ媒体。
【請求項１３】
前記第１のショットシーケンスが、前記１つまたは複数の照合基準を満たしていることを判別するステップの前に、１つまたは複数のシーン検出演算を実行して、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
前記複数のショットシーケンスは、前記第１のショットシーケンスおよび前記第２のショットシーケンスを含む、請求項１０記載のコンピュータ可読ストレージ媒体。
【請求項１４】
前記第１の照合基準は、ショットシーケンスの、チャンクへの１対１のマッピングを指定する、請求項１０記載のコンピュータ可読ストレージ媒体。
【請求項１５】
前記第１の照合基準は、チャンクサイズよりも小さいそれぞれのショットシーケンスが単一のチャンクにマッピングされるかどうかを指定する、請求項１０記載のコンピュータ可読ストレージ媒体。
【請求項１６】
前記第１のショットシーケンスが、前記１つまたは複数の照合基準を満たしていることを判別するステップの前に、前記ソースビデオシーケンスおよびリソース制約のうちの少なくとも１つに基づいて、前記第１の照合基準を決定するステップをさらに含む、請求項１０記載のコンピュータ可読ストレージ媒体。
【請求項１７】
前記第１の照合基準を決定するステップは、前記ソースビデオシーケンスに含まれている複数のショットシーケンスを、前記リソース制約と組み合わせて評価して、チャンクサイズを決定するステップを含む、請求項１６記載のコンピュータ可読ストレージ媒体。
【請求項１８】
前記リソース制約は、メモリの帯域幅、タスクキューのサイズ、または符号化タスクの最大数を含む、請求項１７記載のコンピュータ可読ストレージ媒体。
【請求項１９】
システムであって、
当該システムは、
ショット照合アプリケーションを格納するメモリと、
前記メモリに結合されたプロセッサと
を含み、
前記ショット照合アプリケーションは、前記プロセッサによって実行された場合に、前記プロセッサに以下のステップを行わせ、すなわち、
ソースビデオシーケンスに含まれている第１のショットシーケンスを、第１のチャンクに割り当てるステップと、
前記ソースビデオシーケンスに含まれている第２のショットシーケンスが、前記第１のチャンクに関する少なくとも１つの照合基準を満たしていないことを判別するステップと、
前記第２のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、前記第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
前記第１の符号化インスタンスに対して実質的に並列に符号化演算を実行する第２の符号化インスタンスに、前記第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
を行わせ、
前記第１の符号化されたチャンクと、前記第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する、
システム。
【請求項２０】
前記ショット照合アプリケーションは、
前記第１のチャンクのサイズと前記第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
前記仮のサイズが最大チャンクサイズを超えていることを判別するステップと
によって、前記プロセッサに、前記第２のショットシーケンスが前記少なくとも１つの照合基準を満たしていないことを判別させる、請求項１９記載のシステム。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は、２０１７年１２月１３日に出願された米国特許出願番号第１５／８４０９９８号の利益を主張し、これにより、同号を参照によって本明細書に援用するものとする。
【技術分野】
【０００２】
本発明の実施形態は、一般に、ビデオ技術に関し、より具体的には、符号化タスクを最適化するための技術に関する。
【背景技術】
【０００３】
ソースビデオシーケンスをリアルタイム配信するためには、ソースビデオシーケンスを効率的に符号化することが不可欠である。全体的な符号化時間を短縮するために、典型的なストリーミングビデオプロバイダは、複数の符号化インスタンス間で符号化作業を並列化する分散型符号化システムを実装することができる。符号化作業の並列化に加えて、いくつかのストリーミングビデオプロバイダは、ショットベースの分散型符号化システムを実装しており、このようなショットベースの分散型符号化システムは、それぞれのショットごとに、ショットのための符号化パラメータを個別化して、符号化処理中に使用されるビットレートの特定の品質レベルを満たすような、対応する符号化されたショットを生成する。
【０００４】
典型的なショットベースの分散型符号化システムでは、符号化プリプロセッサが、１つのソースビデオシーケンスを複数の個々のショットシーケンスに細分する。それぞれのショットシーケンスは、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間−時間特性を有しており、連続した期間にわたって実行される。符号化プリプロセッサは、それぞれのショットシーケンスごとに、それぞれ異なる符号化タスクを生成して、これらの符号化タスクをタスクキューに追加する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。最後に、アセンブラが、複数の個々に符号化されたショットシーケンスを合成して、１つの全体的な符号化されたビデオシーケンスを生成する。
【０００５】
ショットベースの分散型符号化システムの１つの限界は、ソースビデオシーケンスのリアルタイム配信の準備に必要とされる符号化タスクの数が、望ましくないほど多くなる可能性があることである。より具体的には、幅広い種々のインターネット接続および種々の視聴デバイスにわたって視聴体験を最適化するために、ストリーミングサービスプロバイダは、典型的に、それぞれのソースビデオシーケンスに対して、複数の符号化されたビデオシーケンスを提供する。例えば、それぞれのソースビデオシーケンスに対して、ストリーミングサービスプロバイダは、４４１個のそれぞれ異なる符号化されたビデオシーケンスを提供することができ、この場合、それぞれの符号化されたビデオシーケンスは、６３個の目標品質レベルと、７つの解像度とからなるそれぞれ異なる順列を表している。２９１５個のショットを含む１つのソースビデオシーケンスのリアルタイム配信を準備するために、ショットベースの符号化システムは、１２８５５１５個のそれぞれ異なる符号化タスクを生成し、すなわち、４４１個のそれぞれ異なる符号化されたビデオシーケンスにわたって、それぞれのショットごとに１つのタスクを生成する。
【０００６】
符号化タスクの数が増えるにつれて、符号化タスクをタスクキューから符号化インスタンスに送信するために必要とされる帯域幅と、符号化タスクをタスクキューに格納するために必要とされるメモリとの両方が増加する。その結果、符号化タスクの数が増えるにつれて、集中型メッセージングサブシステムと、ショットベースの分散型符号化システムとの全体的な性能が低下する可能性がある。さらに、潜在的に数百にもなるソースビデオシーケンスのライブラリをリアルタイム配信のために準備する場合には、未分配の符号化タスクを格納するために必要とされるメモリが、タスクキューに割り振られたメモリを超えてしまう可能性がある。結果として、ショットベースの分散型符号化システムは、種々のソースビデオシーケンスを適切に符号化することができず、機能しなくなる可能性さえある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述の説明のように、当技術分野で必要とされるのは、ビデオシーケンスを符号化するためのより効率的な技術である。
【課題を解決するための手段】
【０００８】
本発明の１つの実施形態は、ビデオシーケンスを符号化するためのコンピュータ実装方法を説明するものである。当該方法は、ソースビデオシーケンスに含まれている第１のショットシーケンスを、第１のチャンクに割り当てるステップと、ソースビデオシーケンスに含まれている第２のショットシーケンスが、第１のチャンクに関する少なくとも１つの照合基準を満たしていないことを判別するステップと、第２のショットシーケンス、または第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップと、第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップとを含み、第１の符号化されたチャンクと、第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【０００９】
本開示の技術の１つの利点は、ショットシーケンスがチャンクに照合されるので、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数が、チャンクの数に等しくなることである。特に、チャンクの数を、ショットシーケンスの数よりも格段に少なくすることが可能である。その結果、従来のショットベースの符号化分散システムによってもたらされる符号化タスクの数に起因するリソースの非効率性を、格段に軽減することができる。さらに、チャンクが、特定の種類のエンコーダの要件（例えば、ショットシーケンス境界と、ＧＯＰ境界との位置合わせ）を満たすことが保証されるように、照合基準を選択することができる。
【図面の簡単な説明】
【００１０】
本発明の上に挙げた特徴を詳細に理解することができるように、上に簡潔に要約した本発明を、実施形態を参照することによってより具体的に説明することができ、これらの実施形態の一部が、添付の図面に示されている。しかしながら、添付の図面は、本発明の典型的な実施形態を示しているに過ぎず、したがって、本発明の範囲を限定するものと見なされるべきではなく、本発明が、他の同等に効果的な実施形態を容認することができることに留意すべきである。
【図１】本発明の１つまたは複数の態様を実装するように構成された分散型符号化システムの概念図である。
【図２】本発明の種々の実施形態による、図１のショット照合アプリケーションのより詳細な図である。
【図３】本発明の種々の実施形態による、図１のショット照合アプリケーションによって複数の異なる照合戦略を使用して生成されたチャンクの、種々の例を示す図である。
【図４Ａ】本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図である。
【図４Ｂ】本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図である。
【発明を実施するための形態】
【００１１】
以下の記載では、本発明のより完全な理解を提供するために、多数の特定の詳細が説明されている。しかしながら、これらの特定の詳細のうちの１つまたは複数がなくても本発明が実施可能であることは、当業者には明らかであろう。
【００１２】
本開示の技術を使用して、リアルタイム配信のためにソースビデオシーケンスを効率的に符号化することができる。まず始めに、ショット分析器が、１つのソースビデオシーケンスを複数のショットシーケンスに分割し、これらのショットシーケンスを戦略エンジンに送信する。戦略エンジンは、ショットシーケンスを受信すると、これらのショットシーケンスの特性をリソース制約と組み合わせて評価し、ショットの、チャンクへの割り当てを導く照合基準を選択する。これらの照合基準に基づいて、ショット・ツー・チャンク・マッパー（shot-to-chunk mapper）は、それぞれのショットシーケンスごとに、ショットシーケンスをチャンクに割り当てる。特に、ショット・ツー・チャンク・マッパーは、複数のショットシーケンスを単一のチャンクに割り当てることができる。
【００１３】
タスク生成器が、ショット・ツー・チャンク・マッパーから個々のショット割り当てを受信すると、タスク生成器は、１つまたは複数のチャンクを生成する。タスク生成器は、それぞれのチャンクごとに、関連する符号化タスクを生成して、これらの符号化タスクをタスクキューに格納する。それぞれの符号化タスクは、並列エンコーダに含まれている複数の符号化インスタンスのうちの１つに分配される。関連する符号化インスタンスは、それぞれの符号化タスクごとに、個々の符号化されたチャンクを生成し、この符号化されたチャンク内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なる符号化パラメータによって個々に符号化されている。最後に、チャンクアセンブラが、複数の個々の符号化されたチャンクを合成して、１つの符号化されたビデオシーケンスを生成する。
【００１４】
有利には、ショットシーケンスを、照合基準に基づいてチャンクに割り当てることにより、ソースビデオシーケンスの符号化に付随する全体的な効率が、利用可能なリソースに関して最適化される。特に、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数が、チャンクの数に等しくなり、チャンクの数は、ショットシーケンスの数よりも少ないことが多い。
【００１５】
システムの概要
図１は、本発明の１つまたは複数の態様を実装するように構成された分散型符号化システム１００の概念図である。図示のように、分散型符号化システム１００は、仮想プライベートクラウド（すなわち、カプセル化された共有リソース、ソフトウェア、データなど）１０２を含み、この仮想プライベートクラウド１０２は、入力データを送信可能な、かつ／またはビデオコンテンツを表示可能な、種々のデバイスに接続されている。そのようなデバイスには、限定するわけではないが、ゲームコンソール１０３、スマートフォン１０４、スマートテレビジョン（ＴＶ）１０５、ラップトップ１０６、タブレット１０７、およびデスクトップコンピュータ１０８が含まれる。代替的な実施形態では、分散型符号化システム１００は、任意の数および／または任意の種類の入力デバイス、出力デバイス、および／または入出力デバイスを、任意の組み合わせで含むことができる。
【００１６】
仮想プライベートクラウド１０２は、限定するわけではないが、任意の数および任意の種類のコンピューティングインスタンス１１０を含む。仮想プライベートクラウド１０２は、入力デバイス（例えば、ラップトップ１０６）から入力ユーザ情報を受信し、１つまたは複数のコンピューティングインスタンス１１０は、このユーザ情報に基づいて動作し、仮想プライベートクラウド１０２は、処理された情報をユーザに送信する。仮想プライベートクラウド１０２は、従来のブラウン管、液晶ディスプレイ、発光ダイオードなどのような任意の数のデバイスの表示機能を介して、出力情報をユーザに伝達する。
【００１７】
代替的な実施形態では、仮想プライベートクラウド１０２の代わりに、パブリッククラウドまたはハイブリッドクラウドのような任意の種類のクラウドコンピューティング環境を使用してもよい。他の実施形態では、分散型符号化システム１００は、仮想プライベートクラウド１０２の代わりに、任意の分散型コンピュータシステムを含むことができる。さらに他の実施形態では、分散型符号化システム１００は、仮想プライベートクラウド１０２を含まず、その代わりに、複数のプロセッサ（例えば、任意の組み合わせでの中央処理ユニットおよび／またはグラフィック処理ユニット）が実装されている単一のコンピューティングユニットを含む。
【００１８】
説明のために、同じオブジェクトの複数のインスタンスは、オブジェクトを識別する参照符号と、必要に応じて、インスタンスを識別する括弧付きの数字とを用いて示されている。コンピューティングインスタンス１１０（Ｐ）について図示されるように、それぞれのコンピューティングインスタンス１１０は、限定するわけではないが、プロセッサ１１２およびメモリ１１６を含む。プロセッサ１１２は、命令を実行することができる任意の命令実行システム、装置、またはデバイスであり得る。例えば、プロセッサ１１２は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、コントローラ、マイクロコントローラ、状態機械、またはこれらの任意の組み合わせを含むことができる。メモリ１１６は、コンピューティングインスタンス１１０のプロセッサ１１２によって使用するための、ソフトウェアアプリケーションおよびデータのようなコンテンツを格納している。
【００１９】
メモリ１１６は、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フロッピーディスク、ハードディスク、または任意の他の形式のデジタルストレージのような、ローカルまたはリモートの１つまたは複数の容易に利用可能なメモリであり得る。いくつかの実施形態では、メモリ１１６に加えて、またはメモリ１１６の代わりに、ストレージ（図示せず）を使用することができる。ストレージは、プロセッサ１１２にアクセス可能な、任意の数および任意の種類の外部メモリを含むことができる。例えば、限定するわけではないが、ストレージは、セキュアデジタルカード、外部フラッシュメモリ、ポータブルコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光学ストレージデバイス、磁気ストレージデバイス、または上記の任意の適切な組み合わせを含むことができる。
【００２０】
一般に、仮想プライベートクラウド１０２に含まれているコンピューティングインスタンス１１０は、１つまたは複数のアプリケーションを実装するように構成されている。より具体的には、分散型符号化システム１００に含まれているコンピューティングインスタンス１１０は、ソースビデオシーケンス１２０を、符号化されたビデオシーケンス１９０としてリアルタイム配信するために、ソースビデオシーケンス１２０を符号化するように構成されている。ソースビデオシーケンス１２０をリアルタイム配信するためには、ソースビデオシーケンス１２０を効率的に符号化することが不可欠であるので、分散型符号化システム１００は、符号化作業を、複数のコンピューティングインスタンス１１０にわたって並列化する。
【００２１】
図示のように、コンピューティングインスタンス１１０（Ｐ）は、符号化プリプロセッサ１３０として構成されており、コンピューティングインスタンス１１０（１）〜１１０（Ｎ）は、並列エンコーダ１６０として構成されており、コンピューティングインスタンス１１０（Ｍ）は、アセンブラ１８０として構成されている。並列エンコーダ１６０として構成されているコンピューティングインスタンス１１０（１）〜１１０（Ｎ）は、本明細書では「符号化インスタンス」とも称する。符号化時間を最適化するために、それぞれの符号化インスタンスは、符号化演算を独立して、かつ実質的に並行して実行する。本明細書で称されるように、符号化演算を「実質的に並行して」実行することは、１つの符号化作業のそれぞれ異なる部分を実行することを含み、この場合、１つの符号化作業のそれぞれ異なる部分は、部分的または完全に時間的にオーバーラップして実行される。
【００２２】
代替的な実施形態では、任意の数のコンピューティングインスタンス１１０を、任意の組み合わせで、符号化プロセッサ１３０、並列エンコーダ１６０、およびアセンブラ１８０として構成することができる。例えば、いくつかの実施形態では、コンピューティングインスタンス１１０（１）を、符号化プリプロセッサ１３０およびアセンブラ１８０の両方として構成することができ、コンピューティングインスタンス１１０（２）〜１１０（３３）を、並列エンコーダ１６０として構成することができる。
【００２３】
いくつかのストリーミングビデオプロバイダは、従来のショットベースの分散型符号化システムを実装しており、この従来のショットベースの分散型符号化システムは、それぞれのショットごとに、ショットのための符号化パラメータを個別化して、符号化処理中に使用されるビットレートの特定の品質レベルを満たすような、対応する符号化されたショットを生成する。一般的に、それぞれのショットシーケンスは、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間−時間特性を有しており、連続した期間にわたって実行される。従来の符号化プリプロセッサは、それぞれのショットシーケンスごとに、それぞれ異なる符号化タスクを生成して、これらの符号化タスクをタスクキューに追加する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。最後に、アセンブラが、複数の個々に符号化されたショットシーケンスを合成して、１つの全体的な符号化されたビデオシーケンスを生成する。
【００２４】
従来のショットベースの分散型符号化システムの１つの限界は、ソースビデオシーケンスのリアルタイム配信の準備に必要とされる符号化タスクの数が、望ましくないほど多くなる可能性があることである。より具体的には、幅広い種々のインターネット接続および種々の視聴デバイスにわたって視聴体験を最適化するために、ストリーミングサービスプロバイダは、典型的に、それぞれのソースビデオシーケンスに対して、複数の符号化されたビデオシーケンスを提供する。例えば、それぞれのソースビデオシーケンスに対して、ストリーミングサービスプロバイダは、４４１個のそれぞれ異なる符号化されたビデオシーケンスを提供することができ、この場合、それぞれの符号化されたビデオシーケンスは、６３個の目標品質レベルと、７つの解像度とからなるそれぞれ異なる順列を表している。２９１５個のショットを含む１つのソースビデオシーケンスのリアルタイム配信を準備するために、ショットベースの符号化システムは、１２８５５１５個のそれぞれ異なる符号化タスクを生成し、すなわち、４４１個のそれぞれ異なる符号化されたビデオシーケンスにわたって、それぞれのショットごとに１つのタスクを生成する。
【００２５】
符号化タスクの数が増えるにつれて、符号化タスクをタスクキューから符号化インスタンスに送信するために必要とされる帯域幅と、符号化タスクをタスクキューに格納するために必要とされるメモリとの両方が増加する。その結果、符号化タスクの数が増えるにつれて、集中型メッセージングサブシステムと、ショットベースの分散型符号化システムとの全体的な性能が低下する可能性がある。さらに、潜在的に数百にもなるソースビデオシーケンスのライブラリをリアルタイム配信のために準備する場合には、未分配の符号化タスクを格納するために必要とされるメモリが、タスクキューに割り振られたメモリを超えてしまう可能性がある。結果として、従来のショットベースの分散型符号化システムは、種々のソースビデオシーケンスを適切に符号化することができず、機能しなくなる可能性さえある。
【００２６】
ショットベースの符号化のためのリソース効率の最適化
従来のショットベースの符号化システムの前述した限界に対処するために、符号化プリプロセッサ１３０は、限定するわけではないが、ショット照合アプリケーション１４０を含む。ショット照合アプリケーション１４０は、１つまたは複数のコンピューティングインスタンス１１０に関連するメモリ１１６内に常駐し、１つまたは複数のコンピューティングインスタンス１１０に関連するプロセッサ１１２上で実行される。
【００２７】
図２に関連してより詳細に説明されるように、ショット照合アプリケーション１４０は、１つのソースビデオシーケンス１２０を複数のショットシーケンス（図１には図示せず）に分割する。続いて、ショット照合アプリケーション１４０は、リソース制約１４２と組み合わせてショットシーケンスを分析して、照合基準（図１には図示せず）を決定する。リソース制約１４２の例には、いくつかを挙げると、メモリの帯域幅、タスクキュー１３２のサイズ、符号化タスク１５０の最大数、および符号化インスタンスに関連する特性が含まれる。照合基準には、限定するわけではないが、照合戦略が含まれる。次いで、ショット照合アプリケーション１４０は、照合基準に基づいて、１つまたは複数のチャンクにわたってショットシーケンスを分配する。本明細書で称されるように、「チャンク」は、１つまたは複数のショットシーケンスを含む。
【００２８】
例えば、いくつかの実施形態では、照合戦略は、「全て」、「個々」、「固定」、または「整数」である。「全て」の照合戦略の場合、ショット照合アプリケーション１４０は、全てのショットシーケンスを単一のチャンクに順次に割り当てる。「個々」の照合戦略の場合には、ショット照合アプリケーション１４０は、それぞれのショットシーケンスをそれぞれ異なるチャンクに順次に割り当てる。「固定」の照合戦略は、目標チャンクサイズを指定する追加的な照合制約に関連している。「固定」の照合戦略の場合には、ショット照合アプリケーション１４０は、ショットシーケンスをそれぞれのチャンクに順次に割り当て、それぞれのチャンクのサイズが目標チャンクサイズに等しくなることを保証するために、必要に応じてショットシーケンスを細分する。「整数」の照合戦略も、目標チャンクサイズを指定する追加的な照合制約に関連している。「整数」の照合戦略の場合には、ショット照合アプリケーション１４０は、それぞれのチャンクのサイズが目標チャンクサイズを超えないことを保証しながら、整数個のショットシーケンスをそれぞれのチャンクに順次に割り当てる。
【００２９】
一般に、ショット照合アプリケーション１４０は、従来のショットベースの符号化システムに関連した限界を軽減するような照合基準を選択する。例えば、ショットシーケンスの数が比較的多い場合、かつ／またはメモリの帯域幅が比較的小さいことをリソース制約１４２が示している場合には、ショット照合アプリケーション１４０は、「固定」または「整数」の照合戦略を選択する。さらに、ショット照合アプリケーション１４０は、符号化タスク１５０の数がショットシーケンスの数よりも格段に少なくなることを保証するような目標チャンクサイズを選択する。いくつかの実施形態では、符号化タスク１５０の各々がＧＯＰ（group-of-pictures）境界に整列するように符号化インスタンスが要求していることを、リソース制約１４２が示している場合には、ショット照合アプリケーション１４０は、「固定」の照合戦略と、ＧＯＰのサイズの倍数である目標チャンクサイズとを選択することができる。
【００３０】
ショット照合アプリケーション１４０は、それぞれのチャンクごとに、それぞれ異なる符号化タスク１５０を生成して、これらの符号化タスク１５０をタスクキュー１３２に追加する。一般的に、ショット照合アプリケーション１４０がＴ個のチャンクを生成する場合には、ショット照合アプリケーション１４０は、符号化タスク１５０（１）〜１５０（Ｔ）も生成する。符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスク１５０をタスクキュー１３２から符号化インスタンスに送信する。
【００３１】
符号化タスク１５０（ｘ）は、対応するチャンクに含まれているそれぞれのショットシーケンスを順次にかつ独立して符号化して、符号化されたチャンク１７０（ｘ）を生成するように、符号化インスタンスを構成する。符号化インスタンスは、それぞれのショットシーケンスごとに、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。したがって、符号化されたチャンク１７０（ｘ）内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なるパラメータによって符号化されている。続いて、符号化インスタンスが、複数のそれぞれ異なる符号化されたショットシーケンスを合成して、１つの符号化されたチャンク１７０（ｘ）を生成する。
【００３２】
符号化インスタンスが、符号化されたチャンク１７０（１）〜１７０（Ｔ）の生成を完了した後、アセンブラ１８０が、複数の個々の符号化されたチャンク１７０を合成して、１つの符号化されたビデオシーケンス１９０を生成する。有利には、符号化されたビデオシーケンス１９０内のそれぞれのショットシーケンスは、潜在的にそれぞれ異なる符号化パラメータによって符号化されている。その結果、分散型符号化システム１００は、それぞれのショットシーケンスごとに個々に符号化パラメータを最適化した場合に本来備わっている符号化効率を提供する。さらに、符号化タスク１５０の数が制御されるように照合基準をカスタマイズすることにより、ショット照合アプリケーション１４０は、従来のショットベースの分散型符号化システムにしばしば付随するリソースの非効率性および非柔軟性を軽減する。
【００３３】
本明細書に示されている分散型符号化システム１００が例示であり、変形および修正が可能であることは理解されるであろう。例えば、本明細書で説明されているショット照合アプリケーション１４０と、並列エンコーダ１６０と、アセンブラ１８０とによって提供される機能を、（１つを含む）任意の数のソフトウェアアプリケーションと、任意の数の分散型符号化システム１００のコンポーネントとに統合または分配してもよい。さらに、図１の種々のユニット間の接続トポロジは、必要に応じて変更可能である。
【００３４】
本明細書で説明されている技術は、限定ではなく例示であり、本発明のより広い思想および範囲から逸脱することなく変更可能であることに留意すべきである。例えば、いくつかの実施形態では、符号化インスタンスの各々は、任意の技術的に実現可能な手法で、それぞれのショットシーケンスに対して任意の数および任意の種類の符号化パラメータを決定することができる。同じまたは他の実施形態において、符号化プリプロセッサ１３０は、集中型メッセージングサブシステムを含まなくてもよいし、かつ／またはショット照合アプリケーション１４０は、タスクキュー１３２を含まなくてもよい。そのような実施形態では、ショット照合アプリケーションおよび／または符号化プリプロセッサ１３０は、任意の技術的に実現可能な手法で、符号化タスク１５０を符号化インスタンスに送信することができる。
【００３５】
ショットシーケンスをチャンクに照合する
図２は、本発明の種々の実施形態による、図１のショット照合アプリケーション１４０のより詳細な図である。図示のように、ショット照合アプリケーション１４０は、限定するわけではないが、ショット分析器２１０と、戦略エンジン２３０と、ショット・ツー・チャンク・マッパー２５０と、タスク生成器２８０とを含む。
【００３６】
動作中、ショット分析器２１０は、ソースビデオシーケンス１２０を受信して、このソースビデオシーケンス１２０を任意の数のショットシーケンス２２０に分割する。ショットシーケンス２２０の各々は、一連のフレームを含み、これらのフレームは、通常、それぞれ同様の空間−時間特性を有しており、連続した期間にわたって実行される。ショット分析器２１０は、任意の技術的に実現可能な手法で、ソースビデオシーケンス１２０をショットシーケンス２２０に分割することができる。例えば、ショット分析器２１０は、１つまたは複数のショット検出アルゴリズムを実装することができる。
【００３７】
戦略エンジン２３０は、ショットシーケンス２２０およびリソース制約１４２を受信して、照合基準２４０を生成する。図示のように、照合基準２４０は、限定するわけではないが、照合戦略２４２と、目標チャンクサイズ２４４と、余裕２４６とを含む。本明細書で図１に関連して前述したように、照合戦略２４２は、ショットシーケンス２２０をチャンク２７０に照合するためのアルゴリズムを指定する。照合戦略２４２の例には、限定するわけではないが、「全て」、「個々」、「固定」、および「整数」が含まれる。目標チャンクサイズ２４４は、チャンク２７０の各々に対する最適なサイズを指定する。補完的に、余裕２４６は、目標チャンクサイズ２４４からの許容可能な偏差を指定する。
【００３８】
特に、ショット照合アプリケーション１４０は、照合戦略２４２が「固定」または「整数」である場合には、目標チャンクサイズ２４４および余裕２４６を強制するが、照合戦略が「全て」または「個々」である場合には、目標チャンクサイズ２４４および余裕２４６を無視する。例えば、照合戦略２４２が「固定」または「整数」であって、かつ目標チャンクサイズ２４４が１８０秒であり、かつ余裕が１０秒である場合には、ショット照合アプリケーション１４０は、チャンク２７０の各々のサイズが１７０秒〜１９０秒の間となることを保証する。対照的に、照合戦略２４２が「全て」である場合には、ショット照合アプリケーション１４０は、ソースビデオシーケンス１２０のサイズを有する単一のチャンク１７０を生成する。照合戦略２４２が「個々」である場合には、ショット照合アプリケーション１４０は、それぞれのショットシーケンス２２０（ｘ）ごとに、これらのショットシーケンス２２０（ｘ）のサイズを有するそれぞれ異なるチャンク１７０（ｘ）を生成する。
【００３９】
種々の実施形態では、ショット照合アプリケーション１４０は、照合戦略２４２に基づいて、それぞれ異なる一連の照合基準２４０を決定および／または強制する。例えば、いくつかの実施形態では、照合戦略２４２が「全て」または「個々」である場合には、戦略エンジン２３０は、目標チャンクサイズ２４４も余裕２４６も決定しない。同じまたは他の実施形態において、照合基準２４０は、照合戦略２３０が「個々」である場合に適用可能な最大チャンクサイズを含む。この実施形態では、戦略エンジン２３０が「個々」の照合戦略２４２を設定した場合に、戦略エンジン２３０は、最大チャンクサイズを決定する。或る特定のショットシーケンス２２０のサイズが最大チャンクサイズを超えた場合には、ショット照合アプリケーション１４０は、そのショットシーケンス２２０を、それぞれが最大チャンクサイズを超えないようなサイズを有する複数のショットシーケンス２２０へと細分する。
【００４０】
代替的な実施形態では、戦略エンジン２３０は、任意の種類のデータに基づいて、任意の技術的に実現可能な手法で、任意の数および任意の種類の照合基準２４０を生成することができる。例えば、いくつかの実施形態では、照合戦略２４２のための対応する値は、本明細書で説明されている「全て」、「個々」、「固定」、および「整数」の照合戦略とは異なっていてもよい。同じまたは他の実施形態において、戦略エンジン２３０は、グラフィカルユーザインターフェースを介して受信されたデータに基づいて、照合基準２４０のための値を受信および／または決定することができる。
【００４１】
ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０および照合基準２４０を受信して、ショット割り当て２６０を生成する。ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０を順次に、同時に、またはこれらの任意の組み合わせで受信することができる。ただし、ショット・ツー・チャンク・マッパー２５０は、ソースビデオシーケンス１２０に関連するビデオタイムラインにおいてショットシーケンスが発生した順序で、ショットシーケンス２２０を処理する。
【００４２】
図示のように、ショット・ツー・チャンク・マッパー２５０は、限定するわけではないが、現在チャンク識別子（ＩＤ）２５２と、現在チャンクサイズ２５４とを含む。現在チャンク識別子２５２は、タスク生成器２８０によって生成されるチャンク２７０を一意に指定するものである。一般に、タスク生成器２８０は、ショット・ツー・チャンク・マッパー２５０がショット割り当て２６０を生成した後に、チャンク２７０を生成する。なお、単なる説明のために、現在チャンク識別子２５２によって指定されたチャンク２７０は、そのチャンク２７０がその時点でタスク生成器２８０によって生成されたかどうかに関わらず、本明細書では「現在チャンク２７０」と称する。現在チャンクサイズ２５４は、前もって生成されたショット割り当て２６０に基づいて、現在チャンク２７０のサイズを格納する。
【００４３】
まず始めに、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を１に等しく設定し、現在チャンクサイズ２５４を０に等しく設定する。照合戦略２４２が「固定」または「整数」である場合には、ショット・ツー・チャンク・マッパー２５０は、最大ショットサイズ（図示せず）を、目標ショットサイズ２４４と余裕２４６との合計として計算する。
【００４４】
次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０の各々を（ビデオタイムラインに関して）順次に、照合基準２４０に基づいて処理する。照合戦略２４２が「全て」である場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を現在チャンク２７０（単一のチャンク２７０（１））に割り当てるショット割り当て２６０（ｘ）を生成する。次いで、ショット・ツー・チャンク・マッパー２５０は、次のショットシーケンス２２０（ｘ＋１）を処理する。しかしながら、照合戦略が「個々」である場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を現在チャンク２７０（チャンク２７０（ｘ））に割り当てるショット割り当て２６０（ｘ）を生成する。次いで、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、次のショットシーケンス２２０（ｘ＋１）を処理する。
【００４５】
照合戦略２４２が「固定」である場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）のサイズと現在チャンクサイズ２５４とを合計して、仮のチャンクサイズを生成する。仮のチャンクサイズが最大チャンクサイズを超えていない場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を現在チャンク２７０に割り当てるショット割り当て２６０を生成する。続いて、仮のチャンクサイズが目標チャンクサイズ２４４よりも小さい場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンクサイズ２５４を仮のチャンクサイズに等しく設定する。しかしながら、仮のチャンクサイズが目標チャンクサイズ２４４以上である場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、現在チャンクサイズ２５４を０に等しく設定する。次いで、ショット・ツー・チャンク・マッパー２５０は、次のショットシーケンス２２０（ｘ＋１）を処理する。
【００４６】
しかしながら、照合戦略２４２が「固定」である場合であって、かつ仮のチャンクサイズが最大チャンクサイズよりも大きい場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を複数のショットシーケンス２２０に細分する。ショット・ツー・チャンク・マッパー２５０は、任意の技術的に実現可能な手法で、ショットシーケンス２２０（ｘ）を細分することができる。
【００４７】
いくつかの実施形態では、ショットシーケンス２２０（ｘ）を細分するために、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）に含まれているフレームの中から、目標チャンクサイズ２４４を超えることなく現在チャンク２７０に割り当てることができる初期サブセットを決定する。次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）に含まれているフレームであって、かつ初期サブセットにも含まれていないフレームを選択する。ショット・ツー・チャンク・マッパー２５０は、目標チャンクサイズ２４４に基づいて、選択されたフレームを１つまたは複数の新しいショットシーケンス２２０に割り当てる。最後に、ショット・ツー・チャンク・マッパー２５０は、選択されたフレームをショットシーケンス２２０（ｘ）から削除する。特に、いくつかの実施形態では、ショット・ツー・チャンク・マッパー２５０は、新しいショットシーケンス２２０を適切に生成するために、任意の数の演算を実行することができる。例えば、ショット・ツー・チャンク・マッパー２５０は、それぞれの新しいショットシーケンス２２０の始めに、インターフレーム（Ｉフレーム）を挿入することができる。
【００４８】
ショット・ツー・チャンク・マッパー２５０がショットシーケンス２２０（ｘ）を複数のショットシーケンス２２０に細分した後、ショット・ツー・チャンク・マッパー２５０は、クロップされたショットシーケンス２２０（ｘ）を現在チャンク２７０に割り当てるショット割り当て２６０を生成する。ショットシーケンス２２０（ｘ’）が新たに生成されるたびに、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、ショットシーケンス２２０（ｘ’）を新しい現在チャンク２７０に割り当てるショット割り当て２６０を生成する。最後に、最終ショットシーケンス２２０（ｘ’）のサイズが目標チャンクサイズ２４４以上である場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、現在チャンクサイズ２５４を０に等しく設定する。しかしながら、最終ショットシーケンス２２０（ｘ’）のサイズが目標チャンクサイズ２４４よりも小さい場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンクサイズ２５４を最終ショットシーケンス２２０（ｘ’）のサイズに等しく設定する。次いで、ショット・ツー・チャンク・マッパー２５０は、次のショットシーケンス２２０（ｘ＋１）を処理する。
【００４９】
照合戦略２４２が「整数」である場合であって、かつショットシーケンス２２０（ｘ）のサイズが最大ショットサイズを超えている場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を複数のショットシーケンス２２０に細分する。ショット・ツー・チャンク・マッパー２５０は、チャンク２７０の各々が照合基準２４０を満たすことを保証する任意の技術的に実現可能な手法で、ショットシーケンス２２０（ｘ）を細分し、クロップされたショットシーケンス２２０（ｘ）と、追加的なショットシーケンス２２０とを割り当てることができる。次いで、ショット・ツー・シーン・マッパー２５０は、次のショットシーケンス２２０（ｘ＋１）を処理する。
【００５０】
照合戦略２４２が「整数」である場合であって、かつショットシーケンス２２０（ｘ）のサイズが最大ショットサイズを超えていない場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）のサイズと現在チャンクサイズ２５４とを合計して、仮のチャンクサイズを生成する。仮のチャンクサイズが最大チャンクサイズを超えていない場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を現在チャンク２７０に割り当てるショット割り当て２６０を生成する。しかしながら、仮のチャンクサイズが最大チャンクサイズを超えている場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、仮のチャンクサイズをショットシーケンス２２０（ｘ）のサイズに等しく設定する。次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（ｘ）を現在チャンク２７０に割り当てるショット割り当て２６０を生成する。
【００５１】
ショットシーケンス２２０（ｘ）に対応するショット割り当て２６０が生成された後、仮のチャンクサイズが目標チャンクサイズ２４４の余裕２４６の範囲内にない場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンクサイズ２５４を仮のチャンクサイズに等しく設定する。しかしながら、仮のチャンクサイズが目標チャンクサイズ２４４の余裕２４６の範囲内にある場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、現在チャンクサイズ２５４を０に等しく設定する。次いで、ショット・ツー・シーン・マッパー２５０は、次のショットシーケンス２２０（ｘ＋１）を処理する。
【００５２】
当業者が認識するように、ショット・ツー・シーン・マッパー２５０は、任意の数のショットシーケンス２２０を複数のショットシーケンス２２０に細分することができるので、ショット割り当て２６０の数は、ショット分析器２１０によって生成されたショットシーケンス２２０の数に必ずしも等しくなるとは限らない。
【００５３】
代替的な実施形態では、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０を、任意の技術的に実現可能な順序で処理することができる。例えば、照合戦略２４２が「整数」である場合には、ショット・ツー・チャンク・マッパー２５０は、複数のショットシーケンス２２０のうちのどのショットシーケンスが現在チャンク２７０に最も適合するかに基づいて、ショットシーケンス２２０を処理することができる。
【００５４】
タスク生成器２８０は、ショット割り当て２６０に基づいてチャンク２７０を生成する。ショット割り当て２６０は、任意の技術的に実現可能な手法で指定可能である。次いで、タスク生成器２８０は、それぞれのチャンク２７０ごとに、対応する符号化タスク１５０を生成して、これらの符号化タスク１５０をタスクキュー１３２に追加する。
【００５５】
本明細書に示されているショット照合アプリケーション１４０が例示であり、変形および修正が可能であることは理解されるであろう。例えば、本明細書で説明されているショット照合アプリケーション１４０と、ショット分析器２１０と、戦略エンジン２３０と、ショット・ツー・チャンク・マッパー２５０と、タスク生成器２８０とによって提供される機能を、（１つを含む）任意の数のソフトウェアアプリケーションと、任意の数の分散型符号化システム１００のコンポーネントとに統合または分配してもよい。
【００５６】
本明細書で説明されている技術は、限定ではなく例示であり、本発明のより広い思想および範囲から逸脱することなく変更可能であることに留意すべきである。記載された実施形態の範囲および思想から逸脱することなく、ショット照合アプリケーション１４０と、ショット分析器２１０と、戦略エンジン２３０と、ショット・ツー・チャンク・マッパー２５０と、タスク生成器２８０とによって提供される機能に対する多数の修正および変形が、当業者には明らかであろう。例えば、種々の実施形態では、任意の数の技術またはデバイスを実装することができ、その一方で、その他の技術を、任意の技術的に実現可能な手法で省略または置換してもよい。
【００５７】
図３は、本発明の種々の実施形態による、図１のショット照合アプリケーション１４０によって複数の異なる照合戦略２４２を使用して生成されたチャンク２７０の、種々の例を示す。図示のように、ソースビデオシーケンス１２０は、限定するわけではないが、１１個のショットシーケンス２２０（１）〜２２０（１１）を含む。説明のために、ショットシーケンス２２０の各々の開始は、ビデオタイムラインに沿って配置された番号付きの丸によって示されている。例えば、ショットシーケンス２２０（３）の開始は、３の番号が付された丸によって示されている。４つの照合戦略２４２（１）〜２４２（４）の各々に関して、ショット照合アプリケーション１４０によって生成されたチャンク２７０は、太線の矩形として示されており、これらの太線の矩形は、ビデオタイムラインのそれぞれの図示に沿って、塗りつぶされたものと塗りつぶされていないものとが交互に配置されている。
【００５８】
「全て」の照合戦略２４２（１）の場合には、ショット・ツー・チャンク・マッパー２５０は、他の照合基準２４０のいずれにも関係なく、全てのショットシーケンス２２０（１）〜２２０（１１）を単一のチャンク２７０（１）に割り当てる。チャンク２７０の総数、ひいては、符号化タスク１５０の総数は、１である。
【００５９】
対照的に、照合戦略２４２が「個々」である場合には、ショット・ツー・チャンク・マッパー２５０は、他の照合基準２４０のいずれにも関係なく、ショットシーケンス２２０の各々をそれぞれ異なるチャンク２７０に割り当てる。「個々」の照合戦略２４２（２）について示されているように、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１）をチャンク２７０（１）に割り当て、ショットシーケンス２２０（２）をチャンク２７０（２）に割り当て、ショットシーケンス２２０（３）をチャンク２７０（３）に割り当て、以下も同様に割り当てる。チャンク２７０の総数、ひいては、符号化タスク１５０の総数は、１１である。特に、それぞれのチャンク２７０のサイズは、それぞれ他のチャンク２７０のサイズと異なっていてもよい。
【００６０】
本明細書で図２に関連して前述したように、「固定」の照合戦略２４２（３）および「整数」の照合戦略２４２（４）は、目標チャンクサイズ２４４および余裕２４６に関連している。単なる説明のために、余裕２４６は、ゼロに等しく、目標チャンクサイズ２４４は、太線の点線の矩形として示されており、矩形の長さは、ビデオタイムラインに沿った時間間隔を視覚的に示している。
【００６１】
一般に、照合戦略２４２が「固定」である場合には、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０をチャンク２７０に順次に割り当て、チャンク２７０の各々が目標チャンクサイズ２４４および余裕２４６を満たすことを保証するために、必要に応じてショットシーケンス２７０を細分する。単なる説明のために、特定のショットシーケンス２２０（ｘ）を細分することによって結果的に生じる新しいショットシーケンス２２０は、丸の中の記号（ｘ’）によって示されている。
【００６２】
「固定」の照合戦略２４２（３）について示されているように、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１）〜２２０（４）をチャンク２７０（１）に割り当てる。次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（５）を、クロップされたショットシーケンス２２０（５）とショットシーケンス２２０（５’）とに細分して、クロップされたショットシーケンス２２０（５）をチャンク２７０（１）に割り当て、ショットシーケンス２２０（５’）をチャンク２７０（２）に割り当てる。続いて、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（６）〜２２０（８）をチャンク２７０（２）に割り当てる。次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（９）を、クロップされたショットシーケンス２２０（９）とショットシーケンス２２０（９’）とに細分して、クロップされたショットシーケンス２２０（９）をチャンク２７０（２）に割り当て、ショットシーケンス２２０（９’）をチャンク２７０（３）に割り当てる。また、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１０）をチャンク２７０（３）に割り当てる。最後に、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１１）を、クロップされたショットシーケンス２２０（１１）とショットシーケンス２２０（１１’）とに細分して、クロップされたショットシーケンス２２０（１１）をチャンク２７０（３）に割り当て、ショットシーケンス２２０（１１’）をチャンク２７０（４）に割り当てる。
【００６３】
「固定」の照合戦略２４２（３）の場合には、チャンク２７０の総数は、４に等しく、ショットシーケンス２２０の数は、１４である。特に、余裕２４６はゼロに等しいので、チャンク２７０（１）〜２７０（３）の各々のサイズは、目標チャンクサイズ２４４に等しい。最終チャンク２７０（４）のサイズは、目標チャンクサイズ２４４よりも小さい。なぜなら、このチャンク２７０（４）は、ソースビデオシーケンス１２０の最後のフレームを含んでいるからである。余裕２４６がゼロに等しくない代替的な実施形態では、チャンク２７０の各々のサイズは、余裕２４６の大きさと同じだけ、目標チャンクサイズ２４４より小さくてもよいし、または大きくてもよい。
【００６４】
一般に、照合戦略２４２が「整数」である場合には、ショット・ツー・チャンク・マッパー２５０は、目標チャンクサイズ２４４および余裕２４６に基づいて、最大チャンクサイズを計算する。次いで、ショット・ツー・チャンク・マッパー２５０は、チャンク２７０の各々のサイズが最大チャンクサイズを超えないことを保証しながら、整数個のショットシーケンス２２０をチャンク２７０の各々に順次に割り当てる。ある特定のショットシーケンス２２０のサイズが最大チャンクサイズよりも大きい場合には、ショット・ツー・チャンク・マッパー２５０は、そのショットシーケンス２２０を複数のショットシーケンス２２０に細分する。
【００６５】
「整数」の照合戦略２４２（４）について示されているように、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１）〜２２０（４）をチャンク２７０（１）に割り当てる。続いて、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（５）〜２２０（７）をチャンク２７０（２）に割り当てる。次いで、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（８）〜２２０（１０）をチャンク２７０（３）に割り当てる。最後に、ショット・ツー・チャンク・マッパー２５０は、ショットシーケンス２２０（１１）をチャンク２７０（４）に割り当てる。したがって、「整数」の照合戦略２４２（３）の場合には、チャンク２７０の総数は、４に等しく、チャンク２７０の各々のサイズは、それぞれ他のチャンク２７０のサイズとは異なる。
【００６６】
代替的な実施形態では、照合基準２４０は、任意の数および任意の種類の基準を含むことができ、これらの基準を、ショット・ツー・チャンク・マッパー２５０は、任意の数の異なる照合戦略２４２および／または任意の他の照合基準２４０と組み合わせて適用することができる。例えば、いくつかの実施形態では、照合基準２４０のうちの１つを、最大チャンクサイズとすることができ、ショット・ツー・チャンク・マッパー２５０は、この最大チャンクサイズを照合戦略２４２に関係なく適用する。そのような実施形態では、ショット・ツー・チャンク・マッパー２５０は、最大チャンクサイズを超えているショットシーケンス２２０の各々を複数のチャンク２７０に細分し、この場合、複数のチャンク２７０の各々のサイズは、最大チャンクサイズを超えない。有利には、最大チャンクサイズを強制することにより、それぞれ他のショットシーケンス２２０よりも著しく長いショットシーケンス２２０が、並列エンコーダ１６０にボトルネックを形成するといったことがなくなることが保証される。
【００６７】
図４Ａ〜図４Ｂは、本発明の種々の実施形態による、ソースビデオシーケンスを符号化するための方法ステップのフロー図を示す。これらの方法ステップは、図１〜図３のシステムを参照して説明されているが、当業者は、これらの方法ステップを任意の順序で実施するように構成された如何なるシステムも、本発明の範囲内に含まれていることを理解するであろう。
【００６８】
図示のように、方法４００は、ステップ４０２において開始し、ここで、ショット分析器２１０は、ソースビデオシーケンス１２０を受信して、このソースビデオシーケンス１２０を複数のショットシーケンス２２０に分割する。ステップ４０４において、戦略エンジン２３０は、ショットシーケンス２２０およびリソース制約１４２の分析に基づいて、照合基準２４０を決定する。照合基準２４０は、限定するわけではないが、照合戦略２４２と、照合戦略２４２に関連する任意の数（ゼロを含む）の追加的な制約とを含む。例えば、照合戦略２４２が「固定」または「整数」であることを戦略エンジン２３０が判別した場合には、戦略エンジン２３０は、目標チャンクサイズ２４４および余裕２４６も計算する。
【００６９】
代替的な実施形態では、戦略エンジン２３０は、任意の量および任意の種類のデータに基づいて、任意の技術的に実現可能な手法で、任意の数および任意の種類の照合基準２４０を決定することができる。例えば、戦略エンジン２３０は、グラフィカルユーザインターフェース（ＧＵＩ）を介して、照合戦略２４２の値と、最大チャンクサイズとを受信することができる。
【００７０】
ステップ４０６において、ショット照合アプリケーション１４０は、ソースビデオシーケンス１２０に含まれている第１のショットシーケンス２２０を選択し、現在チャンク識別子２５２を１に等しく設定し、現在チャンクサイズ２５４を０に等しく設定する。ステップ４０８において、ショット・ツー・チャンク・マッパー２５０は、照合基準２４０と、任意選択的に現在チャンクサイズ２５４とに基づいて、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てるかどうかを判別する。より具体的には、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てることが照合基準２４０を満たすかどうかを判別する。
【００７１】
選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てることが照合基準２４０を満たしていることをショット・ツー・チャンク・マッパー２５０が判別した場合には、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てることを決定する。しかしながら、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てることが照合基準２４０を満たしていないことをショット・ツー・チャンク・マッパー２５０が判別した場合には、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス全体を現在チャンク２７０に割り当てないことを決定する。
【００７２】
ステップ４０８において、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てないことを、ショット・ツー・チャンク・マッパー２５０が決定した場合には、方法４００は、ステップ４１０に進む。ステップ４１０において、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０のサイズが最大チャンクサイズを超えているかどうか、または照合基準２４０が「固定」であるかどうかを判別する。ショット・ツー・チャンク・マッパー２５０は、任意の数の照合基準２４０に基づいて、任意の技術的に実現可能な手法で、最大チャンクサイズを決定することができる。例えば、ショット・ツー・チャンク・マッパー２５０は、最大チャンクサイズを計算するために、目標チャンクサイズ２４４と余裕２４６との加算演算を実施することができる。
【００７３】
ステップ４１０において、選択されたショットシーケンス２２０のサイズが最大チャンクサイズを超えておらず、かつ照合戦略２４２が「固定」でないことをショット・ツー・チャンク・マッパー２５０が判別した場合には、方法４００は、ステップ４１２に進む。ステップ４１２において、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、現在チャンクサイズ２５４をゼロに等しく設定する。次いで、方法４００は、直接的にステップ４１６に進む。
【００７４】
しかしながら、ステップ４１０において、選択されたショットシーケンス２２０のサイズが最大チャンクサイズを超えているか、または照合戦略２４２が「固定」であることをショット・ツー・チャンク・マッパー２５０が判別した場合には、方法４００は、直接的にステップ４１４に進む。ステップ４１４で、ショット・ツー・チャンク・マッパー２５０は、目標チャンクサイズ２４４に基づいて、選択されたショットシーケンス２２０を複数のショットシーケンス２２０に細分する。結果として、ソースビデオシーケンス１２０に含まれているショットシーケンス２２０の総数が増加する。ショット・ツー・チャンク・マッパー２５０は、任意の技術的に実現可能な手法で、選択されたショットシーケンス２２０を複数のショットシーケンス２２０に細分することができる。
【００７５】
例えば、いくつかの実施形態では、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０に含まれているフレームの中から、照合基準２４０を満たしながら現在チャンク２７０に割り当てることができる初期サブセットを決定する。次いで、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０に含まれているフレームであって、かつ初期サブセットにも含まれていないフレームを選択する。ショット・ツー・チャンク・マッパー２５０は、目標チャンクサイズ２４４に基づいて、選択されたフレームを１つまたは複数の新しいショットシーケンス２２０に割り当てる。最後に、ショット・ツー・チャンク・マッパー２５０は、選択されたフレームを選択されたショットシーケンス２２０から削除する。
【００７６】
次に、ステップ４０８に戻ると、選択されたショットシーケンス２２０全体を現在チャンク２７０に割り当てることを、ショット・ツー・チャンク・マッパー２５０が決定した場合には、方法４００は、直接的にステップ４１６に進む。
【００７７】
ステップ４１６において、ショット・ツー・チャンク・マッパー２５０は、選択されたショットシーケンス２２０を現在チャンク２７０に割り当てる新しいショット割り当て２６０を生成し、選択されたショットシーケンス２２０のサイズを現在チャンクサイズ２５４に加算する。ステップ４１８において、ショット・ツー・チャンク・マッパー２５０は、現在チャンク２７０が完成したかどうかを判別する。ショット・ツー・チャンク・マッパー２５０は、任意の技術的に実現可能な手法で、現在チャンク２７０が完成したかどうかを判別することができる。
【００７８】
例えば、照合戦略２４２が「個々」である場合には、ショット・ツー・チャンク・マッパー２５０は、１つのショットシーケンス２２０が現在チャンク２７０に割り当てられたときに、現在チャンク２７０が完成したことを判別する。いくつかの実施形態では、照合戦略２４２が「整数」である場合には、ショット・ツー・チャンク・マッパー２５０は、現在チャンク２７０のサイズが目標のチャンクサイズ２４４の余裕２４６の範囲内になったときに、現在チャンク２７０が完成したことを判別する。
【００７９】
ステップ４１８において、現在チャンク２７０が完成していないことをショット・ツー・チャンク・マッパー２５０が判別した場合には、方法は、直接的にステップ４２２に進む。しかしながら、ステップ４１８において、現在チャンク２７０が完成していることをショット・ツー・チャンク・マッパー２５０が判別した場合には、方法は、ステップ４２０に進む。ステップ４２０において、ショット・ツー・チャンク・マッパー２５０は、現在チャンク識別子２５２を増分して、現在チャンクサイズ２５４をゼロに等しく設定する。
【００８０】
ステップ４２２において、ショット・ツー・チャンク・マッパー２５０は、新しいショット割り当て２６０をタスク生成器２８０に送信する。ステップ４２４において、ショット照合アプリケーション１４０は、選択されたショットシーケンス２２０がソースビデオシーケンス１２０に含まれている最後のショットシーケンス２２０であるかどうかを判別する。ステップ４２４において、選択されたショットシーケンス２２０がソースビデオシーケンス１２０に含まれている最後のショットシーケンス２２０ではないことをショット照合アプリケーション１４０が判別した場合には、方法４００は、ステップ４２６に進む。ステップ４２６において、ショット照合アプリケーション１４０は、ソースビデオシーケンス１２０に含まれている次のショットシーケンス２２０を選択する。次いで、方法４００は、ステップ４０８に戻り、ここで、ショット・ツー・チャンク・マッパー２５０は、新しいショット割り当て２６０を生成する。
【００８１】
しかしながら、ステップ４２４において、選択されたショットシーケンス２２０がソースビデオシーケンス１２０に含まれている最後のショットシーケンス２２０であることをショット照合アプリケーション１４０が判別した場合には、方法４００は、直接的にステップ４２８に進む。ステップ４２８において、タスク生成器２８０は、ショット割り当て２６０に基づいてチャンク２７０を生成する。ステップ４３０において、タスク生成器２８０は、それぞれのチャンク２７０ごとに、対応する符号化タスク１５０を生成して、これらの符号化タスク１５０をタスクキュー１３２に追加する。
【００８２】
ステップ４３２において、それぞれの符号化タスク１５０ごとに、符号化タスク１５０が符号化インスタンスに分配される。特定の符号化タスク１５０（ｘ）の受信に応答して、符号化インスタンスは、対応するチャンク２７０（ｘ）に含まれているショットシーケンス２２０の各々を順次かつ個々に符号化して、符号化されたチャンク１７０（ｘ）を生成する。ステップ４３４において、アセンブラ１８０は、複数の符号化されたチャンク１７０を合成して、１つの符号化されたビデオシーケンス１９０を生成する。次いで、方法４００は、終了する。
【００８３】
有利には、符号化されたビデオシーケンス１９０内の符号化されたショットシーケンス２２０は、潜在的にそれぞれ異なる符号化パラメータによって符号化可能である。その結果、分散型符号化システム１００により、従来のショットベースの分散システムに付随する符号化効率が提供され、その一方で、任意選択的に、個々の符号化タスク１５０の数が低減される。
【００８４】
要約すると、本開示の技術を使用して、リアルタイム配信のためにソースビデオシーケンスを効率的に符号化することができる。照合アプリケーションは、限定するわけではないが、ショット分析器と、戦略エンジンと、ショット・ツー・チャンク・マッパーと、ショット照合アプリケーションとを含む。動作中、ショット分析器が、１つのソースビデオシーケンスを複数のショットシーケンスに分割し、これらのショットシーケンスを戦略エンジンに送信する。戦略エンジンは、ショットシーケンスを受信すると、これらのショットシーケンスの特性をリソースの制約と組み合わせて評価し、どのようにして照合アプリケーションがショットをチャンクに照合するかを指定する照合戦略を選択する。
【００８５】
「整数」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、目標チャンクサイズを決定し、それぞれのチャンクのサイズが目標チャンクサイズを超えないことを保証しながら、整数個のショットシーケンスをそれぞれのチャンクに順次に割り当てる。「固定」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、目標チャンクサイズを選択し、ショットシーケンスをそれぞれのチャンクに順次に割り当て、それぞれのチャンクのサイズが目標チャンクサイズに等しくなることを保証するために、必要に応じてショットシーケンスを細分する。「全て」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、全てのショットシーケンスを単一のチャンクに順次に割り当てる。「個々」の照合戦略の場合には、ショット・ツー・チャンク・マッパーは、それぞれのショットシーケンスをそれぞれ異なるチャンクに順次に割り当てる。タスク生成器が、ショット・ツー・チャンク・マッパーから個々のショット割り当てを受信すると、タスク生成器は、１つまたは複数のチャンクを生成する。タスク生成器は、それぞれのチャンクごとに、対応する符号化タスクを生成して、これらの符号化タスクをタスクキューに格納する。
【００８６】
並列エンコーダに含まれている符号化インスタンスが利用可能になると、集中型メッセージングサブシステムが、次の符号化タスクをタスクキューから符号化インスタンスに送信する。符号化インスタンスは、符号化タスクに関連するチャンクに含まれているそれぞれのショットシーケンスを順次に符号化する。より具体的には、符号化インスタンスは、それぞれのショットシーケンスごとに、目標品質レベルに基づいてショット固有の符号化パラメータを選択し、次いで、そのショット固有の符号化パラメータに基づいてショットシーケンスを符号化する。このようにして、符号化インスタンスは、符号化されたチャンクを生成し、この符号化されたチャンク内では、それぞれのショットシーケンスが、潜在的にそれぞれ異なる符号化パラメータによって個々に符号化されている。最後に、チャンクアセンブラが、複数の個々の符号化されたチャンクを合成して、１つの符号化されたビデオシーケンスを生成する。
【００８７】
有利には、照合基準は、ソースビデオシーケンスのショットベースの符号化を符号化システムが効率的に実行することを可能にし、その一方で、利用可能なリソースの使用を最適化する。特に、ショットベースの符号化作業を符号化インスタンスに分配するために必要とされる個別の符号化タスクの数は、チャンクの数に等しく、そのチャンクの数は、照合基準によって決定される。その結果、従来のショットベースの分散型符号化システムによって生成および処理される符号化タスクの数に起因するリソースの非効率性を、照合基準によって軽減することが可能となる。さらに、種々のエンコーダに関連する要件に基づいて照合戦略および／または目標チャンクサイズを選択することにより、照合アプリケーションは、ストリーミングビデオプロバイダが、種々のエンコーダを使用してソースビデオシーケンスのリアルタイム配信を最適化することを可能にする。
【実施例】
【００８８】
実施例１．いくつかの実施形態では、コンピュータ実装方法は、
ソースビデオシーケンスに含まれている第１のショットシーケンスを、第１のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第２のショットシーケンスが、第１のチャンクに関する少なくとも１つの照合基準を満たしていないことを判別するステップと、
第２のショットシーケンス、または第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
を含み、
第１の符号化されたチャンクと、第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【００８９】
実施例２．第２のショットシーケンスが、少なくとも１つの照合基準を満たしていないことを判別するステップは、
第１のチャンクのサイズと第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施例１記載のコンピュータ実装方法。
【００９０】
実施例３．第２のショットシーケンス、または第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップは、
第１のチャンクのサイズおよび最大チャンクサイズに基づいて、第２のショットシーケンスを、第３のショットシーケンスと第４のショットシーケンスとに分割するステップと、
第３のショットシーケンスを、第２のチャンクに割り当てるステップと、
第４のショットシーケンスを、第３のチャンクに割り当てるステップと
を含む、実施例１または２記載のコンピュータ実装方法。
【００９１】
実施例４．第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップは、
第１のチャンクに基づいて符号化タスクを生成するステップと、
符号化タスクをタスクキューに格納するステップと
を含む、実施例１から３までのいずれか１つ記載のコンピュータ実装方法。
【００９２】
実施例５．第２のショットシーケンス、または第２のショットシーケンスから導出された第３のショットシーケンスを、第２のチャンクに割り当てるステップは、
第２のショットシーケンスのサイズが最大チャンクサイズを超えていることを判別するステップと、
第２のショットシーケンスを、第３のショットシーケンスと第４のショットシーケンスに分割するステップと、
第３のショットシーケンスを、第２のチャンクに割り当てるステップと
を含む、実施例１から４までのいずれか１つ記載のコンピュータ実装方法。
【００９３】
実施例６．第１のショットシーケンスを割り当てる前に、１つまたは複数のシーン検出演算を実行して、ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
複数のショットシーケンスは、第１のショットシーケンスおよび第２のショットシーケンスを含む、実施例１から５までのいずれか１つ記載のコンピュータ実装方法。
【００９４】
実施例７．少なくとも１つの照合基準は、ショットシーケンスの、チャンクへの１対１のマッピングを指定する、実施例１から６までのいずれか１つ記載のコンピュータ実装方法。
【００９５】
実施例８．第１のショットシーケンスを割り当てる前に、ソースビデオシーケンスおよびリソース制約のうちの少なくとも１つに基づいて、少なくとも１つの照合基準を決定するステップをさらに含む、実施例１から７までのいずれか１つ記載のコンピュータ実装方法。
【００９６】
実施例９．第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
ソースビデオシーケンスに含まれている第４のショットシーケンスが、第２のチャンクに関する少なくとも１つの照合基準を満たしていることを判別するステップと、
第４のショットシーケンスを、第２のチャンクに割り当てるステップと
をさらに含む、実施例１から８までのいずれか１つ記載のコンピュータ実装方法。
【００９７】
実施例１０．いくつかの実施形態では、コンピュータ可読ストレージ媒体は、プロセッサによって実行された場合に、プロセッサに以下のステップを実行させる命令を含み、当該ステップは、すなわち、
ソースビデオシーケンスに含まれている第１のショットシーケンスが、第１のチャンクに関する１つまたは複数の照合基準を満たしていることを判別するステップと、
第１のショットシーケンスを、第１のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第２のショットシーケンスが、第１のチャンクに関する１つまたは複数の照合基準に含まれている第１の照合基準を満たしていないことを判別するステップと、
第２のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
であり、
第１の符号化されたチャンクと、第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【００９８】
実施例１１．第２のショットシーケンスが、少なくとも１つの照合基準を満たしていないことを判別するステップは、
第１のチャンクのサイズと第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
を含む、実施例１０記載のコンピュータ可読ストレージ媒体。
【００９９】
実施例１２．第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させるステップの前に、
第３のショットシーケンスが、第２のチャンクに関する第１の照合基準を満たしていないことを判別するステップと、
第２のチャンクのサイズおよび最大チャンクサイズに基づいて、第３のショットシーケンスを、第４のショットシーケンスと第５のショットシーケンスとに分割するステップと、
第４のショットシーケンスを、第２のチャンクに割り当てるステップと、
第５のショットシーケンスを、第３のチャンクに割り当てるステップと
をさらに含む、実施例１０または１１記載のコンピュータ可読ストレージ媒体。
【０１００】
実施例１３．第１のショットシーケンスが、１つまたは複数の照合基準を満たしていることを判別するステップの前に、１つまたは複数のシーン検出演算を実行して、ソースビデオシーケンスに含まれている複数のショットシーケンスを識別するステップをさらに含み、
複数のショットシーケンスは、第１のショットシーケンスおよび第２のショットシーケンスを含む、実施例１０から１２までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０１】
実施例１４．第１の照合基準は、ショットシーケンスの、チャンクへの１対１のマッピングを指定する、実施例１０から１３までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０２】
実施例１５．第１の照合基準は、チャンクサイズよりも小さいそれぞれのショットシーケンスが単一のチャンクにマッピングされるかどうかを指定する、実施例１０から１４までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０３】
実施例１６．第１のショットシーケンスが、１つまたは複数の照合基準を満たしていることを判別するステップの前に、ソースビデオシーケンスおよびリソース制約のうちの少なくとも１つに基づいて、第１の照合基準を決定するステップをさらに含む、実施例１０から１５までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０４】
実施例１７．第１の照合基準を決定するステップは、ソースビデオシーケンスに含まれている複数のショットシーケンスを、リソース制約と組み合わせて評価して、チャンクサイズを決定するステップを含む、実施例１０から１６までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０５】
実施例１８．リソース制約は、メモリの帯域幅、タスクキューのサイズ、または符号化タスクの最大数を含む、実施例１０から１７までのいずれか１つ記載のコンピュータ可読ストレージ媒体。
【０１０６】
実施例１９．いくつかの実施形態では、システムは、
ショット照合アプリケーションを格納するメモリと、
メモリに結合されたプロセッサと
を含み、
ショット照合アプリケーションは、プロセッサによって実行された場合に、プロセッサに以下のステップを行わせ、すなわち、
ソースビデオシーケンスに含まれている第１のショットシーケンスを、第１のチャンクに割り当てるステップと、
ソースビデオシーケンスに含まれている第２のショットシーケンスが、第１のチャンクに関する少なくとも１つの照合基準を満たしていないことを判別するステップと、
第２のショットシーケンスを、第２のチャンクに割り当てるステップと、
第１の符号化インスタンスに、第１のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第１の符号化されたチャンクを生成するステップと、
第１の符号化インスタンスに対して実質的に並列に符号化演算を実行する第２の符号化インスタンスに、第２のチャンクに割り当てられたそれぞれのショットシーケンスを独立して符号化させて、第２の符号化されたチャンクを生成するステップと
を行わせ、
第１の符号化されたチャンクと、第２の符号化されたチャンクとを合成して、１つの符号化されたビデオシーケンスの少なくとも一部を生成する。
【０１０７】
実施例２０．ショット照合アプリケーションは、
第１のチャンクのサイズと第２のショットシーケンスのサイズとを加算する演算を実行して、仮のサイズを生成するステップと、
仮のサイズが最大チャンクサイズを超えていることを判別するステップと
によって、プロセッサに、第２のショットシーケンスが少なくとも１つの照合基準を満たしていないことを判別させる、実施例１９記載のシステム。
【０１０８】
任意の請求項に記載された任意の請求項要素のいずれか１つおよび全ての組み合わせ、および／または本願に記載された任意の要素のいずれか１つおよび全ての組み合わせは、如何なる手法でも、本発明および保護の意図された範囲内に含まれている。
【０１０９】
種々の実施形態の説明は、例示する目的で提示したものであって、網羅的であること、または開示された実施形態に限定することを意図したものではない。記載された実施形態の範囲および思想から逸脱することなく、多数の修正および変形が、当業者には明らかであろう。
【０１１０】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として実装可能である。したがって、本開示の態様は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、これらの実施形態を、本明細書では総称的に「モジュール」または「システム」と称することができる。さらに、本開示の態様は、１つまたは複数のコンピュータ可読媒体内に実装されたコンピュータプログラム製品の形態をとることができ、このようなコンピュータ可読媒体上には、コンピュータ可読プログラムコードが実装されている。
【０１１１】
１つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読ストレージ媒体であり得る。コンピュータ可読ストレージ媒体は、例えば、限定するわけではないが、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、もしくは前述のものの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のより具体的な例（網羅的ではない列挙）には、以下のもの、すなわち、１つまたは複数のワイヤを有する電気接続部、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光学ストレージデバイス、磁気ストレージデバイス、または前述のものの任意の適切な組み合わせが含まれる。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって、またはそれらに接続して使用するためのプログラムを含有または格納することができる任意の有形の媒体であり得る。
【０１１２】
本開示の態様は、本開示の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して上述されている。フローチャート図および／またはブロック図のそれぞれのブロック、ならびにフローチャート図および／またはブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装可能であることが理解されるであろう。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、またはマシンを生成するための他のプログラム可能なデータ処理装置のプロセッサに提供可能である。命令は、コンピュータのプロセッサまたは他のプログラム可能なデータ処理装置を介して実行されると、フローチャート図および／またはブロック図の１つまたは複数のブロックにおいて指定された機能／動作の実施を可能にする。そのようなプロセッサは、限定するわけではないが、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラマブルゲートアレイであり得る。
【０１１３】
図面のフローチャート図およびブロック図は、本開示の種々の実施形態によるシステム、方法、およびコンピュータプログラム製品の考えられる実装形態のアーキテクチャ、機能、および演算を示す。これに関して、フローチャート図またはブロック図におけるそれぞれのブロックは、指定された論理機能を実装するための１つまたは複数の実行可能な命令を含むモジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替的な実装形態において、ブロックに記載されている機能が、図面に記載されている順序とは異なる順序で実施される場合があることにも留意すべきである。例えば、相前後して図示されている２つのブロックが、実際には、実質的に同時に実行されたり、または関係する機能によっては、これらのブロックが逆の順序で実行されたりする場合がある。また、ブロック図および／またはフローチャート図のそれぞれのブロック、ならびにブロック図および／またはフローチャート図におけるブロックの組み合わせが、指定された機能または動作を実行する専用のハードウェアベースのシステムによって、または専用のハードウェアとコンピュータ命令との組み合わせによって実装可能であることにも留意すべきである。
【０１１４】
上記は、本開示の実施形態に関するものであるが、本開示の基本的な範囲から逸脱することなく、本開示の他のさらなる実施形態を想到することができ、本開示の範囲は、以下の特許請求の範囲によって定められている。
【図１】
2021507574.tif 000003
【図２】
2021507574.tif 000004
【図３】
2021507574.tif 000005
【図４Ａ】
2021507574.tif 000006
【図４Ｂ】
2021507574.tif 000007
【国際調査報告】
2021507574.tif 000008
2021507574.tif 000009
2021507574.tif 000010