(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-07-13
(54)【発明の名称】ユーザ・データグラム・プロトコル(UDP)を利用するロバストなビデオ送信のためのシステム、デバイス、及び方法
(51)【国際特許分類】
H04L 65/70 20220101AFI20220706BHJP
H04L 65/75 20220101ALI20220706BHJP
【FI】
H04L65/70
H04L65/75
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021502460
(86)(22)【出願日】2020-05-03
(85)【翻訳文提出日】2021-01-12
(86)【国際出願番号】 IL2020050490
(87)【国際公開番号】W WO2020230118
(87)【国際公開日】2020-11-19
(32)【優先日】2019-05-12
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-12-18
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】521016427
【氏名又は名称】アミモン リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】レズニック、ツビ
(57)【要約】
ユーザ・データグラム・プロトコル(UDP)オーバー・インターネット・プロトコル(IP)通信リンクを介してビデオを送信するためのシステム、デバイス、及び方法。方法は、ビデオ・エンコーダによってビデオの各フレームごとに圧縮データのN個のパケットのセットを生成することであって、Nが自然数である、生成することと、そのビデオの特定のフレームについてN個のパケットの各セットを生成すると、そのビデオの他のビデオ・フレームの符号化又はパケット化を待つことなしに、そのUDPオーバーIP通信リンクを介して、単一の符号化されたビデオ・フレームに対応するN個のパケットのセットの送信を直ちに実施することとを含む。そのビデオ・フレームの各パケットは、少なくとも、粗いビデオ・データ・パケット部分と、細かいビデオ・データ・パケット部分と、また随意に、サブフレーム・マッピング情報を含むヘッダ・パケット部分とを含む。
【特許請求の範囲】
【請求項1】
ユーザ・データグラム・プロトコル(UDP)オーバー・インターネット・プロトコル(IP)通信リンクを介してビデオを送信する方法であって、前記方法は、
ビデオ・エンコーダによって前記ビデオの各フレームごとに圧縮データのN個のパケットのセットを生成することであって、Nが自然数である、生成することと、
前記ビデオの特定のフレームについてN個のパケットの各セットを生成すると、前記ビデオの他のビデオ・フレームの符号化又はパケット化を待つことなしに、前記UDPオーバーIP通信リンクを介して、単一の符号化されたビデオ・フレームに対応するN個のパケットの前記セットの前記送信を直ちに実施することと
を含み、
前記ビデオ・フレームの各パケットが、少なくとも、
(i)粗いビデオ・データ・パケット部分と、
(ii)細かいビデオ・データ・パケット部分と
を含む、方法。
【請求項2】
各パケットの前記粗いビデオ・データ・パケット部分について、バイト単位の固定サイズ(S2)を維持することであって、前記サイズ(S2)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの全体にわたって固定される、維持することと、
各パケットの前記細かいビデオ・データ・パケット部分について、バイト単位の固定サイズ(S3)を維持することであって、前記サイズ(S3)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの前記全体にわたって固定される、維持することと
を含む、請求項1に記載の方法。
【請求項3】
前記ビデオの異なるフレームについて、利用されるS2の値とS3の値とを動的に変えること
を含み、
S2の前記値が、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS2の異なる値に変わり、
S3の前記値が、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS3の異なる値に変わる、
請求項2に記載の方法。
【請求項4】
特定のフレームについての細かいビデオ・データという犠牲を払って、前記特定のフレームについての増加された量の粗いビデオ・データを収容するために、前記粗いビデオ・データ・パケット部分の前記サイズを動的に増加させ、それぞれ前記細かいビデオ・データ・パケット部分の前記サイズを動的に低減すること
を含む、請求項1から3までのいずれか一項に記載の方法。
【請求項5】
ビデオ・フレームごとに送信されるパケットのセットにおいて、
粗いビデオ・データを搬送するための粗いビデオ・データ・パケット部分の第1の数(C1)を指定することと、
前記粗いビデオ・データを搬送する代わりに、前記粗いビデオ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するための粗いビデオ・データ・パケット部分の第2の数(C2)を指定することと
を含む、請求項1から4までのいずれか一項に記載の方法。
【請求項6】
ビデオ・フレームごとに送信されるパケットのセットにおいて、
細かいビデオ・データを搬送するための細かいビデオ・データ・パケット部分の第1の数(F1)を指定することと、
前記細かいビデオ・データを搬送する代わりに、前記細かいビデオ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するための細かいビデオ・データ・パケット部分の第2の数(F2)を指定することと
を含む、請求項1から5までのいずれか一項に記載の方法。
【請求項7】
C1の値と、C2の値と、F1の値と、F2の値とを選択すること
を含み、
Nが、特定のビデオ・フレームについて送信されるパケットの総数であり、
C1+C2=Nであり、
F1+F2=Nであり、
F1>C1である、
請求項1から6までのいずれか一項に記載の方法。
【請求項8】
Nの値と、C1の値と、C2の値と、F1の値と、F2の値とを選択すること
を含み、
Nが9であり、
C1が5であり、C2が4であり、
F1が8であり、F2が1である、
請求項1から7までのいずれか一項に記載の方法。
【請求項9】
前記ビデオ・フレームの各パケットが、
(i)ヘッダ・パケット部分と、
(ii)粗いビデオ・データ・パケット部分と、
(iii)細かいビデオ・データ・パケット部分と
を含み、
前記方法は、
単一の特定のビデオ・フレームに対応するパケットのセット中の各パケットの前記ヘッダ・パケット部分について、バイト単位の固定サイズ(S1)を維持することであって、前記サイズ(S1)が、パケットの前記セットの全体にわたって固定される、維持することと、
各パケットの前記粗いビデオ・データ・パケット部分について、バイト単位の固定サイズ(S2)を維持することであって、前記サイズ(S2)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの前記全体にわたって固定される、維持することと、
各パケットの前記細かいビデオ・データ・パケット部分について、バイト単位の固定サイズ(S3)を維持することであって、前記サイズ(S3)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの前記全体にわたって固定される、維持することと
を含む、請求項1に記載の方法。
【請求項10】
前記ビデオ・フレームの各パケットが、
(i)ヘッダ・パケット部分と、
(ii)粗いビデオ・データ・パケット部分と、
(iii)細かいビデオ・データ・パケット部分と
を含み、
前記方法は、
前記ビデオの異なるフレームについて、利用されるS1の値と、S2の値と、S3の値とを動的に変えることを含み、
S1の前記値が、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS1の異なる値に変わり、
S2の前記値が、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS2の異なる値に変わり、
S3の前記値が、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS3の異なる値に変わる、
請求項9に記載の方法。
【請求項11】
ビデオ・フレームのN個のパケットの前記セットにおいて、
ビデオ・ヘッダ・データを搬送するためのビデオ・ヘッダ・データ・パケット部分の第1の数(H1)を指定することと、
前記ビデオ・ヘッダ・データを搬送する代わりに、前記ビデオ・ヘッダ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するためのビデオ・ヘッダ・データ・パケット部分の第2の数(H2)を指定することと
を含む、請求項1から10までのいずれか一項に記載の方法。
【請求項12】
Nの値と、H1の値と、H2の値と、C1の値と、C2の値と、F1の値と、F2の値とを選択すること
を含み、
C1<F1であり、
H1がC1よりも小さいか又はそれに等しい、
請求項1から11までのいずれか一項に記載の方法。
【請求項13】
Nの値と、H1の値と、H2の値と、C1の値と、C2の値と、F1の値と、F2の値とを選択すること
を含み、
Nが9であり、
H1が3であり、H2が4であり、
C1が5であり、C2が4であり、
F1が8であり、F2が1である、
請求項1から12までのいずれか一項に記載の方法。
【請求項14】
特定のフレームの細かいビデオ・データを搬送するために指定された細かいビデオ・データ・パケット部分の数が、前記特定のフレームについてのすべての前記細かいビデオ・データを搬送するには十分でない場合、細かいビデオ・データの前方誤り訂正(FEC)コードの冗長バイトを記憶するために前に指定された少なくとも1つの細かいビデオ・データ・パケット部分に、前記特定のフレームの細かいビデオ・データを記憶すること
を含む、請求項1から13までのいずれか一項に記載の方法。
【請求項15】
特定のフレームの細かいビデオ・データを搬送するために指定された細かいビデオ・データ・パケット部分の前記数が、前記特定のフレームについてのすべての前記細かいビデオ・データを搬送するには十分でない場合、F1の前記値を動的に増加させ、それぞれF2の前記値を動的に減少させること
を含む、請求項1から14までのいずれか一項に記載の方法。
【請求項16】
前記ビデオ送信を受信するように動作する受信デバイスにおいて、特定のビデオ・フレームについて受信された受信されたビデオ・ヘッダ部分中の情報に基づいて、前記特定のビデオ・フレームのパケットの前記セットについてF1の新しい値とF2の新しい値とを決定すること
を含む、請求項1から15までのいずれか一項に記載の方法。
【請求項17】
特定のフレームの粗いビデオ・データを搬送するために指定された粗いビデオ・データ・パケット部分の数が、前記特定のフレームについてのすべての前記粗いビデオ・データを搬送するには十分でない場合、前記特定のフレームの細かいビデオ・データを記憶するために前に指定された少なくとも1つのパケット部分に、前記特定のフレームの粗いビデオ・データを記憶すること
を含む、請求項1から16までのいずれか一項に記載の方法。
【請求項18】
前記ビデオ送信を受信するように動作する受信デバイスにおいて、特定のビデオ・フレームについて受信された受信されたビデオ・ヘッダ部分中の情報に基づいて、前記特定のビデオ・フレームのパケットの前記セットについてC1の新しい値とC2の新しい値とを決定すること
を含む、請求項1から17までのいずれか一項に記載の方法。
【請求項19】
前記ビデオの各フレームについて生成されたパケットの各セットが、
(i)粗いビデオ・データを搬送するために指定されたパケット部分
対
(ii)粗いビデオ・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分
の固定比(R1)を利用し、
また、
(A)細かいビデオ・データを搬送するために指定されたパケット部分
対
(B)細かいビデオ・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分
の固定比(R2)を利用し、
また、
(a)ビデオ・ヘッダ・データを搬送するために指定されたパケット部分
対
(b)ビデオ・ヘッド・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分
の固定比(R3)を利用する、
請求項1から18までのいずれか一項に記載の方法。
【請求項20】
前記ビデオの各フレームについて生成されたN個のパケットの各セットが、少なくとも、(i)ビデオ・ヘッダ情報を記憶する第1の数(H1)のビデオ・ヘッダ・パケット部分と、(ii)前記ビデオ・ヘッダ・ビデオ情報の前方誤り訂正(FEC)冗長を記憶する第2の数(H2)のビデオ・ヘッダ・パケット部分とを含み、
また、あらかじめ定義されたサイズ制約が許容する場合、(I)粗いビデオ・データを記憶する第1の数(C1)の粗いビデオ・データ・パケット部分と、(II)前記粗いビデオ・データについての前方誤り訂正(FEC)冗長を記憶する第2の数(C2)のパケット部分とをさらに含み、
また、あらかじめ定義されたサイズ制約が許容する場合、(III)細かいビデオ・データを記憶する第1の数(F1)の細かいビデオ・データ・パケット部分と、(IV)前記細かいビデオ・データについての前方誤り訂正(FEC)冗長を記憶する第2の数(F2)のパケット部分とをさらに含む、
請求項1から19までのいずれか一項に記載の方法。
【請求項21】
ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、
特定のビデオ・フレームについて、N個のパケットの前記セットから、特定のビデオ・フレームの前記細かいビデオ・データについての前方誤り訂正(FEC)コードについての前記冗長データの少なくとも一部を除外することを動的に決定すること
を含む、請求項1から20までのいずれか一項に記載の方法。
【請求項22】
ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、
特定のビデオ・フレームについて、N個のパケットの前記セットから、(i)特定のビデオ・フレームの前記細かいビデオ・データについての前方誤り訂正(FEC)コードについての前記冗長データの少なくとも一部と、(ii)前記特定のビデオ・フレームについての前記細かいビデオ・データの少なくとも一部とを除外することを動的に決定すること
を含む、請求項1から21までのいずれか一項に記載の方法。
【請求項23】
ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、
特定のビデオ・フレームについて、N個のパケットの前記セットから、(i)特定のビデオ・フレームの前記細かいビデオ・データについての前方誤り訂正(FEC)コードについての前記冗長データの全体と、(ii)前記特定のビデオ・フレームについての前記細かいビデオ・データの全体とを除外することを動的に決定すること
を含む、請求項1から22までのいずれか一項に記載の方法。
【請求項24】
前記ビデオ送信を受信するように動作する受信デバイスにおいて、細かいビデオ・データが送信デバイスによる送信から除外された、前記特定のビデオ・フレームの1つ又は複数のサブフレームを復号すること
を含む、請求項1から23までのいずれか一項に記載の方法。
【請求項25】
前記ビデオ送信を受信するように動作する受信デバイスにおいて、
特定のビデオ・フレームについて、完全な細かいビデオ・データでなく、部分的な細かいビデオ・データのみを受信することと、
前記受信デバイスのFECデコーダが、前記特定のビデオ・フレームについての前記完全な細かいビデオ・データを再構築するのに十分な情報を有する場合、前記特定のビデオ・フレームについての前記完全な細かいビデオ・データを再構築することと、
前記受信デバイスの前記FECデコーダが、前記特定のビデオ・フレームについての前記完全な細かいビデオ・データを再構築するのに十分な情報を有しない場合、前記特定のビデオ・フレームの少なくとも1つ又は複数の細かいサブフレームを再構築することと
を含む、請求項1から24までのいずれか一項に記載の方法。
【請求項26】
前記ビデオの各フレームの送信を制約する、フレームごとにNmax個のパケットの上界値を設定すること
を含み、
Nmaxが、前記ビデオのすべてのフレームについて一様である自然数であり、
前記ビデオの各フレームの圧縮ビデオ・データが、フレームごとに最高Nmax個のパケットを使用することによって送信される、
請求項1から25までのいずれか一項に記載の方法。
【請求項27】
ビデオ・エンコーダにおいて、前記ビデオの特定のフレームについての圧縮ビデオのK個のパケットを生成することであって、Kが、前記ビデオのすべてのフレームにわたって必ずしも固定されるとは限らない自然数である、生成することと、
KがNmaxよりも小さいか又はそれに等しい場合、前記フレームについてのすべてのK個のパケットを送信することと、
KがNmaxよりも大きい場合、前記フレームについての前記K個のパケットのうちの最初のNmax個のパケットのみを送信し、前記フレームについての、前記最初のNmax個のパケットを越えるパケットの送信を回避することと
を含む、請求項26に記載の方法。
【請求項28】
ビデオ・フレームごとのN個のパケットの前記セットの各パケットが、送信されたサブフレームの前記粗いビデオ・データと前記細かいビデオ・データとのマップとして利用されるビデオ・ヘッダ部分を含み、
前記ビデオ・ヘッダは、前記ビデオ・フレームについての前記前方誤り訂正(FEC)コードの一部又はすべてが、前記FECコードのあまりにも少ないバイトが受信デバイスに到着したので適切に復号されなかった場合でも、前記ビデオ・フレームの1つ又は複数のサブフレームを復号するために、前記受信デバイスが、到着した前記細かいビデオ・データ及び/又は到着した前記粗いビデオ・データを少なくとも部分的に利用することを可能にする、
請求項1から27までのいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本特許出願は、その全体が参照により本明細書に組み込まれる、2019年12月18日に出願された米国特許出願第62/949,516号、及び、その全体が参照により本明細書に組み込まれる、2019年5月12日に出願された米国特許出願第62/846,669号の利益及び優先権を主張する。
【0002】
本発明は、通信システムの分野に関する。
【背景技術】
【0003】
電子デバイス及びコンピューティング・デバイスは、世界中の何百万人ものユーザによって毎日利用されている。たとえば、ラップトップ・コンピュータ、デスクトップ・コンピュータ、スマートフォン、タブレット、及び他の電子デバイスが、インターネットをブラウズすること、デジタル・コンテンツを消費すること、オーディオ及びビデオをストリーミングすること、電子メール(eメール)メッセージを送り、受信すること、インスタント・メッセージング(IM:Instant Messaging)、ビデオ会議、ゲームをプレイすることなどのために利用されている。
【0004】
多くの電子デバイスは、たとえば、Wi-Fiを使用して、セルラー通信を使用して、インターネット上でなど、1つ又は複数のワイヤレス通信リンク又はネットワークを介して、互いに、或いはリモート・サーバ又はリモート・エンティティと通信する。いくつかの電子デバイスは、ビデオ・データを搬送するワイヤレス通信信号を受信するために利用されて、そのような電子デバイスは、そのディスプレイ・ユニット上でストリーミング・ビデオ又はビデオ・クリップを再生することが可能になる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2016/0073122号明細書
【発明の概要】
【課題を解決するための手段】
【0006】
本発明のいくつかの実施例は、ユーザ・データグラム・プロトコル(UDP:User Datagram Protocol)を利用するロバストなビデオ送信のためのシステム、デバイス、及び方法を提供し得る。たとえば、方法は、ビデオ・エンコーダによってビデオの各フレームごとに圧縮データのN個のパケットのセットを生成することであって、Nが自然数である、生成することと、そのビデオの特定のフレームについてN個のパケットの各セットを生成すると、そのビデオの他のビデオ・フレームの符号化又はパケット化を待つことなしに、そのUDPオーバーIP通信リンクを介して、単一の符号化されたビデオ・フレームに対応するN個のパケットのセットの送信を直ちに実施することとを含む。そのビデオ・フレームの各パケットは、少なくとも、粗い(Coarse)ビデオ・データ・パケット部分と、細かい(Fine)ビデオ・データ・パケット部分と、また随意に、サブフレーム・マッピング情報を含むヘッダ・パケット部分とを含む。
【0007】
本発明は、他の及び/又は追加の利点及び/又は利益を提供し得る。
【図面の簡単な説明】
【0008】
【
図1】本発明のいくつかの例示的な実施例による、UDPオーバーIP接続を介する送信の対象であるH.265ビデオのパケットのセットの概略図である。
【
図2】本発明のいくつかの例示的な実施例による、フレーム・グループ化を例示する概略図である。
【
図3】本発明のいくつかの例示的な実施例による、システムの概略図である。
【
図4】本発明のいくつかの例示的な実施例による、サブフレームに分割されたビデオ・フレームの概略図である。
【
図5】本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信におけるビット・レート及び誤り伝搬を最小限に抑える方法のフロー・チャートである。
【
図6】本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽(concealment)を実施する方法のフローチャートである。
【
図7】本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する方法のフローチャートである。
【
図8】本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する方法のフローチャートである。
【
図9】本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する方法のフローチャートである。
【発明を実施するための形態】
【0009】
本発明のいくつかの実施例は、ビデオ、特に、高効率ビデオ・コーディング(HEVC:High Efficiency Video Coding)又はH.265又はMPEG-H Part2ビデオ圧縮規格、或いはH.264又はMPEG-4 Part10又はアドバンスト・ビデオ・コーディング(AVC:Advanced Video Coding又はMPEG-4 AVC)ビデオ圧縮規格など、アドバンスト圧縮規格で圧縮又は符号化されたビデオの送信及び受信、並びに、本明細書で説明されるように、粗いデータ部分と細かい(又は精細(Refinement))データ部分とを使用して表される圧縮ビデオに関する送信及び受信を可能にし得る。本発明のいくつかの実施例は、H.264 SVCを使用して、又はH.264/MPEG-4 AVCビデオ圧縮規格のアネックスG拡張を使用してなど、スケーラブル・ビデオ・コーディング(SVC:Scalable Video Coding)技法に従って、或いは、高品質ビデオ・ストリームが、2つ又はそれ以上のサブセット・ビットストリームに符号化され、サブセット・ビットストリームが、より低い空間解像度(より小さいスクリーン)を有するバージョン、及び/又はより低い時間解像度(より低いフレーム・レート)を有するバージョン、及び/又はより低い品質若しくは忠実度若しくは信号対雑音比(SNR:Signal-to-Noise Ratio)を有するバージョンを表し得る、同様の技法によって、圧縮又は符号化されたビデオとともに利用され得る。
【0010】
「細かい」若しくは「細かいデータ」若しくは「細かいビデオ・データ」又は「精細」若しくは「精細データ」若しくは「精細ビデオ・データ」という用語、或いは同様の用語が本明細書で互換的に使用され、したがって、「細かい」は「精細」をも含み、又は意味し得、「精細」は「細かい」をも含み、又は意味し得る。いくつかの実施例では、「細かい」又は「精細」ビデオ・データは、フレームのより高い品質のバージョンを作成するために、粗いビデオ・データを有し、次いで、それの上に詳細を追加するか又はそれの上に組み込むことによって、ビデオ・デコーダがフレームの粗いバージョンに詳細を追加することを可能にする、データを含み得る。他の実施例では、「細かい」又は「精細」ビデオ・データは、必ずしもビデオ・フレームの粗いビデオ・データを利用又はそれに依拠することなしに、ビデオ・デコーダがそのフレームの高詳細バージョンを「ゼロから」再構築することを可能にする、データを含み得る。
【0011】
本出願人は、インターネット・プロトコル(IP:Internet Protocol)接続上で、すなわち、送信制御プロトコル(TCP:Transmission Control Protocol)を介して、又はユーザ・データグラム・プロトコル(UDP)を介して圧縮ビデオを送るための2つの主要なオプションがあることを了解している。本出願人は、圧縮ビデオのTCP送信において、その送信は、より信頼できるが、より高いレイテンシという欠点があり、圧縮ビデオのUDP送信において、その送信は、あまり信頼できないが、レイテンシ又は遅延がより低いことをさらに了解している。たとえば、本出願人は、UDPパケットが、通常、それの予定受信側に到着するか、又は(たとえば、不正な形式のパケットとして到着するのではなく)まったく到着しないかのいずれかであり、受信側サイド又はそれのビデオ・デコーダが、受信されるべきであったUDPパケットが受信されなかったと決定するように構成され得ることを、了解した。本発明の実施例は、UDP上でのビデオ送信の信頼性及び/又はロバストネスを増加させるように動作し得る。
【0012】
例示のために、本明細書の説明のいくつかの部分は、H.265ビデオに関し得るが、これは非限定的な例にすぎず、本発明の実施例は、他のタイプの圧縮ビデオ及び/又は符号化ビデオとともに使用され得る。本発明の実施例は、2つ又はそれ以上の部分、すなわち、粗い部分と細かい(又は精細)部分とを有することを特徴とするビデオ・データのハンドリング、送信、及び受信に好適であり得る。たとえば、粗い部分は、各ビデオ・フレームの低レベル表現を含み得、したがって、粗い部分の正常な受信及び復号は、受信エンティティが、少なくとも、フレームの粗い表現、又はフレームの低解像度バージョン、又は部分的に詳細なバージョンを作り出す又は表示することを可能にすることになり、これらは、高解像度の詳細を欠き得るが、依然として、閲覧者が、示されたコンテンツを理解することを可能にする、十分な量の視覚情報をその閲覧者に伝達するには十分であり得る。細かい部分又は精細部分は、受信エンティティが、フレームの高解像度バージョン又はフル解像度バージョン或いはフレームの十分に詳細なバージョンを作り出す及び表示することを可能にするデータを含み得、いくつかの実施例では、精細部分は、たとえば、(データの粗い部分においてすでに表されている)フレームの粗いバージョンと、それの詳細の全体をもつ、又は、粗いデータ部分において表されていない少なくともいくつかの追加の詳細をもつ、実際の元のフレームとの間の差に対応するデータを含み得る。いくつかの実施例では、たとえば、ビデオは、その全体が参照により本明細書に組み込まれる特許文献1で説明されるように、粗い部分と精細部分とを含み得る。
【0013】
いくつかの実施例は、個別フレームを有するビデオとともに動作し得、したがって、各フレームは、M個のサブフレームとして表され(又はM個のサブフレームに論理的に分割され)、Mは、24個のフレームなど、1よりも大きい整数である。幅1920ピクセル×高さ1080ピクセルの総サイズ(又は寸法)を有するビデオ・フレーム400の概略図である
図4が参照される。フレーム400は、1から24までの番号を付けられた24個のサブフレームに分割され、6行×4列の行列又はアレイとして配列され得、各そのようなサブフレームは、フレーム400のエリア全体の1/24に対応し、各そのようなサブフレームは、幅320ピクセル×高さ270ピクセルである。いくつかの実施例では、そのフレーム400についてのデータ表現は、24個のデータ部分を含み、各データ部分は、それらの連続する並び順にサブフレームに対応し得、したがって、各データ部分は、そのサブフレームについての粗いビデオ・データと、その後に続く、そのサブフレームについての精細ビデオ・データとを含み得る。他の実施例では、各サブフレームについての粗いデータは、サブフレームごとに次々にアグリゲートされ、次いで、すべてのサブフレームについての粗いデータの後に、それらのサブフレームについての精細データが続き、次々に続く。他のデータ構造が使用され得、ヘッダ部分が、使用されるデータ構造の特定のタイプ、並びにフレーム400の各サブフレームの各そのような粗いデータ部分又は精細データ部分のデータの長さ(ビット数又はバイト数)を記述するデータ又はメタデータを含み得る。
【0014】
例示のために、本明細書の説明のいくつかの部分は、リード-ソロモン誤り訂正の利用に関し得るが、これは非限定的な例にすぎず、本発明によれば、誤り訂正又は前方誤り訂正(FEC:Forward Error Correction)の他のタイプ又は方法が使用され得る。
【0015】
本発明のいくつかの例示的な実施例による、UDP/IP上での送信の対象であるH.265ビデオのパケットのセット100の概略図である
図1が参照される。いくつかの実施例では、随意に、パケットのセット100は、UDP/IP上での送信の対象である単一のデータグラムに対応し得る。例示的な実装形態では、セット100は、H.265符号化ビデオを搬送する9つのパケット101~109を含む。不均一誤り保護方式が適用され、したがって、符号化エンティティ又は送信エンティティは、同じパケット内で、粗いビデオ・データ及び/又は精細ビデオ・データ、並びに/或いは、粗いビデオ・データについてのリード-ソロモン誤り訂正コード及び/又は精細ビデオ・データについてのリード-ソロモン誤り訂正コードの、好適な組合せを記憶及び送信する。
【0016】
各パケット(101~109)は、複数のパケット部分、すなわち、パケットの通し番号(たとえば、あらかじめ定義された上限においてラップ・アラウンドする連続番号)を指示する初期パケット部分である(参照符号Z1の下の図中に位置する)第1のパケット部分と、次いで、ビデオ・フレームのサブフレームに関するメタデータを指示するヘッダ・ビデオ情報を記憶する(参照符号Z2の下の図中に位置する)ヘッダ・ビデオ・パケット部分と、次いで、受信側デバイスが、送信されたフレームの粗いバージョンを復号及び表示することを可能にするための、粗いビデオ・データを搬送する(参照符号Z3の下の図中に位置する)粗いデータ・パケット部分と、次いで、受信側デバイスが、送信されたフレームの精細化されたバージョンを復号及び表示することを可能にする、データを搬送する(参照符号Z4の下の図中に位置する)精細データ・パケット部分とを含み得る。
【0017】
特定の方式によれば、リード-ソロモン(RS:Reed-Solomon)前方誤り訂正(FEC)が使用される。(参照符号Z5、Z6及びZ7の下の図中に位置する)細長い垂直「RS」矩形によって指示されるように、RSワード(たとえば、各RSワードは、元のデータを搬送する組織部と、パリティ/冗長部とを含む)は、同じタイプの複数の対応するパケット部分にわたって符号化される。本発明によれば、精細ビデオ・データに対する粗いビデオ・データに関して、またヘッダ・データに対する粗いビデオ・データに関して、異なるコード・レート(又はコーディング・レート、又はコード比)又は異なる情報レート(又は情報比)が使用される。コード・レートは、たとえば、有用又は非冗長であるデータ・ストリームの比率として定義され得、たとえば、k/nのコード・レートは、kビットの有用な情報ごとに、システムが、より大きい数(n)のビットのデータを生成し、したがって、n>kであり、したがって、(n-k)ビットが(たとえば、誤り訂正目的のための利用される)冗長データであることを指示する。
【0018】
たとえば、単一のビデオ・フレームに対応する9つのパケット101~109の特定のセットについて、第1のコーディング・レート(R1)が定義され、これは、(i)粗いビデオ・データのリード-ソロモン・ワード中の元の(又は有用な、又は非冗長な、又は視覚コンテンツの実際の表現に直接対応する)粗いビデオ・バイトの数と(ii)粗いビデオ・データの前記リード-ソロモン・ワード中のバイトの総数との比である。同じ単一のビデオ・フレームに対応する9つのパケット101~109の同じセットについて、第2の異なるコーディング・レート(R2)が定義され、これは、(I)精細ビデオ・データのリード-ソロモン・ワード中の元の精細ビデオ・バイト・データの数と(II)精細ビデオ・データの前記リード-ソロモン・ワード中のバイトの総数との比である。いくつかの実施例では、粗いビデオ・データ及び精細ビデオ・データのリード-ソロモン・ワードについての異なるコーディング・レートの利用の代わりに、又はそれに加えて、異なるタイプの前方誤り訂正(FEC)アルゴリズムが使用され得る。
【0019】
たとえば、ビデオ・フレームごとのパケットの数がN=9であるとき、好適な値は、(粗いビデオ・データのRSワードについての)第1のコーディング・レート=R1=5/9であり、同じビデオ・フレームについて、(精細ビデオ・データのRSワードについての)第2のコーディング・レート=R2=8/9であり得る。たとえば、単一のビデオ・フレームを表すN個のパケットの同じセットについて、R1はR2とは異なる。たとえば、単一のビデオ・フレームを表すN個のパケットの同じセットについて、R2はR1よりも大きい。たとえば、単一のビデオ・フレームを表すN個のパケットの同じセットについて、精細ビデオ・データのRSワードについての第2のコーディング・レート(R2)は、少なくとも3/4であり、粗いビデオ・データのRSワードについての第1のコーディング・レート(R1)はせいぜい2/3である。たとえば、第1のコーディング・レートR1は、1/10から2/3までの範囲内にあるか、又は1/4から2/3までの範囲内にあり、第2のコーディング・レートR2は、3/4から1までの範囲内にあるか、又は0.6から0.9までの範囲内にある。他の好適な異なる値又は値の範囲が使用され得る。
【0020】
例示的な実施例では、パケットのセット100は、(たとえば、1,360バイト又は1,400バイトの一様なパケット長など、バイト単位の)一様なパケット長を有する9つのパケット101~109を含む。粗いビデオ・データは、セット100の最初の5つのパケット101~105の粗いパケット部分にのみ記憶され、次の4つのパケット106~109の粗いパケット部分は、粗いビデオ・データを記憶しないが、代わりに、それらはリード-ソロモン・パリティ(又は冗長)を記憶し、これは、パケット101~105のうちの1つ又は複数、或いはいくつかが受信側に到着しなかった場合、パケット106~109中に含まれており、受信側に到着した、追加のRSパリティ(又はそれの少なくとも一部)を利用することによって、パケット101~109のうちの受信側に到着したパケットにリード-ソロモン誤り訂正を適用することによって、受信側が、それらのパケット101~105の粗いビデオ・データを再構築することを可能にする。同様に、精細ビデオ・データは、セット100の最初の8つのパケット101~108の精細パケット部分にのみ記憶され、次のパケット109の精細パケット部分は、精細ビデオ・データを記憶しないが、代わりに、それはリード-ソロモン・パリティを記憶し、これは、パケット101~108のうちの1つ又は複数、或いはいくつかが受信側に到着しなかった場合、パケット101~108のうちの受信側に到着したパケットにリード-ソロモン誤り訂正を適用することによって、及び、パケット109中に含まれており、受信側に到着した、追加のRSパリティ(又はそれの少なくとも一部)を利用することによって、受信側が、それらのパケット101~109の精細ビデオ・データを再構築することを可能にする。
【0021】
粗いビデオ・データについてのリード-ソロモン・ワードのコーディング・レート(R1=4/9など、R1)は、精細ビデオ・データについてのリード-ソロモン・ワードのコーディング・レート(R2=8/9など、R2)とは異なることを諒解されたい。本出願人は、同じフレームのパケットの同じセットにわたる、精細データ部分に対する粗いデータ部分に関する、異なる又は不均一なコーディング・レート、或いは一様でないコーディング・レートのこの独自の方式が、パケットのうちの1つ又は複数が移動中に失われた場合であっても、受信側デバイスの、送信されたビデオを正しく復号する能力を改善し得ることを、了解している。本出願人は、粗いビデオ・データに関して、粗いビデオ・データ及びそれのRSワードが、受信側デバイスが、送信されたビデオ・フレームの少なくとも粗いバージョンを復号及び表示することを可能にするために最も重要であるので、2/3よりも小さいかそれに等しい、又は0.67よりも小さい、又は0.60よりも小さい、又は0.50よりも小さい、又は0.40よりも小さい、又は1/3から2/3までの範囲内にある、又は1/4から2/3までの範囲内にある、又は1/5から2/3までの範囲内にある、コーディング・レート(R1)を有することがより重要であることを、了解している。対照的に、本出願人は、精細ビデオ・データ及びそれのRSワードに関して、精細ビデオ・データが、送信されたビデオ・フレームを受信側デバイスが復号及び表示することを可能にするために二次的に重要であるにすぎず、それは、受信側デバイスが、すでに受信された粗いデータの品質又は詳細を精細化又は改善するのを可能にするように動作するにすぎないので、比較的低いコーディング・レートを有することがあまり重要でないことを了解した。したがって、第2のコーディング・レート(R2)は、たとえば、少なくとも3/4、又は少なくとも4/5、又は少なくとも5/6、又は少なくとも6/7、又は少なくとも7/8、又は他の好適な値であり得る。
【0022】
いくつかの実施例によれば、R1の単一の値とR2の単一の(異なる、より大きい)値とが、特定のビデオ送信のパケットのすべてのセットにわたって、すなわち、同じビデオ送信に対応する、又は受信側デバイスへの配信の対象である同じビデオ項目の送信に対応する、UDP/IPパケットのすべての様々なセットにわたって、一様に利用される。言い換えれば、本発明の実施例は、パケットの各セットが異なるサイズを有するようなパケットのセット(たとえば、特定のビデオ項目の配信について、NがMとは異なるような、N個のパケットの第1のセット、及びその後に続く、M個のパケットの第2のセット)を構築することに焦点を当てず、むしろ、本発明の実施例は、ビデオ項目が、パケットのセットの一様なサイズを使用して配信され、パケットの各そのようなセットが、一様でない比R1及びR2の上記で説明された方式を利用するように、一様なセット・サイズ(たとえば、図示の例では、セットごとに9つのパケットの一様なサイズ、又はセットごとにLバイトの一様なサイズ)を有するパケットのセットを構築することに焦点を当てる。
【0023】
いくつかの実施例は、随意に、システムが、14個以下のパケット、又は15個以下のパケット、又は16個以下のパケットなど、フレームごとに生成されることを可能にされるパケットの数の上界を定義及び/又は利用及び/又は執行する限り、ビデオ・フレームごとの他と異なる(differential)又は一様でない数のパケットを利用し得る。したがって、たとえば、ビデオ・フレームごとに14個以下のパケットの上限を利用するとき、第1のビデオ・フレームが8つのパケットによって表され得、第2のビデオ・フレームが14個のフレームとして表され得、第3のビデオ・フレームが12個のパケットによって表され得、以下同様であり、フレームごとに15個又は16個又は17個のパケットによって表されるビデオ・フレームがない。システムによって及び/又は送信エンティティによって設定される上界又は上限は、受信側デバイスに伝達又は通知され得るか、或いは受信側デバイスにおいてハード・コーディング又はソフト・コーディングされ得、それにより、受信側デバイスが、限定されたサイズのバッファ又はメモリ領域を割り振ること及び利用することを可能にし、そのようなバッファがオーバーフロー又はアンダーランしないことを保証する。たとえば、フレームごとに15個以下のパケットの制限を定義することは、受信側エンティティが、15個のパケットのみを収容するバッファを定義すること及び安全に利用することを可能にし得る。いくつかの実装形態では、システムのレイテンシは受信機バッファ・サイズに依存し得、したがって、そのようなサイズを制限又は限定することは、システムのレイテンシを減少させることに寄与し得る。
【0024】
例示的な実施例では、各パケットは、パケットごとに1,400バイトなど、一様なサイズを有し、各パケットのバイト1~20が、サブフレームに関するパケット番号及びヘッダ情報を搬送し、各パケットのバイト21~200が、粗いビデオ・データを搬送し、各パケットのバイト201~1,400が精細ビデオ・データを搬送する。粗いビデオ・データについて、リード-ソロモン誤り訂正は、たとえば、リード-ソロモン・ワードごとに9バイトの一様な長さを有するリード-ソロモン・ワードを利用し得る。たとえば、パケット101~105の粗いビデオ・データ(たとえば、5×180=960バイト)はリード-ソロモン・エンコーダに供給され、リード-ソロモン・エンコーダは、9×180=1,620バイトにわたり、パケット106~109中の粗いビデオ・データのために予約されたパケット・セグメントに記憶される、リード-ソロモン・ワードを生成する。同様に、精細ビデオ・データについて、リード-ソロモン誤り訂正は、たとえば、リード-ソロモン・ワードごとに9バイトの一様な長さを有するリード-ソロモン・ワードを利用し得、パケット101~108の精細ビデオ・データ(たとえば、8×1,200バイト)はリード-ソロモン・エンコーダに供給され、リード-ソロモン・エンコーダは、9×1,200=10,800バイトにわたり、パケット109中の精細ビデオ・データのために予約されたパケット・セグメントに記憶される、リード-ソロモン・ワードを生成する。
【0025】
たとえば、粗いデータのコーディング・レートは5/9であり、前述のように、合計960バイトの粗いデータがある。ただし、RSワード長は90バイト(たとえば、データの元の50バイト+冗長データの40バイト)であり、1620/90=18であるので、合計18個のRSワードがある。いくつかの実施例では、冗長データのすべての40バイトは、詳細には、ビデオ・フレームの9つのパケットの全体にわたって散乱するのではなく、ビデオ・フレームの9つのパケットのセットの最後の4つのパケット中に位置する。いくつかの実施例では、随意に、9つのパケットのセットの各パケットの粗いデータ部分は、粗いビデオ・データ又は粗いビデオ・データのRS冗長のいずれかを含んでいるが、同じパケット中に両方は含まれていない。
【0026】
同様に、精細データに関して、8/9のコーディング・レートにおいて、冗長データ(RSコード)のすべてのバイトは、詳細には、ビデオ・フレームの9つのパケットの全体にわたって散乱するのではなく、ビデオ・フレームの9つのパケットのセットの最後のパケット中に位置する。いくつかの実施例では、随意に、9つのパケットのセットの各パケットは、精細ビデオ・データ又は精細ビデオ・データのRS冗長のいずれかを含んでいるが、同じパケット中に両方は含まれていない。
【0027】
本出願人は、単一のビデオ・フレームに対応する、N=9つのパケットの同じセット中の、又は同じUDP/IPデータグラム中の、パケットのヘッダ情報に関して、また別の異なる第3のコーディング・レート(R3)が利用され得ることをも了解している。たとえば、単一のビデオ・フレームはS個の領域又はサブフレーム(たとえば、
図4に例示されているように、24個の領域、又は24個のサブフレーム)に分割され、各そのような領域又はサブフレームは別々に符号化され得、ヘッダに記憶されたデータは、ヘッダ情報が、特定のフレームのどの領域又はサブフレームが到着した又は消失したか、或いは、どの粗いデータ又は精細データが、(1つ又は複数の)特定のフレームのどの領域又はサブフレームに対応するかを決定するために、利用され得るので、受信側デバイス又はそれのデコーダにとって極めて重要であり得る。
【0028】
したがって、セット100中に例示されているように、パケット101~103中でヘッダ情報のために予約されたパケット部分は、実際、そのフレームのサブフレームに関する前記情報を記述する元の又は有用なヘッダ情報を記憶及び搬送し得るが、次の4つのパケット(パケット104~107)中でヘッダ情報のために予約されたパケット部分は、実際のヘッダ情報を記憶せず、むしろ、それらは、代わりに、パケット101~103に記憶された3つのヘッダ・データ項目についてのリード-ソロモン誤り訂正コードを記憶する。たとえば、ヘッダ情報について、リード-ソロモン誤り訂正は、9バイトの一様な長さを有するリード-ソロモン・ワードを利用し得る。パケット101~103のヘッダ情報(たとえば、3×20=60バイト)はリード-ソロモン・エンコーダに供給され、リード-ソロモン・エンコーダは、4×20=80バイトにわたるリード-ソロモン・コードを生成し、それらの80バイトのリード-ソロモン・パリティ・データは、パケット104~107中のヘッダ情報のために予約されたパケット・セグメントによって記憶及び搬送される。したがって、9つのパケットの単一のセット内のコーディング・レート(R3)は、3/7のコーディング・レートであり得るか、又は他の好適な値であり得、特に、第3のコーディング・レートR3は、1よりも小さいかそれに等しい、又は1より小さい、又は0.90よりも小さい、又は0.80よりも小さい、又は0.75よりも小さい、又は0.67よりも小さい、又は0.60よりも小さい、又は0.50よりも小さい。
【0029】
いくつかの実施例では、パケット108~109のヘッダ・パケット部分は、未使用のままであり得るか、又はヌル値で満たされ得る。他の実施例では、随意に、3:9のコーディング・レートR3が利用され得、したがって、パケット101~103の3つのヘッダ部分が、実際のヘッダ情報を記憶し、パケット104~109の6つのヘッダ部分が、対応するリード-ソロモン誤り訂正データを記憶して、それにより、(パケット101~103中で搬送され、パケット104~109中で誤り保護される)ヘッダ情報が受信側デバイスにおいて正しく復号される確率を、さらに増加させる。
【0030】
本発明のいくつかの実施例は、各ビデオ・フレームと、少なくとも粗いビデオと、また可能な場合、精細化されたビデオとが、特定のフレームのデータグラムのUDP/IPの一部が受信側デバイスに到着しなかった場合でも、受信側デバイスにおいて復号可能であることを保証するために、複数の保護機構を利用し得る。例示的な実装形態では、送信の対象であるビデオは、60フレーム毎秒(FPS:frames per second)のフレーム・レートを有し、したがって、各フレームは1,000/60=16.67ミリ秒に対応する。送信デバイスは、各フレームを符号化するために最高9つのパケットが必要とされるという仮定又は推定に基づいて動作し得るが、送信デバイスは、一般に、特定のフレームが、ビデオ・データ(そのフレームの粗いビデオ・データ及び精細ビデオ・データ)を十分に搬送するために(たとえば)10個のパケットを必要とすることを予測することが可能でないことがある。受信側デバイスは、単一のフレームについての完全なデータが、16.67ミリ秒ごとに又は約16ミリ秒ごとに受信されるべきであるという、仮定に基づいて又は構成に基づいて、動作し得る。したがって、システム(送信デバイス及び受信デバイス)は、単一のフレームが、ビデオ・フレームごとの計画された9つのパケットではなく、10個又は11個のパケット上で搬送されることを必要とする、予期しないイベントが発生した場合でも、低レイテンシを保証するために1つ又は複数の保護機構を利用する必要があり得る。そのような状況では、送信デバイスは、各ビデオ・フレームごとに厳密に9つのパケットのみが送信され、それらの9つのフレームのうちのいくつかが失われ、受信側デバイスに到着しない場合でも、ビデオ・フレーム(たとえば、少なくともそれの粗いバージョンと、また場合によっては、それの精細化されたバージョンと)を正しく復号するのに十分な情報をそれらのパケット内で搬送することを保証するように、動作する。
【0031】
第1の保護機構として、一般に、粗いビデオ・データのために予約されるパケット部分のサイズが、一般に精細ビデオ・データのための予約である隣接する(同じパケットの)パケット部分のサイズという犠牲を払って増加され、それにより、フレームは、低減された量の精細ビデオ・データを(同じパケット中で)搬送しながら、増加された量の粗いビデオ・データを搬送することが可能になる。したがって、参照符号Z8の下の右向きの湾曲した矢印によって図に指示されるように、粗いデータ・パケット部分と精細データ・パケット部分との間の境界であるパケット101中の垂直線は、右側に動的に移動(又はプッシュ、又はシフト)され、(たとえば)拡大又は増加されたサイズの粗いパケット部分と低減されたサイズの精細パケット部分とを表す破線垂直線で図に指示さるロケーションに位置することになる。これは、そのフレームの少なくとも粗いビデオ・データを配信することが、そのような配信が、そのフレームの精細ビデオ・データの一部(又はすべて)という犠牲を払う場合でも、より重要であることを反映する。したがって、この第1の保護機構は、フレームごとの固定された又はあらかじめ定義された数のパケットが、粗いビデオ・データの全体及び精細ビデオ・データの全体(及びそれらの両方についてのリード-ソロモン・パリティ情報の全体)を送信するには十分でない場合、一般に、そのフレームの精細ビデオ・データという犠牲を払って粗いビデオ・データを搬送するために予約又は指定された、パケットのうちの1つ又は複数中のスペース量が、そのフレームの精細ビデオ・データを搬送することに再割り当てされることになる、と決定する。
【0032】
第2の保護機構では、送信デバイスは、9つのパケット101~109のセットでは、元のプラン又は通常のプランが、精細ビデオ・データを実際搬送するために、精細ビデオ・データのために予約された(パケット101~108中の)8つのパケット部分を利用することと、パケット101~108の精細ビデオ・データについてのリード-ソロモン・パリティ情報を搬送するための第9のパケット(パケット109)の精細ビデオ・データ・パケット部分を利用することとであったことを、認識している。しかしながら、一方では、精細データの増加された量、他方では、上記で説明された第1の保護機構の動作により、送信デバイスは、それが現在、精細ビデオ・データを搬送するための(パケット101~108中の、又はそれらのうちの少なくとも1つ中の)低減されたサイズのパケット部分を有することを、認識している。したがって、第2の保護機構として、そのような状況では、第9のパケット(パケット109)の精細ビデオ・データ・パケット部分は、今度は、それの元の目的のために、すなわち、精細ビデオ・データのリード-ソロモン・パリティ情報を搬送するのではなく、精細ビデオ・データを搬送するために利用される。したがって、この第2の保護機構は、フレームごとの固定された又はあらかじめ定義された数のパケットが、精細ビデオ・データの全体及び精細ビデオ・データについてのリード-ソロモン・パリティ情報の全体を送信するには十分でない場合、精細ビデオ・データが、それのリード-ソロモン・パリティ情報よりも優先し、精細ビデオ・データが、通常ならば、精細ビデオ・データのリード-ソロモン・パリティ情報を搬送するために指定又は予約される、パケット部分中で搬送される、と決定する。
【0033】
第3の保護機構では、フレームごとの固定された又はあらかじめ定義された数のパケットが、粗いビデオ・データの全体及び精細ビデオ・データの全体、並びにそれらの両方についてのリード-ソロモン・パリティ情報の全体を送信するには十分でない場合、精細ビデオ・データについてのリード-ソロモン・パリティ情報は、そのフレームのこれらのパケット中でまったく送信されず、精細ビデオ・データのリード-ソロモン・パリティ情報の廃棄が、依然として、そのフレームについての精細ビデオ・データの送信を可能にするには十分でない場合、精細ビデオ・データは、廃棄され、このフレームについてのパケットのこのセット中で送信されない、すなわち、そのフレームの精細ビデオ・データの全体が、それらの9つのパケットから除外され、このフレームについて送出されないか、又は、代替的に、そのフレームについての精細ビデオ・データの少なくとも一部(たとえば、このフレームの24個のサブフレームの中からの少なくともS個のサブフレームについての精細ビデオ・データ)が、それらの9つのパケットから除外され、そのフレームについて送信されないかのいずれかである。いくつかの実施例では、精細ビデオ・データは、9つのパケットのセット内に直列に配列され、したがって、(たとえば)最初に、送信デバイスは、9つのパケットから、サブフレーム24の精細ビデオ・データを廃棄又は除外し、次いで、送信デバイスは、9つのパケットから、サブフレーム23の精細ビデオ・データを廃棄又は除外し、以下同様であり、受信側デバイスは、依然として、それらのサブフレームの少なくとも粗いバージョンを受信及び復号及び表示することが可能であり得、精細ビデオ・データが除外されなかった(その同じフレームの)1つ又は複数のサブフレームの少なくとも、精細化されたバージョン(たとえば、サブフレーム1についての精細ビデオ・データ、サブフレーム2についての精細ビデオ・データ、サブフレーム3についての精細ビデオ・データ、以下、サブフレームのさらなる精細ビデオ・データが除外されたカットオフ・ポイントまで同様である)を、受信及び復号及び表示することが可能であり得る。
【0034】
第4の保護機構では、消失した粗いビデオ・データ及び/又は消失した精細ビデオ・データであろうと、消失したビデオ・データのリード-ソロモン再構築が、依然として、受信側デバイスにおいて実施されて、それにより、9つのパケットのセット中に(リード-ソロモン・パリティ情報が含まれていた場合)含まれていたリード-ソロモン・パリティ情報に基づいて、消失した粗いビデオ・データ及び/又は消失した精細ビデオ・データの1つ又は複数の部分(又は全体)が再構築され得る。これは、たとえば、9つのパケットのセットが、精細ビデオ・データについての及び/又は粗いビデオ・データについてのリード-ソロモン・パリティ情報の少なくとも一部を搬送する限り、実施され得る。
【0035】
いくつかの実施例では、受信側デバイス又はそれのデコーダは、特定のフレームの1つ又は複数のUDP/IPパケットが消失した及び/又は到着せず、したがって、そのビデオ・フレームのサブフレームのうちのいくつかについて、細かいビデオ・データは再構築され得ないが、同じサブフレームについての粗いデータは再構築され得る、と決定し得る。そのような場合、デコーダは、細かいデータが消失したサブフレームの非圧縮バージョンを再構築するために、粗いデータのみを使用し得る。さらに、後のフレームについて、デコーダは、影響を及ぼされたサブフレームについて、これらのサブフレームの精細データが、後のフレーム中で正しく到着した場合でも、粗いビデオ・データのみを使用し続け得る。これは、いくつかの圧縮規格では、進行フレームが適切に復号されなかった場合、Pフレームが復号され得ないので、実施され得る。
【0036】
本発明のいくつかの実施例は、各ヘッダが、同じ、一定の数のパケットを有する(又は占有する)ように、ビデオ・ヘッダを利用し得るが、ビデオ・ペイロード(粗いビデオ・データ、及び精細ビデオ・データ)は、一定でない数のパケットを占有し、これらのタイプの情報(ヘッダ、粗いビデオ・データ、精細ビデオ・データ)の各々は、それ自体のリード-ソロモン誤り訂正情報で別々に保護され、これは、その単一のビデオ・フレームのパケットの全体にわたって散乱されるのではなく、その単一のビデオ・フレームのパケットのセット中の、各データ・タイプの終端部分において記憶される。
【0037】
いくつかの実施例では、フレームごとのパケットの数は、各ビデオ・フレームが、フレームごとのパケットのあらかじめ定義された上界を超えない数のパケットによって表される限り、同じビデオのフレームの間で変動し得る。上界は、たとえば、フレームごとに最高11個又は14個又は15個のパケットとしてあらかじめ定義され得る。デコーダ・バッファは、フレームごとのパケットの上界限界を収容するのに十分に大きくなることになるが、より大きい受信機バッファがシステムのレイテンシに悪影響を及ぼし得るので、それよりも大きくなる必要はない。例示的な実装形態では、システムは、ビデオ・フレームごとに最高15個のパケットの限界を利用する。受信側サイドにおいて、受信側デバイスは、最高15個のパケットを記憶することが可能であるバッファを定義及び利用し、そのような受信機バッファは、16個の(又はそれ以上の)パケットを記憶するための容量を有する必要がない。送信機サイドにおいて、符号化データが長すぎ、フレームごとに15個のパケットの制約に適合しない場合、送信エンティティは、生成された最初の15個のパケットのみを送り、残りのパケットを廃棄し、フレームごとに15個よりも多いパケットを送らず、受信側エンティティは、ビデオ・フレーム、少なくともそれの粗いバージョン、及び、またできる限り、それの精細化されたバージョンを復号又は再構築するために、上記で説明された保護機構のうちの1つ又は複数を利用することになる。
【0038】
たとえば、ビデオ・エンコーダは、1つの符号化ビデオ・フレームが6,500バイトを必要とし得、それの直後の符号化ビデオ・フレームが8,900バイトを必要とし得るので、各ビデオ・フレームの(たとえば、バイト単位の)サイズが事前に容易に予測され得ないように、符号化ビデオを生成し得る。本出願人は、低レイテンシを達成するために、大きいサイズのバッファの利用を回避することが有益であり得ることを、了解している。したがって、本発明のシステム及び方法は、各フレームのビデオ符号化時に、必ずしも次の(1つ又は複数の)フレームの符号化又は(1つ又は複数の)他のフレームの符号化を待つことなしに、及び/或いは、現在符号化されているフレームのサイズに、又は(1つ又は複数の)他のフレーム(たとえば、すでに符号化されたフレーム、及び/又は符号化されることになるフレーム)のサイズに依存することなしに、送信デバイスによって(1つ又は複数の)パケットのセットが生成及び送信されるように、動作し得る。
【0039】
いくつかの実施例は、リード-ソロモン・パリティ・データについての特定のあらかじめ定義された一様なサイズを事前に定義することによって動作し得、たとえば、上記に示された例では、粗いビデオ・パリティ・データは、9つのパケットのセット中の4つのパケットの粗いパケット部分を占有することになり(粗いコーディング・レートR1=4/9)、精細ビデオ・パーティ・データは、9つのパケットの同じセット中の1つの単一のパケットの精細パケット部分を占有することになり(精細コーディング・レートR2=8/9)、ヘッダ情報は、実際のヘッダ情報のための3つのヘッダ部分と、実際のヘッダ情報のリード-ソロモン誤り訂正データのためのさらに4つのヘッダ部分との内部分割を伴う、7つのパケットのヘッダ・パケット部分を占有する(ヘッダ・コーディング・レートR3=3/7)。送信エンティティは、必ずしも、実際の粗いデータ及び/又は実際の精細データを記憶するために使用される(ビデオ・フレームごとの)パケットの数を事前に決定する必要があるとは限らず、これは、送信エンティティが、フレームごとに、フレームごとのパケットのあらかじめ定義された上界値よりも多いパケットを送信しない限り、(1つ又は複数の)フレームが符号化されるとき、動的に又は選択的にオンザフライで決定され得る。むしろ、送信エンティティは、ヘッダ情報が、常に、パケットのセットにわたって、(上記で説明された3/7のヘッダ・コーディング・レートをもつ)7つのパケットの7つのヘッダ部分など、固定されたサイズを占有することになることを、受信側エンティティに通知し得るか、又は、さもなければ、受信側エンティティは、そのような指示を有するように構成され得る。
【0040】
本発明のいくつかの例示的な実施例による、フレーム・グループ化を例示する概略図である
図2が参照される。UDP/IP上でのH.265ビデオ送信のロバストネスを改善する様式で、3つのグループ又は3つのベクトルのセット200が生成される。
【0041】
「粗いビデオ・データ・ベクトル」又は「粗いビデオ・データ・グループ」と呼ばれることもある、第1のグループ又はベクトル201では、粗いビデオ・データは、単一のフレームのM個のサブフレームについて累積される。たとえば、符号化されており、24個のサブフレーム(フレーム領域)に分割される、特定のフレームに関して、第1のグループ201は、サブフレーム1についての粗いビデオ・データを、及びその後に続く、サブフレーム2についての粗いビデオ・データを、以下同様に、その第1のグループ201を終えるサブフレーム24についての粗いビデオ・データまで、含む。これらのサブフレームの粗いビデオ・データの(たとえば、バイト単位の)サイズは、そのサイズが、(一般に、同一でないコンテンツであり得る)それらのサブフレームの各々中に現れるコンテンツに依存するので、固定されず、一様でないことに留意されたい。
【0042】
サブフレームは、各サブフレームの復号が、(その同じビデオ・フレームの、及び任意の他のビデオ・フレームの任意の他のサブフレームの)他のサブフレームの復号から独立するような、独立した様式で符号化され得る。サブフレームを復号することのこの独立は、フレーム間予測について、各サブフレームについての参照画像が、他のフレーム中の同じサブフレームのエリアのみを含み、(1つ又は複数の)他のフレーム中の(1つ又は複数の)他のサブフレームのエリアを含まない、という特徴を含み得るか、又はその特徴を利用し得る。
【0043】
同様に、「細かいビデオ・データ・ベクトル」又は「細かいビデオ・データ・グループ」と呼ばれることもある、第2のグループ又はベクトル202では、細かい(又は精細)ビデオ・データは、単一のフレームのサブフレームについて累積される。たとえば、符号化されており、24個のサブフレーム(フレーム領域)に分割される、特定のフレームに関して、第2のグループ202は、サブフレーム1についての細かいビデオ・データを、及びその後に続く、サブフレーム2についての細かいビデオ・データを、以下同様に、その第2のグループ202を終えるサブフレーム24についての細かいビデオ・データまで、含む。これらのサブフレームの細かいビデオ・データの(たとえば、バイト単位の)サイズは、そのサイズが、(一般に、同一でないコンテンツであり得る)それらのサブフレームの各々中に現れるコンテンツに依存するので、固定されず、一様でないことに留意されたい。
【0044】
また、第1のグループ201(粗いビデオ・データ・グループ)の全体の(たとえば、バイト単位の)累積サイズは、第2のグループ202(精細ビデオ・データ・グループ)の全体の(たとえば、バイト単位の)累積サイズとは異なることに留意されたい。さらに、2つの異なるフレームについて、各フレームの(たとえば、バイト単位の)累積サイズは、一般に異なり、固定されない。
【0045】
ヘッダ・グループ203(又はヘッダ・ベクトル)は、現在フレームのサブフレーム1の粗いビデオ・データの(たとえば、バイト単位の)サイズの指示Lc(1)、次いで、現在フレームのサブフレーム2の粗いビデオ・データの(たとえば、バイト単位の)サイズの指示Lc(2)、以下同様に、(たとえば、24サブフレームからなるフレームの最後のサブフレームであるサブフレーム24の粗いデータのサイズを指示するLc(24)までの)そのフレームの各後のサブフレームの粗いデータの(たとえば、バイト単位の)サイズの指示、及び現在フレームのサブフレーム1の精細ビデオ・データの(たとえば、バイト単位の)サイズの指示Lf(1)、現在フレームのサブフレーム2の精細ビデオ・データの(たとえば、バイト単位の)サイズの指示Lf(2)、以下同様に、(たとえば、24サブフレームからなるフレームの最後のサブフレームであるサブフレーム24の精細データのサイズを指示するLf(24)までの)そのフレームの各後のサブフレームの精細データの(たとえば、バイト単位の)サイズの指示など、精細ビデオ・データについてのインジケータの同様のアグリゲーションを含み得る。したがって、24個のサブフレームに分割されたフレームについて、ヘッダ情報は、各粗いビデオ・データと、次いで、各精細ビデオ・データとの(たとえば、バイト単位の)サイズの48個のインジケータのリストを含み得る。
【0046】
ヘッダ部分に関して、本発明の実施例は、以下の特徴を利用し得る。第1に、ヘッダ部分が存在し、そのようなヘッダは、(パケットのうちのいくつか又はそれ以上が受信側デバイスに到着しない場合でも)送信されたサブフレームの粗いデータ及び精細データのマップとして動作し、そのようなヘッダが、到着し、影響を受けないサブフレームに関係する、データの利用を可能にし得るので、RSデコーダが失敗した場合でも、到着した精細データ及び/又は到着した粗いデータを少なくとも部分的に利用する能力を受信側デバイスに提供する、という事実。第2に、ヘッダ部分に提供される保護は、精細部分に提供される保護よりも大きく(たとえば、R3<R2、さらにはR3<<R2)、ヘッダ部分に提供される保護は、粗い部分に提供される保護と少なくとも同じか、又はそれよりも良好であり(たとえば、R3<R1、又は、せいぜいR3=R1)、したがって、システムは、精細データ(又はそれのいくつかの部分)が復号可能でない場合でも、及び場合によっては、粗いデータ(又はそれのいくつかの部分)が復号可能でない場合でも、重要なヘッダ・データが復号可能であることになることを保証する。
【0047】
いくつかの実施例では、ヘッダ部分は、必ずしも、すべてのヘッダ・フレームについて一様である固定されたサイズを有するとは限らず、むしろ、ヘッダ部分は、すべてのフレームのすべてのパケットのすべてのヘッダにわたって、固定された又は一様なサイズを有する、少なくとも1つのサブ部分を有し得る。たとえば、例示的な実装形態では、ヘッダ部分は、2つのサブ部分、すなわち、(i)固定されない又は一様でないサイズ(たとえば、ビデオ・フレームごとに約100バイト、又はパケットごとに約20バイト、ただし、必ずしも、固定されたバイト長を有するとは限らない)を有し得、現在ビデオ・フレーム内のサブフレームのマッピングの情報を含む、「VEヘッダ」サブ部分としても示される「ビデオ・エンコーダ・ヘッダ」サブ部分と、(ii)すべてのパケット及びすべてのフレームにわたって、固定された又は一様なサイズ(たとえば、ビデオ・フレームごとにちょうど8バイト)を有し、現在ビデオ・フレームに属するパケットの数を指示する、「Blkヘッダ」サブ部分としても示される「ブロック・ヘッダ」サブ部分とを含み得る。ブロック・ヘッダ・サブ部分についてのリード-ソロモン・ワードのサイズは、ビデオ・エンコーダ・ヘッダ・サブ部分についてのリード-ソロモン・ワードの変化するサイズとは異なり、固定され、したがって、ブロック・ヘッダがその上で送信されるパケットの数は固定される。
【0048】
本発明のいくつかの例示的な実施例による、システム300の概略図である
図3が参照される。システム300は、ワイヤレス通信リンク上で、及び、特に、IPベース通信リンク上で又はUDP/IP通信リンク上で、受信側デバイス320と通信することが可能な送信デバイス310を備える。
【0049】
送信デバイス310は、受信側デバイス320に送信及び配信されることを意図されるソース・ビデオ又は入力ビデオ310を記憶又は受信する、又はそれへのアクセスを有する。送信デバイス310は、たとえば、HEVC又はH.265又はH.264-SVC又は他の好適なビデオ圧縮規格を使用して、ソース/入力ビデオのビデオ符号化を実施する、ビデオ・エンコーダ311を備える。次いで、フレームの各グループが、同じ単一のFECワード又はFECコード又はリード-ソロモン・ワードを利用するように、フレーム・グループ化ユニット312がフレームのグループ化を実施し得る。パケット化ユニット及びFECエンコーダ/RSエンコーダ313が、符号化フレーム・データのパケット化と、FECコード又はRSワードの追加とをハンドリングする。送信機314が、受信側デバイス320にパケットを送信する。
【0050】
受信側デバイス320において、受信機321が着信パケットを受信し、必ずしもすべての送信パケットが受信機321において実際に受信されるとは限らない。したがって、消失したUDPパケット検出器322が、到着パケットを追跡することと、パケット通し番号に基づいて、消失したパケットを検出することとを行うように動作し、1の値が、消失したパケットを指示し、0の値が、受信されたパケットを指示するような、連続するパケットを表すベクトルを利用する消去ベクトル生成器及びアップデータ323を随意に利用する。次いで、パケット化解除ユニット及びFECデコーダ/RSデコーダ324が、データをパケット化解除することと、到着したパケットに対してFEC又はRS復号を実施することとを行うように動作する。随意に、FECデコーダは、消去指示を利用するように構成され得、たとえば、いくつかのRSデコーダは、それらのRSデコーダが消去指示を受信しないとき、最高floor(N-K)/2)個の誤りを訂正することができるが、それらのRSデコーダが、これらの誤りのロケーションに関する消去指示を与えられる場合、最高(N-K)個の誤りを訂正することができる。フレーム非グループ化ユニット325が、フレームのグループを個別フレームに非グループ化し、ビデオ・デコーダ326が、各そのようなフレームの復号(たとえば、HEVC又はH.265又はH.264-SVC復号)を実施し、それにより、スクリーン又はモニタ又は他のディスプレイ・ユニットを介してユーザに出力又は表示され得る、出力ビデオ327を作り出す。
【0051】
システム300のユニットの各々は、ハードウェア構成要素及び/又はソフトウェア構成要素として実装され得る。いくつかの実施例では、システム300のユニット又はデバイスは、たとえば、プロセッサ、中央処理ユニット(CPU:Central Processing Unit)、デジタル信号プロセッサ(DSP:Digital Signal Processor)、グラフィックス処理ユニット(GPU:Graphics Processing Unit)、処理コア、コントローラ、論理ユニット、メモリ・ユニット(たとえば、ランダム・アクセス・メモリ(RAM:Random Access Memory)、フラッシュ・メモリ)、記憶ユニット(たとえば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、オプティカル・ドライブ)、入力ユニット(たとえば、キーボード、キーパッド、マウス、トラックボール、オーディオ・マイクロホン、タッチスクリーン)、出力ユニット(たとえば、スクリーン、タッチスクリーン、オーディオ・スピーカー)、電源(たとえば、バッテリー、電池、本線電力への接続)、1つ又は複数のワイヤード及び/又はワイヤレス・トランシーバ(たとえば、Wi-Fiトランシーバ、Bluetoothトランシーバ、セルラー・トランシーバ)、デバイスの構成要素のいくつか又はすべてを一緒に保持するハウジング、ドライバ及びアプリケーションをもつオペレーティング・システム(OS:Operating System)、並びに/或いは他の好適なハードウェア構成要素及び/又はソフトウェア構成要素など、他の好適な構成要素を備えるか、又はそれらを使用して実装され得る。
【0052】
本発明の実施例によれば、計算、動作及び/又は決定は、単一のデバイス内でローカルに実施され得るか、或いは、随意に生データ及び/又は処理されたデータ及び/又は処理結果を交換するために通信チャネルを利用することによって、複数のデバイスによって若しくは複数のデバイスにわたって実施され得るか、又は部分的にローカルに及び(たとえば、リモート・サーバにおいて)部分的にリモートで実施され得る。
【0053】
本発明のいくつかの追加の実施例が本明細書で説明され、それらの実施例は、随意に、前に説明された実施例の特徴及び/又は構成要素及び/又はステップと組み合わせられ得る。
【0054】
本出願人は、ビデオ・データが一連の静止画像フレームとして表され得ることを了解している。エンコーダは、フレーム間の類似度を記述する命令とともにフレーム間の差を記憶することによって、フレームを符号化し得る。命令は、概して動きによる、フレーム間の同様のデータの位置の差に関連する情報を含み得る。この差は、概して、動きベクトル及び予測誤りによって表現される。符号化フレーム及び/又は命令は、次いで、それらが復号され得、画像フレームが再構築され得る、デコーダに、エンコーダによって送られる。慣例は、認められたビデオ圧縮規格に関連する知られているビデオ圧縮フォーマットを使用して、ビデオ・フレームを符号化することであり、そのビデオ圧縮規格の最も普及しているものの1つは、ITUのH.265規格である。
【0055】
インターネット・プロトコル(IP)を使用してH.265符号化ビデオ・フレームを送ることは、概して、フレーム又はサブフレームをパケット化することと、ユーザ・データグラム・プロトコル(UDP)又は伝送制御プロトコル(TCP)を使用してエンコーダにパケットを送ることとを伴う。UDPは、最小限のプロトコル機構をもつ単純な無接続通信モデルを使用し、これは、レイテンシ低減を重要視し、UDPを、パケットをドロップすることが、TCPによって必要とされる再送信により遅延されたパケットを待つことよりも好ましい、時間敏感アプリケーションにとって好適にする。
【0056】
H.265符号化ビデオ・フレームは、3つのタイプのフレーム(又はサブフレーム)、すなわち、Iフレームと、Bフレームと、Pフレームとに分割され得る。Iフレームは、一般にイントラコード化フレーム(イントラフレーム)として参照され、他のフレームと無関係にコーディングされる。Pフレームは、一般に予測インターコード化フレーム(インターフレーム)と呼ばれ、過去のIフレーム及びPフレームに関して符号化される。Bフレームは、一般に双方向予測インターフレームと呼ばれ、過去の及び将来のIフレーム及びPフレームに関して符号化される。
【0057】
本発明の一実施例によれば、UDPパケット中でビデオ・データを送信する方法であって、エンコーダにおいて、ビデオ・データを、単一のIフレームと複数のPフレームとを各々有するピクチャ・グループ(GOP:group of pictures)に符号化することと、UDPパケット中でGOPの各フレーム又はサブフレームを送信することとを含む、方法が提供される。本方法は、デコーダにおいて、送信されたUDPパケットのすべての受信を検査することと、送信されたUDPパケットのすべての受信に応答してデコーダからエンコーダにフィードバックを送ることとをさらに含み得る。
【0058】
いくつかの実施例では、フィードバックはACK(確認応答)メッセージを含み得る。随意に、ACKメッセージは、最後の受信されたフレームに関連するインデックス番号を含み得る。いくつかの実施例では、本方法は、各UDPパケット中に、送信されているフレーム又はサブフレームに関連するインデックス番号と、送信されるべき後続のIフレーム又はIサブフレームに関連するインデックス番号とを含めることをさらに含み得る。いくつかの実施例では、ACKメッセージを受信すると、エンコーダは、後続のIフレーム又はIサブフレームに関連するインデックス番号を、ACKメッセージ中のインデックス番号に関連する新しいインデックス番号と交換し得る。随意に、新しいインデックス番号は、複数のPフレーム中のPフレームの数を含み得る。いくつかの実施例では、本方法は、フィードバックに応答してPフレーム又はPサブフレームのみを送信することをさらに含み得る。
【0059】
本発明の一実施例によれば、UDPビデオ送信におけるパケット誤り隠蔽の方法であって、エンコーダにおいて、フレーム又はサブフレームに関連するDCTタップをジグザグ順序で配列することと、DCTタップを量子化することと、量子化されたDCTタップからフレーム又はサブフレームの第1の記述を作成することと、量子化されたDCTタップからフレーム又はサブフレームの第2の記述を作成することと、別々のUDPパケット中でデコーダに第1の記述と第2の記述とを送ることとを含む、方法が提供される。
【0060】
いくつかの実施例では、DCTタップを量子化することは、Q1<<Q2であるような2つの値Q1及びQ2を含み得る。いくつかの実施例では、第1の記述は、偶数タップについてのQ1と、奇数タップについてのQ2とを含み得る。代替的に、第1の記述は、奇数タップについてのQ1と、偶数タップについてのQ2とを含み得る。
【0061】
いくつかの実施例では、第1の記述中のDCTタップは、量子化点...、-5、-3、-1、0、2、4、6...の周りで量子化され得る。いくつかの実施例では、第2の記述中のDCTタップは、量子化点...、-6、-4、-2、0、1、3、5...の周りで量子化され得る。
【0062】
いくつかの実施例では、第1の記述中のDCTタップは、量子化点...、-9、-6、-3、0、1、2、3...の周りで量子化され得る。いくつかの実施例では、第2の記述中のDCTタップは、量子化点...、-3、-2、-1、0、3、6、9...の周りで量子化され得る。
【0063】
いくつかの実施例では、本方法は、デコーダにおいて、パケット誤り隠蔽のために第1の記述を使用することをさらに含み得る。本方法は、デコーダにおいて、パケット誤り隠蔽のために第2の記述を使用することをさらに含み得る。いくつかの実施例では、本方法は、デコーダにおいて、第1の記述中の量子化されたDCTタップを第2の記述中の量子化されたDCTタップと平均化するために、最大比合成(MRC:Maximum-Ratio-Combining)を使用することをさらに含み得る。平均化することは加重平均化することを含み得る。
【0064】
いくつかの実施例では、本方法は、デコーダにおいて、第1の記述及び第2の記述を量子化点...、-2、-1、0、1、2、...の周りで復号することをさらに含み得る。
【0065】
いくつかの実施例では、第2の記述は、動きベクトルのみを含み得る。
【0066】
いくつかの実施例では、H.265ビデオ・データは、Iフレーム又はサブフレーム(I)と、Pフレーム又はサブフレーム(P)とから構成されるピクチャ・グループ(GOP)、たとえば、IPPPPIPPP.....IPPPPに符号化され得る。以下では、便宜上、「フレーム」及び「サブフレーム」という用語は互換的に使用され得る。GOP中の多くのIフレームの使用は、それが、Pフレームによって構成されるペイロードよりも10倍大きくなることさえある大きいペイロードを補い得るので、不利であり得る。一方、それは、Iフレームが、メモリを使用せずに復号され得るので、ロバストネスの利点を提供し、誤りからの回復が速くなる。通常、前のIフレーム又はPフレームに基づく、多くのPフレームの使用は、それが、小さいコンパクトなペイロードを埋め合わせ得るので、有利であり得る。とはいえ、それは、誤り伝搬が次のIフレームの開始まで広がり得るという欠点を有する。
【0067】
本出願人は、単一のIフレームと、その後に続く、複数のPフレームとからなるGOPでは、選択されるPフレームの数Mが、低ビット・レート、ただし長い誤り伝搬時間に寄与する、大きいMと、高ビット・レート、ただし短い誤り伝搬時間に寄与する、小さいMとの間のトレードオフを必要とすることを、了解している。出願人は、大きいMによって提供される低ビット・レートと、小さいMによって提供される短い誤り伝搬レートとを利用するために、GOPが、長い誤り伝搬時間を防ぐために、単一のIフレーム(又はIサブフレーム)と、その後に続く、比較的小さい数MのPフレーム(又はPサブフレーム)とを含み得るが、パケットが正常に受信されているというデコーダからのフィードバックを組み込むことによって、エンコーダが、Iフレームを送る必要なしにPフレームを送信することを継続し得ることを、さらに了解している。
【0068】
UDPパケットはデコーダによって受信されないことがあり、UDPは、一般に、ACKメッセージを採用しない。したがって、出願人は、フィードバックを提供するための、各フレームのすべてのUDPパケットが受信されたときに(又はサブフレームのすべてのパケットが受信されたときに)アプリケーション・レイヤ上でデコーダからエンコーダに送られ得る、ACKメッセージを導入している。
【0069】
各UDPパケットは、パケット中の現在フレームの数に関する情報を含み得、送信されるべき次のIフレームのインデックス番号をさらに含み得る。ACKメッセージは、エンコーダによって受信されないことがあるか、又はある遅延を伴って到着し得るので、ACKメッセージの受信時に、エンコーダは、UDPパケット中の次のIフレームのインデックス番号を、新しいインデックス番号と交換し得、新しいインデックス番号は、ACKが受信された最後の受信されたフレームのインデックス番号と、最後の受信されたフレームに続くPフレームの数Mとを含み得る。エンコーダが、M個のPフレームの送信に続く新しいACKメッセージを受信しない場合、エンコーダは、Iフレームを含む新しいGOPを送信することに戻り得る。
【0070】
本出願人による上記の了解によって説明される方法の実装は、1つ又は複数の利益又は利点、たとえば、以下を提供し得る。
【0071】
(a)誤りがない限り、Pフレーム・パケットのみが送られ得る。
【0072】
(b)ダウンロード・レイテンシとアップロード・レイテンシとの間につながり(connection)がないので、アップロード・レイテンシは比較的大きくなり得る。
【0073】
(c)アップロード・フレームについての遅延要件は、比較的達成しやすいことがあるM個のフレームである。
【0074】
(d)アップロードについてのパケット誤り率(PER:packet error rate)は、M-1/Mによって表現され得、たとえば、70%のPERが許容可能である。
【0075】
(e)誤り伝搬は、M個のフレームに限定され得、平均誤り伝搬はM/2個のフレームに限定され得る。及び/又は
【0076】
(f)Iフレーム・パケットとPフレーム・パケットとの間の比は、UDP PERに従い得、したがって、UDP PERレートの変化がある場合、Iフレーム対Pフレーム比の変化もあり得る。
【0077】
PERはUDPの特性である。前方誤り訂正(FEC)が使用され得るが、時々、FECは失敗することがあり、それにより、代替として、前のフレームに基づく隠蔽方法を使用して、失われたパケットを補う。このタイプの隠蔽方法は、それが送信ペイロードを必要としないので、「ゼロ・オーバーヘッド隠蔽」と呼ばれることがある。しかしながら、隠蔽イベントは、1つのフレームよりも長くなり得、誤り伝搬により次のIフレームまで継続し、隠蔽中に、ビデオ品質が妥当な品質に維持されることを必要とし得る。
【0078】
本出願人は、ゼロ・オーバーヘッド隠蔽に関連する問題が、別々のUDPパケット中でビデオ・データの複数の記述を送信することによって克服され得ることを、さらに了解している。随意に、複数の記述は、各々がUDPパケット中で送信される、2つの記述を含み得る。次いで、デコーダは、受信された場合、すべての送信パケットを使用し得るか、又は代替的に、本明細書で以下で説明され、以下で「小さいオーバーヘッド隠蔽」と呼ばれる、方法における、受信されたパケットのみを使用し得る。随意に、2つの記述のみが送信された場合、デコーダは、2つのUDPパケットが受信された場合、2つの記述を使用し、1つのみが受信された場合、1つの記述のみを使用し得る。
【0079】
本発明の第1の実施例では、エンコーダは、DCTタップをジグザグ順序で配列し得、Q1<<Q2であるようにそれらの値Qを量子化し得、次いで、第1の記述が、偶数タップについてのQ1と奇数タップについてのQ2とを含み得、第2の記述が、奇数タップについてのQ1と偶数タップについてのQ2とを含み得る、2つの記述を作成し得る。2つの記述は、次いで、別々のUDPパケット中で送られ得、1つの記述のみが到着したのか、両方の記述が到着したのかに基づいて、デコーダによって復号され得る。1つの記述のみが到着した場合、デコーダは、次いで、小さいオーバーヘッド隠蔽のためにその記述を使用し得る。両方の記述が到着した場合、デコーダは、加重平均を使用して第1の記述中のタップを第2の記述中のタップと平均化するために、最大比合成(MRC)を使用し得る。各記述では、Q2において量子化されたタップの大部分は、「0」に等しく、それにより、パケット・ペイロードの小さい部分を占有し得る。フレーム間予測では、エンコーダは、両方の記述が、デコーダによって受信され、参照画像を生成するためにMRCを実施された、と仮定し得る。
【0080】
本発明の第2の実施例では、エンコーダは、DCTタップをジグザグ順序で配列し得、2つの記述、すなわち、第1の記述中の、点...、-5、-3、-1、0、2、4、6、...の周りで量子化されたDCTタップの量子化値Qと、第2の記述中の、点...-6、-4、-2、0、1、3、5、...の周りで量子化されたDCTタップの量子化値Qとを作成し得る。2つの記述は、別々のUDPパケット中で送られ得、1つの記述のみが到着したのか、両方の記述が到着したのかに基づいて、デコーダによって復号され得る。1つの記述のみが到着した場合、デコーダは、次いで、小さいオーバーヘッド隠蔽のためにその記述を使用し得る。両方の記述が到着した場合、デコーダは、解像度をもつ量子化点...-2、-1、0、1、2...の周りで、受信された記述を復号し得る。各記述中の長さ(ペイロード)は、完全な記述(...-2、-1、0、1、2...)よりもはるかに小さいことに留意されたい。一般的なバジェットでは、タップごとの平均ビット・レートが1.5よりも低いとき、各記述の長さは、完全な記述の約1/2であり得ると推定され得る。
【0081】
本発明の第3の実施例では、エンコーダは、DCTタップをジグザグ順序で配列し得、2つの記述、すなわち、第1の記述中の、点...、-9、-6、-3、0、1、2、3、...の周りで量子化されたDCTタップの量子化値Qと、第2の記述中の、点...-3、-2、-1、0、1、6、9、...の周りで量子化されたDCTタップの量子化値Qとを作成し得る。2つの記述は、別々のUDPパケット中で送られ得、1つの記述のみが到着したのか、両方の記述が到着したのかに基づいて、デコーダによって復号され得る。1つの記述のみが到着した場合、デコーダは、次いで、小さいオーバーヘッド隠蔽のためにその記述を使用し得る。両方の記述が到着した場合、デコーダは、解像度をもつ量子化点...-2、-1、0、1、2...の周りで、受信された記述を復号し得る。各記述中の長さ(ペイロード)は、完全な記述(...-2、-1、0、1、2...)よりもはるかに小さいことに留意されたい。一般的なバジェットでは、タップごとの平均ビット・レートが1.5よりも低いとき、各記述の長さは、完全な記述の約1/2であり得ると推定され得る。
【0082】
本発明の第4の実施例では、エンコーダは、Pフレームについて2つの記述を作成し得る。第1の記述は完全な記述を含み得、第2の記述は、残差のDCTなしの動きベクトル(MV:motion vector)を含み得る。2つの記述は、別々のUDPパケット中で送られ得、1つの記述のみが到着したのか、両方の記述が到着したのかに基づいて、デコーダによって復号され得る。1つの記述のみが到着した場合、デコーダは、次いで、小さいオーバーヘッド隠蔽のためにその記述を使用し得る。第1の記述が到着した場合、デコーダはその記述を使用し得る。第1の記述が到着しない場合、デコーダは、MVについて第2の記述を使用し得、残差について「0」を使用し得る。随意に、第2の記述が100%オーバーヘッドであるので、第2の記述におけるMV解像度は、第2の記述のビット・レートを低減するために、第1の記述におけるMV解像度よりも低くなり得る。
【0083】
本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信におけるビット・レート及び誤り伝搬を最小限に抑える例示的な方法のフロー・チャートである
図5が参照される。本方法は、より多くのステップを用いて又はより少ないステップを用いて、及び/或いは、随意に、異なる順序で配列されたステップを用いて実施され得る。
【0084】
ステップ500において、単一のIフレーム(I)と複数のPフレーム(P)とをもつGOPが符号化され得る。随意に、全フレームの代わりに、サブフレームが使用され得る(Iサブフレーム及びPサブフレーム)。Pフレームの数Mは、長い伝搬誤りを回避するために、比較的小さく選択され、たとえば、M=4であり得る。すなわち、M=4を使用することが、GOP=IPPPPを与え、3の場合、GOP=IPPPPIPPPPIPPPPを与える。
【0085】
ステップ502において、各フレーム(又はサブフレーム)は、UDPパケットにパケット化され得る。各パケット・ペイロードは、ペイロード中に現在フレーム(又はサブフレーム)に関連するインデックス番号を含み得る。ペイロードは、(後続のGOP中で)送信されるべき次のIフレーム(又はサブフレーム)に関連するインデックス番号をも含み得る。
【0086】
ステップ504において、すべてのUDPパケットがデコーダに送られ得る。
【0087】
ステップ506において、デコーダは、すべてのUDPパケットが受信されたことを検査し得る。はいの場合、108に進む。いいえの場合、デコーダは、新しいフレーム(又はサブフレーム)を待つことを継続する。
【0088】
ステップ508において、デコーダは、フレーム又はサブフレームのすべてのパケットが受信されたことを指示するACKメッセージを、エンコーダに送り得る。
【0089】
ステップ510において、ACKメッセージが受信されたかどうかを確かめるために、エンコーダにおいて検査が行われ得る。はいの場合、ステップ512に進む。いいえの場合、ステップ514に進む。
【0090】
ステップ512において、エンコーダはパケット中で、送信されるべき次のIフレームのインデックス番号(NnextI)を、受信され、それについてACKメッセージが受信された最後のフレーム(又はサブフレーム)に関連するインデックス番号(N)、及びACKメッセージに関連するフレームに続いて送られているPフレームの数4と、交換し得る。エンコーダは、ACKメッセージが、Iフレームを送ることなしにデコーダから受信されている限り、4つのPフレーム(又はサブフレーム)のグループを送ることを継続し得る。
【0091】
ステップ514において、エンコーダは、4つのPフレームを送信するために終了する。これに続いて、ステップ502に進む。送信されるべき後続のフレームは、次のGOPに関連するIフレームであり得る。
【0092】
本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する例示的な方法のフローチャートである
図6が参照される。本方法は、より多くのステップを用いて又はより少ないステップを用いて、及び/或いは、随意に、異なる順序で配列されたステップを用いて実施され得る。
【0093】
ステップ600において、フレーム(又はサブフレーム)に関連するDCTタップは、エンコーダによってジグザグ順序で配列され得る。
【0094】
ステップ602において、DCTタップは、2つの値Q1及びQ2で量子化され得、ここで、Q1<<Q2である。随意に、Q2は、Q1の少数整数倍(fractional integer multiple)、たとえば、Q2=3.5×Q1である。
【0095】
ステップ604において、エンコーダは、偶数タップについてのQ1と奇数タップについてのQ2とを使用して、フレーム(又はサブフレーム)の第1の記述を作成し得る。
【0096】
ステップ606において、エンコーダは、奇数タップについてのQ1と偶数タップについてのQ2とを使用して、フレーム(又はサブフレーム)の第2の記述を作成し得る。
【0097】
ステップ608において、第1の記述と第2の記述とは、各々パケット化され、別々のUDPパケット中でデコーダに別々に送られ得る。
【0098】
ステップ610において、デコーダは、第1の記述及び第2の記述が到着したかどうかを確かめるために検査し得る。それらの記述のうちの1つのみが到着した場合、ステップ612に進む。両方が到着した場合、ステップ614に進む。
【0099】
ステップ612において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、受信された記述(第1又は第2)を使用し得る。
【0100】
ステップ614において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、両方の受信された記述を使用し得る。デコーダは、両方の記述中のDCTタップ間で平均化するためにMRCを実施し得る。
【0101】
本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する例示的な方法のフローチャートである
図7が参照される。本方法は、より多くのステップを用いて又はより少ないステップを用いて、及び/或いは、随意に、異なる順序で配列されたステップを用いて実施され得る。
【0102】
ステップ700において、フレーム(又はサブフレーム)に関連するDCTタップは、エンコーダによってジグザグ順序で配列され得る。
【0103】
ステップ702において、デコーダは、量子化点...、-5、-3、-1、0、2、4、6、...の周りで量子化されたDCTタップを伴う、フレーム(又はサブフレーム)の第1の記述を作成し得る。
【0104】
ステップ704において、デコーダは、量子化点...、-6、-4、-2、0、1、3、5、...の周りで量子化されたDCTタップを伴う、フレーム(又はサブフレーム)の第2の記述を作成し得る。
【0105】
ステップ706において、第1の記述と第2の記述とは、各々パケット化され、別々のUDPパケット中でデコーダに別々に送られ得る。
【0106】
ステップ708において、デコーダは、第1の記述及び第2の記述が到着したかどうかを確かめるために検査し得る。それらの記述のうちの1つのみが到着した場合、ステップ710に進む。両方の記述が到着した場合、ステップ712に進む。
【0107】
ステップ710において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、受信された記述(第1又は第2)を使用し得る。
【0108】
ステップ712において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、両方の受信された記述を使用し得る。たとえば、デコーダは、量子化点...、-2、-1、0、1、2、...の周りで復号し得る。
【0109】
本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する例示的な方法のフローチャートである
図8が参照される。本方法は、より多くのステップを用いて又はより少ないステップを用いて、及び/或いは、随意に、異なる順序で配列されたステップを用いて実施され得る。
【0110】
ステップ800において、フレーム(又はサブフレーム)に関連するDCTタップは、エンコーダによってジグザグ順序で配列され得る。
【0111】
ステップ802において、デコーダは、量子化点...、-9、-6、-3、0、1、2、3、...の周りで量子化されたDCTタップを伴う、フレーム(又はサブフレーム)の第1の記述を作成し得る。
【0112】
ステップ804において、デコーダは、量子化点...、-3、-2、-1、0、3、6、9、...の周りで量子化されたDCTタップを伴う、フレーム(又はサブフレーム)の第2の記述を作成し得る。
【0113】
ステップ806において、第1の記述と第2の記述とは、各々パケット化され、別々のUDPパケット中でデコーダに別々に送られ得る。
【0114】
ステップ808において、デコーダは、第1の記述及び第2の記述が到着したかどうかを確かめるために検査し得る。それらの記述のうちの1つのみが到着した場合、ステップ810に進む。両方の記述が到着した場合、ステップ812に進む。
【0115】
ステップ810において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、受信された記述(第1又は第2)を使用し得る。
【0116】
ステップ812において、デコーダは、小さいオーバーヘッド隠蔽を実施するために、両方の受信された記述を使用し得る。デコーダは、たとえば、量子化点...、-2、-1、0、1、2、...の周りで復号し得る。
【0117】
本発明のいくつかの例示的な実施例による、UDPパケットを使用するビデオ送信における小さいオーバーヘッド隠蔽を実施する第4の例示的な方法のフローチャートである
図9が参照される。本方法は、より多くのステップを用いて又はより少ないステップを用いて、及び/或いは、随意に、異なる順序で配列されたステップを用いて実施され得る。
【0118】
ステップ900において、フレーム(又はサブフレーム)に関連するDCTタップは、エンコーダによってジグザグ順序で配列され得る。
【0119】
ステップ902において、デコーダは、フレームの完全な記述であり得る、フレーム(又はサブフレーム)の第1の記述を作成し得る。
【0120】
ステップ904において、デコーダは、動きベクトル(MV)のみを含み得、残差のDCTなしの、フレーム(又はサブフレーム)の第2の記述を作成し得る。
【0121】
ステップ906において、第1の記述と第2の記述とは、各々パケット化され、別々のUDPパケット中でデコーダに別々に送られ得る。
【0122】
ステップ908において、デコーダは、第1の記述が到着したかどうかを確かめるために検査し得る。第1の記述が到着した場合、ステップ910に進む。第1の記述が到着しない場合、ステップ912に進む。
【0123】
ステップ910において、デコーダは、小さいオーバーヘッド隠蔽を実施するために第1の記述を使用し得る。
【0124】
ステップ912において、デコーダは、小さいオーバーヘッド隠蔽を実施するために第2の記述を使用し得る。デコーダは、MVを使用して、及び、残差について「0」を使用して、復号し得る。
【0125】
いくつかの実施例は、UDPパケット中でビデオ・データを送信するための、及びパケット誤り隠蔽のための、方法及びシステムを含み得る。ビデオを送信する方法は、エンコーダにおいて、ビデオ・データを、単一のIフレームと複数のPフレームとを各々有するピクチャ・グループ(GOP)に符号化することと、UDPパケット中でGOPの各フレーム又はサブフレームを送信することとを含む。本方法は、デコーダにおいて、送信されたUDPパケットのすべての受信を検査することと、すべての送信されたUDPパケットの受信に応答してデコーダからエンコーダにフィードバックを送ることとを含む。誤り隠蔽の方法は、エンコーダにおいて、フレーム又はサブフレームに関連するDCTタップをジグザグ順序で配列することと、DCTタップを量子化することと、量子化されたDCTタップからフレーム又はサブフレームの第1の記述を作成することと、量子化されたDCTタップからフレーム又はサブフレームの第2の記述を作成することと、第1の記述と第2の記述とを別々のUDPパケット中でデコーダに送ることとを含む。
【0126】
いくつかの実施例では、UDPパケット中でビデオ・データを送信する方法は、エンコーダにおいて、ビデオ・データを、単一のIフレームと複数のPフレームとを各々含むピクチャ・グループ(GOP)に符号化することと、UDPパケット中でGOPの各フレーム又はサブフレームを送信することと、デコーダにおいて、前記送信されたUDPパケットのすべての受信を検査することと、前記送信されたUDPパケットのすべての受信に応答して前記デコーダから前記エンコーダにフィードバックを送ることとを含み得る。いくつかの実施例では、前記フィードバックは確認応答(ACK)メッセージを含む。
【0127】
いくつかの実施例では、本方法は、各UDPパケット中に、(i)送信されているフレーム又はサブフレームに関連するインデックス番号と、(ii)送信されるべき後続のIフレーム又はIサブフレームに関連するインデックス番号とを含めることをさらに含む。
【0128】
いくつかの実施例では、前記ACKメッセージは、最後の受信されたフレームに関連するインデックス番号を含む。
【0129】
いくつかの実施例では、本方法は、前記ACKメッセージを受信すると、前記エンコーダが、(I)前記後続のIフレーム又はIサブフレームに関連する前記インデックス番号を、(II)前記ACKメッセージ中の前記インデックス番号に関連する新しいインデックス番号と交換することを含む。いくつかの実施例では、前記新しいインデックス番号は、前記複数のPフレーム中のPフレームの数を含む。いくつかの実施例では、本方法は、前記フィードバックに応答してPフレーム又はPサブフレームのみを送信することを含む。いくつかの実施例は、UDPビデオ送信におけるパケット誤り隠蔽の方法を含み得る。本方法は、エンコーダにおいて、フレーム又はサブフレームに関連するDCTタップをジグザグ順序で配列することと、前記DCTタップを量子化することと、前記量子化されたDCTタップから前記フレーム又はサブフレームの第1の記述を作成することと、前記量子化されたDCTタップから前記フレーム又はサブフレームの第2の記述を作成することと、前記第1の記述と前記第2の記述とを別々のUDPパケット中でデコーダに送ることとを含み得る。
【0130】
いくつかの実施例では、前記DCTタップを量子化することは、Q1<<Q2であるような2つの値Q1及びQ2を含む。いくつかの実施例では、前記第1の記述は、偶数タップについてのQ1と、奇数タップについてのQ2とを含む。他の実施例では、前記第1の記述は、奇数タップについてのQ1と、偶数タップについてのQ2とを含む。
【0131】
いくつかの実施例では、前記第1の記述中の前記DCTタップは、量子化点...、-5、-3、-1、0、2、4、6...の周りで量子化される。いくつかの実施例では、前記第2の記述中の前記DCTタップは、量子化点...、-6、-4、-2、0、1、3、5...の周りで量子化される。いくつかの実施例では、前記第1の記述中の前記DCTタップは、量子化点...、-9、-6、-3、0、1、2、3...の周りで量子化される。いくつかの実施例では、前記第2の記述中の前記DCTタップは、量子化点...、-3、-2、-1、0、3、6、9...の周りで量子化される。いくつかの実施例では、本方法は、デコーダにおいて、パケット誤り隠蔽のために前記第1の記述を使用することをさらに含む。いくつかの実施例では、本方法は、デコーダにおいて、パケット誤り隠蔽のために前記第2の記述を使用することをさらに含む。いくつかの実施例では、本方法は、デコーダにおいて、前記第1の記述中の前記量子化されたDCTタップを前記第2の記述中の前記量子化されたDCTタップと平均化するために、最大比合成(MRC)を使用することをさらに含む。いくつかの実施例では、前記平均化することは加重平均化することを含む。
【0132】
いくつかの実施例では、本方法は、デコーダにおいて、前記第1の記述及び第2の記述を量子化点...、-2、-1、0、1、2、...の周りで復号することをさらに含む。
【0133】
いくつかの実施例では、本方法は、動きベクトルのみを前記第2の記述中に含めることをさらに含む。
【0134】
本発明のいくつかの追加の実施例が本明細書で説明され、それらの実施例は、随意に、前に説明された実施例の特徴及び/又は構成要素及び/又はステップと組み合わせられ得る。
【0135】
本明細書の説明の部分は、例示のために、ワイヤード・リンク及び/又はワイヤード通信に関するが、いくつかの実施例は、この点について限定されず、むしろ、ワイヤード通信及び/又はワイヤレス通信を利用し得、1つ又は複数のワイヤード及び/又はワイヤレス・リンクを含み得、ワイヤード通信及び/又はワイヤレス通信の1つ又は複数の構成要素を利用し得、並びに/或いはワイヤレス通信の1つ又は複数の方法又はプロトコル又は規格を利用し得る。
【0136】
いくつかの実施例は、一般的なコンピュータでない専用機械又は特定目的デバイスを使用することによって、或いは一般的でないコンピュータ又は非汎用コンピュータ若しくは機械を使用することによって、実装され得る。そのようなシステム又はデバイスは、「一般的なコンピュータ」の一部でない、及び「汎用コンピュータ」の一部でない、1つ又は複数の構成要素又はユニット又はモジュール、たとえば、セルラー・トランシーバ、セルラー送信機、セルラー受信機、GPSユニット、ロケーション決定ユニット、(1つ又は複数の)加速度計、(1つ又は複数の)ジャイロスコープ、デバイス配向検出器若しくはセンサー、デバイス測位検出器若しくはセンサーなどを利用し得るか、又はそれらを備え得る。
【0137】
いくつかの実施例は、自動化された方法若しくは自動化されたプロセス、又は、機械実装方法若しくはプロセスとして、又はそれらを利用することによって、実装されるか、或いは、半自動化された又は部分的に自動化された方法又はプロセスとして実装されるか、或いは、コンピュータ又は機械又はシステム又は他のデバイスによって実行又は実施され得る、ステップ又は動作のセットとして実装され得る。
【0138】
いくつかの実施例は、プロセッサ又は機械又はコンピュータによって実行されたとき、プログラム又はコード又は命令が、そのようなプロセッサ又は機械又はコンピュータに、本明細書で説明される方法又はプロセスを実施させるように、非一時的記憶媒体又は非一時的記憶物品(たとえば、CD-ROM、DVD-ROM、物理メモリ・ユニット、物理記憶ユニット)に記憶され得る、コード又はプログラム・コード又は機械可読命令又は機械可読コードを使用することによって実装され得る。そのようなコード又は命令は、たとえば、(限定はしないが)高水準プログラミング言語、低水準プログラミング言語、オブジェクト指向プログラミング言語、視覚プログラミング言語、コンパイル型プログラミング言語、インタープリタ型プログラミング言語、C、C++、C#、Java、JavaScript、SQL、Ruby on Rails、Go、Cobol、Fortran、ActionScript、AJAX、XML、JSON、Lisp、Eiffel、Verilog、ハードウェア記述言語(HDL、BASIC、Visual BASIC、Matlab、Pascal、HTML、HTML5、CSS、Perl、Python、PHP、機械言語、機械コード、アセンブリ言語などにおけるコード又は命令を含む、ソフトウェア、ソフトウェア・モジュール、アプリケーション、プログラム、サブルーチン、命令、命令セット、コンピューティング・コード、ワード、値、シンボル、ストリング、変数、ソース・コード、コンパイル型コード、インタープリタ型コード、実行可能コード、静的コード、動的コードのうちの1つ又は複数であり得るか、或いはそれらのうちの1つ又は複数を含み得る。
【0139】
たとえば、「処理すること」、「算出すること」、「計算すること」、「決定すること」、「確立すること」、「分析すること」、「検査すること」、「検出すること」、「測定すること」などの用語を利用する本明細書の説明は、レジスタ及び/又はアキュムレータ及び/又はメモリ・ユニット及び/又は記憶ユニット内の物理(たとえば、電子)量として表されるデータを、自動的に又は自律的に他のデータに操作及び/又は変換し得るか、或いは他の好適な動作を実施し得る、プロセッサ、コンピュータ、コンピューティング・プラットフォーム、コンピューティング・システム、又は他の電子デバイス若しくはコンピューティング・デバイスの、(1つ又は複数の)動作及び/又は(1つ又は複数の)プロセスを指し得る。
【0140】
本明細書で使用される、「複数(plurality)」及び「複数(a plurality)」という用語は、たとえば、「複数(multiple)」又は「2つ又はそれ以上」を含む。たとえば、「複数の項目(a plurality of items)」は、2つ又はそれ以上の項目を含む。
【0141】
「一実施例(one embodiment)」、「一実施例(an embodiment)」、「例示的な実施例」、「様々な実施例」、「いくつかの実施例」、及び/又は同様の用語への言及は、そのように説明される(1つ又は複数の)実施例が、随意に、特定の特徴、構造、又は特性を含み得るが、あらゆる実施例が、必ずしも、その特定の特徴、構造、又は特性を含むとは限らないことを、指示し得る。さらに、「一実施例では」という句の繰り返される使用は、同じ実施例を指し得るが、その使用は、必ずしも、同じ実施例を指すとは限らない。同様に、「いくつかの実施例では」という句の繰り返される使用は、実施例の同じセット又はグループを指し得るが、その使用は、必ずしも、実施例の同じセット又はグループを指すとは限らない。
【0142】
別段に規定されていない限り、本明細書で使用される、項目又はオブジェクトを説明するための、「第1の」、「第2の」、「第3の」、「第4の」などの序数形容詞の利用は、そのような同様の項目又はオブジェクトの異なるインスタンスが言及されていることを指示するにすぎず、そのように説明される項目又はオブジェクトが、時間的に、空間的に、ランク付けにおいて、又は任意の他の順序付け様式においてのいずれかで、特定の所与のシーケンスにおけるものでなければならないかのように暗示するものではない。
【0143】
いくつかの実施例は、様々なデバイス及びシステム、たとえば、パーソナル・コンピュータ(PC:Personal Computer)、デスクトップ・コンピュータ、モバイル・コンピュータ、ラップトップ・コンピュータ、ノートブック・コンピュータ、タブレット・コンピュータ、サーバ・コンピュータ、ハンドヘルド・コンピュータ、ハンドヘルド・デバイス、携帯情報端末(PDA:Personal Digital Assistant)デバイス、ハンドヘルドPDAデバイス、タブレット、オンボード・デバイス、オフボード・デバイス、ハイブリッド・デバイス、車両デバイス、非車両デバイス、モバイル又はポータブル・デバイス、消費者デバイス、非モバイル又は非ポータブル・デバイス、器具、ワイヤレス通信局、ワイヤレス通信デバイス、ワイヤレス・アクセス・ポイント(AP:Access Point)、ワイヤード又はワイヤレス・ルータ又はゲートウェイ又はスイッチ又はハブ、ワイヤード又はワイヤレス・モデム、ビデオ・デバイス、オーディオ・デバイス、オーディオ・ビデオ(A/V:audio-video)デバイス、ワイヤード又はワイヤレス・ネットワーク、ワイヤレス・エリア・ネットワーク、ワイヤレス・ビデオ・エリア・ネットワーク(WVAN:Wireless Video Area Network)、ローカル・エリア・ネットワーク(LAN:Local Area Network)、ワイヤレスLAN(WLAN:Wireless LAN)、パーソナル・エリア・ネットワーク(PAN:Personal Area Network)、ワイヤレスPAN(WPAN:Wireless PAN)などにおいて、或いはそれらとともに使用され得る。
【0144】
いくつかの実施例は、一方向及び/又は双方向無線通信システム、セルラー無線電話通信システム、モバイル・フォン、セルラー電話、ワイヤレス電話、パーソナル通信システム(PCS:Personal Communication System)デバイス、ワイヤレス通信能力を組み込むPDA又はハンドヘルド・デバイス、モバイル又はポータブル全地球測位システム(GPS:Global Positioning System)デバイス、GPS受信機又はトランシーバ又はチップを組み込むデバイス、RFID要素又はチップを組み込むデバイス、多入力多出力(MIMO:Multiple Input Multiple Output)トランシーバ又はデバイス、単入力多出力(SIMO:Single Input Multiple Output)トランシーバ又はデバイス、多入力単出力(MISO:Multiple Input Single Output)トランシーバ又はデバイス、1つ又は複数の内部アンテナ及び/又は外部アンテナを有するデバイス、デジタル・ビデオ・ブロードキャスト(DVB:Digital Video Broadcast)デバイス又はシステム、多規格無線デバイス又はシステム、ワイヤード又はワイヤレス・ハンドヘルド・デバイス、たとえば、スマートフォン、ワイヤレス・アプリケーション・プロトコル(WAP:Wireless Application Protocol)デバイスなどとともに使用され得る。
【0145】
いくつかの実施例は、無料で又は有料で、「アプリ・ストア」又は「アプリケーション・ストア」からダウンロード又は取得され得るか、或いはコンピューティング・デバイス又は電子デバイスにプリインストールされ得るか、或いは、さもなければ、そのようなコンピューティング・デバイス又は電子デバイスにトランスポート及び/又はインストールされ得る、「アプリ」又はアプリケーションを備え得るか、或いはそれらを使用することによって実装され得る。
【0146】
いくつかの実施例は、ユーザ・データグラム・プロトコル(UDP)オーバー・インターネット・プロトコル(IP)通信リンクを介してビデオを送信する方法を含む。本方法は、ビデオ・エンコーダによって前記ビデオの各フレームごとに圧縮データのN個のパケットのセットを生成することであって、Nが自然数である、生成することと、前記ビデオの特定のフレームについてN個のパケットの各セットを生成すると、前記ビデオの他のビデオ・フレームの符号化又はパケット化を待つことなしに、前記UDPオーバーIP通信リンクを介して、単一の符号化されたビデオ・フレームに対応するN個のパケットの前記セットの前記送信を直ちに実施することとを含み、前記ビデオ・フレームの各パケットは、少なくとも、(i)粗いビデオ・データ・パケット部分と、(ii)細かいビデオ・データ・パケット部分とを含む。
【0147】
いくつかの実施例では、本方法は、各パケットの粗いビデオ・データ・パケット部分について、バイト単位の固定サイズ(S2)を維持することであって、サイズ(S2)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの全体にわたって固定される、維持することと、各パケットの細かいビデオ・データ・パケット部分について、バイト単位の固定サイズ(S3)を維持することであって、サイズ(S3)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの全体にわたって固定される、維持することとを含む。いくつかの実施例では、本方法は、前記ビデオの異なるフレームについて、利用されるS2の値とS3の値とを動的に変えることを含み、S2の前記値は、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS2の異なる値に変わり、S3の値は、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS3の異なる値に変わる。
【0148】
いくつかの実施例では、本方法は、特定のフレームについての細かいビデオ・データという犠牲を払って、前記特定のフレームについての増加された量の粗いビデオ・データを収容するために、粗いビデオ・データ・パケット部分のサイズを動的に増加させ、それぞれ細かいビデオ・データ・パケット部分のサイズを動的に低減することを含む。
【0149】
いくつかの実施例では、本方法は、ビデオ・フレームごとに送信されるパケットのセットにおいて、粗いビデオ・データを搬送するための粗いビデオ・データ・パケット部分の第1の数(C1)を指定することと、粗いビデオ・データを搬送する代わりに、前記粗いビデオ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するための粗いビデオ・データ・パケット部分の第2の数(C2)を指定することとを含む。
【0150】
いくつかの実施例では、本方法は、ビデオ・フレームごとに送信されるパケットのセットにおいて、細かいビデオ・データを搬送するための細かいビデオ・データ・パケット部分の第1の数(F1)を指定することと、細かいビデオ・データを搬送する代わりに、前記細かいビデオ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するための細かいビデオ・データ・パケット部分の第2の数(F2)を指定することとを含む。
【0151】
いくつかの実施例では、本方法は、C1の値と、C2の値と、F1の値と、F2の値とを選択することを含み、Nが、特定のビデオ・フレームについて送信されるパケットの総数であり、C1+C2=Nであり、F1+F2=Nであり、F1>C1である。上記で使用された及び/又は本明細書で使用される「選択すること」という用語は、たとえば、定義すること、構成すること、設定すること、あらかじめ定義されたオプションのあらかじめ定義されたリストから選定すること、1つ又は複数のあらかじめ定義された選択ルールに基づいて選定すること、ビデオごとに又はフレームごとに又は他のものごとに(たとえば、10秒又は30秒又は60秒など、T秒にわたるビデオ・セグメントごとに)値を定義すること、或いは、さもなければ、1つ又は複数のあらかじめ定義された基準若しくは条件に基づいて、又はあらかじめ設定された値に基づいて、(1つ又は複数の)そのような値を決定することを含み得る。
【0152】
いくつかの実施例では、本方法は、Nの値と、C1の値と、C2の値と、F1の値と、F2の値とを選択することを含み、Nは9であり、C1は5であり、C2は4であり、F1は8であり、F2は1である。
【0153】
いくつかの実施例では、本方法は、前記ビデオ・フレームの各パケットが、(i)ヘッダ・パケット部分と、(ii)粗いビデオ・データ・パケット部分と、(iii)細かいビデオ・データ・パケット部分とを含む、を含み、本方法は、単一の特定のビデオ・フレームに対応するパケットのセット中の各パケットのヘッダ・パケット部分について、バイト単位の固定サイズ(S1)を維持することであって、サイズ(S1)が、パケットの前記セットの全体にわたって固定される、維持することと、各パケットの粗いビデオ・データ・パケット部分について、バイト単位の固定サイズ(S2)を維持することであって、サイズ(S2)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの全体にわたって固定される、維持することと、各パケットの細かいビデオ・データ・パケット部分について、バイト単位の固定サイズ(S3)を維持することであって、サイズ(S3)が、前記単一の特定のビデオ・フレームに対応するパケットの前記セットの全体にわたって固定される、維持することとを含む。
【0154】
いくつかの実施例では、前記ビデオ・フレームの各パケットは、(i)ヘッダ・パケット部分と、(ii)粗いビデオ・データ・パケット部分と、(iii)細かいビデオ・データ・パケット部分とを含み、本方法は、前記ビデオの異なるフレームについて、利用されるS1の値と、S2の値と、S3の値とを動的に変えることを含み、S1の値は、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS1の異なる値に変わり、S2の値は、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS2の異なる値に変わり、S3の値は、前記ビデオの各フレームのすべてのパケットにわたって固定されたままであるが、前記ビデオの少なくとも1つの他のフレームにおいてS3の異なる値に変わる。
【0155】
いくつかの実施例では、本方法は、ビデオ・フレームのN個のパケットの前記セットにおいて、ビデオ・ヘッダ・データを搬送するためのビデオ・ヘッダ・データ・パケット部分の第1の数(H1)を指定することと、ビデオ・ヘッダ・データを搬送する代わりに、前記ビデオ・ヘッダ・データの前方誤り訂正(FEC)コードについての冗長データを搬送するためのビデオ・ヘッダ・データ・パケット部分の第2の数(H2)を指定することとを含む。
【0156】
いくつかの実施例では、本方法は、Nの値と、H1の値と、H2の値と、C1の値と、C2の値と、F1の値と、F2の値とを選択することを含み、C1<F1であり、H1はC1よりも小さいか又はそれに等しい。
【0157】
いくつかの実施例では、本方法は、Nの値と、H1の値と、H2の値と、C1の値と、C2の値と、F1の値と、F2の値とを選択することを含み、Nは9であり、H1は3であり、H2は4であり、C1は5であり、C2は4であり、F1は8であり、F2は1である。
【0158】
いくつかの実施例では、本方法は、特定のフレームの細かいビデオ・データを搬送するために指定された細かいビデオ・データ・パケット部分の数が、前記特定のフレームについてのすべての細かいビデオ・データを搬送するには十分でない場合、細かいビデオ・データの前方誤り訂正(FEC)コードの冗長バイトを記憶するために前に指定された少なくとも1つの細かいビデオ・データ・パケット部分に、前記特定のフレームの細かいビデオ・データを記憶することを含む。
【0159】
いくつかの実施例では、本方法は、特定のフレームの細かいビデオ・データを搬送するために指定された細かいビデオ・データ・パケット部分の数が、前記特定のフレームについてのすべての細かいビデオ・データを搬送するには十分でない場合、F1の値を動的に増加させ、それぞれF2の値を動的に減少させることを含む。
【0160】
いくつかの実施例では、本方法は、前記ビデオ送信を受信するように動作する受信デバイスにおいて、特定のビデオ・フレームについて受信された受信されたビデオ・ヘッダ部分中の情報に基づいて、前記特定のビデオ・フレームのパケットのセットについてF1の新しい値とF2の新しい値とを決定することを含む。
【0161】
いくつかの実施例では、本方法は、特定のフレームの粗いビデオ・データを搬送するために指定された粗いビデオ・データ・パケット部分の数が、前記特定のフレームについてのすべての粗いビデオ・データを搬送するには十分でない場合、前記特定のフレームの細かいビデオ・データを記憶するために前に指定された少なくとも1つのパケット部分に、前記特定のフレームの粗いビデオ・データを記憶することを含む。
【0162】
いくつかの実施例では、本方法は、前記ビデオ送信を受信するように動作する受信デバイスにおいて、特定のビデオ・フレームについて受信された受信されたビデオ・ヘッダ部分中の情報に基づいて、前記特定のビデオ・フレームのパケットのセットについてC1の新しい値とC2の新しい値とを決定することを含む。
【0163】
いくつかの実施例では、前記ビデオの各フレームについて生成されたパケットの各セットは、(i)粗いビデオ・データを搬送するために指定されたパケット部分対(ii)粗いビデオ・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分の固定比(R1)を利用し、(i)細かいビデオ・データを搬送するために指定されたパケット部分対(ii)細かいビデオ・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分の固定比(R2)をも利用し、(i)ビデオ・ヘッダ・データを搬送するために指定されたパケット部分対(ii)ビデオ・ヘッダ・データの前方誤り訂正(FEC)コードを搬送するために指定されたパケット部分の固定比(R3)をも利用する。
【0164】
いくつかの実施例では、前記ビデオの各フレームについて生成されたN個のパケットの各セットは、少なくとも、(i)ビデオ・ヘッダ情報を記憶する第1の数(H1)のビデオ・ヘッダ・パケット部分と、(ii)前記ビデオ・ヘッダ・ビデオ情報の前方誤り訂正(FEC)冗長を記憶する第2の数(H2)のビデオ・ヘッダ・パケット部分とを含み、また、あらかじめ定義されたサイズ制約が許容する場合、(I)粗いビデオ・データを記憶する第1の数(C1)の粗いビデオ・データ・パケット部分と、(II)前記粗いビデオ・データについての前方誤り訂正(FEC)冗長を記憶する第2の数(C2)のパケット部分とをさらに含み、また、あらかじめ定義されたサイズ制約が許容する場合、(III)細かいビデオ・データを記憶する第1の数(F1)の細かいビデオ・データ・パケット部分と、(IV)前記細かいビデオ・データについての前方誤り訂正(FEC)冗長を記憶する第2の数(F2)のパケット部分とをさらに含む。
【0165】
いくつかの実施例では、本方法は、ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、特定のビデオ・フレームについて、N個のパケットの前記セットから、特定のビデオ・フレームの細かいビデオ・データについての前方誤り訂正(FEC)コードについての冗長データの少なくとも一部を除外することを動的に決定することを含む。
【0166】
いくつかの実施例では、本方法は、ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、特定のビデオ・フレームについて、N個のパケットの前記セットから、(i)特定のビデオ・フレームの細かいビデオ・データについての前方誤り訂正(FEC)コードについての冗長データの少なくとも一部と、(ii)前記特定のビデオ・フレームについての細かいビデオ・データの少なくとも一部とを除外することを動的に決定することを含む。
【0167】
いくつかの実施例では、本方法は、ビデオ・フレームごとのN個のパケットの前記セットについてのあらかじめ定義されたバイトサイズ制約に基づいて、特定のビデオ・フレームについて、N個のパケットの前記セットから、(i)特定のビデオ・フレームの細かいビデオ・データについての前方誤り訂正(FEC)コードについての冗長データの全体と、(ii)前記特定のビデオ・フレームについての細かいビデオ・データの全体とを除外することを動的に決定することを含む。
【0168】
いくつかの実施例では、本方法は、前記ビデオ送信を受信するように動作する受信デバイスにおいて、細かいビデオ・データが送信デバイスによる送信から除外された、前記特定のビデオ・フレームの1つ又は複数のサブフレームを復号することを含む。
【0169】
いくつかの実施例では、本方法は、前記ビデオ送信を受信するように動作する受信デバイスにおいて、特定のビデオ・フレームについて、完全な細かいビデオ・データでなく、部分的な細かいビデオ・データのみを受信することと、受信デバイスのFECデコーダが、前記特定のビデオ・フレームについての完全な細かいビデオ・データを再構築するのに十分な情報を有する場合、前記特定のビデオ・フレームについての完全な細かいビデオ・データを再構築することと、受信デバイスのFECデコーダが、前記特定のビデオ・フレームについての完全な細かいビデオ・データを再構築するのに十分な情報を有しない場合、前記特定のビデオ・フレームの少なくとも1つ又は複数の細かいサブフレームを再構築することとを含む。
【0170】
いくつかの実施例では、本方法は、前記ビデオの各フレームの送信を制約する、フレームごとにNmax個のパケットの上界値を設定することを含み、Nmaxは、前記ビデオのすべてのフレームについて一様である自然数であり、前記ビデオの各フレームの圧縮ビデオ・データが、フレームごとに最高Nmax個のパケットを使用することによって送信される。
【0171】
いくつかの実施例では、本方法は、ビデオ・エンコーダにおいて、前記ビデオの特定のフレームについての圧縮ビデオのK個のパケットを生成することであって、Kが、前記ビデオのすべてのフレームにわたって必ずしも固定されるとは限らない自然数である、生成することと、KがNmaxよりも小さいか又はNmaxに等しい場合、前記フレームについてのすべてのK個のパケットを送信することと、KがNmaxよりも大きい場合、前記フレームについての前記K個のパケットのうちの最初のNmax個のパケットのみを送信し、前記フレームについての、最初のNmax個のパケットを越えるパケットの送信を回避することとを含む。たとえば、ビデオ・エンコーダは、K=15であるように、特定のビデオ・フレームについて15個のパケットを生成し得るが、フレームごとのパケットの最大値はNmax=12であり得、したがって、その特定のフレームについてのパケットのそのセットにおいてN=12であるように、最初の12個のパケットのみがそのフレームについて送信される。
【0172】
いくつかの実施例では、ビデオ・フレームごとのN個のパケットの前記セットの各パケットは、送信されたサブフレームの粗いビデオ・データと細かいビデオ・データとのマップとして利用されるビデオ・ヘッダ部分を含み、前記ビデオ・ヘッダは、前記ビデオ・フレームについての前方誤り訂正(FEC)コードの一部又はすべてが、前記FECコードのあまりにも少ないバイトが受信デバイスに到着したので適切に復号されなかった場合でも、前記ビデオ・フレームの1つ又は複数のサブフレームを復号するために、前記受信デバイスが、到着した細かいビデオ・データ及び/又は到着した粗いビデオ・データを少なくとも部分的に利用することを可能にする。
【0173】
本発明の1つ又は複数の実施例に関して本明細書で説明される機能、動作、構成要素及び/又は特徴は、本発明の1つ又は複数の他の実施例に関して本明細書で説明される1つ又は複数の他の機能、動作、構成要素及び/又は特徴と組み合わせられ得るか、或いはそれらと組み合わせて利用され得る。したがって、本発明は、本明細書で説明されるモジュール又は機能又は構成要素が、上記の説明の異なるロケーション又は異なるチャプターにおいて説明される場合でも、或いは、それらが、異なる図面又は複数の図面にわたって示される場合でも、それらのうちのいくつか又はすべての、任意の可能な又は好適な組合せ、再配列、アセンブリ、リアセンブリ、又は他の利用を含み得る。
【0174】
本発明のいくつかの例示的な実施例のいくつかの特徴が、本明細書で示され、説明されているが、様々な修正、置換、変更、及び等価物が当業者に想起され得る。したがって、特許請求の範囲は、すべてのそのような修正、置換、変更、及び等価物をカバーするものとする。
【国際調査報告】