(58)【調査した分野】(Int.Cl.,DB名)
通信デバイスのデータプロセッサによって実行されるよう構成され、請求項1〜21の何れかに記載の方法を実行するように前記通信デバイスを構成するためのコンピュータコードを具えることを特徴とするコンピュータ読み取り可能な媒体。
【発明を実施するための形態】
【0020】
付属の図面に示す種々の実施例を参照して本発明を詳細に説明する。以下の説明では、本発明の完全な理解に資するために、特定の実施例について詳細に記載する。しかしながら、当業者にとっては、ここに記載する実施例の幾つかの細部を使用することなく本発明が実施可能であることは明らかである。不要な混乱を避けるために、周知の動作等については詳しい説明を控えたことは、理解できよう。
【0021】
[A.機能の概要]
本通信メディアの管理方法およびシステムは、音声、ビデオ、テキスト、ロケーション、センサ情報、その他のデータ等の様々なタイプのメディアを使って、音声会話に参加するためのモードをサポートする、および/または多人数による同時会話を管理する新しいモードをサポートする。ユーザは、指定する受信者に音声メッセージを送ることによって会話に加わることができる。受信者は、好みや優先度によってリアルタイムで会話に参加したり、メッセージが検索できることを単に通知だけを受けたりすることもできる。後者の場合は、受信者は都合のよいときに記録されたメッセージを見なおしたり返信したりすることによって、タイムシフトモードで会話に参加する。
【0022】
ユーザは、次の通信を行う権利を与えられる。すなわち、(i)ほぼ同期性の「ライブ」会話:これは、ユーザに標準的全二重通話と同じ体験をレンダリングする、または(ii)タイムシフトモード:すなわち、一連の時間差通信。さらに、会話に参加したユーザは、ライブモードからタイムシフトモードに切目なく遷移し、再度ライブモードに戻ることもできる。また、この属性により、ユーザは、会話ごとに優先順位をつけたり二つのモード間を移動したりして、マルチ会話に参加することを可能にする。したがって、このシステム使用する二人の個人は、互いに記録した音声メッセージをやり取りしたり、都合のよいときにそのメッセージをレビューしたりすることができる。また、メッセージをある速度で送り基本的にライブに合流させ、音声同時通話を実現する。この新しい通信の形式は、本発明の目的から、「ヴォクシング:Voxing」と呼ばれる。
【0023】
誰かと「ヴォクス:Vox」すると、その会話は一連の不連続な記録されたメッセージで構成され、沢山のロケーションに記録される。また、「ヴォクス」には、送信側のエンコードデバイス(例えば、電話またはコンピュータ)を含み、ネットワーク上の複数の送信ホップ上のサーバ、さらに受信側のレンダリングデバイスが含まれる。標準的な通話または音声メールとは異なり、このシステムは次のような機能と利点を提供する。(i)会話がライブとタイムシフトまたはその逆を遷移できる。(ii)会話の不連続なメッセージは、意味論的に束ねられアーカイブされる。(iii)メッセージは記録され後で検索できるから、注意を一時的に会話からそらしても、後で都合のよいときに会話をレビューすることができる。(iv)会話は数秒、数分、数時間または数日間中座し、そこから再開することができる。(v)進行中の会話に再度加わることができる、見損ねたメッセージを即座にレビューすることができる、または現在のメッセージにキャッチアップすることができる(すなわち、ライブメッセージ)。(vi)従来の通話のように、会話をするのに特別の回路を必要としない。(vii)個人またはグループに送信するだけで会話が始められる。メッセージを受信していることに気がついたら、相手方の人は、リアルタイムでレビューし会話を行うか、後にレビューか自由に選択することができる。
【0024】
また、通信メディア管理システムは、ネットワークを通じてのデータ送信を最適化する新しいモードをサポートする。ネットワークの状態が理想より悪い場合は、システムはペイロードを会話に参加している受信側に送達するのをアクティブにリアルタイムで管理する。例えば、ネットワークの状態が悪いときは、システムは送信用のデータの質を、受信側が受け取ったときにレンダリングするのに「十分に良い」レベルまで意図的に引き下げ、リアルタイムの会話に参加できるようにする。また、システムは、メッセージの「正確な」コピーを長い時間をかけて最終的に送達することを保証する。したがって、本システムおよび方法は速度と精度の両方の利点を提供する。受信側の存在および受信側がリアルタイムで即座にメッセージを見る意思があるかどうか、ネットワーク待ち時間、ネットワークの劣化、パケットの損失またはダメージおよび/または現在の回線容量の状態の測定に基づいて適時性とメディアの質との間でトレードオフを行うことによって、ネットワーク回線容量が最適に利用できるようにする。
【0025】
ここで、会話のメッセージが含むことができるのは、音声のみ、または音声、ビデオおよびセンサ情報、その他のデータである。メッセージがレビューされるとき、メッセージに含まれるメディアのタイプによって、耳で聞かれる、視覚的にレビューされる、または、その組み合わせである。本発明の申請段階では、ほとんどの会話は音声のみであるが、ここに記載する通信システムおよび方法は、例えば、音声およびビデオ等の複数のメディアタイプを含む会話を広く含むことを意図している。
【0026】
次の特徴や機能のうちの一またはそれ以上を提供する、改良型音声その他のメディア通信、管理システムおよび方法を開示する。
i.ユーザが、ライブ通話、会議通話、音声メッセージ、継続的または同時通信等を含む多くのタイプの会話に参加可能にする。
ii.ユーザが、会話のメッセージをライブモードまたはタイムシフトモードのどちらかのモードでレビュー可能にする(音声メッセージ)。
iii.ユーザが、同時「ライブ」モードとタイムシフトモードの間で会話を切目なく遷移することを可能にする。
iv.他の参加者またはネットワークとの接続が確立されるのを待たずにユーザが会話に参加することを可能にする。この属性は、利用できるネットワークがない、ネットワークの質が悪い、他の参加者が参加できない場合でも、ユーザに会話を始める、会話に参加する、以前に受信しタイムシフトされた会話のメッセージをレビューすることを可能にする。
v.システムに、送信側のメディアのペイロードデータの記憶を可能とし、ネットワーク送信後、全ての受信側にメディアのペイロードデータの記憶を可能とする。
vi.システムに、所定の会話において、各メッセージが識別でき、かつ所定の参加者に結びつけることができる、意味論的に有意味の会話にスレッディングすることによって、メッセージを組織化できるようにする。
vii.ユーザに、一組のユーザコントロール機能を使って、「ライブ」をレビュー、レビューするのに都合がいい時まで会話を休止またはタイムシフトする、様々なモードで再生する(例えば、早送り、ライブにキャッチアップする、会話の頭にジャンプする)、会話を管理する方法(アーカイブする、タグ付けする、検索する、アーカイブから取り出す)等、各会話を管理可能にする。
viii.システムに、オンラインの状態、所定のメッセージをライブかタイムシフトモードのどちらかでレビューする意図、メッセージに対する現在の注意、レンダリングの方法、および送信側と受信側の間のネットワークの状態を含む、参加データの管理を可能にし、全ての会話参加者と共有化可能とする。
ix.下記の場合は、ユーザが、マルチ会話を同時に管理することが可能にする。(a)1つの会話を進行、その他の全てを休止とする、(b)戦術的通信のような(これに限らず)マルチ会話を継続してレンダリングする、(c)株取引すなわち取引フロア環境などのマルチ会話は、アクティブかつ同時にレンダリングする。
x.ユーザに、全ての会話を記憶可能にし、望むなら、有形の表現媒体に持続的にアーカイブし、必要に応じ組織化、インデックス付け、検索、転記、翻訳および/またはレビューできる資産をレンダリングする。
xi.システムが、即座にレンダリングする上で「十分に良い」速度でメッセージを送達するうえで最善のモードを使って、リアルタイム通話機能をレンダリング可能にする(UDPと同様)。また、もともと記憶された完全なコピーから、紛失あるいは欠陥のあるデータの再送を要求し、最終的にメッセージの完全なコピーの送達を保証する(TCPと同様)。
xii.受信側のプレセンスおよび意図(すなわち、リアルタイムまたはタイムシフトモードでのメディアのレビュー)を使うと同時にネットワーク待ち時間、ネットワークの劣化、パケットの損失あるいはダメージおよび/または現在の回線容量の状態を測定し、システムに、適時性とメディアの質の間でトレードオフを行いネットワーク回線容量の利用を最適化することを可能とする。
【0027】
種々の実施例において、上に挙げた様々な特徴や機能の一部又は全部が実施可能である。しかしながら、本発明の別の実施例においては、上に列挙した特徴や機能の全てを組み込む必要がないことは理解できよう。
【0028】
[B.用語の解説]
本発明の詳細を説明するに先立ち、本明細書全体を通じて使用される幾つかの用語と略語を定義する。この用語解説は、システム構成、メディア、メディア管理、人と会話管理のグループに分類できる。
【0029】
[B.1.システム構成]
クライアント:クライアントは、通信システムの中のユーザアプリケーションを意味し、ユーザインタフェース、持続的データ記憶装置、および「ヴォクシング(Voxing)」機能を含む。ユーザは、クライアントアプリケーションと情報のやりとりをし、クライアントアプリケーションは、ネットワークを通じて送受信される全ての通信(メッセージおよび信号)およびペイロード(メディア)転送を管理する。クライアントは、メディアのエンコード(例えば、音声、ビデオまたは他のデータのコンテンツの取得)、メディアのレンダリングをサポートし、セキュリティ、暗号化、認証およびネットワーク上のデータ送信の最適化をサポートする。クライアントは1個ないし複数のユーザ(すなわち、マルチテナント)によって使用することもできる。
【0030】
デバイス:クライアントアプリケーションを実行する物理的デバイス。ユーザは、一個のデバイスまたは複数のデバイスによって、所定のいずれの時点でもアクティブにログインすることができる。種々の実施例において、デバイスは、汎用コンピュータ、携帯計算機、プログラマブル電話機、プログラマブルラジオまたはその他のどんなプログラマブル通信装置であってもよい。
【0031】
サーバ:通信ネットワーク上のコンピュータノード。サーバは、ネットワーク上のユーザ間でやり取りされる送信メッセージのルーティングおよびメディアペイロードの持続的記憶とアーカイブの役割を持つ。サーバは、ルーティング、トランスコーディング、セキュリティ、暗号化と認証およびネットワーク上のデータ送信の最適化を提供する。
【0032】
[B.2.メディア]
メッセージ:あるユーザから他のユーザへの個々の通信単位。各メッセージは音声またはビデオ等の何らかのメディアからなる。各メッセージは、以下の属性のどれかを割り当てられる。(i)メッセージ送信側のユーザ、(ii)所属している会話(iii)、オプション、またはユーザ作成の重要タグ、(iv)タイムスタンプ、(v)メディアペイロード
【0033】
メディア:音声、ビデオ、テキスト、位置、温度等のセンサの読取り値、その他のデータ。
【0034】
会話:デバイス上で2人以上のユーザ間の一連の(識別され、持続的に記憶されグループ化され優先順位をつけられた)メッセージ。ユーザは、一般にデバイスを用いてリアルタイムまたはタイムシフトモードでメッセージをレビューするか、望みに応じて会話のメッセージを作成、送信することによって会話に参加する。新しいメッセージを作成すると、新しい会話を定義するか、既存の会話に加えられる。
【0035】
会話のヘッド:直近の話者によってエンコードされた会話の直近のメッセージ。「ライブ」をレビューするとき、会話においてユーザが存在しているところ、すなわち「ライブへジャンプ」機能を使用する場合、ジャンプするところ。
【0036】
多者間会話管理システム(MCMS):クライアントアプリケーションの一部として実行するアプリケーションで、ユーザが様々なタイプのメディアを用いてマルチ会話に参加することを可能にする。現在の会話のメッセージのみがレンダリングされている場合、ユーザはMCMSアプリケーションを用いて、現時点として、マルチ会話の中から1つの会話を選択することができる。選択された現在の会話については、ユーザはタイムシフトモードでのメッセージの一連のやり取りから、標準的な電話会話と同様のほぼ同期性の「ライブ」モードに遷移でき、またタイムシフトモードに戻ることができる。選択されなかった会話のメッセージは休止状態に置かれる。他の人がまだこれらの会話参加している場合は、選択されなかった会話に関するメッセージは、蓄積されていく。ユーザは、マルチ会話の中から現在の会話に選択的に遷移し、選択された現在の会話の蓄積されたメッセージをレビューすることができる。
【0037】
継続的多者間会話管理システム(MCMS−C):付加されたレンダリング機能によって、システムによって自動的に管理される優先順位とタイムシフトの階層的なシステムを通じて、MCMSと同様にユーザにマルチ会話を管理し継続して参加することを可能にする機能。現在選択されている会話メッセージのみをレンダリングできるMCMSとは異なり、MCMS−Cアプリケーションは、継続する会話のメッセージを、優先順位をつけた順序でレンダリングすることができる。MCMS−Cは特に次のような状況で利用できる。すなわち、継続する会話のメッセージを、優先順位をつけた順序でレンダリングすることが重要な場合、および/または低い優先順位の会話に属していても、全てのメッセージを受信することがリアルタイムでメッセージを受信するよりも重要な場合。MCMS−Cが適する状況の例としては、病院、タクシー全車両管理、戦術的通信などがあるが、これに限定されるものではない。
【0038】
同時多者間会話管理システム(MCMS−S):MCMSと同様、選択された現在の会話だけのメッセージがレンダリングされるMCMSとは対照的に、追加機能によってMCMS−Sを使って同時レンダリングするマルチ会話を選択可能にする。MCMS−Sアプリケーションは、一人のトレーダーが異なる為替について複数のブローカーに聞いており、一人ないし複数のブローカーに取引要請を時折送信しているような、1個のユーザがマルチ会話を同時に聞いている状況に、特に適用できる。また、MCMS−Sは戦術的通信にも適している。
【0039】
優先順位:ユーザがMCMS−Cに参加しているときに、つぎにどのメッセージをレンダリングするかシステムが決める機構。優先順位はシステムによって自動的に管理される。ユーザは、デフォルトで優先順位を設定できる、または予め決められた一組のシステム優先順位を使うこともできる。衝突が生じた場合、すなわち、1個以上のメッセージが同時にレンダリングされようとしているときは、システムは、少なくとも部分的に優先順位に基づいて衝突を解決し、どのメッセージを即座にレンダリングし、どのメッセージをタイムシフトするか決める。
【0040】
タグ:ユーザまたはシステムが、会話またはメッセージに割り当てることができる一組の属性で、それによってデータを検索したり組織化したりできる、トピック(会社名)、命令(「動作項目」)、標識(「会話のサマリー」)、その他ラベル等。
【0041】
重要タグ:他の優先順位の設定にかかわりなく、あるメッセージがレンダリングされるべきときに、送信側に指定可能とする特別のメッセージ属性。例えば、「緊急」の重要タグは、他の優先順位を無効にする。この機能は、戦術的なシステムにとっては重要な意味を持つが、どんなシステムでも、この機能を使えるようにしたり、無効にしたり設定することができる。
【0042】
パケット:コンピュータネットワークを通じてルートを決めることができるバイナリデータの単位。各パケットは、ヘッダ(メタデータ)およびペイロード(メディアデータ)からなる。インターネットプロトコル(IP)、EvDO、UMTSその他のパケットベースのネットワーク、無線、光ファイバー、有線のいずれかの標準的なパケットプロトコルが含まれるが、これに限定されものではない。
【0043】
ヘッダまたはパケットヘッダ:パケットを記述するパケットの部分、ペイロードに関するメタデータ、エンコードのタイプおよび宛先。
【0044】
Voxパケット:システムと方法をさらに精緻化し、メッセージメディア、その他の信号情報の送達を最適化することを可能にする専用パケット。
【0045】
メディアペイロード(またはペイロード):パケットの実のメディア部分。
【0046】
[B.3.メディアの管理]
タイムシフト遅延(TSD):Voxパケットの着信とパケットのデバイス上でのレンダリングとの間の時間の量。TSDは最小タイムシフト遅延を上回らなければならない。TSDは、主として、受信後のユーザが会話のメッセージをレビュー選択しようとする動作によって決められる。
【0047】
最小タイムシフト遅延(MTSD):クライアントによって強制されるタイムシフト遅延で、ジッタバッファ技術を用いてジッタ加工することができるようにする。これは、使用可能なメディアストリーム作るのに適当な数のパケットが到着するまで、システムにレンダリングの遅延を行わせる。システムは、時間の経過に応じてMTSDを順応的に調節し、主としてネットワークにおける変動条件を補正する。
【0048】
レンダリング:ユーザの消費に適した形式でユーザにメディアストリームを送達すること(例えば、音声、テキスト、グラフィック表示、ビデオ、またはそれらの組み合わせ)。
【0049】
ミキシング:一またはそれ以上のメディアストリームをレンダリングすること。例えば、レンダリングするとき、会話の二人の参加者からのメディアストリームをミックスし、複数の人が同時に話しているのと同じ会話感覚をユーザに作ること。
【0050】
エンコード:ユーザ作成の(音声またはビデオ)メディアか、デバイス上で別途生成される(GPSまたはその他のセンサデータ)メディアを翻訳し、クライアントによって処理されるようにメディアをデジタルデータに変換するプロセス。
【0051】
適応ジッタバッファ:ジッタバッファまたはデジッタバッファを使い、ネットワークを切り換えたパケットによって導入されたジッタ(すなわち、シーケンスから外れたパケットの着信またはパケットの遅延着信)に対抗し、ネットワーク上を送信される音声(またはビデオ)信号の連続レンダリングが途切れずに行われるようにする。レンダリングする前に、データはバッファに記憶され、適当なサイズにされたメディアのバッファが着信できるようにする。質と流れのトレードオフを行うことによって、全てのパケットが受信される前にメディアをレンダリングすることができる。適応ジッタバッファは、サイズをダイナミックに変え、遅延−質トレードオフを最適化することができる。
【0052】
無限連続メッセージバッファ(PIMB):PJJVIBは、タイムベースのメディアを記憶する記憶部の管理システムであり、「ライブ」データのジッタの削除とアーカイブされたデータの保存と取出しの両方を行う。さらに、PIMBは付加的属性として、潜在的に無限にメディアの継続保存をおこなう。PIMBは、一部又は全ての参加者のデバイスおよび/またはサーバにて、メッセージと会話のVoxパケットを、「完全な」すなわちフルコピーで維持する。
【0053】
パケット損失補償または隠蔽(PLC):メディアストリームをレンダリングする間に、PLCコンポーネントは、紛失パケットの補償を行い、結果を補間し、閲覧者にストリームを提供する。紛失パケットは沈黙としてレンダリングするか、近接するパケットからの情報を使い、補間した音またはイメージ提供することもできる。使用される個々の方法は、メディア、使用コードおよびその他一般に既知のパラメータによる。
【0054】
[B.4.人]
ユーザ:システムを使う権限を与えられた人。
【0055】
コンタクト:システムのユーザまたは非ユーザの記録。ユーザは、主としてコンタクトのリスト上のメンバーとともに会話に参加する。従来の電話、ラジオ又はその他の非クライアント12が使用可能なデバイスを使ってシステムにアクセスまたはシステムを使うユーザは、非ユーザである。
【0056】
グループ:多数のコンタクトの集まり。コンタクトは、グループに選択的に加えられたり、グループから削除したりできる。グループの中で会話が始まれば、グループの全てのメンバーは参加することもしないこともできる。
【0057】
チャンネル:主として戦術的通信システムに使われる。チャンネルはグループと同様、チャンネルで多数のコンタクトを結び付ける。
【0058】
参加者:会話のメンバーとして識別される人。ユーザまたは非ユーザが参加者になりうる。
【0059】
[B.5.会話の管理]
タイムシフト:タイムシフトは、メッセージを受信した後、ユーザ受信者の判断によって、随時実行できる。タイムシフトによって、ユーザは、メッセージを下記の方法でレビューするこができる。(i)MTSD後、オンデマンドで、即座にレンダリングする、(ii)ユーザの裁量により、タイムシフトモードでメッセージをレビューする、(iii)古い会話を検索、再構成のためにアーカイブから、(iv)別の優先順位の高いメッセージ(会話)のレビューに便宜を図るために一定の遅延時間の後、および/または、(v)メッセージを再度聞いたり理解したりすることが必要な場合は繰り返して。言い換えれば、タイムシフトは、システムによってMTSDが強制された後、ユーザがメッセージを随時レンダリングできることである。
【0060】
レビュー:メッセージの中のメディアのコンテンツを聞く、見る、読む、または閲覧すること。レビューは、ほぼ同期性のリアルタイム「ライブモード」かタイムシフトモードのいずれかで行うことができる。
【0061】
意図:以下を把握するユーザ定義の属性;(i)ユーザが会話のメッセージを即座にレビューしたいと望んでいるか、タイムシフトモードでメッセージをレビューしたいと望んでいるか、(ii)ユーザの動作に含まれている意思、または(i)と(ii)の組み合わせ。
【0062】
注意:現瞬間にユーザが所与の会話のメッセージをレビューしているか否かを把握するためのユーザの属性。
【0063】
ライブにキャッチアップ(CTL):「ライブにキャッチアップ」ために、会話の頭にないユーザが、先行するメッセージをより早くレビューすることができる(すなわち、会話の頭に)、レンダリングモード。CTL機能は、メッセージの早送り、メッセージのメディアの中にあるギャップの除去、躊躇粒子の除去等数多くあるキャッチアップ技術のうちどれを使っても良い。ユーザがライブに追いついたらシステムは途切れずにライブ会話に遷移する。これは、会議通話、例えばユーザが出席者の注意を一時的に会話から引き離し、再び戻ったときに全体の会話を聞きたい、といった状況のときに非常に役立つ機能である。
【0064】
キャッチアップモード:ユーザ設定あるいは予め設定されたモードで、どのようにしてCTLプロセスがキャッチアップするか決める(すなわち、もっと早く実行する、沈黙、躊躇粒子の除去またはそれらの組み合わせ)。
【0065】
ライブへジャンプ(JTL):この機能により、ユーザは現在の位置から会話の頭へジャンプすることができる。ユーザが、会話における現在の位置と頭の間にある全てのメッセージをレビューすることを望まないとき主としてこのJTL機能を使う。JTL機能を実行すると、ユーザは途中にある全てのメッセージをスキップし、会話の頭にある「ライブ」メッセージのレンダリングを開始する。
【0066】
MCMS参加者の属性:所定の会話を行うためにユーザが定義し、ユーザの動作からシステムが解釈する、管理者が割り当てる一組の属性か、または、その組み合わせで受信側の意図、注意、優先順位、レンダリングの好みを定義する。属性には以下のものが含まれるが、これに限定されない。(i)受信側が会話のメッセージに対してレンダリングしたいときの意図。可能性のある意図値には以下のものが含まれる:「今」、「タイムシフト」、「ライブにキャッチアップ」(CTL)、「休止」、「決してない」など。(ii)キャッチアップモード。CTLプロセスがどのようにして受信側をライブにキャッチアップさせるかを決める設定(すなわち、早く実行する、沈黙ギャップ又は躊躇をスキップするまたは常用速度で実行する)。(iii)タイムシフト遅延(TSD)、会話における受信側の現在位置が会話の頭からどれだけ離れているかを定義する。(iv)受信側における他の会話に関するメッセージの優先順位。
【0067】
[C.システムアーキテクチャ]
図1は、本発明の一実施例に係わる通信とメディアの管理システムのブロック図を示す。システム10は、デバイス13
1ないし13
n上でそれぞれ動作する複数のクライアント12
1ないし12
nを含む。デバイス13は、一またはそれ以上のサーバ16を含む通信サービスネットワーク14上で互いに通信を行う。一またはそれ以上のネットワーク18
1〜18
nがレンダリングされて、複数のデバイス13
1ないし13
nを通信サービスネットワーク14に連結する。様々な実施例において、ネットワーク18は、公衆交換電話網ネットワーク(PSTN)、セルラーネットワークに基づくCDMA又はGSM、例えば、インターネット、戦術的な無線ネットワーク、その他の通信ネットワーク、またはその組み合わせであっても良い。通信サービスネットワーク14は、いろいろなネットワーク18
1〜18
nとの通信のトップあるいはその中のネットワーク層である。様々な実施例においては、ネットワーク層14は、異機種環境か同機種環境である。クライアント12
1〜12
nは、「Voxパケット」と呼ばれる以下に詳述する個人メッセージ装置を使って、ネットワーク18
1〜18
n上のサーバ16、およびネットワーク14と互いに通信を行う。
【0068】
[D.クライアントアーキテクチャ]
図2Aおよび2Bは、デバイス13上で動作するクライアント12のブロック図を示す。
図2Aに示すように、クライアント12は、多者間会話管理システム(MCMS)アプリケーション20、レンダリング−エンコードモジュール21およびMCMSアプリケーションデータベース22を含む。
図2Bに示すように、クライアント12は、永続的無限メッセージバッファ(PIMB)リーダ26が付いた記憶・ストリーム(SAS)モジュール24、PIMB書込み部28、PIMBデータベース30、データ・ネットワーク品質(DNQS)記憶部32およびメディアドライバ・エンコダハードウェア34をさらに含む。MCMSアプリケーション20と記憶・ストリームモジュール24は、それぞれメッセージハンドリングモジュール25aおよび25bを介して互いに通信を行う。クライアント12は、さらに、認証−暗号化セキュリティモジュール40および通信プロトコルモジュール44を含む。
【0069】
モジュール40は、クライアント12との間で「ヴォクス(Vox)」パケットの送受信を行う間、認証、暗号化およびセキュリティのサービスをレンダリングする。通信プロトコルモジュール44は、Voxパケットを、データを送信するときにクライアント12を作動させ、データを受信するときにネイティブパケットからVoxパケットをカプセルから取り出すデバイス13に接続された下層のネットワーク18によって使われるネイティブパケットにカプセル化する。モジュール40および44は、クライアント12間での、マルチ端末同士の認証、暗号化およびセキュリティをレンダリングする。メッセージは、ネットワーク18
1〜18
nとネットワーク14上で、第一の送信デバイス13から第二の受信デバイス13まで、認証され、暗号化され、保全される。
【0070】
[D.1.1.MCMSデータベース]
データベース22は、コンタクトおよび参加者、会話およびメッセージ(ライブ、保存済み)、初期設定の優先順位、およびサーバ16に関する情報を含む、システム10内の多くの要素のための永続性のメタデータを記憶、管理する。さらに、MCMSデータベース22は、ユーザの会話、プレゼンス、およびステータス等の逐次オペレーションデータやユーザと話をしている全ての参加者、およびユーザのコンタクトリスト上のオペレーションデータなどを記憶する。例えば、会話とメッセージに関しては、データベース22は、会話のどのメッセージをユーザがレビューしたかまたはしなかったか、クライアント12が参加者であった会話ごとの優先順位、およびライブ−キャッチアップステータスなどのステータス追跡情報を保持する。それには、プレゼンス、全ての参加者のステータス、および他のネットワークおよびシステムの管理データが含まれる。
【0071】
[D.1.2.MCMSアプリケーション]
MCMSアプリケーション20は、いろいろなメディアおよびデータタイプ(音声、ビデオ、テキスト、ロケーション、データなど)を用いて、参加している会話および/または管理しているマルチ会話のいろいろなヴォクシングモードサポートする。ユーザは、クライアント12を可能にしたデバイス13を使って指定された受信側にメッセージを送信することにより、会話に参加する。好み、優先順位よって、受信側は、リアルタイムでメッセージをレビューする、あるいは単にメッセージがレビューできる状態にあることに気がつく。ユーザは、タイムシフト(音声メッセージ)モードまたはほぼ同期性でレビューした一連のメッセージのやり取りから全二重の会話(標準的な「ライブ」通話と同じ)に遷移し、再び音声メッセージに戻ることができる。MCMSアプリケーション20は、別の進行中の会話の中のどのメッセージも失うことなく、ユーザがリアルタイムで最も重要な会話との相互作用をコントロールできるようにする。例えば、MCMSアプリケーション20は、現在レビューしていない会話の中から、緊急の通信すなわち優先順位の高い通信をユーザに通知する。また、MCMSアプリケーション20は、随時レビューができるように、後の検索のために全ての会話の全てのメッセージを記憶することを可能とする。
【0072】
種々の実施例によれば、MCMSアプリケーション20には、以下のような幾つかの異なった動作モードがある。すなわち、それぞれメッセージの連続的なレンダリングと同時レンダリングをサポートする、MCMS−継続(MCMS−C)とMCMS−同時(MCMS−S)である。それぞれの実施例について、以下詳細に説明する。特に断らない限り、用語「MCMS」は、一般に前記異なる2つのモードを含むMCMSアプリケーション20を意味する。
【0073】
MCMSアプリケーション20は、多くのモジュールとサービスを含む多層構造のアーキテクチャである。モジュールとサービスには、以下のものが含まれる。すなわち、MCMSデータベースモジュール20a、SASサービスモジュール20b、メッセージ/信号サービスモジュール20c、ユーザインタフェースアプリケーション・プログラミングインタフェース(API)20d、ユーザインタフェースモジュール20e、会話/メッセージ管理サービス部20f、優先順位サービス部20g、コンタクトサービス部20h、プレゼンス/ステータスサービス部20i、およびメッセージ/信号サービス20jである。
[D.1.2.1 MCMSデータベースモジュール]
【0074】
MCMSデータベースモジュール20aは、MCMSアプリケーション20がMCMSデータベース22にアクセスするために必要な全ての機能コールを管理するサービスモジュールである。
【0075】
[D.1.2.2 SASサービスモジュール]
SASサービスモジュール20bは、MCMSアプリケーション20と記憶・ストリームモジュール24との間の通信と調整を可能にする、それぞれメッセージハンドリングモジュール25a、25bを介してやり取りする一組の機能コールを含む。一組の機能コールは、MCMSアプリケーション20と記憶・ストリームモジュール24の両者に必要に応じてユーザに呼び出されたときにいろいろなヴォクシング機能を動作させ、および/またはネットワークの状態によって指示されたように実行することを可能にする。SASサービスモジュール20bによって実行される機能の中にはメッセージ通信およびメッセージ認識のステータス、メッセージをレンダリングするための命令、およびユーザのステータスとプレゼンスの維持と通信が含まれる。
【0076】
[D.1.2.3 メッセージ/信号サービスモジュール]
メッセージ/信号サービスモジュール20cは、クライアント12とサーバ16の両者の上で動作し、システム10のクライアント12とサーバ16との間で通信を可能とする。この通信は、メッセージ、データおよびその他の信号を含み、クライアント12とシステム10が、通信、ネットワークステータス、ユーザ、およびユーザステータスの追跡と管理ができるようにする。サーバ16上で動作するクライアント12とメッセージ/信号サービスモジュール20cの間で送られるメッセージと信号のタイプは、例えば、以下を含む。すなわち、ユーザのネットワーク利用可能性、メッセージ全体またはメッセージの一部が失われていないか判断するためにサーバ16がクライアント12に送ったメッセージ(恐らく「高水位マーク」を含む)の追跡(例えば、「作成中の」クライアントによって作成された会話につき参加者当りのシーケンス番号)、ユーザが所定の会話のメッセージを話しているかまたはレビューしているかどうか、どこでユーザが会話の頭に関わっているか、いつ参加者が会話のライブをレビューしていないか、などである。これらは、クライアント12上のメッセージ/信号サービスモジュールとサーバ16との間で送られるメッセージと信号の多くのタイプの中の2、3の例であって、本発明はこれに限定されると解釈すべきではない。
【0077】
[D.1.2.4 ユーザインタフェースAPI]
ユーザインタフェースAPI 20dは、MCMSアプリケーション20のユーザインタフェースモジュール20eと下層サービスとの間のプログラミングインタフェースを定義する、一組の機能コールを定義するモジュールである。ユーザインタフェースAPI 20dは、UIアプリケーションサポート、ユーザインタフェースがMCMSアプリケーション20を作動させるために必要な全ての機能コールなどの汎用的方法サポートする。種々の実施例において、ユーザインタフェースAPI20dは、クライアント12が、以下にあげるの広範囲のユーザインタフェースとデバイスタイプをサポートすることを可能とする。すなわち、アドビフラッシュベースのアプリケーションおよび/またはマイクロソフト社のWindows(登録商標)アプリケーション、セルラーまたはモバイルホンデバイス、トーンで駆動されるPSTNデバイス、音声ユーザインタフェース(VUI)、および物理的無線通信インタフェース等。種々の実施例において、ユーザインタフェースAPIモジュール20dは、高度のフレキシビリティと高度に制約されたユーザインタフェースの設計によってMCMSアプリケーション20の機能性をサポートすることを可能とする。
【0078】
[D.1.2.5 MCMSユーザインタフェースモジュール]
MCMSユーザインタフェースモジュール20eは、クライアント12の音声・ビデオユーザインタフェースの動作および機能をサポートする。ユーザインタフェースモジュール20eは、ユーザ相互作用のホストをサポートし、下記のさまざまな相互作用媒体で実現することができる。すなわち、デバイス13上のグラフィカルユーザインタフェース・スクリーン、音声/DTMFインタフェース、音声ユーザインタフェースで、その全てのがユーザに、システム10とインタフェースで接続することを可能にする。サポートされるユーザ相互作用の一部リストは以下を含む。例えば、機能する;ログインする;会話を管理する、参加する、モニタする;会話のレンダリングをコントロールする;優先順位を管理する;会話をアーカイブしたレビューすることを要求する。このリストは、例示としてあげたものであり、本発明を限定するものと解釈されるべきではない。
【0079】
[D.1.2.6.会話/メッセージ管理サービス]
会話/メッセージ管理サービス部20fは、一組の機能を定義するモジュールである。これは、ユーザが会話の参加者間で送受信したメディア(例えば、音声またはビデオコンテンツメッセージ)の受信とレビューを管理するうえで必要とする全ての情報を管理、保持する役目のデータ構造および処理を管理する。メッセージは、会話に組織される。アプリケーション12を実行しているデバイス13によって送受信されたメディアは、受信中に即座にレビューすることができる。また、受信メディアは、タイムシフトモードでレビューするため、会話管理、およびアーカイブする目的で、記録される。他の実施例においては、メッセージまたは会話は、希望の保持条件を指定して、オプションとして一時的にマーク付けすることもできる(例えば、一部のメッセージは、即座のレンダリング要求を無視して、保持または記憶されない)。さらに他の実施例においては、メディアはタイムシフトモードだけでレビューする目的でオプションとしてマーク付けされ、受信後即座にレビューすることはできない。
【0080】
会話/メッセージ管理サービス部20fは、さらにユーザの現在の会話すなわち進行中の会話をそれぞれ随時受信中のクライアント12にメディアを送信可能にし、受信側の動作に関わらず、受信中のクライアント12は、これらのメッセージを適当な会話を切れ目なく結び付ける。
【0081】
会話/メッセージ管理サービス部20fにより、全ての会話は基本的に非同期性となる。もし、二つのユーザが所定の会話にアクティブに加わり、および通信間のユーザ制御の遅延が最小であれば、現在の電話またはVoIP会話と同じく、非同期の全二重の会話となる。もし、どちらか一方のユーザの参加が遅れた場合、理由のいかんを問わず、会話は非同期の音声(またはその他のメディア)メッセージにドリフトする。代替的な実施例においては、会話は、非同期のメッセージのみあるいは同期メッセージのみとしてオプション的にタグ付けすることができる。これらのケースのどちらか一方においては、タグ付けがリセットされない限り、会話は二つのモードの間でドリフトすることはできない。タグ付けのリセット後は、会話は、ほぼ同期性(すなわち、ライブまたはリアルタイム)と非同期(すなわち、タイムシフトされたメッセージまたは音声メッセージ)モードの間で再度流れることができる。
【0082】
会話/メッセージ管理サービス部20fは、漸次メッセージの送受信の処理を行う。送信するとき、メディアが作成されても良く、メッセージは同時にエンコード、記憶され、送信される。すなわち、メッセージの送信は、ユーザによるメディアの生成と同時に(すなわち、デバイス13に話す間、またはビデオ生成中に)始まっても良い。受信サイドでは、メッセージの受信、記憶およびレンダリングの全てのが漸次行われる。メッセージは、レンダリングされる前は、完全に受信される必要はない。メッセージのレンダリングは、メッセージがMTSDまで送達されると同時に始まっても良い。さらに、サービス20fは、出力メッセージの送信と入力メッセージのレンダリングを同時に行うことができる。サービス20fの漸次性により、ユーザは後の検索とレビューのために会話のメディアの記憶とストリーム中に、ここに記述するその他機能も同様、ライブ会話に参加することができる。
【0083】
会話/メッセージ管理サービス部20fによるメッセージのタイムシフトによって、もし、先行するメッセージを逃したときまたは他の会話に加わっていたとき、ユーザは、会話に「ライブにキャッチアップ」することができる。このタイムシフト処理により、ユーザは、グループ全体またはチャンネル全体にメッセージを繰り返してくれるように要求を出す必要がなくなる。古いメッセージは、時間を節約するために、可能性として高速で随時再生することができる。ユーザはメンバーのメッセージや個人のメッセージを簡単に行ったり来たりスキップできる。レビュープロセスは、低い優先順位のメッセージを潜在的にスキップするようにメッセージ優先順位ベースで構成することもできる。
【0084】
一実施例において、会話/メッセージ管理サービス部20fは、特定の参加者(話者)によってメッセージを識別し、同時に送達された会話のメッセージをデフォルトで混合する(MCMS−S)。任意の実施例において、ユーザは異なる会話の参加話者の通信を別個にレビューすることもできる。
【0085】
さらに会話/メッセージ管理モジュール20fは、参加者同士で会話を共有することができ、その参加者をアクティブ会話またはアーカイブの会話に加えることができる。一実施例において、会話に加えられた参加者は、会話へのアクセスが与えられ、その会話の先行のメッセージを取り出しレビューすることができる。他の実施例においては、加えた参加者は、その会話のメッセージに対してのみ、その新しい参加者が加わるポイントからアクセスが与えられ、その会話先行するメッセージに対するアクセスは与えられない。
【0086】
また、会話/メッセージ管理モジュール20fは、記憶・ストリームモジュール24によって実行される全てのレンダリングするタスクをコントロールするために使う機能を管理する役割を持つ。これらのタスクには、アプリケーション12を実行するデバイス13に適切にメディア(すなわち、音声、ビデオ等)をレンダリングすることが含まれる。これらのレンダリングタスクには以下が含まれるがそれに限定されない。すなわち、ミックスしたメッセージ(すなわち、メッセージのオーバラップ)をレンダリングするとともに、ユーザ定義の基準に従い、早送り、ライブへキャッチアップ、沈黙の除去、躊躇粒子の除去、周波数シフトをレンダリングすること、およびマルチ会話における個人の送信側に対する独立のゲインコントロール適用すること。
【0087】
[D.1.2.7 優先順位サービス]
優先順位サービス部20gは、一組の機能を定義するモジュールである。この一組の機能は、ユーザが、ユーザが関与する継続する会話(すなわち、MCMS−C)の優先順位を管理するうえで必要な全ての情報を管理保持する役割を持つデータ構造および処理を管理する。ユーザが継続的な多角ライブ会話に参加するときは、ユーザはその会話に優先順位をつけることを求められる。異なる会話のメッセージが同時にレンダリングできる状態になると、問題が起こる。アルゴリズムを使い、メッセージがレンダリングされる順序を判断し、レンダリングされるメッセージの利用可能性とユーザによってセットされた優先順位を考慮する。アルゴリズムは、最も高い優先順位をもった利用可能なメッセージを決めて最初にレンダリングし、一方、同時に利用可能なメッセージは、自動的にタイムシフトされ、高い優先順位のメッセージレンダリングできるようにする。レンダリングが可能になれば、システムは、タイムシフトされたメッセージを、ユーザの優先順位に従い自動的にレンダリングする。
【0088】
[D.1.2.8 コンタクトサービス]
コンタクトサービス部20hは、一組の機能を定義するモジュールである。この一組の機能は、一またはそれ以上のコンタクトを認証し、会話と関連づけるうえで必要な全ての情報を管理、保持する役割のデータ構造および処理を管理する。多数のコンタクトと関連づけられた会話の部分としてメッセージを送信するときは、全てのコンタクトがメッセージを受信する。
【0089】
[D.1.2.9 プレゼンス/ステータスサービス]
プレゼンス/ステータスサービス部20iは、一組の機能を定義するモジュールである。この一組の機能は、プレゼンス情報とステータス情報を管理し、システムの特定のユーザおよび/または 非ユーザと共有する役割のデータの構造と処理を維持する。種々の実施例において、プレゼンス情報とステータス情報は、クライアント12のユーザに関わる会話に参加する全てのユーザと非ユーザ、コンタクトリストの全てのユーザと非ユーザ、または、予め定義するされたドメイン内のユーザ(例えば、会社またはその他の組織のメンバー)のために維持される。これらの例は、単に例示として挙げたものであり、限定と解釈されるべきではない。プレゼンス/ステータスサービス部20iモジュールは、ユーザおよび/または非ユーザの組を定義するプレゼンス情報とステータス情報を管理、共有することもできる。
【0090】
プレゼンス/ステータスサービス部20iは、他のユーザの意図のステータス、注意、および所定の会話のタイムシフト遅延(すなわち、ライブの会話のメッセージをレビューすることからどれだけ遅れているか)をユーザにモニタすることを可能とする。一実施例において、プレゼンスとデータ状態の利用可能性について、プライバシーコントロールが提供されている。さらにプレゼンス/ステータスサービス部20iは、システム10が、ユーザの動作と意図にマッチするメッセージを送達することを可能とするデータをコントロールする。例えば、ユーザは、会話のライブをレビューするかしないか意図を指定することによって自分のステータスを示すことができる。応答として、プレゼンス/ステータスサービス部20iは、ユーザの意図に従って、「ライブ」またはタイムシフトでメッセージをレンダリングさせるコマンドを発する。さらに、ユーザの意図は、その会話の他の参加者と共有される。また、サービス20iは、ユーザの動作からその他のステータス値を推論することが可能である。プレゼンス情報およびステータス情報は、以下に詳しく記述するように、ネットワークのトラフィックと帯域幅を最適化する目的で使われる。
【0091】
[D.l.2.10 メッセージ/信号サービス]
メッセージ/信号サービス20jは、一組の機能を定義するモジュールである。この機能は、システム10のユーザに特別のメッセージまたは聞こえる音を使ってシステム10のユーザにメッセージと信号を発する役目のデータ構造と処理を管理する。特別のメッセージまたは音は、例えば一個または複数のメッセージがライブかタイムシフトかの指示、どこからのメッセージか、優先度、その他のファクタを含んでも良い。メッセージ/信号サービス20jは、さらに以下の能力を持つ。(i)ネットワーク上にユーザが存在しているか否かを信号で知らせる。またもしユーザがもう会話のメッセージをアクティブにレビューしていないときは、通知することができる。(ii)ユーザが別の会話に注意を奪われているときまたは自分のデバイス13に全く注意払っていないとき、「リング」または別の方法で通知する。iii)ユーザがネットワーク18上にいない場合はメッセージを残し、次回ユーザがネットワーク18に接続したときに即座にメッセージをレビューすることを促す。(iv)音響または視覚のフィードバックを生成し、送ったメッセージが受信側に受信されなかったことを送信側に警告する、メッセージが受信側に受信されたときおよび/またはメッセージが受信側に聞かれたときは、確認を生成する。(v)会議または戦術的なコールに加わっている人々が当コールに即座に注意を払う必要がある場合、優先順位スキームを実行する。この表示は、受信側による様々なレベルの緊急性または何らかの確認を伝達しても良い。
【0092】
[D.l.2.11 レンダリング・エンコード]
レンダリング−エンコードモジュール21は、MCMSアプリケーション20のための全てのレンダリングタスクを実行する役割をもつ。これらのタスクには、アプリケーション12を実行するデバイス13に適したレンダリングメディアが含まれる。
【0093】
[D.2 記憶・ストリームモジュール]
記憶・ストリームモジュール24は、以下に説明するように多くの機能とパフォーマンス属性をサポートする。
【0094】
記憶・ストリームモジュール24は、メッセージは基本的に「全二重」で送信され、相手方もメッセージを送信中であっても、また、もし相手が出られないまたは別の通信に加わっていても、何れの当事者にも随時メッセージを送信可能にする。記憶・ストリームモジュールは、ライブのPSTNまたはVoIPコールと同じように、メッセージをレンダリングし、タイムシフトメッセージモードのためのメッセージを送達することができる。ユーザの希望に従い、送信を最適化し、レンダリングをコントロールすることができる。
【0095】
記憶・ストリームモジュール24は、下層のネットワーク18上の全てのターゲットの受信側(例えば、サーバ16、その他のデバイス13)との接続性を維持し、全てのメッセージ、信号、およびメディアの通信を管理し、ネットワーク18の送達速度と帯域幅を最適化し、ネットワークの品質と容量を管理しながらユーザの現下のパフォーマンス必要条件を満足する。モジュール24は、下層のネットワーク18の質と容量と釣り合いのとれたメディアの送達を調節し、最適化する。下層のネットワークための資源が不十分な場合は、送信するメディアストリームの質を下げることができる。帯域幅の回復しだい、送信するメディアストリームの質を上げることもできる。メディアの質のトレードオフに加え、記憶・ストリームの機能により、以下に記述するように、データをリアルタイムでレンダリングしようとするユーザの意図に基づいて、各パケットで送信するメディアの量をトレードオフすることができる。
【0096】
下層のネットワーク18の状態に基づいて、メディアの送達速度を動的にコントロールすることにより、記憶・ストリームモジュール24は最適化され、受信したときにレンダリングする上で「十分に良い」時間的制約のあるメディアの送達を行い、紛失、質が低い、またはダメージを受けたパケットの再送を要求するバックグラウンドのプロセスを通じて、アーカイブする目的のそのメディアの正確なすなわち完全なコピーが最終的に送達されることを保証する。最低限のメディアの品質レベルを満足するだけのネットワーク資源がある限り、この再送は、ライブコールでのメディアのレンダリングを妨げることはない。このように、システム10のクライアント12は、相当な潜在的待ち時間を犠牲にしたメディアの正確なすなわち完全なコピーの送達と完全性の保証はないがメディア素早い送達との間のパフォーマンスギャップを橋渡しするように設計されている。本アプリケーションの文脈において、用語「十分に良い」とは、メディアの質が、レンダリングされたときに理解できる、ということを意味する。したがって、「十分に良い」の概念は主観的なものであって、絶対的な用語として解釈されるべきではない。例えば、あるメディアの十分に良い質のレベルは、メディアのタイプ、状況、その他のファクタによって変わりうる。
【0097】
さらに、記憶・ストリームモジュール24は、デバイス13を使って別途生成された、または、ネットワーク18上で別のデバイス13および/またはユーザから受信された全てのメディアを持続的に記憶する。クライアント12を実行するデバイス13上でこのメディアを記憶することは幾つかの大きな利点がある。(i)送信側および/または受信側が出られないまたはネットワーク接続性が貧弱である場合でも、ユーザは相手方にメッセージを残すことが可能となる。帯域幅が不十分なケースでは、メッセージは帯域幅が効果的に使える限り早く送信される。接続性が不要のケースでは、メッセージは、送信待ちのキューに並び、ネットワークの接続が使用可能になると即座にタイムシフトの送達がおこなわれる。(ii)ユーザは、ポーズ、リプレイ、早送り、ライブの進行中の会話にキャッチアップができると同時に、アーカイブされた先行する会話のメッセージを取り出しレビューすることができる。(iii)時々起こるネットワーク回線容量および接続性の問題にたいしてシステム10上のデータペイロードの最適化とシステムの復元力を向上することが可能となる。
【0098】
また、記憶・ストリームモジュール24は、下記の役割をもつ。多数の参加者が話している実際の会話をシミュレートして、メッセージを適切にミキシングし、オーバラップメッセージ(会話における話者等の通常のオーバラップまたはバックグラウンドのノイズで生成される)を作成する、音声メディアの解説または翻訳をレンダリングすること、早送り、発話間の沈黙ギャップの除去、躊躇粒子の除去、周波数シフトをを含む多数のユーザ定義の基準に従ってメディアのレンダリングを調節すること、マルチ会話における個人の送信側に対する個別のゲインコントロールを適用すること能力を持つこと及び潜在的なレンダリングオプションをもつ。
【0099】
記憶・ストリームモジュール24は、それ自身とMCMSとの間のコントロールおよび情報メッセージを管理する。
【0100】
[D.2.1 永続的無限メッセージバッファ(PIMB)]
永続的無限メッセージバッファ(PIMB)30は、一組のインデックスされた(すなわち、タイムスタンプ付け、順番に番号付け)メディアペイロードデータの構造、およびその記憶と取出しのためのシステムである。一実施例において、PIMB30内のデータは、永久にあるいは少なくともシステムの記憶装置がいっぱいになるまで、使用可能であるという意味で、実質的に永続性をもつ。記憶資源を有効利用するために、様々な保持率と方策を採用することができる。PIMB30の物理的記憶を実施するには下記のような様々な方法があるが、これに限定されない。すなわち、RAM、フラッシュメモリ、ハードドライブ、光学メディア、またはその幾つかの組み合わせ。PIMB30も、PIMB30に記憶できるデータの量は本質的に限定されないという意味で、サイズ的に「限定」である。この限定がないということは、レンダリング後即座にデータを廃棄する現在のジッタバッファ技術との比較の上でのことである。特定の実施例において、PIMB30は、持続的記憶用のハードドライブと連結された小さくて比較的早いRAMキャシュメモリを使って実現することもできる。PIMB30の物理的記憶容量を超えた場合、オンデマンドでの後の検索のために、データはサーバ16に保持される(以下に記述する)。何れの時点でも、PIMB30に記憶された実際のデータまたはサーバ16、またはアーカイブされたデータは、ユーザ基準または「最も古く使われた」、又は、「先入れ後出し」等の入れ替えアルゴリズムを使ってコントロールされる。さらに、PIMB30は、ファイルシステム保存の属性およびランダムアクセスの属性のレンダリングをおこなう。それぞれのメッセージの期間または数にかかわらず、どんな数の会話でも記憶でき、後で検索してレビューすることができる。さらに、作成源、長さといった、会話のメッセージと関係するメタデータもPIMB30に記憶することができる。他の実施例においては、インデックスかされたメディアペイロードおよび他のデータは、指定の期間(例えば、30日)記憶することができる。メディアが指定の期間を超えると、ペイロードとデータは廃棄される。別の実施例においては、ペイロードを含むメッセージの送信側および/または受信側、またはペイロードに関わる会話またはメッセージのトピックに基づいてペイロードは廃棄することができる。さらにその他実施例においては、ペイロードおよびデータは一時的にマーク付けされ、メッセージは、即座のレンダリングの要件を超えて、PIMB30に記憶されない。
【0101】
[D.2.2 データ・ネットワーク品質記憶部]
データ・ネットワーク品質記憶部(DNQS)32は、PIMB30から読み取られ、PIMB30に書き込まれるメディアペイロードとVoxパケットに関する情報を記憶するためのデータ記憶部である。
【0102】
[D.2.3 PIMB書込み部]
PIMB書込み部28は、二つの基本的目的のためにデータをPIMB30に書込む。PIMB書込み部28は、クライアント12を実行するデバイス13上のメディア取得デバイス(例えば、マイクまたはカメラ)からのデータを書込む(「エンコード受信」)。また、PIMB書込み部28は、他のクライアント12からネットワーク18を通じて受信したデータを書込むPIMB30(「ネット受信」)。
【0103】
[D.2.3.1 エンコード受信]
デバイス13からメディアを取得するために、PIMB書込み部28は、エンコーダ受信部28aとデータ記憶部28cを含む。例えば、あるユーザがマイクに話かける、あるいは、デバイス13でビデオメッセージを生成すると、ハードウェア34生の音声および/またはビデオ信号を受信し、それをインデックスされたメディアペイロードにエンコードするエンコーダ受信部28aにレンダリングする(以下、単に「ペイロード」と称する場合もある)。データ記憶部28cはそのペイロードをPIMB30に記憶する。センサデータ等のその他のタイプのメディアは、同様の仕方でペイロードに変換される。
【0104】
[D.2.3.2 ネット受信]
ネットワーク18を通じて受信メディアをPIMB30に記憶するため、PIMB書込み部28のネット受信機能は、ネットワーク受信部28d、データバッファ部28e、データ記憶部28f、データ品質管理部28gおよびネットワーク品質管理部28hを含む。ネットワーク受信部28dは、ネットワーク18を通じてVoxパケットを受信する。データバッファ部28eは、受信したVoxパケットを正しい順序に置き、入ってくるVoxパケットのレンダリングの少なくとも最小タイムシフト遅延(MTSD)を防ぐ。データ記憶部28fは、パケットをインデックスされたメディアペイロードに変換し、インデックスされたメディアペイロードをPIMB30に記憶する。ペイロードが記憶されと、データ品質管理部28gは、紛失パケットあるいは欠陥パケットがないか監視する。もし紛失パケットや欠陥があるがある場合は、DQM28gはネットワーク18を通じて再送要求を予約する。送信側のデバイスは、これに応えて紛失パケットまたは欠陥パケットを再送する。最終的にはこれらのパケットは、インデックスされたメディアペイロードに変換され、PIMB30に記憶される。紛失パケットまたは欠陥パケットを取出すことによって、送信側のメッセージの「正確な」コピーは最終的にはPIMB30に記憶される。紛失パケットおよび/または欠陥パケットの再送によって、メッセージのリアルタイムのレンダリングに遅延を生じることはなく、送達されレンダリングされたパケットは「十分に良い」品質と量となる。新しい「ライブ」データと再送サポートするだけの十分なネットワーク資源がない場合は、DQM28gによって再送要求が遅延される場合もある。
【0105】
[D.2.4 PIMB読取り部]
PIMB読取り部26は、二つの基本的目的のためにPIMB30からデータを読取る。データがローカルクライアント12向けにレンダリングされる場合は(「レンダリングする」)、PIMB読取り部26はPIMB30にアクセスする。データがクライアント12によってネットワーク18を通じて送信される場合も(「送信」)、データはPIMB30から読取撮られる。
【0106】
[D.2.4.1 レンダリング]
クライアント12上のメッセージをレンダリングするために、PIMB読取り部26は、データ優先順位付与部26a、データ取出し部26b、パケット損失補償/補間部(「PLC/補間部」)26c、データミックス部26dおよびデータレンダ部26eを含む。データ優先順位付与部26aは、レンダリングされるデータに優先順位をつけ、潜在的にレンダリングされる可能性のあるメッセージを順序付けられたキューを作る。これは、ユーザ設定の優先順位を使い、継続会話(MCMS−C)をレンダリングする。さらに、データ優先順位付与部はメディアデータの利用可能性を使い、MTSD、ユーザの現在の注意、ユーザが定義、含意する意図によって強制される制限内にレンダリングする。データ取出し部26bは、PIMB30から優先順位付けされたインデックスされたメディアペイロードを取り出す。PLC/補間部26cは、既知のパケット損失補償と補間アルゴリズムを使って取り出したペイロードにパケット損失補償および補間を実行する。使われる個々の方法は現在使われているメディアコーデックおよびその他既知のパラメータによる。ミックス部26dは、適切にミックスして一個の会話のなかの多数のメッセージを使って同時データストリームを作るのに使われる。例えば、もし、二人以上の会話参加者が同時に話しているときは、ミックス部26dは、同時に話している参加者の効果も作成してメッセージミックスする。代替的な実施例においては、ユーザは、オプションとして、一人の参加者の多数のストリームを一時にレビューすることもできる。もし、会話の中の一人の参加者のみが話している場合は、ミックス部26dは、ミキシングを行なわずに一個ののメッセージストリームをパスしても良い。レンダ部26eは、ミックス部モジュール26dからデータを取り出し、それをハードウェアドライバ34に適したフォームに変換する。ハードウェア34は、メディアのタイプ、作成する音声、ビデオ、その他デバイス13上の音響および/または視覚警報装置によって、デバイス13のスピーカーまたはビデオ表示部を駆動する。
【0107】
[D.2.4.2 送信]
ネットワーク18を通じてクライアント12から送信するメッセージを作成するために、PIMB読取り部26はデータ優先順位付与部26f、パケット品質管理部(PQM)26g、データ読取り部26h、パケット部26i、送信部26jおよび認証部26jを含む。データ優先順位付与部26fは、ネットワーク18を通じて送信するメッセージに優先順位をつける。優先順位は、送信できるペイロードに関するMCMS参加者の属性、ネットワークの接続性と回線容量の状態、およびライブまたはタイムシフトでレンダリングする次のホップの向こう側にいるおよびユーザの意図、そして、幾つかの実施例においては、次の所定のネットワークホップに対する多数のパケットが利用できる場合には、送信組立の可能な最適化、を使って判断される。次に、以下に詳述するように、優先順位をつけられたパケットは、ライブメッセージを行ううえで「十分に良い」品質のデータをタイムリーに送達することを確実にするPQM26gを使ってリアルタイムの帯域幅を最小化しながら最適化される。データ読取り部26hは、PIMB30から適切なペイロードを取り出す。パケット部26iは、ペイロードをVoxパケットに組立て、Voxパケットは次にネットワーク18を通じて送信部モジュール26jによって送信される。受信側がVoxパケットを受信すると、ネットワーク18を通じて認証部26jに確認が送られ、メッセージが宛先に着信したことを送信側のユーザに通知する。
【0108】
[D.2.5 パケット品質管理部]
PQM26gには、以下の最適化目標がある。(i)時間的制約のあるメディアの適切なコピー(レンダリングするうえで「即座に、十分に良い」)をタイムリーに送達すること;(ii)最適な送信周波数、ペイロードの品質、および下層のネットワークのための最適なパケットサイズを使って使用可能な帯域幅を有効に使うこと;および(iii)送信周波数、ペイロードのコンテンツ、ペイロードの品質、パケットのサイズ等をネットワークの状態変化に応じて動的に調節する、または変更すること。
【0109】
[D.2.6 ネットワーク品質管理部]
ネットワーク送信の受信サイドにはネットワーク品質管理部28h(NQM)がある。NQMは、実際値に対するジッタ、損失、および処理量の期待値を比較して、クライアント12にメディアを送った各送信側のためのネットワークのパフォーマンスの特定の特性を監視する役割を持つ。全ての送信側のネットワーク品質レート(NQR)を計算するために使われる。NQRは受信側のデバイスのユーザに送信側の利用可能性および会話のライブ度を示すために使われる。
【0110】
[D.2.7 データ品質管理部]
データ品質管理部28gは、パケット損失、ジッタ、処理量を監視して、ネットワークを通じて受信中のデータの品質を測定する。DQM28gはこれらの測定値を3つ目的のために使う:(i)送信側に受信レポートを送り返す;(ii)オプションとして、これらの受信レポートを使って特定のデータの再送を要求する;および(iii)これらの測定値をNQM28hが利用できるようにする。
【0111】
[E.サーバアーキテクチャ]
図3はサーバ16上で実行するアプリケーション78のブロック図である。アプリケーション78は、多くの点でクライアントアプリケーション12と同様であり、以下を含む。すなわち、MCMSサーバアプリケーション80、MCMSデータベース82、記憶・ストリームモジュール84、PIMB85、データ・ネットワーク品質記憶部(DNQS)86、MCMSサーバアプリケーション80と記憶・ストリームモジュール84の間を行き来するメッセージと信号を管理するMCMS−SASメッセージハンドリングモジュール87a、87b、アーカイブ/取出し部88、およびアーカイブ部89。さらに、アプリケーション78は、認証−暗号化セキュリティモジュール40および通信プロトコルモジュール44を含む。
【0112】
MCMSサーバアプリケーション80は多層構造のアーキテクチャであって、以下を含む。すなわち、MCMSデータベースモジュール20a、記憶・ストリーム(SAS)モジュール20b、メッセージ・信号モジュール20c、会話/メッセージ管理サービス部20f、優先順位サービス部20g、コンタクト(ユーザと認証を含む)サービス部20h、プレゼンス/ステータスサービス部20iおよびメッセージ/信号サービス部20を含む。クライアント12と同じ参照番号を持つアプリケーション78の前記モジュールおよびサービス部はクライアント12の同じ参照番号を持つモジュールおよびサービス部と同様もしくは同じであり、したがって注意すべき例外を除きここでは詳しい記述を省く。種々の実施例において、MCMSデータベース82を含むMCMSサーバアプリケーション80および記憶・ストリームモジュール84は、アプリケーションの一例として、多数のユーザをサポートするように構成されている。さらに、この例は、ユーザのグループとして定義される多数のドメインをサポートするように構成されてもよい(例えば、会社または共通の組織に所属するユーザその他のグループ)。このアーキテクチャは、サーバ16上の各アプリケーション78が、各ユーザ(またはドメイン)が他のユーザには見えない多数のユーザ(またはドメイン)に使えるようにしてもよい。この区切り方は「マルチテナント」と呼ばれる。
【0113】
記憶・ストリームモジュール84はネット受信と送信の機能を実行する。ネット受信機能用として、モジュール84は、ネットワーク受信部28d、データバッファ部28e、データ記憶部28f、データ品質管理部(DQM)28g、およびネットワーク品質管理部28hを含む。送信機能用として、モジュール84は、データ優先順位付与部26f、パケット最適化部26g、データ読取り部26h、パケット部26i、送信部26jおよび認証部26jを含む。記憶・ストリームモジュール84の上記の構成要素は、クライアント12の同じ参照番号を持つ構成要素と同様又は同じである。したがって、それらの詳しい記述は割愛する。
【0114】
サーバ16はユーザと直接情報のやりとりはしないので、クライアント12の記憶・ストリームモジュール24に与えられたエンコードとレンダリング機能は、必要としない。MCMSアプリケーション80は、サーバ16上で動作するときは、ユーザと直接やり取りはしない。したがって、ユーザインタフェース、および ユーザインタフェースAPIモジュールおよびサービス部20e、20dは必要ない。
【0115】
各サーバ16上のアプリケーション78は、潜在的に多数のテナントに関与する。つまり、システム10の多数のユーザに関与する。サーバアプリケーション78のPIMB85は、したがって、一個ののユーザのみの生成されたまたは受信したペイロードだけを記憶するために使われるPIMB30とは異なり、相当に大きく、また、多数のユーザのメディアペイロードを記憶するために使われる。記憶・ストリームモジュール84の主な目的は、クライアント12によって送信されるメッセージを受信することと他のクライアント12にメッセージを送信することである。メッセージが受信されると、PIMB85に記憶されるとともに、目的の受信側またはシステムの構成に直接依存する受信側への経路に沿って、ネットワーク層14の次のサーバ16(すなわち、ネット「ホップ」)へ送信される。アーカイブ/取出し部88は、アーカイブ部89内のPIMB85に記憶されたメディアのペイロードをアーカイブする役割を持つ。PIMB85内の物理的スペースがなくなると、PIMB85内のメディアのペイロードは大量記憶デバイスであるアーカイブ部89へ移される。種々の実施例においては、PIMB85に記憶されたペイロードは、ユーザ定義の基準および/または先入れ先出し(FIFO)または最後に使われた(LRU)等の既知の入れ替えアルゴリズムに従ってアーカイブされる。解りやすくするために、
図1には、一個のサーバ16のみが示されている。実際の実施例においては、複数のサーバまたは「サーバファーム」は、多数のユーザとのネットワークのために使われる。
【0116】
PIMB30およびPIMB85を記述するために使われる用語「永続性の」と「限定」は、厳密な用語として文字通り解釈すべきではない。ユーザは、重要とおもわれる幾つかのメッセージは、いつまでも記憶したいと望む。二人の友達間の普段のおしゃべり等のその他の状況では、スペースを節約するために、一定の時間が経過したら、メッセージは削除しても良い。本発明の種々の実施例によれば、システム10によって設定されるかユーザによって設定されるか、異なる保持ポリシが使われても良い。「限定」の用語は、PIMBによって強制される時間的区切りがないという意味で使用される。このことは、現在のジッタバッファシステムでは、メディアはレンダリングされた後は、廃棄されるのとは対照的である。「永続性」および「限定」の用語は、したがって、PIMB30およびPIMB85は、時間の範囲とそこに記憶されるメッセージの量については何ら内的制限がない、ということを意味すると広く解釈されるべきである。
【0117】
持続的記憶媒体に会話のメッセージをアーカイブすることには多くの利点がある。音声メッセージおよびその他のメディアは、必要に応じ組織化され、インデックスされ、検索され、転記され、翻訳され、レビューすることができる。音声およびその他のメディアは、したがって、ユーザおよび組織によって管理することのできる資産となる。これらのメディア資産は、軍隊同様、会社、第一応答者、警察および消防署にとっても価値がある。
【0118】
[F.Voxプロトコルおよびインデックスメディアペイロード]
上記したように、Voxプロトコルは、ペイロードの送信、記憶、および最適化の全ての面をサポートするために、記憶・ストリームモジュール24によって使われる。Voxパケットは、ネットワーク18の下層の技術における一個または複数の搬送パケットの内部のカプセル化のために設計された構造化されたメッセージフォーマットである。これによりシステム10の自由度が大きく改善される。搬送パケットの中にVoxパケットを埋め込むことによって、「ヴォクシング(Voxing)」アプリケーションのために新しい搬送層を定義するのとは対照的に、システム10は、現存する通信インフラを通じて動作する通信ネットワークに基づいて現在のパケットを利用する。Voxパケットを扱うための新しいネットワークインフラは、したがって、ここに記載するシステムおよび方法の全ての利点を利用する必要はない。
【0119】
図4Aを参照すると、Voxパケット95の一般的なフォーマットの構造が示されている。Voxパケット95のフォーマットは、タイプ、サブタイプ、長さ、およびペイロードを含む。Voxパケットの別のタイプは、認証、信号発信、メディアペイロード、メディア多重化(一個のメッセージ)、およびメディア多重化(多数のメッセージ)を含む。サブタイプのフィールドは、異なるタイプの認証、信号発信、メディアタイプメッセージを指定するために使われる。認証メッセージのための可能なサブタイプとしては、キー交換および認証に必要なフィールドが含まれる。信号発信メッセージのための可能なサブタイプとしては、登録、ルーティング、メッセージのセットアップおよびネットワークの管理が含まれる。メディアメッセージのための可能なサブタイプとしては、コーデックの型と異なるペイロード集約技術が含まれる。長さフィールドはペイロードの全長すなわちサイズを定義する。ペイロードフィールドは、パケット95の実際のペイロードすなわちメディアを含む。
【0120】
図4Bはネットワーク18によって使われるカプセル化せれたVoxパケット95のプロトコルの例を示す図である。この例では、UDP、IPおよびイーサネット(登録商標)の搬送パケット96の下層にそれぞれ埋め込まれたVoxパケット95を示す。この方法においては、Voxパケット95は、ネットワーク18の下層のUDP、IPおよびイーサネット(登録商標)層を通じて搬送できる。これは、パケットネットワークによって使われる標準的なプロトコルカプセル化の技術である。
【0121】
図4Cは、UDP、IP、およびイーサネット(登録商標)97内でカプセル化されたメディア多重化Voxパケット95を示す図である。この例では、Voxパケット95は、メディアタイプフィールド、メディアサブタイプフィールド、長さフィールド、メッセージIDフィールド、タイムスタンプフィールド、シーケンスIDフィールドおよびメディアペイロードフィールドを含む。
【0122】
図4Dは、インデックスされたメディアペイロード98のフォーマットを示す。インデックスされたメディアペイロードは、サブタイプフィールド、長さフィールド、メッセージ識別子(ID)フィールド、タイムスタンプフィールド、シーケンス識別子(ID)フィールド、およびメディアペイロード用のフィールドを含む。
【0123】
Voxパケット95を搬送パケット下層のネットワークのカプセル化することによって、メディア、メッセージおよび会話を多数の属性によってそれぞれ定義することができる。
【0124】
メディアがデバイス13上に作成または生成されると、それは、主としてタイムベースのものとなり、時間経過とともに意味のある形で変化する。ある人が会話に参加すると、例えば、時間の経過とともに、話し言葉はセンテンスまたは発言につなぎ合わされて、結果としてのデータ(ストリームおよびパケット)は、同じ相違を長い時間維持する。同様に、GPSその他センサデータ同様、ビデオ(スチール写真とは対照的に)は、時間の経過とともに変化する。タイプや生成のされ方にかかわらず、メディアはセグメント化され、複数のVoxパケット95のペイロード中に置かれる。続いてパケットは記憶され、送信され、受信され、記憶され、送信側と受信側のデバイス13のそれぞれでストリーム(すなわち、ストリーム中のメディア)にレンダリングされる。各パケット95は、インデックスされ、タイムスタンプ処理され、シーケンス識別子が付与されているので、個々のパケットは、メッセージにセグメント化することができる。個人のメッセージを順番にスレッディングすることによって会話を構成することができる。
【0125】
システム10の固有の側面として、クライアント12によって生成されたメディアペイロードは多くのロケーションに記憶されるということである。ペイロードは、生成側のデバイス13のPIMB30に記憶されるだけでなく、受信側のサーバ16のPIMB85およびデバイス13のPIMB30にも記憶される。この基本的な機能によって、Voxing機能の多くを可能とし、ネットワークの状態が不良であっても、あるいは会話の参加者がネットワークに接続されていなくても、システム10に復元力と操作性を提供する。
【0126】
[G.下層通信プロトコルとの相互操作性]
システム10は、インターネット、固定PSTNタイプ回路ネットワーク、およびモバイルまたはセルラーホンネットワークまたはその組み合わせのようないろいろな現存する通信ネットワーク18を通じて、実行する、あるいはそれらと層化することを意図している。システム10は、システム10内の異なるクライアント12とサーバ16間を移動する多数の小さな情報の単位(すなわち、Voxパケット)のコンセプトの周辺に設計されている。Voxパケットは、機能およびペイロードによってサイズは異なるが下層のネットワーク層にとっては、全て同じ種類のデータとして見える。一実施例において、システム10は、インターネット等のIPv4ネットワークが設計されて最適化されたものだが、その他のタイプのネットワークもサポートする。本ドキュメントの目的に照らして、用語「IP」は、IPv4、IPv6あるいはその他現在または未来に実施されるであろうインターネットプロトコルを意味すると理解されるべきである。
【0127】
図5は、デバイス13上で実行し、共用IPネットワーク100を通じてサーバ16と通信するクライアント12を示す。図に示すように、クライアント12は、第一のインターネットサーヴィスプロバイダAを介して共用IPネットワーク100に連結され、サーバ16は、第二のインターネットサーヴィスプロバイダBによって共用IPネットワーク100と連結されている。通信中に、Voxパケット95(図では「VP」と表記)はUDP/IPパケットにカプセル化され、ついで当該技術では周知のように、他のIPプロトコルパケットにインタリーブされ、共用IPネットワーク100を通じてクライアント12からサーバ16等へ送信される。周知の如く、低いパケット層はすぐ上の層のパケットの全てをカプセル化する。また、パケットは、同様のやり方で2個のサーバ16間でやり取りされる。メッセージは、共用IPネットワーク100を通じてクライアント12が許可したデバイス13から他のクライアントへ送られる。Voxパケット95は、ターゲットの宛先に到達するまで各ホップで下層のIPプロトコルに埋め込まれ送信される。
【0128】
図5は、説明のために、ネットワーク100接続された一個のクライアント12とサーバ16を例示的に示す。実施例における実際のシステム10は、多くのクライアント12と一またはそれ以上のサーバ16が主として共用IPネットワーク100に接続されている。また、クライアント12およびサーバ16は、IPネットワーク100を排他的に使うものではないことに注意されたい。図示の例では、インターネットプロバイダAを介してネットワーク100と連結されたHTTPクライアントは、ネットワーク100に連結されたHTTPサーバとの間で、第3のインターネットプロバイダCを経由してパケットをやり取りすることができる。システム10は、IPパケットに埋め込まれたVPがネットワーク100を横断する方法についてコントロールはしない。ネットワーク100を共有し横断する全てのパケットは、下層の共用IPネットワーク100の標準的な手順に従って動く。
【0129】
図6は、ネットワーク104にベースを置くGSMモバイルホンネットワーク等の「回路」を示す。回路ネットワーク104は、デバイス13上で動作するクライアント12とサーバ16の間で連結されている。一旦クライアント12とサーバ16の間で回路が確立されると、システム10はネットワーク104が使う下層のパケットの上にVoxパケット(VP1、VP2、VP3、VP4、VP5等)を積み重ね、「バーチャルVox」回路を作りネットワーク104を通じてそれらを送信する。Voxパケットは、データを送信する技術において知られているように、主として間隔をあけるかデータを形成して回路ネットワークを通じて回路ネットワーク104を順番に横断する。さらに、ペイロードのサイズおよび含まれるヘッダフィールドの数等のパケット構成パラメータを使い、パケットごとのオーバヘッドがないことを利用することもでき、またネットワーク104を通じてデータを送信する速度および/または効率を向上させることもできる。単純化の目的で、一個のクライアント12とサーバ16のみがネットワーク104に接続されて示していることに再度注意を促したい。しかしながら、クライアント12とサーバ16およびその他のコンポーネントとの間の付加的回路は、ネットワーク104を介して一斉に確立することができることについては理解できよう。したがって、ネットワーク104は、Voxパケットを送信するための専用ではなく、むしろ他のタイプのネットワークトラフィックと共有してもよい。
【0130】
図7は、第一のネットワークAにつながる第一クライアント12Aによって動くデバイス13Aと第二のネットワークBにつながる第二のクライアント12Bによって動くデバイス13Bとの間の通信を示す図が示される。さらに、ネットワークA、Bはそれぞれ、ゲートウェイサーバ16Aおよび16Bを含む。ゲートウェイサーバの組16A、16Bは、二つのネットワークA、B間の通信を促進し、デバイス13A、13Bに互いに通信を可能にする。種々の実施例において、二つのネットワークA、Bそれぞれどのようなタイプのネットワークでもよい。例えば、各ネットワークAおよび/またはBは、IPネットワーク、回路タイプのネットワーク、無線通信またはセルラーネットワーク(すなわち、CDMA、GSM、TDMA等)でもよい。サーバ16は、二つのネットワーク間のトラフィックのルートを決めたり「ゲート」として機能したりするので、二つのネットワークA、Bにまたがるゲートウェイサーバとも考えられる。
【0131】
システム10によって、システムのパフォーマンスを最適化するための、いくつかの基本的なネットワークの相互作用に関する考え方がある。これらの考え方には、Voxパケット95が送られる下層のアドレスの分解法、送られたVoxパケットの統合、および所定のネットワークまたはネットワークの組み合わせを通じて送られる一個のメッセージの最大送信単位(MTU)の管理などのファクタが含まれる。
【0132】
下層のネットワークがVoxパケット95を正しいロケーションに送達できるように、ターゲットクライアント12のアドレスを知る必要がある。IPv4ネットワークでは、アドレスは主としてIPv4アドレス、ネットワーク内のホストを一意的に識別する32ビット数である。別のネットワーク技術においては、アドレスは別のタイプの識別子である場合もある。IPネットワークではドメインネームシステム(DNS)を使い、人間が読み取り可能なネームをIPアドレスに変換し、アドレス変換プロトコル(ARP)でIPアドレスを物理アドレスに変換する。下層のネットワーク技術に関わりなく、システム10は、上記のスキームのうちの一つまたは他の既知のアドレススキームを使ってVoxパケット95を正しいロケーションに送達する。
【0133】
パケットベースの通信システムにおいては、もし、下層のネットワークがVoxパケットがカプセル化されたパケットを送達できなければ、送信されたVoxパケットがアドレスされたロケーションに送達されない場合もある。ほとんどのパケットネットワークは、パケットが欠落しても送信側へ通知しない。これとは逆に、パケットは送信側と受信側に依存し、欠落したパケットを通知し、補正する。システム10はこれらの受信側の受信レポートメッセージを使いパケット損失管理を調整するように設計されている。もし、下層のネットワークが欠落し紛失パケットを送信側に通知することができれば、システム10はこの情報をプロトコルの再送信に使用できる。
【0134】
MTUの管理とは、ネットワークを通じて送ることのできる最大送信単位(すなわち、一個のメッセージの最大サイズ)を決定することである。パケット方式のネットワークでは、下層のネットワークがMTUを付与する。回路切り換え型ネットワークでは、ネットワーク効率とパフォーマンスのために、MTUは調節可能なパラメータである場合もある。このように、多くのケースでは、Voxパケット95が効率的に送信されるように、下層のネットワークがVoxパケット95の最大サイズを与えたり決めたりする。例えば、IPネットワークでは、ペイロードがMTUを超えた場合は、相当なパフォーマンスを犠牲にして、パケットは細分化ができる。イーサネット(登録商標)ネットワークを通じたIPでは、送信側のデバイスは、イーサネット(登録商標)が実行するものとして、1518バイトのMTUである。最大IPパケットは、イーサネット(登録商標)ヘッダのための余地を残さなければならない。最大UDPパケットは、IPとイーサネット(登録商標)のヘッダのための余地を残さなければならない。およびイーサネット(登録商標)で生成される最大Voxプロトコルは、例えば、イーサネット(登録商標)MTU(1518)−IPヘッダ(20)−UDPヘッダ(8)=1490バイトである。Voxプロトコルは、それ自身のヘッダを持つので、実際のVoxメディアペイロードはイーサネット(登録商標)ネットワーク上では1490バイト以下である。ギガバイトイーサネット(登録商標)の場合は、MTUははるかに大きくてもよいが、同様の計算式を使って判断される。
【0135】
純粋にパケットベースネットワークにおいては、MTU用に二個の潜在的値、すなわち、ローカルリンクMTUおよび経路MTUがある。ローカルリンクMTUは、ローカルネットワークインタフェースに効率的に送られるように、Voxパケット用に最大サイズが決定する。経路MTUは、遠隔地のノードまで全行程完全な状態で送られるように最大サイズのVoxパケットを出す。送信側がイーサネット(登録商標)を介して接続されている場合は、小さなMTUで、Voxパケットは様々な別のシステムを経由して、受信側までの道順を決められる。宛先までの経路上の最も小さなMTUの場合は、送信側によって決定され通知される必要がある。IPの世界では、「経路MTUディスカバリ」と呼ばれる最も小さいMTUを見つけるための標準的な手順がある。その他の種類のネットワークには、同様な手順が使われてもよい。改めて言うと、システム10は、別のネットワークの上に重ねられているので、上記のどのMTUアルゴリズムでも使うことができる。
【0136】
[H.動作フロー図]
[H.1 記憶及びストリーム]
図8Aないし8Fは一連のフロー図であり、クライアント12とサーバ16上の記憶・ストリームモジュール24、84のそれぞれの動作を示す。
図8Aは、第二のクライアント12
2にメッセージを送信する第一のクライアント12
1のための動作シーケンスを示す。
図8Bと8Cは送信側クライアント12
1上のPIMB書込み部28とPIMBリーダ28の動作を示す。
図8Dと8Eは、受信側クライアント12
2上のPIMB書込み部28とPIMB読取り部26の動作を示す。
図10Fは、サーバ16上の記憶・ストリームモジュール84のフロー図を示す。
【0137】
図8Aにおいて、デバイス13
1上で動作するクライアント12
1のユーザが、送信すべきメディアを生成する。メディアは、デバイス13の側で、ユーザがマイクに話すことによってメディアを作成する、自分のデバイス13上でビデオコンテンツを作成する等、多くの異なる方法で作ることができる。また、メディアはデバイス13によってGPS情報、温度読取り値等の受信側センサデータを受信することによって生成される。メディアがどのように生成されたかにかかわらず、メディアは、PIMB書込み部28(囲み130)によってエンコードされ、PIMB書込み部28は、メディアをインデックスされたメディアペイロードに変換し、クライアント12
1上のPIMB30(囲み132)に記憶する。クライアント12
1上のPIMB読取り部26は、PIMB30からペイロードを読取り、Voxパケットを作成し、ネットワーク18を通じてパケットを受信側クライアント12
2(囲み134)に送信する。経路に沿う送信側クライアント12
1と受信側クライアント12
2の間の各サーバ16は、送信されたペイロードをPIMB85に記憶し、Voxパケットを次のホップ(囲み133)に送信する。受信側クライアント12
2にて、PIMB書込み部28のネット受信機能がVoxパケットをインデックスされたメディアペイロード(囲み136)に変換し、ペイロードをクライアント12
2(囲み138)のPIMB30に記憶する。クライアント12
2上のPIMB読取り部26のレンダリングモジュールは、PIMB30から読取ったペイロード情報を音声またはビデオ(囲み140)等の媒体にレンダリングする。これらのステップについては、
図10Bないし10Eを参照してさらに詳しく記述する。
【0138】
図8Bに、PIMB書込み部28(
図8Aのステップ130)によって実行されるエンコード受信機能のシーケンスを詳しく示す。最初のステップ136
1にて、クライアント12
1を操作するデバイス13のユーザが、送信すべきメディアを生成する。上記したように、メディアは、マイクに話す、カメラを使う、センサデータを受信する、その他メディアを生成するためのコンポーネントによって、得ることができる。次のステップ130
2にて、エンコードレシーバ28aはメディアをエンコードし、インデックスされたメディアペイロード(ステップ130
3)を作成し、メディアはデータ記憶部28cによってPIMB30(ステップ132)に記憶される。
【0139】
図8Cは、送信側のクライアント12
1のPIMB読取り部26によって実行される送信機能のシーケンスを示す(
図8A、ステップ134)。決定ループ134
1において、PIMB読取り部26の送信機能は、送信されるべきインデックスされたメディアペイロードがPIMB30に書き込まれているか、それは送信可能かどうか常にチェックする。もし、使用可能なペイロードがPIMB30にあれば、データ優先順位付与部26fは、ステップ134
2に示すように、MCMSの参加者属性情報を使って、最初に送るべきペイロードに優先順位をつける。最も高い優先順位のペイロードに関する情報は、
図9Aないし9Cに詳述するように、PQM(ステップ134
3)を実行するパケット最適化部26gに渡される。次に、データ読取り部26hによって適切なペイロードがPIMB30から取り出され(ステップ134
4)、パケット部26iによってVoxパケット95に変換される(ステップ134
5)。ついで、Voxパケット95は、送信部26jによって、ネットワーク18を通じて受信クライアント12
2に送信される(ステップ134
6)。受信クライアント12
2は、受信したパケットの特性(損失、ジッタ、処理量)を反映した受信レポートを返す。これらの受信レポートは、PQMが所与の受信側のMABRを計算するのに必要な情報を提供する。プロセスは、戻り矢印で示すように、送信ループごとに送信ステップからフロー図のトップに繰り返される。
【0140】
上記の実施例では、メディアは、一連の流れの中で、エンコードされ、PIMB30に記憶され、ネットワーク上に送信される。代替的な実施例においては、エンコードされたメディアは、PIMB30に記憶されネットワーク上を平行に送信される。すなわち、二つの機能はほぼ同時に起こる。
【0141】
図8Dは、受信側のクライアント12
2PIMB書込み部28のネット受信機能(
図8A、ステップ136)のシーケンスを示す。最初のステップ136
1で、ネットワーク受信部28dがネットワーク18を通じてVoxパケット95を受信する。データ記憶部28fはパケットをインデックスされたメディアペイロードに変換し(ステップ136
3)、PIMB30に記憶する(ステップ136
4)。ペイロードが記憶されると、データ品質管理部(DQM)28gが実行される。DQM28gは、紛失、壊れたりしたパケットがないかチェックし、送信されたデータの正確なコピーが最終的に記憶されることを確実にする。そして、ネットワークの状態に関する受信レポートを送信側に送信する。DQM28gのこれらの機能については、
図9D〜9Fを参照してさらに詳しく説明する。
【0142】
図8Eは、受信側クライアント12
2上のPIMB読取り部26(
図8A、囲み140)のレンダリング機能のシーケンスを示す。最初のステップ140
1において、データ優先順位付与部26aが、MTSD情報、ユーザステータス、プレゼンス情報を含むユーザの意図および注意のステータスを使って、MCMSアプリケーション20によって、レンダリングすると判断されたインデックスされたメディアペイロードに優先順位をつける。優先順位をつけられたペイロードは、データ取出し部26bによってPIMB30(ステップ140
2)から読取られる。PLC/補間部26cは、どちらのコーデックを使うかによって既知のパケット損失補償および補間アルゴリズムを使って、取り出したペイロードにパケット損失補償および補間(ステップ140
3)を実行する。次のステップで、二人以上の参加者が同じ会話の中で同時にメディアを生成した場合(例えば、両者が同時に話している)は、ミックス部26dは、会話の多数のメッセージをミックスする(ステップ140
4)。レンダ部26eは、ミックス部26dからのデータストリームをレンダリングし(ステップ 140
5)、受信側ユーザに音、ビデオ、その他のメディアを生成する(ステップ140
6)。
【0143】
図8Fは、サーバ16が、ネットワーク18上の前のホップからVoxパケットを受信し、記憶し、アーカイブし、Voxパケットを次のホップに送信するシーケンスを示す。最初のステップで、サーバ16は、PIMB書込み部のネット受信機能を実行し(
図8Dと同様)、受信したデータのインデックスされたメディアペイロードを、サーバ16のPIMB85とアーカイブ部89に保存する。また、サーバ16は、PIMB書込み部の送信機能を実行し(
図8Cと同様)、ネットワーク18上の次のホップに受信したパケットを転送する。この方法においては、送信側クライアント12
1によって生成されたメディアのコピーが、受信側クライアント12
2までの経路に沿って各ホップで受信され、記憶され、送信される。
【0144】
上記の実施例においては、受信したインデックスされたメディアの書き込みは、サーバ16のPIMB91に記憶され、次のホップに連続的に送信される。代替的な実施例においては、受信したインデックスされたメディアペイロードが、PIMB91に記憶し、ほぼ同時に次のホップに送信される。送信側、受信側両者のデバイス13のPIMB30にメディアを記憶することにより、メディアの漸次送信とレンダリングが可能となる。送信側においては、送信側のデバイスで生成されたメディアは、それが受信されると、漸次ネットワーク上に送信することができる。種々の実施例においては、エンコードされたメディア(どのように生成されたかにかかわらず)は、PIMB30に記憶される前、後、またはほぼ同時に漸次送信することができる。また、受信側では、入ってくるメディアは、ネットワークを通じて受信されるときに漸次レンダリングすることもでき、ユーザが望めば、ほぼリアルタイムモードでメディアをレビューすることができる。種々の実施例においては、入ってくるメディアは、受信側のデバイス13のPIMB30に記憶されるごとに、記憶される前、後、またはほぼ同時に漸次レンダリングするこができる。受信メディアをタイムシフトモードでレビューするつもりであれば、後でメディアをPIMB30(または、ローカルPIMB30に置き換えられた場合は、サーバ16上のPIMB85でも可)から取り出し、ユーザが指定する時にレビューすることもできる。
【0145】
本アプリケーションの文脈において、「漸次的」または「漸次」という用語は、広く解釈されることを意図し、一般にデータの利用可能性に基づいてデータストリームを継続加工することを意味する。例えば、メディアが作成またはデバイス13上で生成されるに従い、メディアが入手可能な限り、メディアの漸次的エンコード、記憶、パッケージ化および送信は継続する。人が話すと、その人が話している間、メディアは、漸次的すなわち継続的にエンコードされ、記憶され、パッケージ化され、送信される。その人がポーズすなわち、話すのを止めると漸次プロセスするメディアはない。その人が再び話すことを再開すれば、メディアの漸次的処理は再開する。また、受信側では、メディアが受信されている限り(すなわち、入手可能な限り)、メディアは、漸次処理される。メディアが受信されると、そのメディアは継続的に記憶される。メディアが受信されている限り、ほぼリアルタイムモードの場合は、継続的にレンダリングされ、タイムシフトモードでは、記憶装置から継続的にレンダリングされる。上記説明は音声の文脈で述べたが、全てのタイプのメディアが同様に漸次処理することができる。また、メディアの漸次的加工は、必ずしも時間でインデックスされた順序で漸次処理される必要はない。むしろ、メディアは受信された順序で処理される。もし、メディアがインデックスの順序から外れて受信されたら、一実施例においては、受信されたメディアは受信された順序で漸次処理される。そして、PIMB30の中で、インデックスされたシーケンスに組織化される。代替的な実施例においては、受信メディアはインデックスされたシーケンスで組織化され、漸次レンダリングされる。
【0146】
[H.2 PQMの動作フロー図]
PQM26gは、継続的に計算される、送信側と受信側のノードのペアの間の実際の送信容量すなわち帯域幅の近似値(すなわち、所定の時点でのネットワークの能力の測定)、すなわち最大可能ビットレート(MABR)と呼ばれる計量に依存する。瞬時にネットワークの状態が変化するごとに、MABRは更新される。ネットワークの処理量、パケット損失、およびジッタの定期的測定値が、MABRを計算することによって考慮される。また、他の実施例においては、MABRは、時刻、ネットワークのタイプ、その他の条件またはパラメータに基づいて手動でセットまたは制限してもよい。
【0147】
また、PQMは、受信側の意図を考慮し、時間依存型の送信を最適化する。下記のいずれかの場合、送信は時間依存型であるとみなされる。すなわち、(i)受信側の意図が、送信を「ライブ」すなわちほぼリアルタイムモードでレビューしようとしている、または(ii)受信側が、なんらかの理由で(例えば、メッセージは先にアーカイブ部89に保存された)、デバイス13には現在記憶されていないメッセージを即座にレビューしたいと望んでいる。受信側の意図は、受信側の動作によって推論するか、受信側が自分の意図を設定するか別途指定してもよい。一方、受信側の意図がタイムシフトモードでメッセージをレビューすることであれば、送信は時間依存型でないとみなされる。受信側が、ライブモードかタイムシフトモードかどちらかで送信をレビューしようという意図が、少なくとも部分的には、送信の「適時性要件」を定義する。その他の種々の実施例においては、通信の緊急性または優先順位といったファクタも、送信の適時性要件を定義するときに考慮される。
【0148】
送信側と受信側のペアの間のネットワーク経路のノードもまた、受信側の意図のステータスに関して一貫性のあることが必要である。もし、一個のターゲット受信側が適時性を指示したら、すなわち、送信を即座にすなわちライブでレビューしたいと望んだ場合、送信側と受信側の経路に沿うネットワーク上の全ての中間ノードは、その他の受信側要件にもかかわらず、同じ適時性要件を持たなければならない。したがって、各中間ノード適時性要件は、送信が送られた受信側ノードに依存する。この依存性は、ネットワーク送信経路におけるターゲットノードのための「要件の融合」と言われる場合もある。
【0149】
さらに、PQMは、予約されたメッセージペイロードの送信のための理想ビットレート(IBR)を考慮する。時間依存型の通信のために、IBRは、ほぼリアルタイムまたはライブ通信に必要とされるパケット化レート(以下、リアルタイムビットレート(RTBR)という)に基づいて計算される。例えば、音声場合、20ミリ秒の音声データを含む20ミリ秒毎のパケット化レートは、ライブ会話を行うための許容IBRが考慮される。キロバイト毎秒のシステムのためのRTBRは、1秒の音声ペイロードデータに送信するために生成される全てのネットワークヘッダのサイズを加えたサイズとなる。ビデオメディアまたは音声とビデオの組み合わせのためのRTBRは、単なる音声よりも実質的に高くなる。センサまたはGPS位置測定データ等のその他のタイプのメディアのためには、音声よりも低くなると思われる。非時間依存型の通信のためには、IBRは、ネットワークを通じての通信の使用量すなわち効率を最適化するために最大効率ビットレート(MEBR)に設定される。MEBRは、パケット化レートを調節することによって、下層のネットワークのために最大可能な値に計算される。送信側と受信側のペアの間で、多数のメッセージまたはペイロードが送られ場合は、統合IBR(AIBR)が送信のために考慮される。
【0150】
PQMは、各送信側と受信側ペアのための一連の送信ループのデータを送信することによって動作する。各送信側と受信側ペア用の送信ループは、単独のものである。ネットワーク上のいかなる送信もその他送信側・受信側ペアのMABRに影響を与えうる。従って、MABRは、全ての受信側について継続的に計算されることが望ましい。
【0151】
図9Aないし9Cは、一組の送信側と受信側ペアのためのPQMの動作シーケンスを示すフロー図である。
図9Aは、一組の送信側と受信側ペア間のMABRを決定するステップを示す。
図9Bは、一個の送信側と受信側ペアの各送信ループのためのAIBRを計算するステップを示すフロー図である。
図9Cは、送信側と受信側ペア間で送信するデータのループ当たりの量を決定するシーケンスを示す。三つの図に示す処理は、以下に詳述するように、同時に実行され互いに情報のやりとりをする。
【0152】
図9Aにおいて、フロー
図50は、送信側と受信側ペア間のネットワークインタフェースのためのMABRの計算を示す。最初のステップ50
1において、送信側と受信側のペア間のネットワークインタフェースをモニタする。ステップ50
2で、送信側は、受信側におけるネットワーク接続のステータスに関する情報を含むレポートを定期的に受信する。レポートは、受信側によって観測されたネットワークインタフェースでのデータ処理量50
3、パケット損失50
4、およびジッタ50
5の現在のステータスに関する情報を含む。ステップ50
6で、このレポートに含まれるこれらの観測に基づいて送信側でMABRが計算される。これらのレポートのデータをモニタすなわち監視することによって、送信側と受信側のペア間の現在のネットワーク性能または状態に基づいてMABR値が継続的に調節される。ネットワーク性能がデータ送信にとってさらに好適になるので、MABRが向上する。もしネットワーク性能が送信にとって好適以下となれば、MABRが低下し、潜在的に結果としてゼロとなり使用不能なネットワークとなる。このレポートは、TCPネットワークのノードによって生成されるパケット損失レポートと同様のものであるが、さらに処理量情報とジッタ情報を含む。
【0153】
送信側と受信側のペア間に複数のネットワークインタフェースがある場合は、MABRは、受信レポートが受信されるインタフェース毎に計算される。直近にネットワーク上にトラフィックが送られていない場合、または、受信レポートが受信されていない場合は、MABRには現在のネットワークの状態が反映されないことがある。しかしながら、データが送信されているかぎり、受信側によって受信レポートが継続的に生成されるので、送信側のMABR計量はさらに正確な値に速やかに収束する。
【0154】
図9Bは送信ループのためのAIBRを計算するステップを示すフロー
図52である。最初のステップ52
1において、メディアを有するメッセージ(メッセージに所属する時間でインデックスされたメディアの部分)が現在のループの送信側と受信側のペア間で送信される準備ができていることが確認される。つぎに、メディアを有するメッセージのリストが、作られる(52
2)。リスト52
3の各メッセージについて、各メッセージの時間的制約すなわち適時性要件が考慮される(52
4)。もし、個々のメッセージに時間的制約がなければ、IBRは最大効率ビットレート(MEBR)にセットされる(52
5)。一方、メッセージに時間的制約があるばあいは、リアルタイムビットレート(RTBR)にセットされる(52
6)。次のステップ52
7において、リストのメッセージ毎に先に計算されたIBRは、合計されて、送信ループのための統合理想ビットレート(AIBR)52
8となる。戻り矢印52
9にて示すように、上記のプロセスは、送信ループ毎に送信側と受信側のペア間で繰り返される。
【0155】
図9Cにおいて、フロー
図54は、送信ループ毎に送信側と受信側のペア間で送信するデータのレートを決定するシーケンスを示す。最初のステップ54
1において、MABR(
図9Aで計算された)は、次の送信のためにAIBR(
図9Bで判断された)と比較される。
【0156】
MABRがAIBR以下であれば、ループ内の送信の準備ができていると識別されている全てのメッセージが、IBRレートでパケット化され(54
2)、送信される(54
3)。
【0157】
一方、MABRがAIBR未満のときは、一連の手順が適用されて、PQMが以下の目標が満足されるように調節される。すなわち、データの適切なコピーをタイムリーに送達すること、利用可能な帯域幅を有効に使うこと、および/またはペイロードコンテンツおよび現在のネットワーク条件を満足する品質、パケットサイズおよび送信レート。
【0158】
最初のステップにおいて、リストのメッセージは、タイム時間的制約がないかレビューされる(54
4)。時間的制約のあるメッセージがなければ、ビットレートは、MABRまで引き下げられて(54
5)、メッセージが送信される(54
3)。
【0159】
リストに時間的制約のあるメッセージが含まれる場合は、時間的制約のないメッセージに割り当てられたビットレートは、MABRの制限が満足されるまで引き下げられる(54
6)。ビットレートをゼロになるまで引き下げても、MABRを満足しないときは、これらの時間的制約のないメッセージは、ループに送信されるメッセージのリストから除去される。ビットレートがMABR以下になるまで引き下げられ、残ったメッセージはパケット化され、送信される(54
3)。
【0160】
時間的制約のないメッセージを取り除いてもMABRを満足しない場合は、残る時間的制約のあるメッセージのために1ないし複数個の低い品質のコーデックの使用を含む別の手順54
7を使う。この送信ループの間により少ないビット送信することによって、できるだけ早くペイロードデータの送信しようとする試みがなされる。言い換えれば、ペイロードの品質を引き下げることによって、送信は所定の時間内により少ないビット送信することになる。種々の実施例において、それぞれ異なるビットレート対品質のトレードオフをもつ異なる1ないし複数個のコーデックを使うこともできる。低い品質の1ないし複数個のコーデックを使って間に合う場合、すなわち、MABRの制限が満たされれば、メッセージは送信される(54
3)。
【0161】
低い品質のコーデックを使用しても、MABRがまだ満足されない場合は、時間的制約のあるメッセージのパケット化の間隔を増やす(54
8)。この手順によりヘッダ対ペイロードの比率が上げられ、これにより全体のビットレートが下げられるが、待ち時間(すなわち、受信側への送信の送達遅延)が導入される。この手順によってAIBRがMABR以下になれば、送信54
3がはじまる。
【0162】
もし、パケット化の間隔変更後も、まだMABRが満たされない場合は、ビットレートがMABR制限内になるまで漸次引き下げられる(54
9)。この方法でビットレートが引き下げられると、時間的制約のあるメッセージは、ライブ会話の維持ができないレートで送られる。したがって、会話は、「ライブ」から強制的にはずされてしまう。ネットワークがダウンまたは非常に悪い状態のときはデータの送信が始まらない場合もある。再度、上記のシーケンスが送信側と受信側のペア間で送信ループ54
10毎に繰り返される。
【0163】
送信側と受信側のペア間に、多数のネットワークインタフェースがある場合は、
図9Cを参照して記述したシーケンスが、受信レポートが可能なインタフェース毎に実行される。種々の実施例において、送信側は、多数のインタフェースの中を、送信ロードを送達するためのロジックを含むことができる。別の例においては、ペイロードは、一個のインタフェースにのみ送ることができ、別の実施例においては、幾つかの又は全てのインタフェースを使うことができる。
【0164】
上記の説明は、システム10の送信側と受信側ペアの全てに当てはまる。ほとんどの状況において、送信側と受信側ペアには、クライアント12、可動デバイス13およびサーバ16、二個のサーバ16、デバイス13を可動する一個のサーバ16とクライアント12または二個のクライアント12がそれぞれ含まれる。送信側のノードが2つ以上の受信側ノードに同時に送信している場合は、
図9Aないし9Cを参照して説明した上記のシーケンスが受信側と送信側ペア毎に一斉に起こる。
【0165】
[H.3 DQM動作フロー図]
DQM28gは、クライアント12で受信したデータが壊れているまたはパケットが失われていないか判断する。さらに、受信側クライアント12のDQM28gは、受信レポートを生成し、ネットワーク上の送信側ノードに送り返す。また、DQM28gは、バックグラウンドの処理を行い、送信されるデータの正確なコピーが最終的に受信され記憶されることを確実にする。これらの機能について、
図9Dないし9Fを参照して説明する。
【0166】
図9Dは、紛失データおよび/または壊れたデータがないかチェックするDQM28gの動作を示すフロー図である。最初のステップ56
1にて、DQM28gは、CRCあるいは同様の完全性デェック機構等の既知の技術を使って、壊れたパケットがないかデェックする。もしパケットが壊れていると、紛失したものとみなされる(56
2)。次に、DQM28gは、紛失パケットがないか確かめる(56
3)。もし、予め決められた時間が過ぎてもシーケンスのずれたパケットが受信されなければ、それは紛失したものとみなされる。DQM28gは、紛失あるいは壊れたパケットをDNQS32にメモする(56
4)。一方、紛失あるいは壊れたパケットが検出されなかった場合、DQM28gは、帯域幅をセーブするために、送信側が意図的に受信したデータの品質をひき下げたのかどうか判断する(56
5)。引き下げられた品質は、DNQS32にメモされる(56
6)。受信したデータの品質が引き下げられたかどうかにかかわらず、データの受信情報(例えば、パケットのシーケンス番号、タイムスタンプ、およびそのパケットが送られるネットワークの次のノードのネットワークアドレス)が、DNQS32に記憶される(56
7)。上記のプロセスは、フロー図の戻り矢印で示されるように最初から継続的に繰り返される。
【0167】
図9Dに詳細に示すプロセスの結果、質が引き下げられていないパケットの受信、品質が引き下げられたパケットの欠陥および紛失パケットに関する情報は、全てDNQS32に記憶される。メディアを受信すると、DNQS32は、メディアのステータスに関する最新情報を維持する。
【0168】
図9Eは、DQM28gの受信レポート生成機能の動作を示すフロー図である。最初のステップにて、DNQS32は定期的にスキャンされ(58
1)、受信レポートを生成する必要があるメディアかどうか判断される(58
2)。NOの回答の場合、上記のスキャンプロセスが繰り返される。一方、メディアが識別された場合は、プロセスにおいて、そのメディアが、時間的制約があるかどうか、すなわち、ユーザはメディアをライブでレビューしようとしているのか、それともデバイス13に記憶する必要のない、メディアを即座にレビューしようとしているのか、判断する(58
3)。
【0169】
時間的制約がない場合は、受信側は、送信側に再送優先順位を(以下に定義する如く)低にセットするよう通知する(58
4)。時間的制約がある場合は、パケット損失の量が考慮される(58
5)。パケット損失の量が使用可能な品質の範囲を超えていれば、再送優先順位は、高にセットされる(58
6)。上記のようにパケット損失の量が大きすぎる場合は、受信側は、受信と同時にそのメディアをレビューすることはできない。品質が許容範囲内であれば、すなわち、レンダリングしたときに理解可能であれば、受信レポート送信の優先順位が低にセットされる(58
4)。受信側が、受信と同時にレビューしているかどうかにかかわらず、受信レポートが送られ(58
7)、DNQS32が更新され(58
8)、ネットワーク品質管理部(NQM)28hが更新される(58
9)。したがって、ステップ58
4で定義される再送要求は、時間的制約に基づく条件である。ステップ58
6で定義される送信要求は、時間的制約と品質の両方に基づく条件である。
【0170】
再送優先順位は、送信側のPQM26gに、再送が必要なメディアの送信レートに正しく優先順位をつけるように通知する。例えば、再送優先順位が高にセットされると、送信側PQM26gは、どの新しいメディアよりも先に再送しなければならない。優先順位が低の場合は、PQM26gは、新しいメディアの後に再送信メディアを送信しなければならない。
【0171】
上記プロセスは、メディアが受信される毎に受信レポートが生成されるように、継続的に繰り返される。もし、送信側がタイムリーに受信レポートを受信しない場合、送信側のPQM26gは、送信レートを引き下げ、受信レポートが受信されない場合は、最終的には送信を停止する。
【0172】
図9Fは、紛失または品質を引き下げられたメディアを要求するシーケンスを示すフロー図である。最初のステップ60
1にて、DNQS32は紛失メディアまたは品質を引き下げられたメディアがないか、定期的にスキャンされる(60
2)。紛失メディアも品質を引き下げられたメディアもない場合は、上に定義したスキャンが定期的に繰り返される。
【0173】
予め決められた閾値の時間が経過しても、シーケンス外のパケットが着信しない場合は、メディアは紛失したものとみなされる(60
3)。パケットが閾値の前に着信すれば、紛失とはみなされない。一方、パケットが閾値を越えても着信しない場合は、そのパケットは紛失したとみなされる。紛失パケットについて、再送を要求する低優先順位が作られ(60
4)、要求の時間がDNQS32にメモされる(60
5)。このプロセスは、紛失パケットが受信されるまで繰り返される。紛失パケットが着信し、PIMB30の中に対応するメディアがある場合は、紛失メディアのステータスはDNQS32から除去される。したがって、ステップ60
4で定義される再送信要求は、メディアが紛失したかどうかの判断に基づく条件である。
【0174】
もし、品質を引き下げられたメディアであれば、DQM32は、そのメディアがライブの会話の一部かどうか判断する(60
6)。品質を引き下げられたメディアでない場合は、品質を引き下げられたメディアの完全な品質のコピーを求める要求が作られ(60
7)、完全な品質のメディアが紛失したと認定され(60
8)、要求した時間がDNQS32にメモされる(60
9)。そのメディアがライブの会話の一部分である場合は、ネットワーク回線容量を残すために、即座には動作はおこなわれない。会話がライブモードから遷移する場合は、60
7ないし60
9のステップが実行され、最終的には品質を引き下げられたメディアの完全な品質のコピー(正確なすなわち完全な)が確実に受信される。受信側クライアント12のPIMB30にデータが入手可能になると、関係するメディアの品質引き下げのステータスはDQNS32から取り除かれる。ステップ60
7で定義される送信要求は、品質の引き下げとライブ会話の一部でないことの二つに依存する条件である。
【0175】
上記のプロセスは、戻り矢印で示すように、フロー図の60
5および60
9からトップの60
1へ、継続的に繰り返される。
図9Fに示すプロセスを繰り返すことによって、送信される全てのメディアの完全なコピーが、最終的に受信側デバイス13のPIMB30に記憶される。このように、送信されるメディアの完全なコピーの記憶が受信側デバイス13で保証される。
【0176】
[I.グラフィカルユーザインタフェース]
図10は、クライアントアプリケーション12を実行するデバイス13の例を示す。デバイス13は、グラフィカルユーザインタフェースディスプレイ110、データ入力ボタン、キー、すなわちキーボード112、マイク114、および電気信号を音に変換するスピーカー等のトランスデューサー116を含む。また、ディスプレイ110はタッチスクリーンとして入力を受け付ける。さらに、ディスプレイ110とキーボード112は、タッチスクリーンインタフェースを用いて連結することもできる。上記のように、デバイス13は、下記のようないろいろな異なる通信ツールであってもよい。例えば、デスクトップコンピュータ、ラップトップまたはその他のモバイルコンピュータ、パーソナル・デジタル・アシスタンス、プログラマブルの固定またはセルラーホン、プログラマブルラジオ、その他どのようなタイプであれ、プログラマブル通信装置など。図に示すデバイス13の例は、上に挙げた全ての通信デバイスを代表し、あるいは含む意味で、「一般的」例である。さらに、用語「グラフィカル」ユーザインタフェースは、限定的意味に解釈されるべきではない。デバイス13上で実現することのできるその他のタイプのユーザインタフェース、以下に説明する多様な機能を実行するために使うことのできる全て、すなわち音声/DTMFインタフェース、音声ユーザインタフェース(VUI)、無線切り替えインタフェース、あるいはその組み合わせを含む。単純に説明するために、ユーザが情報のやりとりするためのデバイス13のさまざまなタイプの方法を、一般に「ユーザインタフェース」と称する。
【0177】
全てのデバイス13が、そのタイプにかかわらず、ユーザがシステム10の中でデバイス13を操作し、他のユーザのデバイス通信することができるユーザインタフェースを有することが好ましい。ユーザインタフェースは、実質的に限りなく異なる表装、感触をもつように設計されてもよいが、全てのデバイス13が共通に備えるべき幾つかの機能がある。これらの機能を以下列挙する。
【0178】
ユーザインタフェースは、次のようなステータス標識すなわちフラッグを一またはそれ以上含むことが好ましい。すなわち、(i)バッテリ標識、(ii)接続標識、(iii)時計、(iv)送信ステータス、(v)通信同期ステータス、(vi)レビューステータス、(vii)優先順位メッセージを求める注意および(viii)失敗メッセージなど。
【0179】
ユーザインタフェースは、一個の会話を行い、管理するための次のような機能、フラッグおよびコンポーネントを含むことが望ましい。すなわち、(i)会話の名前および/または参加者のリスト、(ii)会話のステータス、(iii)会話のタイプ、(iv)会話の継続時間、(v)会話の頭からの時間、(vi)人目に付くメッセージ、(vii)参加者のプレゼンス/ステータス、(viii)ナビゲーション付きメタデータ、(iix)会話の属性または指示子、(ix)タイトル、スケジューリング、参加者、会話サマリーを含み、会話のセットアップ、(v)どの参加者がメッセージを投稿したか、だれがメッセージを聞いたか、見たかを示す標識。
【0180】
ユーザインタフェースは、また、上に列挙した機能に加え、マルチ会話を行い、管理するための次のような 機能、フラッグおよびコンポーネント含むことが好ましい。すなわち、(i)会話毎の名前/識別子、(ii)ライブ/アクティブまたはスタンディング/インアクティブ標識、(iii)レビュー位置、頭/タイムシフト、(iv)優先順位とその他の属性、(v)会話の部分が紛失したかを示す標識。
【0181】
ユーザインタフェースは、好ましくは以下の多数のナビゲーション機能を含む。すなわち、(i)会話毎のDVRスタイル早戻し/早送り(ii)インスタントメッセージングスタイルの個人メッセージナビゲーション(iii)会話時間標識(iv)タイムスケールシフティング(すなわち、会話のメッセージを通じての後方ズーミングと転送)、(v)会話の優先順位の変更、(vi)ハングアップおよび(vii)ホームなど。
【0182】
前記機能は、いろいろな方法、例えば、タッチスクリーングラフィカルユーザインタフェース110またはデータ入力ボタン、キーすなわちキーボード112、マウス、音声入力コマンドもしくはその組み合わせ等のその他入力デバイスを使って実現することができる。上記の機能および実現する方法は、全てを網羅的するものではない。使用可能な様々な方法と技術は広範囲にわたるので、その全てをここにリストし議論することは実際的ではない。
【0183】
[J.会話]
MCMSアプリケーション20は、以下のようないろいろな異なるタイプの会話をサポートする。ほぼリアルタイムな、あるいは「ライブ」コール、すなわち、参加者が話したときからまたは第一の参加者の声を聞いた時からの遅延が非常に小さい会話;参加者が交換する音声メッセージで、メッセージ間の遅延が長い会話、多数のユーザが参加する「ライブ」会議通話;定期的に予約した時間に行われるスタンディング会議通話;同時ブリーフィングのような、設定可能な構造化されたコールタイプで、前もってレビューできるように、参加者がそれぞれ予め他者にブリーフィングメッセージを残し、ライブ会議通話に参加する会話。さらに、MCMSアプリケーション20の固有の属性として、異なるタイプの会話の間をユーザが遷移できる。例えば、参加者は音声メッセージモードからライブ通話モードへ切目なく遷移したりまた戻ったりできる。あるいは、ライブ会議通話の参加者が音声メッセージモードに遷移し、会議コールの後に互いに更新事項または行動事項を送信しあう。いくつかの例を説明したが、システム10は極めてフレキシブルであり、異なるタイプの通話ないし会話間およびマルチ会話間の遷移方法の多くの選択肢を提供できることを理解されたい。メッセージ間の遅延を変えることによって、参加者は自分の要求に最も適した会話のタイプの間を効果的に流れることができる。したがって、上記の例は限定的に解釈されるべきではない。
【0184】
上記のように、本来の文脈とシーケンスが維持されたメッセージによって会話が構成されている。送ったメッセージは、現存今ある会話に所属するか、新しい会話をはじめるかどちらかである。典型的な会話は、定義された主題、トピック、時間、グループまたはチャンネルの回りに組織された一組のメッセージを含む。例えば、会話は、人の共通のグループ、たとえばクラブのメンバー同士、会社では各週の販売会議のような定時のスタンディング会話、友達同士であれば、ディナープラン作り等のさまざまなトピックでその場その場の会話などが考えられる。
【0185】
それぞれの会話は、名前、参加者のリスト、開始と終了時間、少なくともペンディング、アクティブまたは終了を含む状態を含む一組の属性によって定義される。その他の実施例ではその他の会話状態もありうる。ユーザは各自のデバイス13上のMCMSアプリケーション20を使ってやり取りをする。好適な実施例では、このインタフェースにより、ユーザは様々な属性を使って会話を組織することができるようになる。
【0186】
参加者と会話の間の関係にも属性がある。これらの属性には、優先順位、ステータス(会話における参加の状態)などがあるがそれに限定されない。参加者のステータスの値には、アクティブ、一時にひとつの会話以上に参加、タイムシフトモードで会話をレビュー、ライブにキャッチアップ、受動的に参加(すなわち、アクティブにレビューしていないが、高い優先順位のメッセージを受信中)、スタンバイ、もしくは会話を無視(すなわち、会話に参加、記録することに減退)、などがある。
【0187】
受信側の視点から、ユーザがメッセージの相対的優先順位を選択または定義することもできる。例えば、ある人のボスからのメッセージは、世間の知人よりも一般に高い優先順位があたえられる。幾つかの実施例においては、ある受信者は自分自身の優先順位を設定することができる。MCMS−Cの実施例として、ユーザは、会話を連続してレンダリングできるようにその会話をサブセットすることも選択できる。この場合ユーザは、これらの会話に優先順位をセットする。システムは、このユーザセットした優先順位を使い、レンダリングすべきメッセージに順序をつける。上記のアルゴリズムによって、ユーザによる優先順位およびメッセージデータに関して入手できる情報(MTSDを超えて)を使って、レンダリングすべきメッセージを並べかえる。
【0188】
戦術的通信のようなその他の実施例では、受信側は優先順位を設定できないか制限される。例えば、消防士は、消防隊長からのメッセージの優先順位を下げることはできない。しかし、送信側のユーザは、緊急メッセージまたは高い重要度のメッセージを送信することができる。メッセージに緊急のタグを付けることによって、受信側の全ての優先順位の設定を無視して、メッセージは受信側で即座にレンダリングされる。多数の緊急メッセージ同士での衝突は、予め決められた優先順位スキームに基づいて解決される。
【0189】
[K.MCMS動作]
図11Aは、MCMSアプリケーション20のおもな機能を示す組織
図1100である。主な機能には、アカウント管理1102、会話管理1104、集合会話リスト管理1106、会話参加1108、通話管理1110、およびコンタクト管理1112がある。システム10に登録しログインした後、ユーザは、以下に詳細に説明する、さまざまな管理機能を実装するデバイス13のユーザインタフェースを通じて、ナビゲートすることができる。幾つかの実施例では、これらの機能が、大きな自由度を提供する。戦術的な無線または通信無線のような他の実施例では、ユーザインタフェースの実装は、多数のユーザ機能およびデバイスの実用性満を足するために予め設定されたオプションにより拘束を受ける場合もある。ここでの説明は、例示的に挙げるものであって、MCMSの機能の包括的な説明を意図したものではなく、MCMSの属性の幾つかの概観を提供することを意図したものである。
【0190】
[K.1 アカウント管理]
アカウント管理機能1102のもとで、登録ユーザは、一定の設定と好みを変更することができる。ユーザは、自分のEメールアドレス、パスワード、名前、電話番号、電話パスワード、着呼番号、デフォルトおよび/またはユーザ定義レンダリング速度、タグ、メッセージをレビューするためのゲインまたはボリュームのレベル、ライブモードへキャッチアップなどを変更することができる。これらの変更を行うには、ユーザは、自分のデバイス13のインタフェース110から適切な情報に入る。MCMSアプリケーション20は、MCMSデータベース22に好みの更新を文字書き込みで回答する。
【0191】
[K.2 会話管理]
図11Bに示すように、会話管理1104はユーザが、自分の会話の集合リストを見ること、新しい会話を開設すること、会話の細部を更新すること、会話を削除すること、会話を閉じること、ができるようにする一組の機能である。これらの機能のそれぞれについて以下に説明する。
【0192】
会話を見る1104a−会話毎に、MCMSアプリケーション20は、ユーザに以下の一またはそれ以上の属性を提供することができる:会話の名称、実際の開始時間、最新の活動、タグ、期間および参加者のリスト。各参加者には、名前および/または電話番号、ステータス(ライブ通話、その他のコール、過去、キャッチアップモード、オフライン可、オフライン−使用不能)。
【0193】
会話の開設1104b−ユーザは、インタフェース110を通じて、会話名、コンタクトのリストおよびオプションとして予約した開始時間を入力して会話を開設する。開始時間に指定がなければ、開始時間は即座とみなされる。応答として、MCMSアプリケーション20は、コンタクトリスト上の各参加者の記録関連づけながら、データベース22の中に新しい会話を開設する。また、MCMSアプリケーション20は、データベース22の中にコンタクトリスト上のユーザ毎の参加者記録を作成し、呼出し側に、コンタクトリスト上に他者の情報が存在することを受信できるようにする。会話が予約されている場合は、MCMSアプリケーション20は、指定された時間に会話を開始する。そうでない場合は、会話は即座に開始する。
【0194】
会話細部の更新1104c−ユーザは、ユーザインタフェース110を通じて会話に変更を加えることができる。例えば、参加者が加えられたり除去されたりできる。参加者のステータスに変更があれば、MCMSデータベース22の中で更新される。
【0195】
会話の削除1104d−ユーザは、インタフェース110を通じて自分の会話リストから特定の会話を削除することができる。これに応じて、MCMSアプリケーション20は、データベース22に当該変更を書き込み、会話の削除を指示する。
【0196】
会話の終了1104e−ユーザは会話の終了を選択することができる。一実施例においては、会話を開設したユーザのみがその会話の終了を選択することができる。
【0197】
[K.3 集合会話リストの管理]
図11Cに示すように、集合会話リスト管理1106は、ユーザにマルチ会話(すなわち、ユーザの集合会話リスト)に参加することを可能にする一組の機能である。集合会話リスト管理機能により、ユーザは、自分のデバイス上のインタフェース110を通じて、一方で、タイムシフトモードで別の会話に参加しながら、会話「ライブ」に参加することができる。
【0198】
会話の終了1106a−インタフェース110を通じて、ユーザはユーザの集合会話リストの中から一個の会話を選択することができる。現在の会話メッセージは、「ライブ」またはタイムシフトモードでレンダリングすることができる。ユーザは、時々集合会話リストの中の現在の会話を切り替えることができる。
【0199】
会話モードの切り替え1106b−オプションの実施例において、ユーザは、動作のモードをMCMS、MCMS−CおよびMCMS−S間で切り替えることができる。
【0200】
[K.4 会話への参加]
図11Dに示すように、会話参加1108は、ユーザに会話の開始、会話への参加通知の受信、会話のステータス情報の取得、および会話の終了を可能にする一組の機能である。
【0201】
会話の開始1108a−会話が開かれると、インタフェース110を通じてユーザによって、またはMCMSアプリケーションの中のスケジューラによって各参加者のステータスがチェックされる。もし、誰か参加者がオフラインであると、その人にコンタクトしようとする。もし、誰か参加者がオンラインになってはいるが別の会話に参加している場合は、MCMSアプリケーション20はその参加者に通知する。全てのオンライン参加者のプレゼンスステータスは、データベース22のなかで更新される。
【0202】
受信の通知1108b−システムはユーザインタフェース110を介してグラフィック表示および/または音響で通知を行い、注意を会話向けることが求められていることをユーザに通知することができる。
【0203】
会話ステータス1108c−ユーザはデバイス13のインタフェース110を通じて、会話のステータス要求することができる。これに応えて、MCMSアプリケーション20は、データベース22に記憶されているステータス情報を集め、その情報をユーザに提供する。
【0204】
会話のポーズ1108d−ユーザインタフェース110を通じて、ユーザは、アクティブ会話を終了するか、そこから切り換えて出ることもできる。これに応えて、MCMSアプリケーション20は、データベース22の中のアクティブ会話のためのユーザの参加者ステータスを更新し、記憶・ストリームモジュール24にその会話からそのユーザを取り除くよう指示する。
【0205】
[K.5 会話のコントロール]
図11Eに示すように、会話コントロール1110は、ユーザに会話への参加をコントロールかのうにする一組の機能である。これらの機能は、会話のメッセージをレビューするときにユーザに、ライブにキャッチアップ、頭にスキップする、過去のロケーションにジャンプする、ポーズ、早く再生および遅く再生することを可能にする。これらの各機能は、デバイス13上のインタフェース110を通じてユーザによって開始される。
【0206】
ライブにキャッチアップ1110a−ユーザは、「CTL」機能を使って進行中のライブ会話にキャッチアップすることができる。この機能が起動されると、MCMSアプリケーション20が、ユーザがレビューした会話の最後のポイントをデェックし、記憶・ストリームモジュール24に先に聞かれなかったメッセージをユーザが指定するオプションの通常のレンダリングよりも早く再生レンダリングするよう指示する。会話の頭に達したら、ライブモードに途切れ目なく遷移する。
【0207】
ヘッドにジャンプ1110c−この機能は、ユーザに、会話におけるユーザの現在のポイントと会話の頭間の途中にあるメッセージをスキップし会話の頭へジャンプすることを可能とする。実行されると、MCMSアプリケーション20が、記憶・ストリームモジュールに会話の頭のメッセージを即座にレンダリングするよう指示する(もし、会話の頭が現在のライブ通話であれば、これをライブにジャンプする(JTL)という)。
【0208】
過去にジャンプする1110d−この機能は、ユーザが巻き戻しすなわちリプレイ機能と同様、会話の先行するメッセージまたはポイントにジャンプして戻るのを可能とする。実行されると、MCMSアプリケーション20が記憶・ストリームモジュール24に、巻き戻しポイントからメディアのレンダリングを開始するよう指示する。
【0209】
ポーズ1110e−この機能は、ユーザに会話のメッセージのレビューをポーズすることを可能とする。応答として、記憶・ストリームモジュール24は、別の命令が出されるまでメッセージのレンダリングを停止する。
【0210】
早く実行1110f−この機能は、ユーザにもっと速くメッセージをレンダリングすることを可能とする。応答として、記憶・ストリームモジュール24は、通常の速さよりも速くメッセージをレンダリングする。レンダリングの速さは、ユーザが指定するか、初期設定の多数のオプションの中から選択することもできる。
【0211】
遅く再生1110g−この機能は、ユーザにメッセージをもっとゆっくりレンダリングすることを可能とする。応答として、記憶・ストリームモジュール24は、通常の速さよりも遅くメッセージをレンダリングする。レンダリングの速さは、ユーザが指定するか、初期設定の多数のオプションの中から選択することもできる。
【0212】
[K.6 コンタクトの管理]
図11Fに示すように、システム10は、コンタクトリストとユーザグループを管理するためのホスト機能をユーザに提供する。これらの機能には、コンタクトとユーザグループを加える、編集する、削除する、がある。これらの各機能は、デバイス13のインタフェースを通じて、ユーザによって実現される。ユーザのコンタクトリストまたはグループリストの変更、削除はすべてMCMSデータベース22に記憶される。
【0213】
コンタクトを加える1112a−この機能は、ユーザにコンタクトリストに新しいコンタクトを加えることを可能とする。新しいコンタクトは、ユーザか外部のコンタクトに登録される。主に名前、電話番号、番号のタイプ(電話、オフィス、ホーム、コンピュータなど)、Eメールアドレス、その他個人情報などがコンタクト記録のために提供される。
【0214】
コンタクトの編集1112b−この機能は、ユーザに現在のコンタクト記録を編集または更新することを可能とする。
【0215】
コンタクトの編集1112c−この機能は、ユーザに現在のコンタクト記録を除去または削除することを可能とする。
【0216】
コンタクトを検索1112d−この機能は、ユーザにコンタクトリストの中の特定のコンタクトを検索することを可能とする。検索は、名前、電話番号、直近にコールした、最も頻繁にコールした、グループなど多くの基準を使って行うことができる。
【0217】
参加者リスト入手1112e−この機能は、ユーザに、例えば、名前、直近にかけた電話、直近にきた電話、最も頻繁にかけた電話など多くの異なる検索基準を使って、会話の参加者リストを検索、取り出しを可能とする。
【0218】
呼出し側にステータスの閲覧を許可1112f−この機能は、第一のユーザに、他のユーザに第一のユーザのステータスを閲覧することを許可することを可能とする。権限のないユーザは、第一のユーザのステータスを閲覧することはできない。
【0219】
コンタクトのグループを作成1112g−この機能は、ユーザに多数のコンタクトを一のグループに関連付けることを可能とする。ユーザがグループを定義すると、そのグループのコンタクトリストはMCMSデータベース22に記憶される。
【0220】
コンタクトグループを編集する1112h−この機能は、ユーザに、グループを編集またはグループのメンバーのためのコンタクト情報を更新することを可能とする。
【0221】
コンタクトグループを削除する1112i−この機能は、ユーザにグループを削除することを可能とする。
【0222】
[L.MCMSの動作]
[L.1 MCMS−C]
上記したように、MCMS−Cの動作は、MCMSと同様に、システムによって自動的に管理される優先順位とメッセージのタイムシフトの階層的なシステムによって、付加的機能によってユーザにマルチ会話に連続して管理し、参加することを可能にする。MCMS−C機能の実行には、3個の基本的プロセスがある。
図12Aに示すように、第一のプロセスは、連続的なレンダリングのための一組の会話を定義することである。一旦リストが定義されると、優先順位およびその他ファクタの階層的なセットがその会話のセットと関連するインデックスされたメディアペイロードに適用される。つぎに、インデックスされたメディアペイロードは、順序付けされた順序で配列される。配列された順序でメディアをレンダリングすることによって、会話のセットのメッセージが連続してレンダリングされる。
【0223】
図12Aは、連続してレンダリングする会話のリストを定義するステップを示すフロー図である。最初のステップ1202において、ユーザの会話の集合リストが定義される。次に、ユーザか、または予め設定されたデータ(ステップ1204)を使って、連続的なレンダリングを行うための統合リストの中から会話を選択する(ステップ1206)。例えば、戦術的な通信システムでは、主として予め設定したデータを使い会話を連続してレンダリングする。非戦術的なアプリケーションでは、ユーザは、継続的にレンダリングする会話を選択する上で、一定の高い自由度が与えられる。
【0224】
図12Bは、継続する会話のメッセージをレンダリングする優先順位の階層的なセットを定義するステップを示すフロー図である。最初のステップ(1208)で、一組の優先順位のルールが定義され、連続してレンダリングされる会話のリストに適用される(1206)。種々の実施例においては、一組の優先順位のルールは、堅固な階層的な通信プロトコルから高い柔軟性をもつ通信プロトコルまであっても良い。例えば、しばしば堅固な階層性が望まれる戦術的な通信システムにおいては、現時点のメッセージがレンダリングされている順序が、優先順位のルールのセットとして与えられることが望ましい。例えば、戦術的なシステムにおいて、消防隊長からのメッセージの第一応答者に最も高い優先順位を与えることができる。次のレベルの優先順位は、燃え盛るビルの内部にいる消防士に与えることができる。次のレベルに、ビルの外側にいる消防士に優先順位を与えることができる。火災との戦いを監督している人の現在のメッセージに堅固な優先順位を定義することにより、重大性が少ない役割についている人に先立って、危険な場所にいる人にレンダリングすることができる。非戦術的通信では、個人的な必要を満たす独自の優先順位スキームを定義するうえでユーザは大きな自由度があたえられてもよい。例えば、営業部長は、最も重要なクライアントから重要度の少ないクライアントを継続する会話をリストして、優先順位のスキームを定義することができる。あるいは、ユーザは家族や友達の中で継続的なメッセージの優先順位をつけることもできる。使うスキームにかかわらず、継続する会話のための優先順位リストをこのプロセスで定義する(ステップ1210)。
【0225】
図12cは、さまざまな継続する会話から受信したメッセージのキューの構造を示すフロー図である。最初のステップで、レンダリングされないメッセージのインデックスされたメディアペイロード(すなわち、メディアストリーム)の利用可能性が、連続してレンダリングされる会話ごとに継続的に検出される(ステップ1212)。使用可能なインデックスされたメディアペイロードストリームに優先順位の階層が適用される(ステップ1214)。優先順位の階層および以下に述べる可能な他のパラメータに少なくとも部分的に基づいて、使用可能なインデックスされたメディアペイロードが、シーケンス順序に配列される(ステップ1216)。続いて、インデックスされたメディアペイロードは、シーケンスの順序で連続してレンダリングされる(ステップ1218)。上記のプロセスを連続的に繰り返すことによって、マルチ会話のメッセージが連続してレンダリングされる。
【0226】
一実施例において、順序付けの順序は、部分的ないし全面的に優先順位の階層に基づく。代替的な実施例においては、他のパラメータに加え、階層および利用可能性も考慮されてもよい。例えば、シーケンスの順序は、以下にあげる一またはそれ以上のパラメータを使って定義することもできる。現在レンダリング中のインデックスされたメディアペイロードのストリームを高い優先順位の会話のインデックスされたメディアペイロードによって中断されることと関わる切り替えコスト、インデックスされたメディアペイロードの使用可能なストリームの品質、インデックスされたメディアペイロードが受信された場合の相対的タイム、配置換えの順序またはシステムのコントローラの入力。
【0227】
異なる会話のメッセージの間で衝突が起きた場合、シーケンスの順序の最初のインデックスされたメディアペイロードは、その他の使用可能なインデックスされたメディアペイロードのレンダリングが休止または遅延されている間に、レンダリングされる。衝突がない場合は、インデックスされたメディアペイロードは、可能になり次第、即座にレンダリングされる。
【0228】
さらに他の実施例においては、連続してレンダリングされる会話のメッセージは、オプションとして、タイムシフトモードでレビューされてもよい。第一の通信デバイスユーザが、連続してレンダリングされる会話に関わるメディアを生成する場合は、メディアはインデックスし、ネットワーク上のサーバ16のPIMB85とともにデバイスのPIMB30に記憶することもできる。このように、会話がタイムシフトモードでレビューされる場合は、ユーザは、会話に関係する、入ってくるメッセージだけをレビューするか、または会話に関わる第一のユーザが作成したメディアと入ってくるメッセージの両方を、時間でインデックスの順序でレビューするか選択できる。
【0229】
[L.2 MCMS−Sの動作]
MCMS−Sすなわち同時モードにおいては、デバイス13を実行するクライアント12のユーザは、同時レンダリングするための一組の会話を定義することができる。一組の会話が定義されると、その一組の会話に関わるインデックスされたメディアペイロードのストリームが、それらが重複しているかどうかにかかわらずデバイス13上に同時にレンダリングされる。代替的な実施例においては、オプションとして、ユーザは、メディアストリーム組から別途受信したインデックスされたメディアペイロードをレンダリングすることができる。また、オプションとして、同時会話のインデックスされたメディアペイロードは、ほぼリアルタイムモードまたはタイムシフトモードでレンダリングすることもできる。
【0230】
[L.3 MCMS、MCMS−CおよびMCMS−Sの例]
図13Aないし13Dは、MCMS、MCMS−CおよびMSMS−Sの会話の属性と動作を示す一連の図である。
【0231】
図13Aは、ユーザ「X」と、「Y」と「Z」で示される他の2個のユーザとの間で行われる、会話「A」のメッセージのインデックスされたメディアペイロードをレンダリングするシーケンスを示すタイム図である。この例では、tl、t5、56、t7およびt9で示されるタイムインターバルの間にユーザYよって生成されるメディアである。t3、t6およびt9ないしtl0で示されるタイムインターバルの間にユーザZによってメディアが生成される。
【0232】
ユーザXのデバイス13でのレンダリングシーケンスは図の一番下に示される。インターバルtl、t5およびt7の間には、Yから取出したメディアのみレンダリングされる。t3とtl0のインターバルの間には、Zから取出したメディアのみレンダリングされる。t6およびt9のインターバルには、YとZの両者から取出したメディアがレンダリングされる。t2、t4およびt8のインターバルには、ユーザY、Zのどちらもこの間メディアを生成していないので、何もレンダリングされない。tlないしtl0のインターバルは、固定的な時間のインターバルではなく、メディアが生成されている時間を示すだけであることに注意されたい。
【0233】
図13Aは、会話の属性を良くあらわしている。一個のユーザ(YまたはZ)がメディアを生成していると、そのメディアは、Xのデバイス13で受信され、それはレンダリング可能である。ユーザXとYがともにメディアを生成している場合は、どちらのメディアストリームもXのデバイス13で受信されミキシングに使用可能である。ユーザXとYのどちらもメディアを生成していない場合は、Xのデバイス13ではメディアは何も受信されない。前にも述べたように、ユーザXは、会話Aの間に、リアルタイムモードかタイムシフトモードのどちらかで生成されたメディアをレビューするオプションがある。また、ユーザXは、図に示すように、混合したフォーマットでメディアをレビューするか、YとZからのメディアをタイムシフトモードで別々にレビューできるオプションがある。
【0234】
図13BはMCMSの動作を示す。この例では、ユーザは、A、BおよびCで示す3個の会話に参加している。会話A、B、およびCについては、ユーザは、それぞれ(Al、A2、A3、A4)、(Bl、B2、B3)および(Cl、C2)で示すメッセージを生成または受信する。各メッセージのタイミングおよび期間は、時間線に沿う開始点で示す。この例では、メッセージB2を除き、全てのメッセージが時間的に重複していることに注意いただきたい。
【0235】
MCMSアプリケーションを使って、ユーザは現在の一個の会話を選択する。選択された会話については、ユーザは入ってくるメッセージをレビューすることができ、会話の他の参加者に送信するメッセージを生成することができる。この例では、ユーザは、現在の順序で会話B、CおよびAをそれぞれ選択する。したがって、メッセージのシーケンスは、最初はBl、B2、およびB3、Cl、C2が続き、最後にAlないしA4が来る。現在ある会話が選択されている間に、ユーザはほぼリアルタイムモードとタイムシフトモードの間で遷移でき、また戻ることができる。図に示す最終のレンダリングは、上の図に示すように、受信したメッセージのタイミングに対応するものではない。図の下の部分は、ユーザによって選択された会話の順序にに基づく、メッセージのレンダリング順序のみを示す。
【0236】
図13Bの例は、MCMSアプリケーションの属性を良く表している。ユーザは、現在行われている会話の中から一個を選択する。他の会話は休止する。また、ユーザは随時全ての会話の中を現在の会話を遷移することができる。
【0237】
図13Cは、MCMS−Cの動作を示す図である。この例では、ユーザは連続する会話A、Bに参加している。会話Aでは、三個のメッセージAl、A2、およびA3が受信される。会話Bでは、三個のメッセージBl、B2およびB3が受信される。この例では、メッセージB1がメッセージA1と衝突することに注目いただきたい。また、会話Aは会話Bよりも高い優先順位が持っている。
【0238】
図に縦の破線で示すように、二つの会話の連続的なレンダリングを行う間に、高い優先順位を持つメッセージAlおよびA2が先にほぼリアルタイムでレンダリングされる。メッセージA2とA3の間には、比較的大きなタイムギャップがあるので、このスペースは、タイムシフトおよびレンダリングメッセージBlとB2で埋められる。A3が到着すると、それはリアルタイムでレンダリングされ、一方メッセージB3は、高い優先順位のメッセージA3がレンダリングされた後にのみレンダリングされる。高い優先順位のメッセージの間に低い優先順位メッセージをタイムシフトでレンダリングすることによって、連続的なマルチ会話を管理することができる。この単純な例では、優先順位が、レンダリングするための連続的な順序を決めるために使われる唯一のパラメータであることに注意されたい。上記のように、その他の多くのパラメータを使うこともできる。
【0239】
図13Dは、MCMS−Sを示す図である。この例では、ユーザは、A、BおよびCに関わっている。図は、会話A、BおよびC毎に、メッセージAl、A2およびA3、Bl、B2及びB3、及びCl及びC2がそれぞれ受信される様子を示す。MCMS−Sでは、入ってくるメッセージは、それが受信されるのと平行して受信側デバイス13でレンダリングされる。したがって、下の図に示すように、三つの会話A、B及びCのメッセージのレンダリングシーケンスは、メッセージが受信されたときと同じである。この方法においては、マルチ会話は、同時にレンダリングすることができる。
【0240】
上記の例では、MSMS−CおよびMCMS−Sを含むMCMSアプリケーションのいくつかの変形例について説明した。使われるMCMSアプリケーションの特定のタイプにかかわらず、それらは全ていくつかの共通の特徴を共有している。何れのケースにおいても、会話は、スレッドされたメッセージのシーケンスすなわち組織によって定義される。メッセージは、メディアの一個のストリームからセグメント化され、各メッセージは所定のシーケンス識別子をもち、メディアが作成された時間でインデックスされている。MCMSアプリケーションのバリエーションによって、メッセージは、一またはそれ以上のレンダリングオプションに従ってレンダリングされる。レンダリングオプションには、いずれもゼロから複数の異なる属性を使い、フォーム毎に、メッセージのフィルターリング、グルーピングオーバラップおよび/またはシリーズ化がある。この方法では、それぞれメッセージのストリングを含むマルチ会話を、デバイス13を動かす一個のクライアント12上で、行うことができる。最後に、MCMSのそれぞれのバリエーションは、同じ方法で割り込みメッセージの受信に対応することができる。割り込みメッセージを受信すると、通常、別の会話所属する他のメッセージがレンダリングされる前に先行する。
【0241】
[M.クライアントおよびサーバハードウェア]
図14Aは、クライアントアプリケーション12を記憶し実行するために使われるデバイス13のハードウェアを示すブロック
図140である。ハードウェアは、CPU142、メインメモリ144および大容量記憶装置146を有する。技術的には周知のことだが、クライアントアプリケーション12はメインメモリ144と大容量記憶装置146に搭載され記憶されて、CPU142によって実行される。
【0242】
図14Bは、サーバアプリケーション78を記憶し実行するために使われるサーバ16のハードウェアを示すブロック
図150である。ハードウェアは、CPU152、メインメモリ154、大容量記憶装置156、およびアーカイブ部89を有する。技術的には周知のことだが、サーバアプリケーション78は、メインメモリ154および大容量記憶装置156に搭載、保存されCPU152によって実行される。上記のように、一またはそれ以上のユーザのインデックスされたメディアペイロードは、アーカイブ部89に保存される。
【0243】
便宜上、多くのコンポーネントと処理について一個の事例で記述したが、当業者には正しく理解されるように、多くのコンポーネントと繰り返しの処理をここに説明したシステムおよび方法の技術は実施する上で使用できる。さらに、本発明は、特定の実施例を参照して特別に示し記述したが、当業者には正しく理解されるように、本発明の精神と範囲を超えずに、開示した実施例のフォームおよび細部の変更が可能である。例えば、本発明の実施例は、様々なコンポーネントとともに採用でき、かつ上記のものに限定されない。したがって、本発明は、全ての変形例及び同等物は本発明の精神と範囲に入ると理解されるべきものである。