(57)【要約】１つ以上の仮想イントラフレームを使用して符号化された原画像コンテンツを符号化するためのシステムおよび方法が提供される。例示的な方法では、ビデオコンテンツのストリームが、イントラフレームおよび複数の対応するインターフレームを含む圧縮ビデオデータを生成するために、符号化され得る。圧縮ビデオデータは、バッファ内に記憶され得、バッファ中のデータの量が閾値を超えるとき、復号されたインターフレームデータに基づいて、仮想イントラフレームが計算され得る。仮想イントラフレームは、バッファの中に記憶するために出力され得る。
2015521825.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
ビデオコンテンツのストリームを受信することと、
ビデオコーデックを使用して、圧縮ビデオデータを生成するために、前記ビデオコンテンツストリームを符号化することであって、前記圧縮ビデオデータは、イントラフレームと、複数の対応するインターフレームとを備えている、ことと、
前記圧縮ビデオデータをバッファ内に記憶することと
を含み、
前記符号化することは、
前記符号化されたイントラフレームに関連付けられているデータを取得することと、
前記イントラフレームデータに基づいて、前記インターフレームのうちの対応する１つを生成するために、前記ビデオコンテンツストリームの一部分を符号化することと、
前記バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定することと、
前記バッファ中の前記データの量が前記第１の閾値を超える場合、前記生成されたインターフレームを復号し、前記復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、
前記バッファの中に記憶するために、前記対応するインターフレームとともに前記仮想イントラフレームを出力することと
を含む、方法。
【請求項２】
前記符号化することは、前記イントラフレームを生成するために、前記ビデオコンテンツストリームの第１の部分を符号化することをさらに含み、前記第１の部分は、前記インターフレームに関連付けられている前記ビデオコンテンツストリームの前記一部分に先行している、請求項１に記載の方法。
【請求項３】
前記符号化することは、
前記バッファリングされたデータの量が前記第１の閾値を超えない場合、前記圧縮ビデオデータに関連付けられているピクチャ群長を計算することと、
前記計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することと、
前記計算されたピクチャ群長が前記所定の閾値長を超えない場合、追加のインターフレームを生成するために、前記ビデオコンテンツストリームの追加の部分を符号化することと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記バッファは、１つ以上の以前に符号化されたイントラフレームおよび対応するインターフレームの群を備え、
前記計算されたピクチャ群長が前記所定の閾値長を超える場合、前記以前に符号化されたイントラフレームおよび対応するインターフレームの群を破棄することを含む、
請求項３に記載の方法。
【請求項５】
前記符号化することは、前記バッファリングされたデータの量が第２の閾値を超えるかどうかを決定することをさらに含み、前記第２の閾値は、前記第１の閾値よりも大きい、請求項１に記載の方法。
【請求項６】
前記符号化することは、前記バッファリングされたデータの量が前記第２の閾値を超える場合、前記仮想イントラフレームを維持し、前記仮想イントラフレームに先行する符号化されたビデオコンテンツを破棄することをさらに含む、請求項５に記載の方法。
【請求項７】
引き金となる出来事を示す情報を受信することと、
前記受信した情報に基づいて、前記バッファリングされたデータの少なくとも一部分を受信側に伝送する命令を生成することと
をさらに含む、請求項１に記載の方法。
【請求項８】
前記引き金となる出来事は、ビデオコンテンツの要求、前記受信したビデオストリーム内の所定の事象の発生、インターフェースを通した所定のデータの受信、またはセンサによる所定の事象の検出のうちの少なくとも１つを含む、請求項７に記載の方法。
【請求項９】
前記命令は、
前記バッファリングされたデータが前記イントラフレームおよび前記仮想イントラフレームを含むかどうかを決定することと、
前記バッファリングされたデータが前記イントラフレームおよび前記仮想イントラフレームを含む場合、前記仮想イントラフレームを破棄し、前記対応するインターフレームを維持することと、
前記イントラフレームに基づいて前記バッファリングされたデータ部分を生成することと
をさらに含む、請求項７に記載の方法。
【請求項１０】
前記バッファリングされたデータが前記仮想イントラフレームを含み、前記イントラフレームを含まないかどうかを決定することと、
前記バッファリングされたデータが前記仮想イントラフレームを含み、前記イントラフレームを含まない場合、前記仮想イントラフレームに基づいて前記バッファリングされたデータ部分を生成することと
をさらに含む、請求項７に記載の方法。
【請求項１１】
圧縮ビデオデータの少なくとも１つのフレームを受信することと、
前記受信したフレームを復号することと、
前記復号されたフレームがイントラフレームに対応するかどうかを決定することと、
前記復号されたフレームがイントラフレームに対応する場合、少なくとも前記復号されたフレームをデータリポジトリに記憶することと
をさらに含む、請求項１に記載の方法。
【請求項１２】
前記復号されたフレームがインターフレームに対応することを決定することと、
前記復号されたフレームがインターフレームである場合、前記受信したデータに関連付けられているピクチャ群長を計算することと、
前記計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することと、
前記計算されたピクチャ群長が前記所定の閾値長を超えない場合、少なくとも前記復号されたインターフレームを前記データリポジトリ内に記憶することと
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記計算されたピクチャ群長が前記所定の閾値長を超える場合、前記復号されたインターフレームデータに基づいて追加のイントラフレームを生成することと、
少なくとも前記追加のイントラフレームを前記データリポジトリ内に記憶することと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記圧縮ビデオコンテンツは、ビットレートの対応する値に関連付けられており、前記符号化することは、前記圧縮ビデオコンテンツ内の対応する時間的位置で少なくとも１つの切り替え点を確立することをさらに含む、請求項１に記載の方法。
【請求項１５】
前記切り替え点は、前記圧縮ビデオコンテンツの受信側または配信側のうちの少なくとも１つがビットレートを修正することを可能にする、請求項１４に記載の方法。
【請求項１６】
前記圧縮ビデオデータ、および前記切り替え位置に関連付けられている情報をデータリポジトリに記憶する命令を生成することをさらに含む、請求項１４に記載の方法。
【請求項１７】
前記切り替え点を確立することは、
前記対応する時間的位置に関連付けられているインターフレームを識別することと、
前記識別されたインターフレームを復号し、前記復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、
前記時間的位置で前記データリポジトリの中に記憶するために、前記仮想イントラフレームを出力することと
を含む、請求項１６に記載の方法。
【請求項１８】
前記符号化することは、前記圧縮ビデオコンテンツ内の対応する時間的位置で複数の切り替え点を確立することをさらに含む、請求項１４に記載の方法。
【請求項１９】
前記対応する時間的位置は、前記圧縮ビデオコンテンツ内で固定間隔で配置されている、請求項１８に記載の方法。
【請求項２０】
前記方法は、前記切り替え位置を作成する要求を受信することをさらに含み、前記要求は、前記圧縮ビデオコンテンツ内の時間的位置を識別する情報を備え、
前記符号化することは、前記要求に応答して、前記識別された時間的位置で前記切り替え点を確立することをさらに含む、請求項１４に記載の方法。
【請求項２１】
装置であって、
ビデオコンテンツのストリームを符号化して圧縮ビデオデータを生成するように構成されているビデオコーデックであって、前記圧縮ビデオデータは、イントラフレームと、複数の対応するインターフレームとを備えている、ビデオコーデックと、
前記ビデオコーデックユニットに連結され、前記圧縮ビデオデータをバッファ内に記憶するように構成されている記憶装置と
を備え、
前記ビデオコーデックは、
前記符号化されたイントラフレームに関連付けられているデータを取得することと、
前記イントラフレームデータに基づいて、前記インターフレームのうちの対応する１つを生成するために、前記ビデオコンテンツストリームの一部分を符号化することと、
前記バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定することと、
前記バッファリングされたデータの量が前記第１の閾値を超える場合、前記生成されたインターフレームを復号し、前記復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、
前記バッファの中に記憶するための出力として、前記対応するインターフレームとともに前記仮想イントラフレームを提供することと
を行うようにさらに構成されている、装置。
【請求項２２】
前記ビデオコーデックは、前記イントラフレームを生成するために、前記ビデオコンテンツストリームの第１の部分を符号化するようにさらに構成され、前記第１の部分は、前記インターフレームに関連付けられている前記ビデオコンテンツストリームの前記一部分に先行している、請求項２１に記載の装置。
【請求項２３】
前記ビデオコーデックは、
前記バッファリングされたデータの量が前記第１の閾値を超えない場合、前記圧縮ビデオデータに関連付けられているピクチャ群長を計算することと、
前記計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することと、
前記計算されたピクチャ群長が前記所定の閾値長を超えない場合、追加のインターフレームを生成するために、前記ビデオコンテンツストリームの追加の部分を符号化することと
を行うようにさらに構成されている、請求項２１に記載の装置。
【請求項２４】
前記バッファは、１つ以上の以前に符号化されたイントラフレームおよび対応するインターフレームの群を備え、前記計算されたピクチャ群長が前記所定の閾値長を超える場合、前記ビデオコーデックは、前記以前に符号化されたイントラフレームおよび対応するインターフレームの群を破棄するようにさらに構成されている、請求項２３に記載の装置。
【請求項２５】
前記ビデオコーデックは、前記バッファリングされたデータの量が第２の閾値を超えるかどうかを決定するようにさらに構成され、前記第２の閾値は、前記第１の閾値よりも大きい、請求項２１に記載の装置。
【請求項２６】
前記ビデオコーデックは、前記バッファリングされたデータの量が前記第２の閾値を超える場合、前記仮想イントラフレームを維持し、前記仮想イントラフレームに先行する符号化されたビデオコンテンツを破棄するようにさらに構成されている、請求項２５に記載の装置。
【請求項２７】
前記ビデオコーデックは、引き金となる出来事を示す情報を受信し、前記受信した情報に基づいて、前記バッファリングされたデータの少なくとも一部分を受信側に伝送する命令を生成するようにさらに構成されている、請求項２１に記載の装置。
【請求項２８】
前記ビデオコーデックは、
前記バッファリングされたデータが前記イントラフレームおよび前記仮想イントラフレームを含むことを決定することと、
前記バッファリングされたデータが前記イントラフレームおよび前記仮想イントラフレームを含む場合、前記仮想イントラフレームを破棄し、前記対応するインターフレームを維持することと、
前記イントラフレームに基づいて前記バッファリングされたデータ部分を生成することと
を行うようにさらに構成されている、請求項２７に記載の装置。
【請求項２９】
前記ビデオコーデックは、
前記バッファリングされたデータが前記仮想イントラフレームを含み、前記イントラフレームを含まないかどうかを決定することと、
前記バッファリングされたデータが前記仮想イントラフレームを含み、前記イントラフレームを含まない場合、前記仮想イントラフレームに基づいて前記バッファリングされたデータ部分を生成することと
を行うようにさらに構成されている、請求項２７に記載の装置。
【請求項３０】
前記ビデオコーデックは、
圧縮ビデオデータの少なくとも１つのフレームを受信することと、
前記受信したフレームを復号することと、
前記復号されたフレームがイントラフレームに対応するかどうかを決定することと、
前記復号されたフレームがイントラフレームに対応する場合、少なくとも前記復号されたフレームを前記記憶装置に記憶する命令を生成することと
を行うようにさらに構成されている、請求項２１に記載の装置。
【請求項３１】
前記ビデオコーデックは、
前記復号されたフレームがインターフレームに対応することを決定することと、
前記復号されたフレームがインターフレームである場合、前記受信したデータに関連付けられているピクチャ群長を計算することと、
前記計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することと、
前記計算されたピクチャ群長が前記所定の閾値長を超えない場合、少なくとも前記復号されたインターフレームを前記記憶装置内に記憶する命令を生成することと
を行うようにさらに構成されている、
請求項３０に記載の装置。
【請求項３２】
前記ビデオコーデックは、
前記計算されたピクチャ群長が前記所定の閾値長を超える場合、前記復号されたインターフレームデータに基づいて追加のイントラフレームを生成することと、
少なくとも前記追加のイントラフレームを前記記憶装置内に記憶する命令を生成することと
を行うようにさらに構成されている、請求項３１に記載の装置。
【請求項３３】
前記圧縮ビデオコンテンツは、ビットレートの対応する値に関連付けられており、
前記ビデオコーデックは、前記圧縮ビデオコンテンツ内の対応する時間的位置で少なくとも１つの切り替え点を確立するようにさらに構成されている、請求項２１に記載の装置。
【請求項３４】
前記切り替え点は、前記圧縮ビデオコンテンツの受信側または配信側のうちの少なくとも１つが前記ビットレートを修正することを可能にする、請求項３３に記載の装置。
【請求項３５】
前記ビデオコーデックは、前記圧縮ビデオデータ、および前記切り替え位置に関連付けられている情報を前記記憶装置に記憶する命令を生成するようにさらに構成されている、請求項３３に記載の装置。
【請求項３６】
前記ビデオコーデックは、
前記対応する時間的位置に関連付けられているインターフレームを識別することと、
前記識別されたインターフレームを復号し、前記復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、
前記時間的位置で前記記憶装置の中に記憶するために、前記仮想イントラフレームを出力することと
を行うようにさらに構成されている、請求項３５に記載の装置。
【請求項３７】
前記ビデオコーデックは、前記圧縮ビデオコンテンツ内の対応する時間的位置で複数の切り替え点を確立するようにさらに構成されている、請求項３３に記載の装置。
【請求項３８】
前記対応する時間的位置は、前記圧縮ビデオコンテンツ内で固定間隔で配置されている、請求項３７に記載の装置。
【請求項３９】
前記ビデオコーデックは、
前記切り替え位置を作成する要求を受信することあって、前記要求は、前記圧縮ビデオコンテンツ内の時間的位置を識別する情報を備えている、ことと、
前記要求に応答して、前記識別された時間的位置で前記切り替え点を確立することと
を行うようにさらに構成されている、請求項３３に記載の装置。
【請求項４０】
命令を記憶している有形の非一過性コンピュータ読み取り可能な媒体であって、
前記命令は、少なくとも１つのプロセッサによって実行されると、
圧縮ビデオデータを生成するために、ビデオコンテンツのストリームを符号化するステップであって、前記圧縮ビデオデータは、イントラフレームと、複数の対応するインターフレームとを備えている、ステップと、
前記圧縮ビデオデータをバッファ内に記憶するステップと
を前記少なくとも１つのプロセッサに実施させ、
前記符号化することは、
前記符号化されたイントラフレームに関連付けられているデータを取得することと、
前記イントラフレームデータに基づいて、前記インターフレームのうちの対応する１つを生成するために、前記ビデオコンテンツストリームの一部分を符号化することと、
前記バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定することと、
前記バッファリングされたデータの量が前記第１の閾値を超える場合、前記生成されたインターフレームを復号し、前記復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、
前記バッファの中に記憶するために、前記対応するインターフレームとともに前記仮想イントラフレームを出力することと
を含む、有形の非一過性コンピュータ読み取り可能な媒体。
【請求項４１】
コンピュータ実装方法であって、
通信ネットワークに関連付けられているネットワーク条件を示す情報を受信することと、
前記情報に基づいて、前記通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートが前記ネットワーク条件と整合するかどうかを決定することと、
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記圧縮ビデオコンテンツの前記初期ビットレートに関連付けられている切り替え点を識別することであって、前記切り替え点は、前記圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられている、ことと、
ビデオコーデックを使用して、前記切り替え点の前記時間的位置において修正されたビットレートで前記圧縮ビデオコンテンツの一部分を伝送する命令を生成することであって、前記一部分は、仮想イントラフレームと、前記修正されたビットレートで符号化された対応するイントラフレームとを備えている、ことと
を含む、方法。
【請求項４２】
前記初期ビットレートが前記ネットワーク条件と整合する場合、前記初期ビットレートで前記圧縮ビデオコンテンツを伝送する命令を生成することをさらに含む、請求項４１に記載の方法。
【請求項４３】
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記修正されたビットレートで前記圧縮ビデオコンテンツの一部分を取得することをさらに含み、前記修正されたビットレートは、前記切り替え点の前記時間的位置で前記ネットワーク条件と整合する、請求項４１に記載の方法。
【請求項４４】
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記ネットワーク条件に関連付けられているビットレートが前記初期ビットレートを超えることを決定することと、
前記修正されたビットレートで前記圧縮ビデオコンテンツの前記一部分を取得することであって、前記修正されたビットレートは、前記切り替え点の前記時間的位置で初期ビットレートを超える、ことと
をさらに含む、請求項４１に記載の方法。
【請求項４５】
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記初期ビットレートが前記ネットワーク条件に関連付けられているビットレートを超えることを決定することと、
前記修正されたビットレートで前記圧縮ビデオコンテンツの前記一部分を取得することであって、前記初期ビットレートは、前記切り替え点の前記時間的位置で前記修正されたビットレートを超える、ことと
をさらに含む、請求項４１に記載の方法。
【請求項４６】
前記圧縮ビデオコンテンツの要求を受信することであって、前記要求は、前記初期ビットレートを識別する情報を備えている、ことと、
前記要求に応答して、前記初期ビットレートで前記圧縮ビデオコンテンツを伝送する命令を生成することと
をさらに含む、請求項４１に記載の方法。
【請求項４７】
前記圧縮ビデオコンテンツに関連付けられている再生情報を伝送する命令を生成することをさらに含み、前記再生情報は、前記圧縮ビデオコンテンツ内の前記切り替え点の前記時間的位置を識別する情報を備えている、請求項４６に記載の方法。
【請求項４８】
装置であって、
記憶装置と、
前記記憶装置に連結されるビデオコーデックと
を備え、
ビデオコーデックユニットは、
前記通信ネットワークに関連付けられているネットワーク条件を示す情報を受信することと、
前記情報に基づいて、前記通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートが前記ネットワーク条件と整合するかどうかを決定することと、
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記圧縮ビデオコンテンツの前記初期ビットレートに関連付けられている切り替え点を識別することであって、前記切り替え点は、前記圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられている、ことと、
前記切り替え点の前記時間的位置において修正されたビットレートで前記圧縮ビデオコンテンツの一部分を伝送する命令を生成することであって、前記一部分は、仮想イントラフレームと、前記修正されたビットレートで符号化された対応するイントラフレームとを備えている、ことと
を行うように構成されている、装置。
【請求項４９】
前記ビデオコーデックは、前記初期ビットレートが前記ネットワーク条件と整合する場合、前記初期ビットレートで前記圧縮ビデオコンテンツを伝送する命令を生成するようにさらに構成されている、請求項４８に記載の装置。
【請求項５０】
前記ビデオコーデックは、前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記修正されたビットレートで前記圧縮ビデオコンテンツの前記一部分を取得するようにさらに構成され、前記修正されたビットレートは、前記切り替え点の前記時間的位置で前記ネットワーク条件と整合する、請求項４８に記載の装置。
【請求項５１】
前記ビデオコーデックは、
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記ネットワーク条件に関連付けられているビットレートが前記初期ビットレートを超えることを決定することと、
前記修正されたビットレートで前記圧縮ビデオコンテンツの前記一部分を取得することであって、前記修正されたビットレートは、前記切り替え点の前記時間的位置で前記初期ビットレートを超える、ことと
を行うようにさらに構成されている、請求項４８に記載の装置。
【請求項５２】
前記ビデオコーデックは、
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記初期ビットレートが前記ネットワーク条件に関連付けられているビットレートを超えることを決定することと、
前記修正されたビットレートで前記圧縮ビデオコンテンツの前記一部分を取得することであって、前記初期ビットレートは、前記切り替え点の前記時間的位置で前記修正されたビットレートを超える、ことと
を行うようにさらに構成されている、請求項４８に記載の装置。
【請求項５３】
前記ビデオコーデックは、
前記圧縮ビデオコンテンツの要求を受信することであって、前記要求は、前記初期ビットレートを識別する情報を備えている、ことと、
前記要求に応答して、前記初期ビットレートで前記圧縮ビデオコンテンツを伝送する命令を生成することと
を行うようにさらに構成されている、請求項４８に記載の装置。
【請求項５４】
前記ビデオコーデックは、前記圧縮ビデオコンテンツに関連付けられている再生情報を伝送する命令を生成するようにさらに構成され、前記再生情報は、前記圧縮ビデオコンテンツ内の前記切り替え点の前記時間的位置を識別する情報を備えている、請求項５３に記載の装置。
【請求項５５】
命令を記憶している有形の非一過性コンピュータ読み取り可能な媒体であって、前記命令は、少なくとも１つのプロセッサによって実行されると、
通信ネットワークに関連付けられているネットワーク条件を示す情報を受信するステップと、
前記情報に基づいて、前記通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートが前記ネットワーク条件と整合するかどうかを決定するステップと、
前記初期ビットレートが前記ネットワーク条件と整合しない場合、前記圧縮ビデオコンテンツの前記初期ビットレートに関連付けられている切り替え点を識別するステップであって、前記切り替え点は、前記圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられている、ステップと、
前記切り替え点の前記時間的位置において修正されたビットレートで前記圧縮ビデオコンテンツの一部分を伝送する命令を生成するステップであって、前記一部分は、仮想イントラフレームと、前記修正されたビットレートで符号化された対応するイントラフレームとを備えている、ステップと
を前記少なくとも１つのプロセッサに実施させる、有形の非一過性コンピュータ読み取り可能な媒体。
【請求項５６】
コンピュータ実装方法であって、
圧縮ビデオデータの少なくとも１つのフレームを備えているビデオコンテンツのストリームを受信することと、
前記受信したフレームを復号することと、
前記復号されたフレームがインターフレームに対応するかどうかを決定することと、
前記復号されたフレームがインターフレームである場合、前記受信したデータに関連付けられているピクチャ群長を計算することと、
前記計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することと、
前記計算されたピクチャ群長が前記所定の閾値長を超える場合、ビデオコーデックを使用して、前記復号されたインターフレームデータに基づいて追加のイントラフレームを生成することと、
少なくとも前記追加のイントラフレームを前記データリポジトリ内に記憶することと
を含む、コンピュータ実装方法。
【請求項５７】
前記復号されたフレームがイントラフレームに対応する場合、少なくとも前記復号されたフレームをデータリポジトリに記憶することをさらに含む、請求項５６に記載の方法。
【請求項５８】
前記計算されたピクチャ群長が前記所定の閾値長を超えない場合、少なくとも前記復号されたインターフレームを前記データリポジトリに記憶することをさらに含む、請求項５６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、画像データを符号化し、圧縮ビデオコンテンツを生成するためのシステムおよび方法に関する。より具体的には、限定ではないが、本開示は、ネットワークを経由した圧縮ビデオコンテンツのバッファリングおよび配信を可能にするように仮想イントラフレームを生成する、システムおよび方法に関する。
【背景技術】
【０００２】
現在、ビデオシステムは、ＴＣＰ／ＩＰプロトコルを使用して画像データを通信することが可能である、デジタルネットワークカメラを組み込む。これらのビデオシステムは、アナログ閉回路テレビ（ＣＣＴＶ）カメラに基づく従来の監視システムに取って代わりつつある。例えば、アナログＣＣＴＶカメラとは対照的に、デジタルネットワークカメラを伴うビデオシステムは、任意の数の受信側または記憶装置への連続的または個別的伝送のために高解像度圧縮ビデオコンテンツを生成するように、リアルタイムで原画像データを捕捉して符号化する。
【０００３】
圧縮された高解像度ビデオコンテンツは、連続的または代替的のいずれか一方で、ライブ視聴のために指定受信側またはアーカイビングのために記憶装置に伝送され得る。ネットワークカメラは、例えば、１つ以上の個別的な引き金となる事象または出来事に応答して、画像データを伝送し得る。圧縮ビデオコンテンツの効率的なビットレートコーディングを達成するために、ネットワークカメラは、差分符号化スキームを採用するビデオコーデックを含み得る。これらの符号化スキームは、イントラリフレッシュフレーム間に遠距離を必要とし得る。そのような符号化スキームを用いて生成される圧縮ビデオコンテンツは、ネットワークを経由した伝送中に最小限のネットワークリソースを消費する、長いピクチャ群（ＧＯＰ）長を有し得る。
【０００４】
さらに、アナログＣＣＴＶカメラとは対照的に、ネットワークカメラはまた、圧縮ビデオコンテンツの一部分をバッファリングし、それによって、これらのネットワークカメラが、目的とする事象または出来事を一括する圧縮ビデオコンテンツを配信することを可能にし得る。しかしながら、イントラフレッシュフレーム間の遠距離により、圧縮ビデオデータにおける長いＧＯＰ長コードの使用は、符号化されたデータの完全な列を記憶するために必要なメモリの量を増加させる。結果として、ネットワークカメラの有限のバッファ容量は、圧縮ビデオコンテンツの有意義な部分をバッファリングする、これらのカメラの能力を制限する。
【０００５】
前述を考慮して、画像データを符号化し、圧縮ビデオコンテンツを生成するための改良型システムおよび方法の必要性がある。また、ネットワークを経由した圧縮ビデオコンテンツのバッファリングおよび配信を可能にするように仮想イントラフレームを生成する、改良型システムおよび方法の必要性がある。また、ビデオデータの効率的な大きいＧＯＰ長の符号化、および有限のバッファメモリを有するネットワークカメラを用いた、符号化されたフレームデータのバッファリングを支援する、そのようなシステムおよび方法の必要性もある。また、コンピュータベースの環境で実装することができる、そのようなシステムおよび方法の必要性もある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本開示の実施形態によると、画像データを符号化し、圧縮ビデオコンテンツを生成するためのコンピュータ実装システムおよび方法が提供される。１つの例示的実施形態では、ビデオコンテンツのストリームを受信し、ビデオコーデックを使用して、イントラフレームおよび複数の対応するインターフレームを含む圧縮ビデオデータを生成するために、ビデオコンテンツストリームを符号化し、圧縮ビデオデータをバッファ内に記憶する方法が提供される。例示的な方法によると、符号化することは、符号化されたイントラフレームに関連付けられているデータを取得することと、イントラフレームデータに基づいて、インターフレームのうちの対応する１つを生成するようにビデオコンテンツストリームの一部分を符号化することとを含み得る。さらに、本方法は、バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定することを含み得る。バッファ中のデータの量が第１の閾値を超える場合、本方法は、生成されたインターフレームを復号し、復号されたインターフレームデータに基づいて仮想イントラフレームを計算することと、バッファの中に記憶するために、対応するインターフレームとともに仮想イントラフレームを出力することとを含み得る。
【０００７】
一実施形態では、ビデオコンテンツストリームの第１の部分は、イントラフレームを生成するように符号化され得る。第１の部分は、そのような実施形態では、インターフレームに関連付けられるビデオコンテンツストリームの一部分に先行し得る。
【０００８】
別の実施形態では、バッファリングされたデータの量が第１の閾値を超えない場合、符号化するステップは、圧縮ビデオデータに関連付けられているピクチャ群長を計算することを含み得る。符号化するステップはまた、計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定することを含み得、計算されたピクチャ群長が所定の閾値長を超えない場合、ビデオコンテンツストリームの追加の部分が、追加のインターフレームを生成するように符号化され得る。そのような実施形態では、バッファは、１つ以上の以前に符号化されたイントラフレームおよび対応するインターフレームの群を含み得、計算されたピクチャ群長が所定の閾値長を超える場合、例示的な方法は、以前に符号化されたイントラフレームおよび対応するインターフレームの群を破棄し得る。
【０００９】
さらなる実施形態では、符号化するステップはまた、バッファリングされたデータの量が、第１の閾値よりも大きい、第２の閾値を超えるかどうかを決定することを含み得る。そのような実施形態では、バッファリングされたデータの量が第２の閾値を超える場合、仮想イントラフレームが維持され得、仮想イントラフレームに先行する符号化されたビデオコンテンツが破棄され得る。
【００１０】
追加の実施形態では、引き金となる出来事を示す情報が受信され得、受信した情報に基づいて、例示的な方法は、バッファリングされたデータの少なくとも一部分を受信側に伝送する命令を生成し得る。引き金となる出来事は、そのような実施形態では、ビデオコンテンツの要求、受信したビデオストリーム内の所定の事象の発生、インターフェースを通した所定のデータの受信、またはセンサによる所定の事象の検出のうちの少なくとも１つを含み得る。
【００１１】
さらに、命令を生成するステップはまた、バッファリングされたデータがイントラフレームおよび仮想イントラフレームを含むかどうかを決定することを含み得る。そのような実施形態では、バッファリングされたデータがイントラフレームおよび仮想イントラフレームを含む場合、仮想イントラフレームは、破棄され得、対応するインターフレームは、維持され得、次いで、バッファリングされたデータ部分は、イントラフレームに基づいて生成され得る。さらなる実施形態では、例示的な方法は、バッファリングされたデータが仮想イントラフレームを含み、イントラフレームを含まないかどうかを決定することを含み得、次いで、バッファリングされたデータが仮想イントラフレームを含み、イントラフレームを含まない場合、仮想イントラフレームに基づいてバッファリングされたデータ部分を生成し得る。
【００１２】
さらに別の実施形態では、例示的な方法はさらに、圧縮ビデオデータの少なくとも１つのフレームを受信して復号することと、復号されたフレームがイントラフレームに対応するかどうかを決定することと、復号されたフレームがイントラフレームに対応する場合、少なくとも復号されたフレームをデータリポジトリに記憶することとを含み得る。そのような実施形態では、本方法は、復号されたフレームがインターフレームに対応することを決定し、復号されたフレームがインターフレームである場合、受信したデータに関連付けられているピクチャ群長を計算し得る。例示的な方法は、計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定し得、計算されたピクチャ群長が所定の閾値長を超えない場合、例示的な方法は、少なくとも復号されたインターフレームをデータリポジトリ内に記憶し得る。
【００１３】
さらに、そのような実施形態では、計算されたピクチャ群長が所定の閾値長を超える場合、本方法は、復号されたインターフレームデータに基づいて追加のイントラフレームを生成し得、次いで、少なくとも追加のイントラフレームをデータリポジトリ内に記憶し得る。
【００１４】
さらなる実施形態では、圧縮ビデオコンテンツは、ビットレートの対応する値に関連付けられ得、少なくとも１つの切り替え点が、圧縮ビデオコンテンツ内の対応する時間的位置で確立され得る。そのような実施形態では、切り替え点は、圧縮ビデオコンテンツの受信側または配信側のうちの少なくとも１つがビットレートを修正することを可能にし得る。
【００１５】
そのような実施形態では、例示的な方法は、圧縮ビデオデータおよび切り替え位置に関連付けられている情報をデータリポジトリに記憶する命令を生成し得る。さらに、切り替え点を確立する際に、例示的な方法は、対応する時間的位置に関連付けられているインターフレームを識別し、識別されたインターフレームを復号し、復号されたインターフレームデータに基づいて仮想イントラフレームを計算し、次いで、時間的位置でデータリポジトリの中に記憶するために、仮想イントラフレームを出力し得る。
【００１６】
追加の実施形態では、符号化するステップはまた、圧縮ビデオコンテンツ内の対応する時間的位置で複数の切り替え点を確立することを含み得る。対応する時間的位置は、一実施形態では、圧縮ビデオコンテンツ内で固定間隔で配置され得る。
【００１７】
さらなる実施形態では、例示的な方法は、圧縮ビデオコンテンツ内の時間的位置を識別する情報を含む、切り替え位置を作成する要求を受信し得、符号化するステップはさらに、要求に応答して、識別された時間的位置で切り替え点を確立することを含み得る。
【００１８】
本開示のさらなる実施形態によると、ビデオコンテンツのストリームを符号化して、イントラフレームおよび複数の対応するインターフレームを含む圧縮ビデオデータを生成するように構成されているビデオコーデックユニットを含む装置が提供される。本装置はさらに、ビデオコーデックユニットに連結され、圧縮ビデオデータをバッファ内に記憶するように構成されている記憶装置を含む。ビデオコーデックはさらに、符号化されたイントラフレームに関連付けられているデータを取得し、イントラフレームデータに基づいて、ビデオコンテンツストリームの一部分を符号化してインターフレームのうちの対応する１つを生成し、バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定するように構成され得る。バッファリングされたデータの量が第１の閾値を超える場合、ビデオコーデックは、生成されたインターフレームを復号し、復号されたインターフレームデータに基づいて仮想イントラフレームを計算し、バッファの中に記憶するための出力として、対応するインターフレームとともに仮想イントラフレームを提供し得る。
【００１９】
一実施形態では、ビデオコーデックはさらに、ビデオコンテンツストリームの第１の部分を符号化してイントラフレームを生成するように構成され得る。第１の部分は、そのような実施形態では、インターフレームに関連付けられるビデオコンテンツストリームの一部分に先行し得る。
【００２０】
別の実施形態では、バッファリングされたデータの量が第１の閾値を超えない場合、ビデオコーデックは、圧縮ビデオデータに関連付けられているピクチャ群長を計算するように構成され得る。ビデオコーデックはまた、計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定するように構成され得、計算されたピクチャ群長が所定の閾値長を超えない場合、ビデオコーデックは、ビデオコンテンツストリームの追加の部分を符号化して、追加のインターフレームを生成するように構成され得る。そのような実施形態では、バッファは、１つ以上の以前に符号化されたイントラフレームおよび対応するインターフレームの群を含み得、計算されたピクチャ群長が所定の閾値長を超える場合、ビデオコーデックはさらに、以前に符号化されたイントラフレームおよび対応するインターフレームの群を破棄するように構成され得る。
【００２１】
さらなる実施形態では、ビデオコーデックは、バッファリングされたデータの量が、第１の閾値よりも大きい、第２の閾値を超えるかどうかを決定するように構成され得る。ビデオコーデックはさらに、そのような実施形態では、バッファリングされたデータの量が第２の閾値を超える場合、仮想イントラフレームを維持し、仮想イントラフレームに先行する符号化されたビデオコンテンツを破棄するように構成され得る。
【００２２】
追加の実施形態では、ビデオコーデックは、引き金となる出来事を示す情報を受信し、受信した情報に基づいて、バッファリングされたデータの少なくとも一部分を受信側に伝送する命令を生成するように構成され得る。そのような実施形態では、ビデオコーデックは、バッファリングされたデータがイントラフレームおよび仮想イントラフレームを含むことを決定し、バッファリングされたデータがイントラフレームおよび仮想イントラフレームを含む場合、仮想イントラフレームを破棄し、対応するインターフレームを維持し、イントラフレームに基づいてバッファリングされたデータ部分を生成するように構成され得る。さらなる実施形態では、ビデオコーデックは、バッファリングされたデータが仮想イントラフレームを含み、イントラフレームを含まないかどうかを決定し、バッファリングされたデータが仮想イントラフレームを含み、イントラフレームを含まない場合、仮想イントラフレームに基づいてバッファリングされたデータ部分を生成するように構成され得る。
【００２３】
さらに別の実施形態では、ビデオコーデックは、圧縮ビデオデータの少なくとも１つのフレームを受信して復号し、復号されたフレームがイントラフレームに対応するかどうかを決定し、復号されたフレームがイントラフレームに対応する場合、少なくとも復号されたフレームを記憶装置に記憶する命令を生成するように構成され得る。そのような実施形態では、ビデオコーデックはまた、復号されたフレームがインターフレームに対応することを決定し、復号されたフレームがインターフレームである場合、受信したデータに関連付けられているピクチャ群長を計算するように構成され得る。次いで、ビデオコーデックは、計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定し、計算されたピクチャ群長が所定の閾値長を超えない場合、少なくとも復号されたインターフレームを記憶装置内に記憶する命令を生成するように構成され得る。
【００２４】
さらに、そのような実施形態では、ビデオコーデックは、計算されたピクチャ群長が所定の閾値長を超える場合、復号されたインターフレームデータに基づいて追加のイントラフレームを生成し、次いで、少なくとも追加のイントラフレームを記憶装置内に記憶する命令を生成するように構成され得る。
【００２５】
さらなる実施形態では、圧縮ビデオコンテンツは、ビットレートの対応する値に関連付けられ得、ビデオコーデックは、圧縮ビデオコンテンツ内の対応する時間的位置で少なくとも１つの切り替え点を確立するように構成され得る。そのような実施形態では、切り替え点は、圧縮ビデオコンテンツの受信側または配信側のうちの少なくとも１つがビットレートを修正することを可能にし得る。
【００２６】
そのような実施形態では、ビデオコーデックは、圧縮ビデオデータおよび切り替え位置に関連付けられている情報を記憶装置に記憶する命令を生成するように構成され得る。ビデオコーデックはまた、対応する時間的位置に関連付けられているインターフレームを識別し、識別されたインターフレームを復号し、復号されたインターフレームデータに基づいて仮想イントラフレームを計算し、時間的位置で記憶装置の中に記憶するために、仮想イントラフレームを出力するように構成され得る。
【００２７】
追加の実施形態では、ビデオコーデックは、圧縮ビデオコンテンツ内の対応する時間的位置で複数の切り替え点を確立するように構成され得る。対応する時間的位置は、そのような実施形態では、圧縮ビデオコンテンツ内で固定間隔で配置され得る。さらに、一実施形態では、ビデオコーデックは、圧縮ビデオコンテンツ内の時間的位置を識別する情報を含む、切り替え位置を作成する要求を受信するように、および要求に応答して、識別された時間的位置で切り替え点を確立するように構成され得る。
【００２８】
本開示の追加の一実施形態によると、少なくとも１つのプロセッサによって実行されると、少なくとも１つのプロセッサに、ビデオコンテンツのストリームを受信するステップと、イントラフレームおよび複数の対応するインターフレームを含む圧縮ビデオデータを生成するために、ビデオコンテンツストリームを符号化するステップと、圧縮ビデオデータをバッファ内に記憶するステップとを行わせる命令を記憶する有形の非一過性コンピュータ読み取り可能な媒体が提供される。一式の命令はさらに、少なくとも１つのプロセッサに、符号化されたイントラフレームに関連付けられているデータを取得させ、イントラフレームデータに基づいて、インターフレームのうちの対応する１つを生成するようにビデオコンテンツストリームの一部分を符号化させ得る。加えて、一式の命令は、少なくとも１つのプロセッサに、バッファに記憶されたデータの量が第１の閾値を超えるかどうかを決定させ得る。バッファ中のデータの量が第１の閾値を超える場合、一式の命令は、少なくとも１つのプロセッサに、生成されたインターフレームを復号させ、復号されたインターフレームデータに基づいて仮想イントラフレームを計算させ、バッファの中に記憶するために、対応するインターフレームとともに仮想イントラフレームを出力させ得る。
【００２９】
本開示の別の実施形態によると、コンピュータ実装方法は、通信ネットワークに関連付けられているネットワーク条件を示す情報を受信し、情報に基づいて、通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートがネットワーク条件と整合するかどうかを決定する。初期ビットレートがネットワーク条件と整合しない場合、圧縮ビデオコンテンツの初期ビットレートに関連付けられている切り替え点が識別される。切り替え点は、圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられ得る。ビデオコーデックを使用して、切り替え点の時間的位置において修正されたビットレートで圧縮ビデオコンテンツの一部分を伝送するように、命令が生成される。一部分は、仮想イントラフレームと、修正されたビットレートで符号化された対応するイントラフレームとを含み得る。
【００３０】
一実施形態では、初期ビットレートがネットワーク条件と整合する場合、例示的な方法は、初期ビットレートで圧縮ビデオコンテンツを伝送する命令を生成し得る。さらに、初期ビットレートがネットワーク条件と整合しない場合、例示的な方法は、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得し得る。修正されたビットレートは、そのような実施形態では、切り替え点の時間的位置でネットワーク条件と整合し得る。
【００３１】
追加の実施形態では、例示的な方法は、初期ビットレートがネットワーク条件と整合しない場合、ネットワーク条件に関連付けられているビットレートが初期ビットレートを超えることを決定し得、さらに、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得し得る。そのような実施形態では、修正されたビットレートは、切り替え点の時間的位置で初期ビットレートを超え得る。
【００３２】
別の実施形態では、初期ビットレートがネットワーク条件と整合しない場合、例示的な方法は、初期ビットレートがネットワーク条件に関連付けられているビットレートを超えることを決定し得、次いで、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得し得る。そのような実施形態では、初期ビットレートは、切り替え点の時間的位置で修正されたビットレートを超え得る。
【００３３】
さらなる実施形態では、本方法は、初期ビットレートを識別する情報を含む、圧縮ビデオコンテンツの要求を受信することと、要求に応答して、初期ビットレートで圧縮ビデオコンテンツを伝送する命令を生成することとを含み得る。そのような実施形態では、本方法は、圧縮ビデオコンテンツに関連付けられている再生情報を伝送する命令を生成し得る。再生情報は、圧縮ビデオコンテンツ内の切り替え点の時間的位置を識別する情報を含み得る。
【００３４】
本開示の別の実施形態によると、記憶装置と、記憶装置に連結されるビデオコーデックとを含む、装置が提供される。ビデオコーデックは、通信ネットワークに関連付けられているネットワーク条件を示す情報を受信し、情報に基づいて、通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートがネットワーク条件と整合するかどうかを決定するように構成され得る。初期ビットレートがネットワーク条件と整合しない場合、ビデオコーデックはさらに、圧縮ビデオコンテンツの初期ビットレートに関連付けられている切り替え点を識別するように構成される。切り替え点は、圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられ得る。ビデオコーデックはさらに、切り替え点の時間的位置において修正されたビットレートで圧縮ビデオコンテンツの一部分を伝送する命令を生成するように構成される。一部分は、仮想イントラフレームと、修正されたビットレートで符号化された対応するイントラフレームとを含み得る。
【００３５】
一実施形態では、初期ビットレートがネットワーク条件と整合する場合、ビデオコーデックはさらに、初期ビットレートで圧縮ビデオコンテンツを伝送する命令を生成するように構成され得る。ビデオコーデックはまた、初期ビットレートがネットワーク条件と整合しない場合、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得するように構成され得る。修正されたビットレートは、そのような実施形態では、切り替え点の時間的位置でネットワーク条件と整合し得る。
【００３６】
追加の実施形態では、ビデオコーデックは、初期ビットレートがネットワーク条件と整合しない場合、ネットワーク条件に関連付けられているビットレートが初期ビットレートを超えることを決定し、次いで、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得するように構成され得る。そのような実施形態では、修正されたビットレートは、切り替え点の時間的位置で初期ビットレートを超え得る。
【００３７】
別の実施形態では、初期ビットレートがネットワーク条件と整合しない場合、ビデオコーデックは、初期ビットレートがネットワーク条件に関連付けられているビットレートを超えることを決定し、修正されたビットレートで圧縮ビデオコンテンツの一部分を取得するように構成され得る。初期ビットレートは、そのような実施形態では、切り替え点の時間的位置で修正されたビットレートを超え得る。
【００３８】
さらなる実施形態では、ビデオコーデックは、初期ビットレートを識別する情報を含む、圧縮ビデオコンテンツの要求を受信し、要求に応答して、初期ビットレートで圧縮ビデオコンテンツを伝送する命令を生成するように構成され得る。ビデオコーデックはまた、圧縮ビデオコンテンツに関連付けられている再生情報を伝送する命令を生成するように構成され得る。再生情報は、そのような実施形態では、圧縮ビデオコンテンツ内の切り替え点の時間的位置を識別する情報を含み得る。
【００３９】
本開示の他の実施形態は、少なくとも１つのプロセッサによって実行されると、少なくとも１つのプロセッサに、通信ネットワークに関連付けられているネットワーク条件を示す情報を受信するステップと、情報に基づいて、通信ネットワークを経由して伝送される圧縮ビデオコンテンツの初期ビットレートがネットワーク条件と整合するかどうかを決定するステップとを行わせる命令を記憶する有形の非一過性コンピュータ読み取り可能な媒体に関する。初期ビットレートがネットワーク条件と整合しない場合、圧縮ビデオコンテンツの初期ビットレートに関連付けられている切り替え点が識別される。切り替え点は、圧縮ビデオコンテンツ内の対応する時間的位置に関連付けられ得る。切り替え点の時間的位置において修正されたビットレートで圧縮ビデオコンテンツの一部分を伝送するように、命令が生成される。一部分は、仮想イントラフレームと、修正されたビットレートで符号化された対応するイントラフレームとを含み得る。
【００４０】
本開示のさらなる実施形態は、圧縮ビデオデータの少なくとも１つのフレームを備えているビデオコンテンツのストリームを受信する、コンピュータ実装方法に関する。本方法は、受信したフレームを復号し、復号されたフレームがインターフレームに対応するかどうかを決定する。復号されたフレームがインターフレームである場合、本方法は、受信したデータに関連付けられているピクチャ群長を計算し、計算されたピクチャ群長が所定の閾値長を超えるかどうかを決定する。計算されたピクチャ群長が所定の閾値長を超える場合、ビデオコーデックは、復号されたインターフレームデータに基づいて追加のイントラフレームを生成する。少なくとも追加のイントラフレームは、データリポジトリ内に記憶される。
【００４１】
一実施形態では、例示的な方法は、復号されたフレームがイントラフレームに対応する場合、少なくとも復号されたフレームをデータリポジトリに記憶し得る。例示的な方法はまた、計算されたピクチャ群長が所定の閾値長を超えない場合、少なくとも復号されたインターフレームをデータリポジトリに記憶し得る。
【００４２】
前述の一般的説明および以降の発明を実施するための形態の両方は、例示的かつ説明的にすぎず、請求されるような本発明を制限しないことを理解されたい。
【図面の簡単な説明】
【００４３】
本明細書に組み込まれ、その一部を構成する、添付図面は、本開示の実施形態を図示し、説明とともに、添付図面に記載されるような本発明の原理を説明する働きをする。
【図１】図１は、その内側で本開示による実施形態が実践され得る、例示的なコンピュータ環境の略図である。
【図２】図２は、開示された実施形態による、例示的なオンチップビデオコーデックの略図である。
【図３】図３は、開示された実施形態による、ビデオコンテンツの例示的な符号化されたフレーム群を図示する。
【図４】図４は、開示された実施形態による、圧縮ビデオコンテンツを生成してバッファリングする例示的な方法のフローチャートである。
【図５Ａ】図５Ａ−５Ｃは、開示された実施形態による、仮想イントラフレームを含む例示的なバッファリングされたフレームシーケンスを図示する。
【図５Ｂ】図５Ａ−５Ｃは、開示された実施形態による、仮想イントラフレームを含む例示的なバッファリングされたフレームシーケンスを図示する。
【図５Ｃ】図５Ａ−５Ｃは、開示された実施形態による、仮想イントラフレームを含む例示的なバッファリングされたフレームシーケンスを図示する。
【図６】図６は、開示された実施形態による、引き金となる出来事に応答して、バッファリングされたビデオコンテンツを伝送するための例示的な方法のフローチャートである。
【図７】図７は、開示された実施形態による、符号化されたビデオコンテンツのピクチャ群（ＧＯＰ）長を修正するための例示的な方法のフローチャートである。
【図８】図８は、開示された実施形態による、符号化されたビデオコンテンツの複数のチャネルを記憶するための例示的なデータ構造を図示する。
【図９】図９は、開示された実施形態による、伝送されるビデオコンテンツのビットレートを適応的に修正するための例示的な方法のフローチャートである。
【図１０Ａ】図１０Ａ−１０Ｂおよび１１Ａ−１１Ｂは、開示された実施形態による、符号化されたビデオコンテンツの伝送ビットレートへの例示的な調整を図示する。
【図１０Ｂ】図１０Ａ−１０Ｂおよび１１Ａ−１１Ｂは、開示された実施形態による、符号化されたビデオコンテンツの伝送ビットレートへの例示的な調整を図示する。
【図１１Ａ】図１０Ａ−１０Ｂおよび１１Ａ−１１Ｂは、開示された実施形態による、符号化されたビデオコンテンツの伝送ビットレートへの例示的な調整を図示する。
【図１１Ｂ】図１０Ａ−１０Ｂおよび１１Ａ−１１Ｂは、開示された実施形態による、符号化されたビデオコンテンツの伝送ビットレートへの例示的な調整を図示する。
【図１２】図１２は、その内側で開示された実施形態が実践され得る、例示的なコンピュータシステムを図示する。
【発明を実施するための形態】
【００４４】
ここで、その実施例が添付図面で図示される、本開示の実施形態を詳細に参照する。同一の参照番号が、同一または類似部品を指すために図面の全体を通して使用されるであろう。
【００４５】
本願では、単数形の使用は、特に他の記述がない限り、複数形を含む。本願では、「または」の使用は、他に記述がない限り、「および／または」を意味する。さらに、「〜を含む」という用語、ならびに「含む」および「含んだ」等の他の形態は、限定的ではない。加えて、「要素」または「構成要素」等の用語は、特に他の記述がない限り、１つのユニットを備えている要素および構成要素、ならびに１つより多くのサブユニットを備えている要素および構成要素の両方を包含する。加えて、本明細書で使用される節の見出しは、編成目的のためにすぎず、説明される主題を限定すると解釈されるものではない。
【００４６】
図１は、その内側で本開示による実施形態が実践され得る、例示的なコンピュータ環境１００を図示する。図１に図示されるように、環境１００は、ビデオコンテンツが捕捉され、符号化され、後に、通信ネットワーク１３０と通信している種々の場所で記憶されることを可能にする、ＩＰベースまたはネットワークビデオ監視システムを伴って実装され得る。図１中の構成要素の数および配列は、例証の目的で提供され、本開示から当業者に明白であるように、構成要素の数は、増加または減少させられ得、および／または環境１００の意図された必要性または目的に従って、修正が構成の配列に行われ得る。
【００４７】
図１の例示的実施形態では、環境１００は、複数のデジタルネットワークカメラ１０２および１０４と、複数のクライアントデバイス１１２および１１４と、ビデオエンコーダユニット１１６と、通信ネットワーク１３０を介して相互接続されるビデオ管理システム１２０とを含む。さらに、図１で描写されるように、１つ以上のアナログカメラ１１６Ａ（例えば、閉回路テレビ（ＣＣＴＶ）カメラ）が、接続１５０を介して、１つ以上のビデオエンコーダユニット１１６と通信して配置され得る。そのような実施形態では、接続１５０は、当業者に明白であるものを含み、アナログカメラ１１６Ａおよびビデオエンコーダユニット１１６へ、およびそこからデータを搬送することが可能である、任意の有線または無線接続に対応し得る。
【００４８】
図１では、デジタルネットワークカメラ１０２および１０４は、圧縮ビデオコンテンツを生成するように近リアルタイムで符号化され得る、原画像データを連続的に捕捉するように構成され得る。同様に、アナログカメラ１１６Ａは、後続の符号化のために接続１５０を経由してビデオエンコーダユニット１１６に転送され得る、原画像データを連続的に捕捉するように構成され得る。そのような実施形態では、ネットワークカメラ１０２および１０４によって、ならびにビデオ符号化ユニット１１６によって行われる符号化は、連続的に、特定間隔で、または所定の引き金となる出来事に応答してのいずれかで、ネットワーク１３０を経由した伝送に好適な圧縮ビデオコンテンツを生成し得る。
【００４９】
一実施形態では、ビデオ符号化ユニット１１６ならびにネットワークカメラ１０２および１０４によって取得される原画像データは、イントラフレーム（すなわち、Ｉフレーム）およびインターフレーム（すなわち、Ｐフレーム）の対応する順次セットをそれぞれ含むピクチャ群（ＧＯＰ）を生成するように、差分符号化スキームに従って符号化され得る。例えば、原画像データは、高解像度ビデオに対するＨ．２６４規格、高効率ビデオコーディングに対するＨ．２６５規格、または当業者に明白である任意の追加のまたは代替的な差分符号化規格に従って符号化され得る。
【００５０】
さらに、本開示による実施形態では、ビデオ符号化ユニット１１６ならびにネットワークカメラ１０２および１０４は、ネットワーク１３０を経由した後続の伝送のために、複数のビットレートで原画像データを符号化するように構成され得る。例えば、原画像データを符号化するために選択されるビットレートは、ネットワーク１３０の状態（例えば、ネットワーク１３０の帯域幅）、圧縮画像データの受信側（例えば、クライアントデバイス１０２またはビデオ管理システム１２０）の状態、または当業者に明白であり、ビデオ符号化ユニット１１６ならびにネットワークカメラ１０２および１０４にとって適切である任意の追加のまたは代替的な状態に依存し得る。
【００５１】
再度、図１を参照すると、クライアントデバイス１１２および１１４は、少なくとも１つのプロセッサまたはコンピュータベースのシステムを用いて実装され得る。例えば、クライアントデバイス１１２および１１４は、パーソナルコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ハンドヘルドコンピュータ、携帯情報端末、携帯用ナビゲーションデバイス、携帯電話、スマートフォン、セットトップボックス、第三者ポータル、専用表示デバイスを伴うビデオデコーダボックスまたはドングル、およびネットワーク１３０を経由してデータを伝送および受信するように動作可能である任意の追加のまたは代替的なコンピュータデバイスを含むことができるが、それらに限定されない。
【００５２】
通信ネットワーク１３０は、デジタルデータ通信を提供するための有線および／または無線ネットワークの任意の組み合わせを伴って実装され得る。通信ネットワーク１２０の実施例は、ローカルエリアネットワーク（「ＬＡＮ」）、無線ＬＡＮ、例えば、「ＷｉＦｉ」ネットワーク、複数の無線ＬＡＮを接続する無線メトロポリタンエリアネットワーク（ＭＡＮ）、および広域ネットワーク（「ＷＡＮ」）を含む。いくつかの実施形態では、ネットワーク１３０は、インターネットを備えている。例えば、本開示の実施形態によると、ネットワーク１３０は、インターネットを備え、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、およびリアルタイムトランスポートプロトコル（ＲＴＰ／ＲＴＣＰ）を含むが、それらに限定されない、１つ以上の通信プロトコルを介して相互接続される、１つまたは複数の任意の公的にアクセス可能なネットワークを含み得る。また、通信ネットワーク１３０はまた、クライアントデバイス１１２および１１４、ネットワークカメラ１０２および１０４、ならびにビデオ管理システム１２０が、上記で説明されるものを含む適用可能な通信プロトコルを介して、データを送受信することを可能にする、ＧＳＭ（登録商標）ネットワークまたはＰＣＳネットワーク等の１つ以上の携帯電話ネットワークを含み得る。
【００５３】
ビデオ管理システム１２０は、ビデオ管理サーバ１２２と、データリポジトリ１２４とを含み得る。例えば、ビデオ管理サーバ１２２は、フロントエンドと、フロントエンドと通信して配置されるバックエンドとを含み得る。そのような実施形態では、サーバ１２２のフロントおよびバックエンドは、ハードウェアユニット、例えば、単一のコンピュータ、単一のサーバ、または当業者に明白である任意の追加のあるいは代替的なコンピュータデバイスに組み込まれ得る。さらに、一実施形態では、フロントエンドは、クライアントデバイス（例えば、クライアントデバイス１１２および１１４）のユーザが、データリポジトリ１２４内に記憶された圧縮ビデオコンテンツにアクセスし、それを管理し、視聴することを可能にする、サーバ１２２上で実行されるウェブサービス等のソフトウェアアプリケーションであり得る。
【００５４】
データリポジトリ１２４は、ビデオコーディングユニット１１６ならびにネットワークカメラ１０２および１０４によって複数のビットレートのうちの１つ以上で符号化される、圧縮ビデオコンテンツを記憶し得る。例えば、上記で議論されるように、ビデオコーディングユニット１１６ならびにネットワークカメラ１０２および１０４のうちの１つ以上は、連続的に、特定間隔で、または所定の引き金となる出来事に応答してのいずれかで、記録を記憶するためにネットワーク１３０を経由して圧縮ビデオコンテンツをデータリポジトリ１２４に伝送し得る。
【００５５】
上記で説明されるように、ネットワークカメラ１０２および１０４ならびにビデオコーデックユニット１１６は、原画像データを取得し、原画像データを符号化して圧縮ビデオコンテンツを生成し、後に、記憶ユニット内に圧縮ビデオデータの一部分をバッファリングするように、対応するプロセッサおよび記憶ユニットと通信している１つ以上のビデオコーデックを組み込み得る。そのような実施形態では、コーデックおよびプロセッサは、センサインターフェースユニットと、ビデオコーデックユニットと、例えば、図２を参照して以下で説明されるように、センサインターフェースおよびビデオコーデックユニットを制御し、ネットワーク１３０を経由してクライアントデバイス１１２および１１４ならびにビデオ管理システム１２０と連動するように論理を含む、処理ユニットとを含む、オンチップ装置に組み込まれ得る。
【００５６】
図２は、開示された実施形態による、圧縮ビデオコンテンツを生成するように原画像データを符号化する、例示的なオンチップビデオコーデック２００を図示する。一例として、ビデオコーデック２００は、原画像データを連続的に符号化して圧縮ビデオコンテンツを生成するように、ネットワークカメラ１０２および１０４ならびにビデオコーディングユニット１１６のうちの１つ以上に組み込まれ得る。
【００５７】
図２の例示的実施形態では、ビデオコーデック２００は、センサユニット２２０と、コーデックユニット２４０と、処理ユニット２６０とを含む。さらに、図２のメモリインターフェース２９０は、センサユニット２２０、コーデックユニット２４０、および処理ユニット２６０を外部記憶ユニット２８０に連結し得る。そのような実施形態では、センサユニット２２０は、原画像データを受信し、コーデックユニット２４０による符号化に好適な形式に処理し得る。コーデックユニット２４０は、その一部分が記憶装置２８０内にバッファリングされ得る、圧縮ビデオデータを生成するために、フォーマット済みの原画像データを符号化し得る。さらに、そのような実施形態では、圧縮ビデオコンテンツは、処理ユニット２６０によって生成される命令に応答して、視聴および／または記憶のために通信ネットワーク（例えば、ネットワーク１３０）を経由して伝送され得る。
【００５８】
さらに、図２では描写されていないが、画像センサによって捕捉される原画像データは、ネットワークカメラ１０２および１０４に組み込まれ得る。開示された実施形態による画像センサは、デジタル電荷結合素子（ＣＣＤ）画像センサおよび相補型金属酸化膜半導体（ＣＭＯＳ）画像センサを含むが、それらに限定されない。加えて、ビデオ符号化ユニット１１６によって取得される原画像データは、適切な画像センサを使用して、１つ以上のアナログカメラ（例えば、アナログカメラ１１６Ａ）によって捕捉され得、後に、接続１５０を使用して、ビデオコーディングユニット１１６に提供され得る。
【００５９】
図２を再び参照すると、センサユニット２２０は、画像センサから画像データを受信するセンサ入力インターフェース２２２と、カラーフィルタを原画像データに適用するベイヤーパターンプロセッサ２２４と、フィルタにかけられた画像データの形式を変換する形式変換器２２６とを含む。センサユニット２２０は、そのような例示的な構成に限定されず、さらなる実施形態では、センサユニット２２０は、デッドピクセル隠蔽アルゴリズム、雑音除去アルゴリズム、画像鮮明化アルゴリズム、ホワイトバランスアルゴリズム、露出アルゴリズム、および画像自動焦点アルゴリズムを含むが、それらに限定されない、１つ以上の追加の画像処理アルゴリズムを実行するように構成され得る。センサユニットはまた、センサユニット２２０が、インターフェース２９０を通して記憶ユニット２８０に直接アクセスすること、およびインターフェース２９０を通してフィルタにかけられた画像データをコーデックユニット２４０に提供することを可能にする、ダイレクトメモリアクセス（ＤＭＡ）コントローラ２２８も含む。
【００６０】
コーデックユニット２４０は、対応するダイレクトメモリアクセス（ＤＭＡ）コントローラ２４８を使用して、インターフェース２９０を通してセンサユニット２２０からフィルタにかけられた画像データを受信し得る、ビデオスケーラ２４２を含む。いったんビデオスケーラ２４２によって処理されると、スケーリングされた画像データは、エンコーダ２４４またはエンコーダ２４６のうちの１つ以上に転送され得る。例えば、エンコーダ２４４は、ＤＭＡコントローラ２４８によって記憶ユニット２８０に、または代替として、ネットワーク１３０を経由した後続の伝送のために処理ユニット２６０に転送され得る、対応するＪＰＥＧ圧縮画像を生成するように、スケーリングされた画像データを圧縮し得る。
【００６１】
加えて、または代替として、エンコーダ２４６は、圧縮ビデオデータの対応するフレームを生成するように、高解像度ビデオに対するＨ．２６４規格に従って、スケーリングされた画像データを差分的に符号化し得る。例えば、生成されたフレームは、対応するピクチャ群（ＧＯＰ）長を有する、差分的に符号化されたフレーム群の一部分を形成し得る。そのような実施形態では、ＤＭＡコントローラ２４８は、圧縮ビデオデータを、バッファリングのために記憶ユニット２８０に、および加えて、または代替として、ネットワーク１３０を経由した伝送のために処理ユニット２６０に転送し得る。
【００６２】
処理ユニット２６０は、中央処理ユニット（ＣＰＵ）２６２と、対応するキャッシュ２６４と、上記で概説される通信プロトコルのうちの１つ以上を使用してネットワーク１３０に接続するネットワークインターフェース２６６とを含む。処理ユニットはまた、マイクロホンからの入力を受け入れるか、または出力をスピーカに提供する、聴覚インターフェース２６８と、セキュアデジタル（ＳＤ）カードを受け入れるインターフェース２７０と、１つ以上の周辺デバイス（例えば、キーボードまたはタッチスクリーン等の入出力デバイス、およびハードディスクまたはフラッシュデバイス等の外部メモリデバイス）と通信するための一般インターフェース２７２とを含む。
【００６３】
一実施形態では、処理ユニット２６０は、対応するインターフェースを使用して、ローカルでアクセス可能な記憶装置（例えば、ＳＤカードインターフェース２７０を使用してＳＤカード、または一般インターフェース２７２を使用してフラッシュデバイス）内に圧縮ビデオコンテンツを記憶するように、信号を生成し得る。追加の実施形態では、処理ユニット２６０はまた、コーデックユニット２４０によって生成される圧縮ビデオコンテンツを、視聴または記憶のために対応する受信側に連続的に伝送するか、または代替として、圧縮ビデオコンテンツを、所定の時間に視聴または記憶のために対応する受信側に伝送するかのいずれか一方のために、信号を生成し得る。しかしながら、開示された実施形態は、ローカル記憶および伝送のためのそのような機構に限定されず、追加の実施形態では、処理ユニット２６０は、ネットワークインターフェース２６６、聴覚インターフェース２６８、ＳＤカードインターフェース２７０、または圧縮ビデオコンテンツの転送をトリガする出来事を識別する一般Ｉ／Ｏインターフェース２７２のうちの１つ以上から信号を受信し得る。
【００６４】
例えば、そのような引き金となる出来事は、クライアントデバイスのユーザからの要求、センサユニット（例えば、運動センサ、赤外線センサ、熱センサ、およびリレーまたはドア接触センサ）から受信される信号、聴覚インターフェースと通信しているマイクロホンから受信される信号、追加のネットワークデバイス（例えば、追加のネットワークカメラ）によって生成され、通信ネットワーク（例えば、ネットワーク１３０）を経由して処理ユニット２６０に伝送される信号またはアラーム、または当業者に明白である任意の追加のまたは代替的な事象を含むが、それらに限定されない。そのような実施形態では、クライアントデバイス（例えば、クライアントデバイス１１２または１０４）のユーザは、１つ以上の引き金となる出来事および圧縮データを受信すべき１つ以上の対応する宛先を特定する構成情報をネットワークカメラ１０２および１０４のうちの１つ以上に提供し得る。
【００６５】
さらに、上記で説明されるように、ＤＭＡコントローラ２４８は、圧縮ビデオコンテンツを一時的に記憶するようにバッファの役割を果たし得る、記憶装置２８０に圧縮ビデオコンテンツを伝送し得る。引き金となる事象の識別時に、処理ユニット２６０はまた、ネットワーク１３０を経由してバッファリングされたビデオコンテンツを、視聴または記憶のために指定受信側または場所に伝送する命令を生成し得る。そのような実施形態では、ビデオコーデック２００は、引き金となる出来事の後の原画像データに対応する圧縮ビデオコンテンツだけでなく、引き金となる出来事に先立った所定の期間内に捕捉される圧縮ビデオデータのバッファリングされた部分の配信も促進し得る。
【００６６】
上記で説明されるように、ネットワークカメラ１０２および１０４のオンチップコーデックシステムは、高解像度ビデオに対するＨ．２６４規格、および高効率ビデオコーディングに対するＨ．２６５規格と一致するスキームを含むが、それらに限定されない、１つ以上の差分符号化スキームに従って、原画像データを符号化する。そのような差分符号化スキームを使用して、原画像データは、対応するピクチャ群（ＧＯＰ）長を有し、初期イントラフレーム（すなわち、Ｉフレーム）と、例えば、図３を参照して以下で説明されるように、Ｉフレームに基づいて予測される複数のインターフレーム（すなわち、Ｐフレーム）とを含む、フレーム群に符号化される。
【００６７】
図３は、本開示の実施形態による、例示的な差分的に符号化されたフレーム群３００を図示する。例えば、群３００は、ネットワークカメラ（例えば、ネットワークカメラ１０２および１０４）およびアナログカメラと通信しているビデオコーディングユニット（例えば、ビデオコーディングユニット１１６）のうちの少なくとも１つに組み込まれる、ビデオコーデック（例えば、オンチップビデオコーデック２００）によって生成され得、ネットワークカメラおよび／またはアナログカメラの画像センサによって捕捉される原画像データに基づき得る。
【００６８】
図３の例示的実施形態では、原画像データの最初の部分は、対応するＩフレーム３０２（例えば、ＩフレームＩ１）を形成するように符号化され得る。そのような実施形態では、Ｉフレーム３０２は、ビデオコーデック２００による復号時に、原画像データの最初の部分に対応する画像をもたらす、内蔵画像を表す。
【００６９】
原画像データの後続の部分は、シーケンス中のＩフレーム３０２および各先行Ｐフレームに依存する、Ｐフレーム３０４（例えば、ＰフレームＰ２Ｐ３Ｐ４・・・ＰＮ−１ＰＮ）の対応するシーケンスをもたらすように、差分的に符号化され得る。例えば、図３に示されるように、ＰフレームＰ２は、原画像の第２の部分と最初の部分との間の差異を表し、原画像の第２の部分に対応する画像は、復号されたＩフレーム３０２と復号されたＰフレームＰ２とに基づいて生成され得る。同様に、ＰフレームＰ７に対応する画像は、Ｉフレーム３０２およびＰフレームＰ２からＰ７の各々を順に復号することによって、生成され得る。
【００７０】
図３の実施形態では、ビデオコーデック装置２００によって生成されるＰフレームは、単一の参照画像に関連付けられる。しかしながら、開示された実施形態は、例示的な差分符号化スキームに限定されず、追加の実施形態では、ビデオコーデック装置２００は、開示された実施形態の精神または範囲から逸脱することなく、複数の参照画像に関連付けられる追加のＰフレームを生成し得る。
【００７１】
さらに、上記で説明される実施形態では、差分コーディングスキームは、ビデオコーデック装置２００が、以前に符号化された画像データ（すなわち、以前の参照フレーム）を参照するＰフレームを生成することを可能にする。追加の実施形態では、ビデオコーデック２００はまた、以前に符号化された画像データ（すなわち、１つ以上の以前の参照フレーム）および後に符号化された画像データ（すなわち、１つ以上の後続の参照フレーム）の両方を参照する、１つ以上の双方向予測フレーム（すなわち、Ｂフレーム）を生成し得る。例えば、ビデオコーデック２００は、待ち時間を増加させ、符号化されたビデオコンテンツを伝送するための将来の帯域幅要求を低減させるように、そのようなＢフレームを生成し、対応するＰフレームの間に位置付け得る。
【００７２】
図３を再び参照すると、符号化されたＩフレームに関連付けられるサイズは、対応する符号化されたＰフレームに関連付けられるサイズよりも実質的に大きくあり得る。例えば、Ｉフレーム３０２は、サイズが５０キロバイトであり得る一方で、Ｐフレーム３０４の各々は、原画像データに関連付けられる雑音のレベルに応じて、サイズが１キロバイトから４キロバイトに及び得る。そのような実施形態では、圧縮ビデオコンテンツに関連付けられるピクチャ群（ＧＯＰ）長は、シーケンス３００内の最初のＩフレーム３０２に従属するＰフレーム３０４の数を増加させ、それによって、通信ネットワーク（例えば、図１のネットワーク１３０）を経由してシーケンス３００を伝送するために必要なビットレートを減少させるように調整され得る。例えば、１２８のＧＯＰ長を有するシーケンスを伝送するために必要なビットレートは、３２のＧＯＰ長を有する同等シーケンスを伝送するために必要とされるビットレートより２倍から４倍小さくあり得る。
【００７３】
上記で説明されるように、ビデオコーデック２００は、同時にローカル記憶ユニット（例えば、記憶ユニット２８０）の中に圧縮ビデオコンテンツの一部分をバッファリングしながら、ライブ視聴または記憶のためにネットワーク１３０を経由して圧縮ビデオコンテンツを受信側デバイスに伝送し得る。そのような実施形態では、ビデオコーデック２００は、ネットワーク１３０を経由して圧縮ビデオコンテンツを伝送するために必要とされるビットレートを低減させるために、比較的長いＧＯＰ長（例えば、１２８フレーム以上）を有する圧縮ビデオコンテンツを生成し得る。しかしながら、ＩＰベースのビデオ監視システムの構成要素内に一般的に組み込まれるバッファの有限の容量（例えば、３００キロバイトの容量）により、そのような長いＧＯＰ長コードの使用は、圧縮ビデオコンテンツのＧＯＰ全体をバッファリングするビデオコーデック２００の能力を制限し得る。
【００７４】
例えば、図３を再び参照すると、ビデオコーデック装置２００は、１２８フレームのＧＯＰ長を有する圧縮ビデオコンテンツを生成し得る。そのような実施形態では、Ｉフレーム３０２は、記憶に５０キロバイトを必要とし得る一方で、対応するＰフレーム３０４の各々は、１キロバイトから４キロバイトのサイズを必要とし得る。そのような状況下では、圧縮ビデオコンテンツのＧＯＰ全体は、（無雑音フレームデータを伴う）１７７キロバイトから（雑音の多いフレームデータを伴う）５５８キロバイトの間の記憶容量を必要とし得る。そのような実施形態では、ビデオコーデック２００は、ＧＯＰの最初のＩフレームが後続のＰフレームによって上書きされ、バッファリングされたコンテンツの受信側が対応する画像を生成するようにバッファリングされたコンテンツを復号することができない場合があるので、３００キロバイトバッファ内に圧縮ビデオコンテンツの完全なＧＯＰをバッファリングすることができない場合がある。
【００７５】
図４は、本開示の実施形態による、圧縮ビデオコンテンツを生成してバッファリングする例示的な方法４００を図示する。方法４００は、長いＧＯＰ長コードを有する圧縮ビデオコンテンツを生成し、後に、有限のバッファ容量を有する記憶ユニット内に圧縮ビデオコンテンツをバッファリングするように、ビデオコーデック（例えば、オンチップコーデック２００）によって実装され得る。本開示から当業者に明白となるように、図４の同方法のステップおよび配列は、必要に応じて修正され得る。また、方法４００を参照して以下で説明される閾値（例えば、５０％および９０％）は、例証の目的のためであり、必要に応じて修正され得る。
【００７６】
図４では、ビデオコーデック２００は、ステップ４０２でビデオコンテンツのストリームを受信する。一実施形態では、ビデオコンテンツは、図２の例示的実施形態を参照して上記で説明されるように、ネットワークカメラ（例えば、ＣＣＤデバイスまたはＣＭＯＳデバイス）に関連付けられる画像センサによって捕捉され得、後に、フィルタにかけられたビデオコンテンツを生成するように、センサユニット（例えば、ビデオコーデック２００のセンサユニット２２０）によってフィルタにかけられ得る。
【００７７】
ステップ４０４では、ビデオコーデック２００は、受信したビデオコンテンツストリームの最初の部分に基づいて、イントラフレーム（すなわち、Ｉフレーム）を生成する。ステップ４０６では、ビデオコーデック２００は、余剰容量が対応するバッファ（例えば、記憶ユニット２８０の一部分）内に存在するかどうかを決定する。一実施形態では、ビデオコーデック２００は、高解像度ビデオに対するＨ．２６４規格、および高効率ビデオコーディングに対するＨ．２６５規格を含むが、それらに限定されない、差分コーディングスキームに従って原画像データを符号化することによって、ステップ４０４でＩフレームを生成する。
【００７８】
ビデオコーデック２００が、余剰容量がバッファの中に存在しない（すなわち、バッファが満杯である）ことを決定する場合には、エラー信号がステップ４０８で生成され、方法４００はステップ４１０で完了する。しかしながら、ビデオコーデック２００が、バッファが満杯ではないことを決定する場合には、符号化されたＩフレームがバッファリングされ、受信したビデオコンテンツストリームの追加の部分が、ステップ４１２で対応するインターフレーム（すなわち、Ｐフレーム）を生成するようにビデオコーデック２００によって符号化される。そのような実施形態では、生成されたＰフレームは、図３を参照して上記で議論されるように、受信したビデオコンテンツストリームの最初の部分と追加の部分との間の差異を表す。
【００７９】
例えば、ステップ４１２でＰフレームを生成するとき、上記で説明される差分符号化スキーム（例えば、Ｈ．２６４規格またはＨ．２６５規格のＩフレーム符号化スキーム）は、ビデオエンコーダ２００が、対応する参照フレームを生成するために、新たに符号化されたＰフレームを復号することを義務付け得る。そのような実施形態では、ビデオコーデック２００は、以下で議論されるように、後続のＰフレームを生成するために、および加えて、または代替として、Ｐフレームに基づく仮想Ｉフレームを生成するために、参照フレームを活用し得る。
【００８０】
ステップ４１４では、ビデオコーデック２００は、再度、余剰容量がバッファの中に存在するかどうかを決定する。ビデオコーデック２００が、バッファが満杯であることを決定する場合には、方法４００はステップ４０８に戻り、その時に、エラー信号が生成され、本方法がステップ４１０で完了する。
【００８１】
しかしながら、ビデオコーデック２００が、余剰容量がバッファの中に存在することを決定する場合、ビデオコーデック２００は、ピクチャ群内の対応する位置で、生成されたＰフレームをバッファリングし、次いで、ステップ４１６で、バッファリングされたデータの量がバッファ容量の閾値部分、例えば、バッファ容量の９０％を超えるかどうかを決定する。一実施形態では、９０％（または他の）閾値は、バッファにオーバーフローを被るという差し迫った危険がある（すなわち、後続のフレームが以前にバッファリングされたフレームを上書きする）ことをビデオコーデック２００に示す。
【００８２】
バッファリングされたデータ量がバッファ容量の９０％を超えない場合には、ビデオコーデック２００は、ステップ４１８で、バッファリングされたデータ量が追加の閾値部分、例えば、バッファ容量の５０％を超えるかどうかを決定する。バッファリングされたデータ量がバッファ容量の５０％（またはその他）を超える場合、コーデックは、ステップ４２０で、以前にバッファリングされたＰフレームに基づいて仮想Ｉフレームを生成する。
【００８３】
ステップ４２０で仮想Ｉフレームを生成するために、ビデオコーデック２００は、最初に、バッファ内に格納された圧縮データのシーケンス中の最終Ｐフレームを識別し得る。一実施形態では、識別されたＰフレームは、ステップ４１２で以前に生成されたＰフレームに対応し、ビデオコーデック２００は、対応するＰフレームデータとともにバッファに記憶され得る対応する仮想Ｉフレームをステップ４２０で生成するために、識別されたＰフレームに関連付けられた参照データを活用し得る。
【００８４】
例えば、仮想Ｉフレームを生成するために、ビデオコーデック２００は、修正された一式の符号化パラメータとともに、対応するＩフレームアルゴリズム（例えば、Ｈ．２６４規格またはＨ．２６５規格のＩフレームアルゴリズム）を使用して、参照データを符号化し得る。そのような実施形態では、仮想Ｉフレームを符号化するために使用されるパラメータ、例えば、品質パラメータは、Ｐフレームまたは他のＩフレームを符号化するために使用されるものとは異なり得、修正されたパラメータは、ＰフレームおよびＩフレームに関連付けられる量子化レベルより低いまたは高い量子化レベルを有する、仮想Ｉフレームをもたらし得る。さらに、追加の実施形態では、仮想Ｉフレームの品質パラメータは、ステップ４２０で生成される仮想Ｉフレームに関連付けられる量子化エラーを低減および／または最小化するように調整され得る。
【００８５】
例えば、図５Ａは、開示された実施形態による、例示的なバッファリングされたフレームシーケンス５００を図示する。上記で説明されるように、ビデオコーデック２００は、最終Ｐフレーム５０４、例えば、ＰフレームＰ８を記憶した後に、バッファリングされたフレームシーケンス５００がバッファ容量の５０％を超えることを決定し得る。そのような実施形態では、次いで、ビデオコーデック２００は、対応するＩフレームアルゴリズム（例えば、Ｈ．２６４規格またはＨ．２６５規格のＩフレームアルゴリズム）を使用して、ＰフレームＰ８に関連付けられた参照フレームデータを再符号化することによって、ＰフレームＰ８に対応する仮想Ｉフレーム５０６を生成し得る。上記で説明されるように、ビデオコーデック２００は、生成された仮想ＩフレームＶ８に関連付けられる量子化エラーを低減させるように、Ｉフレームアルゴリズムの１つ以上のパラメータ（例えば、品質パラメータ）を自由に修正し得、生成された仮想ＩフレームＶ８は、後に対応するＰフレームＰ８および最初のＩフレームＩ１とともにバッファに記憶され得る。
【００８６】
しかしながら、開示された実施形態は、対応する参照データに基づいて仮想Ｉフレームを生成する技法に限定されない。追加の実施形態では、ビデオコーデック２００は、バッファリングされたシーケンスの最初のＩフレーム５０２（例えば、ＩフレームＩ１）、および一連のＰフレームＰ２からＰ８を復号することによって、ＰフレームＰ８の原画像データに対応する、復号された画像を生成し得る。次いで、ビデオコーデック２００は、上記で説明されるように、対応するＩフレームアルゴリズムを使用して、復号された画像データを再符号化することによって、仮想Ｉフレーム５０６を生成し得る。
【００８７】
図４を再び参照すると、生成された仮想Ｉフレームをバッファに記憶した後、ビデオコーデック２００は、ステップ４２２でバッファの余剰容量に追加のチェックを行い得る。ビデオコーデック２００が、ステップ４２２でバッファが満杯であることを決定し得る場合には、方法４００は、エラー信号を生成するステップ４０８に戻り、本方法はステップ４１０で完了する。
【００８８】
代替として、ビデオコーデック２００が、余剰容量がバッファの中に存在することを決定する場合には、ビデオコーデック２００は、ステップ４２４で現在のバッファリングされたピクチャ群（ＧＯＰ）の長さを計算し得、ステップ４２６で閾値長に対して計算された長さを比較し得る。一実施形態では、閾値長は、ビデオコーデック２００に関連付けられるＧＯＰ長を表し得、通信ネットワーク（例えば、図１の通信ネットワーク１３０）を経由した圧縮ビデオコンテンツの伝送のために許容可能なビットレートを生成するように調整され得る。
【００８９】
ビデオコーデック２００が、ステップ４２６で、現在のバッファリングされたＧＯＰの長さが閾値長を超えることを決定する場合、現在のバッファリングされたＧＯＰは、完全な符号化されたフレーム群（すなわち、ビデオコーデック２００によって定義されるような完全なＧＯＰ）を表す。次いで、ビデオコーデック２００は、ステップ４２８で（例えば、処理ユニット２６０を使用して）、現在のバッファリングされたＧＯＰを保持し、バッファから任意の以前に符号化されたＧＯＰを破棄する命令を生成し得る。例えば、図５Ｂで描写されるように、現在のバッファリングされたＧＯＰ５１０の長さがビデオコーデック２００のＧＯＰ長を超えるとき、バッファは、完全である現在のバッファリングされたＧＯＰ５１０、および以前の完全なＧＯＰ５０８の両方を含む。そのような実施形態では、完全ＧＯＰ５０８および任意の対応する仮想Ｉフレームは、ステップ４２８で破棄され、フレーム５１０は、バッファの中に残される。図４の例示的な方法は、ステップ４０４に戻り、コーデックは、受信したビデオコンテンツストリームに基づいて追加のＩフレームを生成する。
【００９０】
ステップ４２６を再び参照すると、現在のバッファリングされたＧＯＰの長さが閾値長を超えない場合には、バッファは、不完全な符号化されたフレーム群に関連付けられるＩフレームを含む。そのような実施形態では、方法４００は、ステップ４１２に戻り、コーデックは、以前にバッファリングされたＩフレームに関連付けられる追加のＰフレームを生成する。
【００９１】
ステップ４１８を再び参照すると、ビデオコーデック２００が、バッファリングされたデータ量がバッファ容量の５０％を超えないことを決定する場合には、ビデオコーデック２００は、バッファにオーバーフローの危険がないことを決定し得る。そのような実施形態では、方法４００は、ステップ４２４に直接移動し、ビデオコーデック２００は、上記で説明されるように、バッファリングされたフレームに関連付けられるＧＯＰ長を計算する。
【００９２】
ステップ４１６を再び参照すると、ビデオコーデック２００が、バッファリングされたデータ量がバッファ容量の９０％を超えることを決定する場合には、バッファにオーバーフローの差し迫った危険があり得る。そのような実施形態では、ビデオコーデック２００は、後にステップ４３２で、バッファリングされたフレームが仮想Ｉフレームを含むかどうかを決定し得る。バッファリングされたフレームが仮想Ｉフレームを含む場合には、ビデオコーデック２００は、ステップ４３４で、仮想Ｉフレームに基づいて新しいＧＯＰを生成する。次いで、コーデックは、例えば、図５Ｃを参照して以下で説明されるように、仮想Ｉフレームに先立ってバッファリングされるフレーム、ならびに仮想Ｉフレームに対応するＰフレームを破棄し得る。
【００９３】
例えば、図５Ｃで描写されるように、ビデオコーデック２００は、ステップ４１６で、バッファリングされたフレーム５６０がバッファ容量の９０％を超えることを決定し得、さらに、ステップ４３２で、バッファが仮想Ｉフレーム、すなわち、仮想ＩフレームＶ８を含むことを決定し得る。次いで、ビデオコーデック２００は、仮想ＩフレームＶ８に基づいて新しいＧＯＰ５６２を生成し得、後に、Ｖ８が導出されたＰフレームＰ８を含む、Ｖ８に先立ってバッファリングされたフレーム５６４を破棄し得る。
【００９４】
図４を再び参照すると、ステップ４３４で新しいＧＯＰを生成すると、方法４００は、ステップ４２４に戻り、ビデオコーデック２００は、上記で説明されるように、新しいＧＯＰに対応するＧＯＰ長を計算する。同様に、ビデオコーデック２００が、ステップ４３２で、バッファが仮想Ｉフレームを含まないと決定する場合には、方法４００は、ステップ４２４に戻り、ビデオコーデック２００は、現在バッファリングされているフレームに関連付けられるＧＯＰ長を計算する。
【００９５】
上記で説明される実施形態では、例示的な方法４００は、ビデオコーデック（例えば、ビデオコーデック２００）が圧縮ビデオコンテンツの単一の完全なＧＯＰをバッファリングすることを可能にするように、最適化され得る。開示された実施形態は、そのような最適化された技法に限定されず、（図４で描写されていない）追加の実施形態では、図４の例示的な方法は、開示された実施形態の精神または範囲から逸脱することなく、ビデオコーデック２００が、対応するバッファ、および加えて、または代替として、圧縮ビデオコンテンツの完全なＧＯＰの１つ以上の所定の部分または適応的に決定された部分内で、圧縮ビデオコンテンツの複数の完全なＧＯＰを記憶することを可能にするように、修正され得る。
【００９６】
さらに、追加の実施形態では、図４の例示的な技法は、１つ以上のエラー処理機能性と、通信ネットワーク（例えば、ネットワーク１３０）を経由して圧縮ビデオコンテンツを受信側（例えば、クライアントデバイス１１２またはデータリポジトリ１２４）に配信する１つ以上の伝送機能と組み合わせられ得る。例えば、開示された実施形態による伝送機能性は、ビデオコーデック２００が、伝送のために圧縮ビデオコンテンツのＧＯＰを識別すること、識別されたＧＯＰの部分の伝送を開始すること、および伝送プロセスの完了までバッファ内に識別されたＧＯＰを「ロック」することを可能にし得る。そのような実施形態では、ビデオコーデック２００は、伝送プロセスの完了の成功後まで、圧縮ビデオコンテンツの識別されたＧＯＰを削除するか、または上書きすることができない場合がある。
【００９７】
上記で説明されるように、バッファリングされたビデオコンテンツは、Ｉフレーム、１つ以上の対応するＰフレーム、および加えて、または代替として、以前の参照フレームおよび後続の参照フレームの両方を参照する１つ以上の双方向予測フレーム（すなわち、Ｂフレーム）を有する、ビデオ群を含み得る。例えば、Ｂフレームは、ＧＯＰの複数対のＰフレームの間に（例えば、シーケンスＩＢＢＰＢＢＰＢＢＰ・・・で）ビデオコーデック２００によって挿入され得る。
【００９８】
図４では描写されていないが、開示された実施形態による例示的な方法は、Ｐフレームに関連付けられる参照データだけでなく、Ｂフレームに関連付けられる参照データにも基づいて、仮想Ｉフレームを生成し得る。例えば、対応するＢフレームに基づいて仮想Ｉフレームを生成するための技法は、符号化されたビデオコンテンツの伝送順を修正し得、さらに、変換を考慮するように、Ｂフレームの後の時間的位置に配置されるフレームデータを補正し得る。そのような実施形態では、Ｂフレームに基づく仮想Ｉフレームの生成は、バッファリングされたビデオコンテンツ内で、独立して復号可能な始点、またはＩＤＲフレーム（瞬間デコーダリフレッシュフレーム）を作成し得る。
【００９９】
上記で説明されるプロセスを使用して、ビデオコーデック２００は、Ｈ．２６４またはＨ．２６５規格に従ったビデオデータの大きいＧＯＰ長の符号化、および有限のバッファメモリを有するネットワークカメラ（例えば、図１のネットワークカメラ１０２）内での符号化されたフレームデータのバッファリングの両方をサポートし得る。そのような実施形態では、図４の例示的なプロセスは、ビデオコーデック２００が、引き金となる出来事に応答して、事象の後に捕捉された符号化されたビデオコンテンツだけでなく、出来事の直前に捕捉されたビデオを受信側に提供するバッファリングされたビデオコンテンツも受信側に提供することを可能にし得る。
【０１００】
例えば、引き金となる出来事は、ネットワーク１３０を経由して受信側（例えば、クライアントデバイス１１２）によって伝送されるビデオコンテンツの要求を含み得るが、それに限定されない。そのような実施形態では、クライアントデバイス１１２のユーザは、ネットワークカメラ（例えば、ネットワークカメラ１０２）によって捕捉される、ストリーム配信されたビデオコンテンツを視聴していることがあり、ストリーム配信されたコンテンツ内で起こる出来事に応答して、出来事の直前または後に捕捉されるビデオコンテンツの配信を要求し得る。ユーザは、そのような場合において、ビデオコンテンツの配信を要求し、および加えて、または代替として、コンテンツの受信側を指定するために、ネットワークカメラ１０２に関連付けられるウェブページまたは他のグラフィカルユーザインターフェースにアクセスし得る。さらに、そのような実施形態では、ユーザはまた、ネットワークカメラまたはビデオデコーダボックス、例えば、ＳＤカードまたはフラッシュメモリデバイスとともに組み込まれる記憶装置から、出来事の直前または後に捕捉されたビデオコンテンツを取得し得る。
【０１０１】
開示された実施形態は、ネットワークデバイスのユーザによって開始される要求に限定されず、追加の実施形態では、ビデオコーデック２００は、ビデオコーデック２００が捕捉された原画像データの一部分内で引き金となる出来事を識別することを可能にする機能性（例えば、ＣＰＵ２６２によって実行される１つ以上のソフトウェアアプリケーション）を含み得る。例えば、そのような引き金となる出来事は、原画像データの一部分内に出現する特定の個人、原画像データ内で起こる特定の行為、静止期間後の原画像データ内の運動、またはビデオコーデック２００の機能性によって検出されることが可能である任意の追加のまたは代替的な事象を含み得るが、それらに限定されない。さらに、そのような実施形態では、クライアントデバイス１１２のユーザは、ビデオコーデック２００による検出のために、１つ以上の引き金となる事象を特定するために、（例えば、ネットワークカメラ１０２内に含まれるような）ビデオコーデック２００に関連付けられるウェブページまたは他のグラフィカルユーザインターフェースにアクセスし得る。
【０１０２】
さらに、追加の実施形態では、ビデオコーデック２００は、１つ以上の外部センサによって生成される信号に基づいて、引き金となる出来事を検出し得る。例えば、ビデオコーデック２００は、ビデオコーデック２００を包囲する（例えば、ビデオコーデック２００を組み込むネットワークカメラ１０２を包囲する）条件に基づいて、１つ以上の引き金となる事象を検出するように、熱センサ、運動センサ、放射線センサ、音響センサ、ドアまたはリレー接触センサ、および赤外線センサを含むが、それらに限定されない、１つ以上のセンサと通信し得る。そのような実施形態では、センサは、通信ネットワーク１３０を経由して、または代替として、１つ以上のインターフェース（例えば、インターフェース２４６、２６８、２５０、および２５２）を使用する有線または無線接続を通して、ビデオコーデック２００と通信し得る。引き金となる出来事の検出時に、ビデオコーデックは、例えば、図６を参照して以下で説明されるように、バッファリングされたデータの一部分を指定受信側に伝送する命令を生成し得る。
【０１０３】
図６は、開示された実施形態による、引き金となる出来事に応答して、バッファリングされたビデオコンテンツを伝送するための例示的な方法６００を図示する。方法６００は、ビデオコーデック（例えば、オンチップビデオコーデック２００）が、引き金となる出来事を識別し、次いで、受信側に伝送するためにバッファリングされたデータの一部分を生成することを可能にする、機能性を提供し得る。
【０１０４】
ステップ６０２では、ビデオコーデック２００は、引き金となる出来事を示す情報を受信し得る。一実施形態では、上記で説明されるように、引き金となる出来事の情報は、クライアントデバイス（例えば、クライアントデバイス１１２）のユーザからの圧縮ビデオコンテンツの要求、ビデオコーデック２００によって受信される原画像データ内の所定の事象の発生、所定の種類の原画像データの受信、またはビデオコーデック２００と通信しているセンサまたはネットワークデバイスによる所定の事象の検出を含み得るが、それらに限定されない。
【０１０５】
さらに、上記で議論されるように、引き金となる出来事の情報は、クライアントデバイス、感知デバイス、リレーまたはドア接触センサ、追加のネットワークデバイスによって伝送されるアラーム、またはビデオコーデック２００にとって適切であり、通信ネットワーク１３０を経由してビデオコーデック２００と通信している任意の追加のまたは代替的なデバイスから、ビデオコーデック２００のインターフェース（例えば、インターフェース２４６、２４８、２５０、および２５２のうちの１つ以上）によって受信され得る。そのような実施形態では、クライアントデバイス１１２のユーザは、ウェブページまたは適切なグラフィカルユーザインターフェースを使用してビデオコーデック２００にアクセスし得、ビデオコーデック２００による圧縮ビデオコンテンツの伝送を引き起こすであろう、１つ以上の引き金となる出来事を確立し得る。
【０１０６】
図６を再び参照すると、引き金となる出来事の情報の受信時に、ビデオコーデック２００は、ステップ６０４で、現在バッファ内に記憶されているフレームの最長有効シーケンスを識別するように、（例えば、記憶装置２８０内の）バッファリングされたフレームデータにアクセスし得る。例えば、ステップ６０４では、ビデオコーデック２００は、最長有効シーケンスとして、バッファ内の最初の符号化されたＩフレームに関連付けられるシーケンスを識別し得、またはバッファリングされたＩフレームがない場合には、ステップ６０４で識別される最長有効シーケンスが、最初の生成された仮想Ｉフレームに関連付けられるシーケンスに対応し得る。
【０１０７】
ステップ６０６では、ビデオコーデック２００は、ステップ６０４で識別されたシーケンスの最初の符号化されたフレームが、Ｉフレームであるか仮想Ｉフレームであるかを決定する。最初の符号化されたフレームがＩフレームに対応する場合には、ビデオコーデック２００は、対応するＰフレームデータを維持しながら、ステップ６０８で、識別されたシーケンス中の任意の仮想Ｉフレームデータを破棄し得る。
【０１０８】
ステップ６１０では、ビデオコーデック２００は、後続の伝送のために、少なくともＩフレームを含むバッファリングされたシーケンスに対するピクチャ群（ＧＯＰ）を生成し得、ステップ６１２では、ビデオコーデック２００は、バッファリングされたＧＯＰを指定受信側に伝送する命令を生成する。一実施形態では、クライアントデバイス（例えば、クライアントデバイス１１２および１１４のうちの１つ）のユーザは、ネットワーク１３０を経由してビデオコーデック２００との通信セッションを確立し得、指定受信側を特定するように、適切なグラフィカルユーザインターフェースのウェブページにアクセスし得る。例えば、指定受信側は、クライアントデバイス１１２および１１４のうちの１つ、ビデオ管理システム１２０、およびユーザにアクセス可能であり、ネットワーク１３０を経由してビデオコーデック２００と通信している任意の追加のまたは代替的なデバイスを含み得るが、それらに限定されない。方法６００は、後に、ステップ６１４で完了する。
【０１０９】
しかしながら、識別されたシーケンスの最初の符号化されたフレームが、ステップ６０６で仮想Ｉフレームに対応する場合には、Ｉフレームに対応するバッファリングされたデータの一部分が上書きされていることがある。そのような実施形態では、ビデオコーデック２００は、ステップ６１６で、最初の仮想Ｉフレーム（および加えて、識別されたシーケンス内の任意の後続の仮想Ｉフレームデータ）に関連付けられるＰフレームデータを破棄し、ステップ６１８で、図５Ｃを参照して上記で概説されるように、最初の仮想Ｉフレームに基づいてＧＯＰを生成する。
【０１１０】
方法６００は、ステップ６１２に戻り、ビデオコーデック２０２は、バッファリングされたＧＯＰを指定受信側に伝送する命令を生成する。本方法は、後に、ステップ６１４で完了する。
【０１１１】
上記で説明される実施形態では、ビデオコーデック２００は、通信ネットワーク１３０を経由したストリーミング配信に好適なピクチャ群（ＧＯＰ）長（例えば、１２８フレームのＧＯＰ長）で符号化される、ビデオコンテンツをバッファリングし得、後に、所定の引き金となる出来事に応答して、そのバッファリングされたビデオコンテンツの一部分を指定受信側に配信し得る。例えば、上記で説明されるように、バッファリングされたビデオコンテンツの完全な有効シーケンスは、最初のＩフレーム（または最初の仮想Ｉフレーム）、１つ以上の仮想Ｉフレーム、および１つ以上の対応するＰフレームを含み得る。図６の実施形態を使用して、最初のＩフレーム（または仮想Ｉフレーム）の後の仮想Ｉフレームデータは、対応するＰフレームを支持して、伝送に先立って破棄され得る。そのような実施形態では、バッファリングされたビデオコンテンツの結果として生じるシーケンスの伝送ビットレートは、通信ネットワーク１３０内で動作する受信側（例えば、クライアントデバイス１１２および１１４）に容認可能なレベルまで低減させられ得る。
【０１１２】
さらに、そのような実施形態では、ビデオコーデック２００はまた、連続的に、特定間隔で、または所定の引き金となる出来事に応答してのいずれかで、ライブ視聴および／または連続記録のために、ネットワーク１３０を経由して符号化されたビデオコンテンツを受信側デバイスに伝送し得る。例えば、ビデオコーデック２００は、記憶するために、符号化されたビデオコンテンツを通信ネットワーク１３０内のデータリポジトリ（例えば、データリポジトリ１２４）に伝送し、後に、ＩＰベースの監視ネットワークのユーザ（例えば、クライアントデバイス１１２および１１４のユーザ）によって取り出され得る。
【０１１３】
しかしながら、符号化されたビデオコンテンツのＧＯＰ長は、通信ネットワーク１３０を経由して符号化されたビデオコンテンツを伝送するために必要なビットレートを低減させ得るが、そのようなＧＯＰ長での符号化されたビデオコンテンツの後続の記憶は、後続のアクセスをユーザにとって不便にし得る。例えば、ネットワーク１３０を経由した伝送に好適な長いＧＯＰ長（例えば、１２８フレーム）は、記憶されたビデオコンテンツの部分にランダムにアクセスするユーザの能力、およびコンテンツの全体を通してブラウズまたはスキップするユーザの能力を制限し得る。そのような実施形態では、符号化されたビデオコンテンツのＧＯＰ長は、例えば、図７を参照して以下で説明されるように、記憶に先立って指定受信側または指定受信側のユーザの要件に従って調整され得る。
【０１１４】
図７は、開示された実施形態による、符号化されたビデオコンテンツのピクチャ群（ＧＯＰ）長を修正するための例示的な方法７００を図示する。方法７００は、符号化されたビデオコンテンツの指定受信側（例えば、ビデオ管理システム１２０のデータリポジトリ１２４）が、記憶に先立って符号化されたビデオコンテンツのＧＯＰ長を適応的に修正することを可能にする、機能性を提供し得る。
【０１１５】
図７では、データリポジトリ１２４は、ステップ７０２で、ＧＯＰカウンタを１にリセットし得、後に、ステップ７０４で、圧縮ビデオコンテンツのフレームを受信し得る。そのような実施形態では、圧縮ビデオコンテンツは、通信ネットワーク１３０を経由してネットワークカメラのビデオコーデック（例えば、オンチップコーデック２００）から受信され得、符号化されたビデオコンテンツは、ネットワーク１３０の１つ以上の状態と一致して調整されるＧＯＰ長に関連付けられ得る。さらに、符号化されたビデオコンテンツは、高解像度ビデオに対するＨ．２６４規格、および高効率ビデオコーディングに対するＨ．２６５規格を含むが、それらに限定されない、いくつかの適切な差分コーディングスキームのうちのいずれかに従って生成され得る。
【０１１６】
ステップ７０６では、受信したフレームは、対応する差分コーディングスキームに従って復号され得る。データリポジトリ１２４は、後に、ステップ７０８で、復号されたフレームがイントラフレーム（すなわち、Ｉフレーム）に対応するかどうかを決定し得る。
【０１１７】
復号されたフレームがＩフレームに対応する場合には、データリポジトリ１２４は、ステップ７１０で、受信したＩフレームに基づいて新しいＧＯＰを確立し得る。ＧＯＰカウンタは、ステップ７１２で１にリセットし、それによって、新しいＧＯＰの確立を示し得、データリポジトリ１２４は、ステップ７１４で復号されたフレームデータを記憶し得る。
【０１１８】
ステップ７１４で復号されたフレームデータを記憶すると、データリポジトリ１２４は、ステップ７１６で、追加の符号化されたビデオコンテンツが処理に利用可能であるかどうかを決定し得る。追加のコンテンツが処理に利用可能である場合、例示的な方法７００は、ステップ７０４に戻り得、データリポジトリ１２４は、処理のために符号化されたビデオコンテンツの追加のフレームを取得し得る。しかしながら、データリポジトリ１２４が、追加のビデオコンテンツが処理に利用可能ではないことを決定する場合には、例示的な方法７００はステップ７１８で完了する。
【０１１９】
ステップ７０８を再び参照すると、データリポジトリ１２４が、復号されたフレームがインターフレーム（すなわち、Ｐフレーム）に対応することを決定する場合には、指定受信側は、ステップ７２０で、いくつかの復号されたフレームが閾値を超えるかどうかを決定し得る。そのような実施形態では、ＧＯＰカウンタの現在の値は、現在のＧＯＰに関連付けられる、いくつかの復号されたフレームを示し得、閾値は、データリポジトリに記憶されたビデオコンテンツの最大ＧＯＰ長に調整され得る。
【０１２０】
例えば、受信したビデオコンテンツが、１２８フレームのＧＯＰを使用して符号化され得る一方で、記憶されたビデオコンテンツは、ユーザが、取り出すときに、ビデオコンテンツを通してより効率的にブラウズすることを可能にするように、より小さいＧＯＰ長（例えば、３２フレーム）に関連付けられ得る。そのような実施形態では、閾値は、データリポジトリ１２４、またはデータリポジトリ１２４のユーザに関連付けられる固定値であり得、または代替として、閾値は、ユーザ入力に応答して可変であり得る。
【０１２１】
記憶された復号されたフレームの数が閾値を超えない場合には、ＧＯＰカウンタが、ステップ７２２で１だけインクリメントされ得る。例示的な方法７００は、ステップ７１４に戻り得、データリポジトリ１２４は、上記で説明されるように、ＧＯＰ内の対応する位置に復号されたＰフレームを記憶し得る。
【０１２２】
しかしながら、データリポジトリ１２４が、ステップ７２０で、記憶した復号されたフレームの数が閾値を超えることを決定する場合、指定受信側は、ステップ７２４で、復号されたＰフレームに基づいて仮想Ｉフレームを生成し得、ステップ７２６で、仮想Ｉフレームに基づいて新しいＧＯＰを生成し得る。図５Ａ−５Ｃを参照して上記で概説される、そのような実施形態では、ステップ７２６での新しいＧＯＰの生成は、ＧＯＰ生成の目的で、仮想Ｉフレームを対応するＩフレームに効果的に変換する。
【０１２３】
ステップ７２６で新しいＧＯＰを生成すると、例示的な方法７００は、ステップ７１２に戻り、ＧＯＰカウンタは、１にリセットされる。データリポジトリ１２４は、後に、新しいＧＯＰを形成するように、ステップ７１４で仮想Ｉフレームデータを記憶し得、データリポジトリ１２４は、ステップ７１６で、上記で概説されるように、追加の符号化されたビデオコンテンツが処理に利用可能であるかどうかを決定し得る。例示的な方法７００は、ステップ７１８で完了する。
【０１２４】
上記で説明される実施形態では、ビデオ管理システム１２０のデータリポジトリ１２４は、記憶に先立って、符号化されたビデオコンテンツのＧＯＰ長を適応的に修正し得る。そのような実施形態では、データリポジトリ１２４は、ネットワークカメラ１０２および１０４ならびにビデオコーディングユニット１１６のうちの１つ以上と通信しているユーザによって特定され得る、符号化されたビデオコンテンツの指定受信側に対応する。開示された実施形態は、そのような例示的な受信側に限定されず、追加の実施形態では、符号化されたビデオコンテンツの指定受信側は、クライアントデバイス１１２および１１４、データリポジトリ１２４と協働し得るビデオ管理サーバ１２２、および符号化されたビデオコンテンツを受信するようにネットワーク１３０を経由して通信することが可能である任意の追加のまたは代替的なデバイスのうちの１つ以上を含み得るが、それらに限定されない。
【０１２５】
上記で説明されるプロセスを使用して、ビデオコーデック（例えば、オンチップコーデック２００）は、有限の記憶容量のデバイス内に、長いＧＯＰ長以内で符号化されるビデオコンテンツをバッファリングするために、仮想Ｉフレームを生成して活用し得る。さらに、符号化されたビデオコンテンツの指定受信側（例えば、データリポジトリ１２４）で動作する同様のビデオコーデックは、記憶に先立って、符号化されたビデオコンテンツのＧＯＰ長を適応的に調整するように、そのような仮想Ｉフレームを生成して活用し得る。そのような実施形態では、エンコーダ（例えば、ネットワークカメラ１０２）およびデコーダ（例えば、データリポジトリ１２４またはクライアントデバイス１１２および１１４）に配置されるビデオコーデックによる、仮想Ｉフレームの生成および使用は、通信ネットワーク（例えば、図１のネットワーク１３０）で符号化されたビデオコンテンツを伝送するために、容認可能なビットレートをもたらすＧＯＰ長を可能にする。
【０１２６】
しかしながら、開示された実施形態は、そのような静的伝送ビットレートに限定されない。開示された実施形態によるビデオコーデックは、クライアントデバイスへの後続の伝送のために外部データリポジトリに記憶され得る、複数の伝送ビットレート（例えば、３つのビットレート）で同一のビデオコンテンツを符号化し得る。そのような実施形態では、クライアントデバイスは、グラフィカルユーザインターフェースを通して、またはネットワーク条件の変化に応答してプログラムで、種々のビットレートでの符号化されたビデオコンテンツの伝送を要求するように構成され得る。
【０１２７】
しかしながら、符号化されたビデオコンテンツの伝送ビットレートに対応する修正を要求するクライアントデバイスの能力は、種々の伝送ビットストリームに関連付けられるＧＯＰ長によって制限され得る。例えば、より低いビットレートを伴う符号化されたビデオコンテンツは、より高い伝送ビットレートで符号化されるビデオコンテンツの対応する部分よりも長いＧＯＰ長、したがって、連続するＩフレーム間の長い間隔に関連付けられ得る。そのような実施形態では、ＧＯＰ長の相違は、種々の伝送ビットレートで符号化されるビデオコンテンツの間でシームレスに切り替えるクライアントデバイスの能力を制限し得る。
【０１２８】
追加の実施形態では、ビデオコーデックは、符号化されたビデオコンテンツの伝送中に、受信側デバイスがビットレートを修正することを可能にする「切り替え点」を確立するように、符号化されたコンテンツのストリームの種々の時間的位置で仮想Ｉフレームを生成し得る。例えば、上記で議論されるように、ビデオコーデックは、符号化されたビデオコンテンツの３つのチャネルを生成するように、３つのビットレート（例えば、「低」、「中」、および「高」）でビデオコンテンツを符号化する機能性を含み得る。そのような実施形態では、符号化されたビデオコンテンツのチャネルは、データリポジトリ（例えば、ビデオ管理システム１２０のデータリポジトリ１２４）内に記憶され得、仮想Ｉフレームは、例えば、図８を参照して以下で説明されるように、切り替え点を確立するように、記憶されたビデオコンテンツの種々の時間的位置で生成され得る。
【０１２９】
図８は、本開示の実施形態による、複数の切り替え点を有する圧縮ビデオデータの３つのチャネルの例示的なデータ構造８００を図示する。図８では、データ構造８００は、３つの対応するビットレートで符号化される圧縮ビデオコンテンツの３つのチャネルを図示する。例えば、チャネル８０２は、「高」ビットレートで符号化される、記憶されたビデオコンテンツに対応し、チャネル８０４は、「中」ビットレートで符号化される、記憶されたビデオコンテンツに対応し、チャネル８０６は、「低」ビットレートで符号化される、記憶されたビデオコンテンツに対応する。しかしながら、開示された実施形態は、そのような例示的なビットレートに限定されず、追加の実施形態では、データ構造８００は、当業者に明白であり、通信ネットワーク１３０のデバイスにとって適切である、任意の追加のまたは代替的なビットレートで符号化される、任意の追加のまたは代替的な数のビデオコンテンツチャネルを含み得る。
【０１３０】
図８では、データ構造８００は、チャネル８０２、８０４、および８０６の符号化されたビデオコンテンツに対するピクチャ群（ＧＯＰ）の一部分を図示する。さらに、上記で議論されるように、切り替え点が、記憶されたビデオコンテンツの全体を通した恣意的および固定時間的位置で、チャネル８０２、８０４、および８０６の各々の内側に確立される。例えば、図８の実施形態では、切り替え点は、各チャネルの符号化されたビデオコンテンツの毎分に確立される。しかしながら、開示された実施形態は、そのような規則的な時間的間隔に配置される切り替え点に限定されず、追加の実施形態では、切り替え点は、開示された実施形態の精神または範囲から逸脱することなく、記憶されたビデオコンテンツ内の任意の追加の時間的位置で確立され得る。
【０１３１】
一実施形態では、ビデオコーデック（例えば、図２のオンチップビデオコーデック２００）は、仮想Ｉフレームを生成して時間的位置で記憶することによって、記憶されたビデオコンテンツの対応する時間的位置で切り替え点を確立し得る。例えば、２分に相当する時間において、ビデオコーデック２００は、Ｐフレーム８１４の原画像データに対応する復号された画像を生成するように、最初のＩフレーム８１２ならびにＰフレーム８１４までの連続的なＰフレームを復号することによって、チャネル８０２のための切り替え点を生成し得る。次いで、ビデオコーデックは、対応するＩフレームアルゴリズム（例えば、Ｈ．２６４規格またはＨ．２６５規格のＩフレーム符号化スキーム）を使用して、復号された画像を再符号化することによって、Ｐフレーム８１４に対応する仮想Ｉフレーム８１６を生成する。次いで、仮想Ｉフレーム８１６は、データリポジトリの中のチャネル８０２内に記憶され得る。
【０１３２】
しかしながら、開示された実施形態は、仮想Ｉフレーム生成のためのそのような例示的な技法に限定されない。例えば、上記で説明される差分符号化スキームのうちの１つ以上（例えば、Ｈ．２６４規格またはＨ．２６５規格のＩフレームアルゴリズム）は、ビデオエンコーダ２００が、対応する参照フレームを生成するために、新たに符号化されたＰフレームを復号することを義務付け得る。そのような実施形態では、Ｐフレーム８１４を符号化すると、ビデオコーデック２００は、データリポジトリの中のチャネル８０２内に記憶され得る仮想Ｉフレーム８１６を生成するように、対応するＩフレームアルゴリズムを使用して、Ｐフレーム８１４の参照データを直接再符号化することによって、切り替え点を生成し得る。
【０１３３】
同様に、ビデオコーデックは、Ｐフレーム８１８に関連付けられる復号された画像に基づいて、仮想Ｉフレーム８２０を生成して記憶することによって、チャネル８０４内で対応する切り替え点を確立し得、Ｐフレーム８２２に関連付けられる復号された画像に基づいて、仮想Ｉフレーム８２４を生成して記憶することによって、チャネル８０６内で対応する切り替え点を確立し得る。さらに、ビデオコーデック２００は、時間的位置に対応する仮想Ｉフレームを生成して記憶することによって、チャネル８０２、８０４、および８０６の圧縮ビデオコンテンツ内の任意の追加のまたは代替的な時間的位置で（例えば、１分、３分等で）切り替え点を生成し得る。
【０１３４】
一実施形態では、符号化されたビデオコンテンツのチャネル（例えば、チャネル８０２、８０４、および８０６）は、ビットレートのうちの１つ以上で、ストリーミングコンテンツへのアクセスをクライアントデバイス（例えば、クライアントデバイス１１２および１１４）に提供する、ウェブサーバ（例えば、データリポジトリ１２４およびデオ管理サーバ１２２）に関連付けられるデータリポジトリ内に記憶され得る。例えば、クライアントデバイス１１２は、上記で概説される通信プロトコルのうちの１つ以上を使用して、通信ネットワーク（例えば、通信ネットワーク１３０）を経由してビデオ管理サーバ１２２との接続を確立し得る。
【０１３５】
そのような実施形態では、ビデオ管理サーバ１２２は、確立された接続を経由したストリーミングダウンロードに利用可能なビデオコンテンツの１つ以上のチャネルを識別する情報をクライアントデバイス１１２に提供し得る。例えば、提供された情報は、利用可能なビデオおよびオーディオコンテンツのプレイリスト、異なるビットレートチャネルの数、各チャネルのビットレート、コンテンツに関連付けられる持続時間（例えば、固定持続時間または無限持続時間）、暗号化情報、コーデックを識別する情報、および切り替え点の間の距離（例えば、フレームの数または時間的時期）を含み得るが、それらに限定されない。さらに、一実施形態では、コンテンツプレイリストへの更新は、規則的な間隔で、ビデオコンテンツの特定の要素の満了時に、または当業者に明白であり、クライアントデバイス１１２およびビデオ管理サーバ１２２にとって適切である、任意の追加のまたは代替的な間隔で、クライアントデバイス１１２に提供され得る。
【０１３６】
提供された情報の受信時に、クライアントデバイス１１２は、クライアントデバイス１１２のユーザに表示するために提供された情報をレンダリングするように、ウェブブラウザまたは他の適切なアプリケーションを実行し得る。そのような実施形態では、クライアントデバイス１１２のユーザは、クリックし、一連のキーストロークを入力し、または別様に、ストリーミングダウンロードのためのビデオコンテンツの表示された要素のうちの１つ以上の選択を示し得る。ユーザの選択に応答して、クライアントデバイス１１２は、ネットワーク１３０を経由してビデオ管理サーバ１２２に伝送され得る、選択されたビデオコンテンツの要求を生成し得る。
【０１３７】
一実施形態では、選択されたメディアコンテンツの要求は、ビデオコンテンツの最初の部分を識別する情報、およびビデオコンテンツの伝送のための初期帯域幅を含み得る。例えば、クライアントデバイス１１２は、ネットワーク１３０に関連付けられる現在の条件を測定し得、現在のネットワーク条件と整合する選択されたコンテンツの利用可能なビットレートのうちの１つを識別する情報を含み得る。
【０１３８】
代替として、ビデオコンテンツの初期要求は、伝送ビットレートのデフォルト値、クライアントデバイス１１２の機能性に対応する伝送ビットレート、ユーザによって特定される伝送ビットレート、または当業者に明白であり、選択されたビデオコンテンツおよびクライアントデバイスにとって適切である、任意の追加のまたは代替的な伝送ビットレートに関連付けられ得る。要求の受信時に、ビデオ管理サーバ１２２は、例えば、図９を参照して以下で説明されるように、クライアントデバイス１１２が要求されたビデオコンテンツの後続の部分のビットレートをそれによって適応的に調整し得る機構を特定する追加の情報とともに、要求されたビデオコンテンツの最初の部分をクライアントデバイス１１２に伝送し得る。
【０１３９】
図９は、開示された実施形態による、動的に決定された伝送ビットレートでビデオコンテンツを要求デバイスに伝送するための例示的な方法９００を図示する。方法９００は、対応する切り替え点に配置される１つ以上の仮想Ｉフレームを使用して、ウェブサーバ（例えば、ビデオ管理サーバ１２２）が要求されたビデオコンテンツの伝送ビットレートで修正することを可能にする、機能性を提供し得る。
【０１４０】
図９では、サーバ１２２は、ステップ９０２で、クライアントデバイス（例えば、クライアントデバイス１１２）からビデオコンテンツの一部分の要求を受信し得る。上記で議論されるように、要求は、上記で概説される通信プロトコルのうちの１つ以上（例えば、ＴＣＰ／ＩＰ）に従って、通信ネットワーク１３０を経由してクライアントデバイス１１２から伝送され得、要求は、クライアントデバイス１１２に利用可能なビデオコンテンツの１つ以上の要素を識別する、ウェブサーバによって提供される情報に応答し得る。さらに、そのような実施形態では、受信した要求は、例えば、クライアントデバイス１１２による要求の伝送中のネットワーク１３０の条件と整合する、要求されたコンテンツの伝送のためのビットレートを提案し得る。
【０１４１】
ステップ９０４では、サーバ１２２は、データリポジトリ（例えば、データリポジトリ１２４）から要求されたビデオコンテンツの最初の部分を取得し得、要求されたビデオコンテンツの最初の部分の再生についてクライアントデバイス１１２に指示する情報を生成し得る。例えば、サーバ１２２は、要求された伝送ビットレートの閾値に合致するか、または代替として閾値の範囲内にある伝送ビットレートで符号化されたビデオコンテンツの最初の部分を選択し得る。さらに、一実施形態では、生成された情報は、要求されたコンテンツのための１つ以上の切り替え点、および切り替え点で利用可能な１つ以上の追加のビットレートを識別する、要求されたコンテンツに対するメディア記述子に対応し得る。
【０１４２】
ステップ９０６では、サーバ１２２は、要求されたビデオコンテンツの最初の部分および対応する再生情報をクライアントデバイス１１２に伝送し得る。一実施形態では、伝送は、上記で概説される通信プロトコルのうちの１つ以上に従って、ネットワーク１３０を経由して起こり得る。加えて、そのような実施形態では、要求されたビデオコンテンツの最初の部分および再生情報は、当業者に明白であり、クライアントデバイス１１２およびサーバ１２２にとって適切である、いくつかの暗号化技法のうちのいずれかを使用して、クライアントデバイス１１２への伝送に先立って暗号化され得る。
【０１４３】
クライアントデバイス１１２は、対応する伝送帯域幅で、要求されたコンテンツの最初の部分を受信し得る。最初の部分と同時に、クライアントデバイス１１２は、要求されたコンテンツに関連付けられる再生情報を受信し得る。上記で説明されるように、再生情報は、要求されたコンテンツの伝送に利用可能である、１つ以上の追加の帯域幅を識別する情報、およびクライアントデバイス１１２が異なる伝送ビットレートに切り替わり得る１つ以上の切り替え点を識別する情報を含み得るが、それらに限定されない。そのような実施形態では、再生情報、および要求されたビデオコンテンツの最初の部分は、ネットワーク１３０の共通通信チャネル上で受信され得、または代替として、再生情報は、ネットワーク１３０の専用バックチャネルを使用して、クライアントデバイス１１２に伝送され得る。
【０１４４】
上記で説明されるように、クライアントデバイス１１２は、要求されたコンテンツの最初の部分の伝送中にネットワーク１２０の条件（例えば、現在の帯域幅）を監視し得る。例えば、ネットワーク条件は、要求されたコンテンツの最初の部分の伝送中に連続的に、または代替として、伝送中に個別的な間隔で修正され得る。さらに、一実施形態では、クライアントデバイス１１２は、規則的な間隔で、または代替として、特定のネットワーク条件の検出に応答して、現在のネットワーク条件を識別する情報をサーバ１２２に伝送するように構成され得る。例えば、ネットワークの状態を識別する情報は、ネットワーク１３０の利用可能な帯域幅が所定の閾値を下回るときにサーバ１２２に伝送され得る。
【０１４５】
サーバ１２２は、ステップ９０８で、伝送状態情報を受信し得、ステップ９１０で、要求されたビデオコンテンツに関連付けられる現在の伝送ビットレートが、ネットワーク１３０の現在の条件を考慮して大きすぎるかどうかを決定し得る。現在の伝送が現在のネットワーク条件にとって大きすぎる場合、サーバ１２２は、ステップ９１２で、圧縮ビデオコンテンツがより低い伝送ビットレートで利用可能であるかどうかを決定し得る。例えば、サーバ１２２は、データリポジトリ１２４が現在のビットレートより小さいビットレートで符号化されたビデオコンテンツを記憶しているかどうかを決定するために、データリポジトリ１２４にアクセスし得る。
【０１４６】
サーバ１２２が、ステップ９１２で、より低いビットレートで符号化される圧縮ビデオコンテンツの場所を特定することができない場合には、サーバ１２２は、ステップ９１４で、現在の伝送ビットレートで圧縮ビデオコンテンツをクライアントデバイス１１２に伝送し続ける。例えば、図８を参照して、要求されたビデオコンテンツが、チャネル８０６の「低」帯域幅でクライアントデバイスに伝送されている場合、サーバ１２２は、ネットワーク１３０の状態にかかわらず、さらに低いビットレートで符号化された、要求されたビデオコンテンツを取得することができない。方法９００は、ステップ９１６で完了する。
【０１４７】
代替として、サーバ１２２が、より低いビットレートで符号化された、要求されたビデオコンテンツの一部分を識別することができる場合、サーバ１２２は、次の切り替え点で要求されたコンテンツの伝送ビットレートを低減することを決定し得る。そのような実施形態では、サーバ１２２は、ステップ９１８で、その次の切り替え点まで、現在のビットレートでＰフレームをクライアントデバイス１１２に伝送し続ける。
【０１４８】
例えば、図８を参照して、現在の伝送ビットレートが、チャネル８０４の「中」ビットレートに対応し得、サーバ１２２が、１分マークと２分マークとの間の時間的位置で伝送状態情報を受信し得る。ステップ９１２では、サーバ１２２は、要求されたビデオコンテンツの一部分がチャネル８０６の「低」ビットレートで利用可能であることを識別し得、ステップ９１８では、サーバ１２２は、次の切り替え点、例えば、２分マークまで、チャネルの「中」帯域幅でＰフレームをクライアントデバイス１１２に伝送し続け得る。
【０１４９】
ステップ９２０では、サーバ１２２は、次の切り替え点で、識別されたより低いビットレートに対応する、仮想Ｉフレームを要求し得る。要求された仮想Ｉフレームの受信時に、サーバ１２２は、識別されたより低いビットレートで、新しいピクチャ群（ＧＯＰ）を開始し得、次いで、ステップ９２２で仮想Ｉフレームおよび対応するＰフレームをクライアント１０２に伝送し得る。例えば、図８を参照して、サーバ１２２は、「低」ビットレートチャネルに関連付けられる仮想Ｉフレーム８２４を要求し得、後に、「低」伝送帯域幅で仮想Ｉフレーム８２４および対応するＰフレームをクライアントデバイス１１２に伝送し得る。方法９００は、後に、ステップ９１６で完了する。
【０１５０】
ステップ９１０を再び参照すると、サーバ１２２が、要求されたビデオコンテンツの現在の伝送ビットレートが現在のネットワーク条件と整合することを決定する場合、サーバ１２２は、ステップ９２４で、現在のネットワーク条件が、より大きい伝送ビットレートに適応するであろうかどうかを決定する。現在のネットワーク条件が、より大きい伝送ビットレートにも、より小さい伝送ビットレートにも適応しないであろう場合には、現在の伝送ビットレートは、現在のネットワーク条件に最適であり、サーバ１２２は、ステップ９１４で、現在の伝送ビットレートで要求されたビデオコンテンツをクライアントデバイス１１２に伝送し続ける。方法９００は、後に、ステップ９１６で完了する。
【０１５１】
しかしながら、サーバ１２２が、ステップ９２４で、現在のネットワーク条件が高い伝送ビットレートに適応するであろうと決定する場合には、サーバ１２２は、ステップ９２６で、要求されたビデオコンテンツの一部分が、より高い伝送ビットレートで利用可能であることを決定する。例えば、サーバ１２２は、データリポジトリ１２４が、現在の伝送ビットレートより大きいビットレートで符号化されたビデオコンテンツを記憶しているかどうかを決定するために、データリポジトリ１２４にアクセスし得る。
【０１５２】
サーバ１２２が、ステップ９２６で、より高いビットレートで符号化された圧縮ビデオコンテンツの場所を特定できない場合、方法９００は、ステップ９１４に戻り、サーバ１２２は、現在の伝送ビットレートで圧縮ビデオコンテンツをクライアントデバイス１１２に伝送し続ける。例えば、図８を参照して、要求されたビデオコンテンツが、チャネル８０２の「高」帯域幅でクライアントデバイスに伝送されている場合、サーバ１２２は、ネットワーク１３０の状態にかかわらず、より高いビットレートで符号化された、要求されたビデオコンテンツを取得することができない。方法９００は、ステップ９１６で完了する。
【０１５３】
代替として、サーバ１２２が、より高いビットレートで符号化された、要求されたビデオコンテンツの一部分を識別することができる場合、サーバ１２２は、次の切り替え点で要求されたコンテンツの伝送ビットレートを増加することを決定し得る。そのような実施形態では、サーバ１２２は、ステップ９２８で、その次の切り替え点まで、現在のビットレートでＰフレームをクライアントデバイス１１２に伝送し続ける。
【０１５４】
例えば、図８を参照すると、現在の伝送ビットレートが、チャネル８０４の「中」ビットレートに対応し得、サーバ１２２が、１分マークと２分マークとの間の時間的位置で伝送状態情報を受信し得る。ステップ９１２では、サーバ１２２は、要求されたビデオコンテンツの一部分がチャネル８０２の「高」ビットレートで利用可能であることを識別し得、ステップ９２８では、サーバ１２２は、次の切り替え点、例えば、２分のマークまで、チャネルの「中」帯域幅でＰフレームをクライアントデバイス１１２に伝送し続け得る。
【０１５５】
ステップ９３０では、サーバ１２２は、次の切り替え点で、識別されたより高いビットレートに対応する、仮想Ｉフレームを要求し得る。要求された仮想Ｉフレームの受信時に、サーバ１２２は、識別されたより高いビットレートで、新しいピクチャ群（ＧＯＰ）を開始し得、次いで、ステップ９３２で仮想Ｉフレームおよび対応するＰフレームをクライアント１０２に伝送し得る。例えば、図８を参照して、サーバ１２２は、「高」ビットレートチャネルに関連付けられる仮想Ｉフレーム８１６を要求し得、後に、「高」伝送帯域幅で仮想Ｉフレーム８１６および対応するＰフレームをクライアントデバイス１１２に伝送し得る。方法９００は、後に、ステップ９１６で完了する。
【０１５６】
図１０Ａおよび１０Ｂは、開示された実施形態による、６分の期間にわたる符号化されたビデオコンテンツの伝送ビットレートに対する例示的な調整を図示する。例えば、図１０Ａでは、サーバ１２２は、「低」の伝送ビットレートで、符号化されたビデオコンテンツの最初の部分をクライアントデバイス１１２に伝送し得る。１分での第１の切り替え点１００２に先立って、サーバ１２２は、現在のネットワーク条件が、より高い伝送ビットレートに適応するであろうと決定し得、図１０Ｂで描写されるように、サーバ１２２は、第１の切り替え点１００２で「中」ビットレートに関連付けられる仮想Ｉフレームを要求する。サーバ１２２は、第１の切り替え点１００２まで、「低」帯域幅でＰフレームを伝送し続け、後に、第１の切り替え点１００２の後に、「中」ビットレートで、仮想Ｉフレームおよび対応するＰフレームをクライアントデバイス１１２に伝送する。
【０１５７】
同様に、２分での第２の切り替え点１００４に先立って、サーバ１２２は、現在のネットワーク条件が、依然としてより高い伝送ビットレートに適応するであろうと決定し得、図１０Ｂで描写されるように、サーバ１２２は、「高」ビットレートに関連付けられる仮想Ｉフレームを要求し得る。そのような実施形態では、サーバ１２２は、第２の切り替え点１００４まで、「中」帯域幅でＰフレームを伝送し続け、後に、第２の切り替え点１００４の後に、「高」ビットレートで、仮想Ｉフレームおよび対応するＰフレームをクライアントデバイス１１２に伝送する。
【０１５８】
しかしながら、サーバ１２２は、第３の切り替え点１００６に先立つネットワーク１３０の条件が「高」ビットレートをサポートできないことを決定し得る。そのような実施形態では、図１０Ｂで概説されるように、サーバ１２２は、第３の切り替え点１００６で、「中」ビットレートに関連付けられる仮想Ｉフレームを要求し得る。サーバ１２２は、第３の切り替え点１００６まで、「高」帯域幅でＰフレームを伝送し続け、後に、第３の切り替え点１００６の後に、「中」ビットレートで、仮想Ｉフレームおよび対応するＰフレームをクライアントデバイス１１２に伝送する。
【０１５９】
図１０Ａおよび１０Ｂの例示的実施形態では、サーバ１２２は、「中」伝送ビットレートが第４の切り替え点１００８でのネットワーク条件に最適であり、したがって、ビットレートの変更が課されないことを決定し得る。しかしながら、第５の切り替え点１０１０では、サーバ１２２は、ネットワーク１３０がより高い伝送ビットレートをサポートできることを示す、状態情報を受信し得る。そのような実施形態では、図１０Ｂで描写されるように、サーバ１２２は、第５の切り替え点１０１０で「高」ビットレートに関連付けられる仮想Ｉフレームを要求し得る。サーバ１２２は、第２の切り替え点１００６まで、「中」帯域幅でＰフレームの伝送を続け、後に、第５の切り替え点１０１０の後に、「高」ビットレートで、仮想Ｉフレームおよび対応するＰフレームをクライアントデバイス１１２に伝送し得る。
【０１６０】
図１１Ａおよび１１Ｂは、開示された実施形態による、６分の期間にわたる符号化されたビデオコンテンツの伝送ビットレートに対する追加の一式の例示的な調整を図示する。上記で説明されるように、サーバ１２２は、「低」の伝送ビットレートで、図１１Ａおよび１１Ｂの符号化されたビデオコンテンツの最初の部分をクライアントデバイス１１２に伝送し得る。しかしながら、１分での第１の切り替え点１１０２に先立って、サーバ１２２は、現在のネットワーク条件が、より高い伝送ビットレートに適応するであろうと決定し得、図１１Ｂで描写されるように、サーバ１２２は、第１の切り替え点１１０２で「中」ビットレートに関連付けられる仮想Ｉフレームを要求する。サーバ１２２は、第１の切り替え点１１０２まで、「低」帯域幅でＰフレームを伝送し続け、後に、第１の切り替え点１１０２の後に、「中」ビットレートで、仮想Ｉフレームおよび対応するＰフレームをクライアントデバイス１１２に伝送し得る。
【０１６１】
しかしながら、図１０Ａおよび１０Ｂの実施例とは対照的に、サーバ１２２は、「中」伝送ビットレートが、後続の切り替え点１１０４、１１０６、１１０８、および１１１０の各々でのネットワーク条件に最適であることを決定する。そのような実施形態では、現在のＧＯＰに関するＰフレーム、またはＩフレームおよび後続のＧＯＰに関連付けられる後続のＰフレームの伝送は、「中」ビットレートで継続し得る。
【０１６２】
上記で説明される実施形態では、クライアントデバイス１１２は、符号化されたビデオコンテンツの伝送中に、通信ネットワーク、例えば、通信ネットワーク１３０の１つ以上の条件を測定するように構成される。そのような実施形態では、現在のネットワーク条件を示す情報は、周期的に、または上記で説明されるように特定のネットワーク事象に応答して、サーバ１２２に配信され得る。
【０１６３】
しかしながら、開示された実施形態は、そのようなネットワーク測定技法に限定されない。例えば、クライアントデバイス１１２は、受信時に、および表示に先立って、符号化されたビデオコンテンツの少なくとも一部分をバッファに記憶し得る。そのような実施形態では、クライアントデバイス１１２の記憶バッファ内のデータの量は、ネットワーク１３０の現在の条件を示し得る。例えば、クライアントデバイス１１２におけるバッファリングされたデータの量が閾値を超える場合、対応する伝送ビットレートが大きすぎる場合があり、伝送ビットレートを低減させる必要性を示す情報が、上記で説明されるように、状態情報としてサーバ１２２に伝送され得る。
【０１６４】
さらに、開示された実施形態では、サーバ１２２は、クライアントデバイス１１２によってサーバ１２２に伝送され得る、通信ネットワーク（例えば、通信ネットワーク１３０）の１つ以上の条件に基づいて、ビデオコンテンツの伝送ビットレートを調整するかどうかを決定する。開示された実施形態は、そのような調整機構に限定されず、追加の実施形態では、サーバ１２２は、クライアントデバイス１１２のユーザからの要求に基づいて、伝送ビットレートを調整し得る。例えば、ユーザは、サーバ１２２に関連付けられるウェブページまたは他のグラフィカルユーザインターフェースにアクセスし得、クライアントデバイス１１２から、伝送ビットレートを増加または低減させる肯定的な要求を伝送し得る。そのような実施形態では、伝送ビットレートに対する修正は、ネットワーク条件ではなく、代わりに、クライアントデバイス１１２の１つ以上の能力に基づいて開始され得る。
【０１６５】
加えて、開示された実施形態は、記憶されたビデオコンテンツ内の固定時間的位置に配置される切り替え点、例えば、図１０Ａおよび１０Ｂの１分間隔で配置される、切り替え点１００２、１００４、１００６、１００８、および１０１０を含む。開示された実施形態は、そのような固定切り替え点に限定されず、追加の実施形態では、そのような切り替え点の時間的位置は、ネットワーク条件の変化、デバイス条件の変化、またはコンテンツの１つ以上の特性に応答して、ビデオコーデック（例えば、オンチップビデオコーデック２００）によって、または１つ以上のクライアントデバイス（例えば、クライアントデバイス１１２および１１４）によって、適応的に決定され得る。
【０１６６】
さらに、追加の実施形態では、クライアントデバイス（例えば、クライアントデバイス１１２）またはウェブサーバ（例えば、サーバ１２２）のうちの１つ以上は、追加の切り替え点が固定切り替え点に先立って生成されることを要求し得る。例えば、図１０Ａおよび１０Ｂを参照して、クライアントデバイス１１２は、第２の切り替え点１００４のすぐ後に、ネットワーク条件の有意な劣化を被り得る。そのような実施形態では、切り替え点の即時生成の要求が、サーバ１２２に、および加えて、または代替として、通信ネットワーク１３０のバックチャネルを経由して圧縮ビデオコンテンツに関連付けられるビデオコーデックに伝送され得る。要求の受信時に、ビデオコーデックは、クライアントデバイス１１２への伝送のために、サーバ１２２に関連付けられるデータリポジトリ（例えば、リポジトリ１２４）内に記憶され得る、または代替として、クライアントデバイス１１２に直接伝送され得る、対応するＩフレームを生成し得る。
【０１６７】
上記で説明されるように、クライアントデバイス１１２および１１４、ビデオ管理サーバ１２２、ならびにデータリポジトリ１２４は、少なくとも１つのプロセッサまたはコンピュータベースのシステムを伴って実装することができる。図１２は、本開示による実施形態が実装され得る、例示的なコンピュータシステム１２００を図示する。コンピュータシステム１２００は、プロセッサ１２０２等の１つ以上のプロセッサを含む。プロセッサ１２０２は、バスまたは通信ネットワーク、例えば、図１のネットワーク１３０等の通信インフラストラクチャ１２０６に接続される。
【０１６８】
コンピュータシステム１２００はまた、メインメモリ１２０８、例えば、ランダムアクセスメモリ（ＲＡＭ）も含み、二次メモリ１２１０を含み得る。二次メモリ１２１０は、例えば、ハードディスクドライブ１２１２、および／または磁気テープドライブ、光ディスクドライブ、ＣＤ／ＤＶＤドライブ等を表す、取り外し可能な記憶ドライブ１２１４を含み得る。取り外し可能な記憶ドライブ１２１４は、周知の様式で取り外し可能な記憶ユニット１２１８から読み取り、および／またはそれに書き込む。取り外し可能な記憶ユニット１２１８は、取り外し可能な記憶ドライブ１２１４によって読み取られ、かつそれに書き込まれる、磁気テープ、光ディスク、または他の記憶媒体を表す。理解されるように、取り外し可能な記憶ユニット１２１８は、プロセッサ１２０２によって実行される、コンピュータプログラム、命令のセット、コード、またはデータをその中に記憶している、コンピュータ読み取り可能な媒体を表すことができる。
【０１６９】
代替実施形態では、二次メモリ１２１０は、コンピュータプログラムまたは命令のセットがコンピュータシステム１２００にロードされることを可能にするための他の手段を含み得る。そのような手段は、例えば、取り外し可能な記憶ユニット１２２２、およびインターフェース１２２０を含み得る。そのような手段の実施例は、取り外し可能メモリチップ（例えば、ＥＰＲＯＭ、ＲＡＭ、ＲＯＭ、ＤＲＡＭ、ＥＥＰＲＯＭ、フラッシュメモリデバイス、または他の揮発性あるいは不揮発性メモリデバイス）、および関連ソケット、または命令およびデータが取り外し可能な記憶ユニット１２２２からコンピュータシステム１２００へ転送されることを可能にする、他の取り外し可能な記憶ユニット１２２２およびインターフェース１２２０を含み得る。
【０１７０】
コンピュータシステム１２００はまた、通信インターフェース１２２４等の１つ以上の通信インターフェースを含み得る。通信インターフェース１２２４は、コンピュータプログラム（または命令のセット）およびデータが、コンピュータシステム１２００と外部デバイスとの間で転送されることを可能にする。通信インターフェース１２２４の実施例は、モデム、ネットワークインターフェース（例えば、Ｅｔｈｅｒｎｅｔ（登録商標）カード）、通信ポート、ＰＣＭＣＩＡスロットおよびカード等を含み得る。コンピュータプログラム（または命令のセット）およびデータは、通信インターフェース１２２４によって受信されることが可能な電子、電磁、光学、または他の信号であり得る、信号２２６の形態で、通信インターフェース１２２４を介して転送され得る。これらの信号１２２６は、通信経路（例えば、チャネル１２２８）を介して通信インターフェース１２２４に提供される。チャネル１２２８は、信号１２２６を搬送し、ワイヤ、ケーブル、光ファイバ、ＲＦリンク、および／または他の通信チャネルを使用して実装され得る。本発明の一実施形態では、信号１２２６は、プロセッサ１２０２に送信されるデータパケットを備えている。処理されたパケットを表す情報もまた、通信経路１２２８を通してプロセッサ２０２から、信号１２２６の形態で送信することができる。
【０１７１】
さらに、図１２では描写されていないが、クライアントデバイス１１２および１１４、ビデオ管理サーバ１２２、ならびにデータリポジトリ１２４のうちの１つ以上はまた、ネットワークカメラ１０２および１０４、ならびにビデオコーディングユニット１１６によって提供されるビデオコンテンツを復号することが可能なハードウェアまたはソフトウェアベースのビデオコーデックを含み得る。例えば、クライアントデバイス１１２および１１４、ビデオ管理サーバ１２２、ならびにデータリポジトリ１２４は、高解像度ビデオに対するＨ．２６４規格に従って符号化されるビデオコンテンツを復号して操作するように、上記で説明されるようなオンチップビデオコーデック２００と整合するハードウェアベースのコーデックユニットを含み得る。
【０１７２】
「記憶装置」および「記憶媒体」という用語は、メインメモリ１２０８、二次メモリ１２１０、ハードディスクドライブ１２１２にインストールされたハードディスク、ならびに取り外し可能な記憶ユニット１２１８および１２２２を含むが、それらに限定されない、特定のデバイスを指し得る。さらに、「コンピュータ読み取り可能な媒体」という用語は、それぞれ、コンピュータプログラムおよび／または命令のセットをコンピュータシステム１２００のプロセッサ１２０２に提供する、ハードディスクドライブ１２１２にインストールされたハードディスク、メインメモリ１２０８および二次メモリ１２１０の任意の組み合わせ、ならびに取り外し可能な記憶ユニット１２１８および１２２２を含むが、それらに限定されない、デバイスを指し得る。「コンピュータ読み取り可能な媒体」という用語はまた、記憶ユニット、例えば、オンチップビデオコーデック２００のプロセッサ２４２および対応するキャッシュ２４４と通信しており、コンピュータプログラムおよび／または命令のセットをコーデック２００のプロセッサに提供する、記憶ユニット２８０を指し得る。そのようなコンピュータプログラムおよび命令のセットは、１つ以上のコンピュータ読み取り可能な媒体内に記憶することができる。加えて、または代替として、コンピュータプログラムおよび命令のセットはまた、通信インターフェース１２２４を介して受信され、１つ以上のコンピュータ読み取り可能な媒体上に記憶され得る。
【０１７３】
そのようなコンピュータプログラムおよび命令は、プロセッサ１２０２によって実行されると、プロセッサ１２０２が本明細書で説明されるコンピュータ実装方法を行うことを可能にする。同様に、プロセッサ２４２によって実行されると、そのようなコンピュータプログラムおよび命令はまた、プロセッサ２４２が本明細書で説明されるコンピュータ実装方法を行うことも可能にする。プログラムおよび命令のセットの実施例は、例えば、コンパイラによって生成されるコード等の機械コード、およびインタープリタを使用してプロセッサ１２０２および２４２によって実行することができる、高レベルコードを含有するファイルを含み得る。
【０１７４】
さらに、本明細書で説明されるコンピュータ実装方法は、システム１２００のプロセッサ１２０２等のコンピュータシステムの単一のプロセッサ上で実装することができる。しかしながら、追加の実施形態では、開示されたコンピュータ実装方法は、単一のコンピュータシステム内の１つ以上のプロセッサを使用して、および加えて、または代替として、ネットワークを介してリンクされる別個のコンピュータシステム内の１つ以上のプロセッサ上で実装され得る。
【０１７５】
加えて、本明細書で説明されるコンピュータ実装方法は、（例えば、高解像度ビデオに対するＨ．２６４規格、および高効率ビデオコーディングに対するＨ．２６５規格に従って）原画像データを符号化し、圧縮ビデオコンテンツを生成する、ハードウェアベースのビデオコーデック（例えば、図２のオンチップビデオコーデック２００）によって行われ得る。開示された実施形態は、そのようなオンチップビデオコーデックに限定されず、追加の実施形態では、ソフトウェアベースのビデオコーデックが、原画像データを符号化し、圧縮ビデオコンテンツを生成するように、プロセッサ（例えば、図１２のプロセッサ１２０２）によって実行され得る。
【０１７６】
種々の実施形態が、添付図面を参照して本明細書で説明されている。しかしながら、以下に続く請求項に記載されるような本発明のより広い範囲から逸脱することなく、種々の修正および変更がそれに行われ得、追加の実施形態が実装され得ることが、明白となるであろう。
【０１７７】
さらに、本開示の１つ以上の実施形態の仕様および実践を考慮することから、他の実施形態が当業者に明白となるであろう。したがって、本開示および本明細書の実施例は、例示的にすぎないと見なされ、本発明の真の範囲および精神は、例示的な請求項の以下の一覧によって示されることが意図される。
【図１】
2015521825.tif 000003
【図２】
2015521825.tif 000004
【図３】
2015521825.tif 000005
【図４】
2015521825.tif 000006
【図５Ａ】
2015521825.tif 000007
【図５Ｂ】
2015521825.tif 000008
【図５Ｃ】
2015521825.tif 000009
【図６】
2015521825.tif 000010
【図７】
2015521825.tif 000011
【図８】
2015521825.tif 000012
【図９】
2015521825.tif 000013
【図１０Ａ】
2015521825.tif 000014
【図１０Ｂ】
2015521825.tif 000015
【図１１Ａ】
2015521825.tif 000016
【図１１Ｂ】
2015521825.tif 000017
【図１２】
2015521825.tif 000018
【国際調査報告】
2015521825.tif 000019
2015521825.tif 000020
2015521825.tif 000021
2015521825.tif 000022
2015521825.tif 000023