JP5500385B2 - ネットワークを介したリアルタイムメディア同期の方法およびシステム - Google Patents

ネットワークを介したリアルタイムメディア同期の方法およびシステム Download PDF

Info

Publication number
JP5500385B2
JP5500385B2 JP2010530157A JP2010530157A JP5500385B2 JP 5500385 B2 JP5500385 B2 JP 5500385B2 JP 2010530157 A JP2010530157 A JP 2010530157A JP 2010530157 A JP2010530157 A JP 2010530157A JP 5500385 B2 JP5500385 B2 JP 5500385B2
Authority
JP
Japan
Prior art keywords
media
network
communication device
conversation
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010530157A
Other languages
English (en)
Other versions
JP2011501929A (ja
Inventor
カティス,トマス,イー.
パンタジャ,ジェイムズ,ティー.
パンタジャ,メアリー,ジー.
ラニー,マシュー,ジェイ.
Original Assignee
ヴォクサー アイピー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/028,400 external-priority patent/US8180029B2/en
Priority claimed from US12/192,890 external-priority patent/US8090867B2/en
Application filed by ヴォクサー アイピー エルエルシー filed Critical ヴォクサー アイピー エルエルシー
Publication of JP2011501929A publication Critical patent/JP2011501929A/ja
Application granted granted Critical
Publication of JP5500385B2 publication Critical patent/JP5500385B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Telephonic Communication Services (AREA)

Description

本発明は通信に関し、特に音声通信の準リアルタイム同期の方法および装置に関する。
音声通信は、慣性の影響を受けるのが現状である。自動切換え、高帯域幅ネットワーク、さらに衛星通信、光ファイバー通信、IPネットワーク通信(VoIP)、無線通信および携帯電話ネットワーク等の技術にもかかわらず、人々の電話の使い方にほとんど変化が見られない。いまだに、電話機を持ち上げ、相手にダイアルし、繋がるまで待ち、挙句にダイアルした相手と同期二重会話を強いられている。もし受信側が応答しなければ、接続はできず、会話も始まらない。
受信側がボイスメールを持っていれば、せいぜい一方通行の非同期の音声メッセージを残せるぐらいである。しかし、ボイスメールをレンダリングする手順は煩わしく時間もかかる。呼出し側は、相手方の電話の呼び出しリンが鳴り止み、ボイスメールシステムに遷移するのを待ち、音声メッセージの挨拶を聞き、それからメッセージを残さなければならない。現在のボイスメールシステムは、受信側にとっても不便である。受信側は、コードにダイアルして音声メールにアクセスし、一連のプロンプトをナビゲートし、待ち行列の中に先着の音声メッセージあればそれを聞き、それからやっと当の送信側のメッセージを聞かなければならない。
典型的なボイスメールシステムの他の短所は、音声メッセージを組織化すなわち永久にアーカイブすることができないことである。ボイスメールシステムの中には、ユーザがメッセージを記憶できるものもあるが、予め決められた時間が経過すると、自動的に削除され永久に失われてしまう。
さらに、現在のボイスメールシステムの別の問題は、メッセージを残す前に呼出し側とボイスメールシステムで接続をしなければならないということである。もし接続ができなければ、呼出し側にとってはメッセージを残す手立てはない。
現在の電話システムは、リアルタイムの通話、バラバラの音声メッセージといった比較的単純な利用パターンに基づいており、それらは、たいていは聞き終われば削除される。これらの音声通信形式は、音声通信で可能な真価を発揮していない、または現在可能なネットワークの速度および回線容量の進歩を活用できていない。また、もし電話回線がダウンしてしまった場合、すなわち利用不能な場合(例えば、携帯電話のユーザがサービス圏外にいる、または悪天候のために電話回線がダウンした)、通信は起こりえない。
一般に、電話ベースの通信はテキストベースの通信の進歩に追いついていない。インスタントメッセージ、Eメール、ファックス、グループチャット、テキストメッセージをアーカイブすることなどは、テキストベースの通信ではすべて当前のことである。音声メールのほかには、音声メッセージを管理および/またはアーカイブできる現在利用可能なツールはほとんどない。テキスト通信と比較すると、現在利用できる電話通信を管理するツールはまだ初歩的な段階にある。
企業環境は、現在の音声通信ツールにおける弱点の良い例を示している。今のところ、音声通信を法人資産として管理する統一された方法はない。従業員は普通、自分たちの電話での会話を録音したり永久保存したりすることはない。ビジネス関連の音声通信資産は、ほとんど言葉が話されると同時に即座に消えてしまい、これらの会話の内容を何らかの管理可能な形式で管理または保存する方法はない。
実例として、ある会社の営業幹部の例を考えてみよう。多忙な一日の流れの中で、この幹部はたくさんの電話をかけ、顧客から電話で幾つかの販売契約をとる場合がある。これらの会話を編集、保存、後に検索する手立てがないので、この幹部にとっては、ある取引と他の取引との条件についてのリコール、あるいは先に結んだ販売合意の条件に異議を唱える顧客に対しその根拠の説明を求める、といった後に発生することが予想される問題を解決する方法はない。もしこの幹部が会話を簡単に取出し、レビューすることが可能であれば、このような問題は簡単にかつ良好に解決することができるであろうと思われる。
現在、軍隊、消防、警察、救急医療隊、レスキュー隊、および第一応答者等に使用されている戦術的無線システムも、多くの不便をこうむっている。戦術的無線通信は、ほとんどの場合、メッセージの送信側と受信側の間で「ライブ」の無線接続で行われるに違いない。両者間に無線接続なければ、通信は成り立たつはずがない。もし、送信側または受信側が自分の無線にアクセスできない、あるいは無線回路の接続ができなければ、緊急メッセージを送ることは不可能だ。したがって、戦術的通信は、次のような幾つかの基本的な問題に悩まされている。(i)メッセージが送達される保証がない、(ii)受信側は、リアルタイムで聞きそこねたメッセージに戻ったり聞いたりできない、(iii)会話参加者の情報粒度をコントロールすることができない、(iv)ライブ会話を行うための信号品位に欠ける場合、システムは対処できない。もしメッセージをライブで聴けなければ、そのメッセージは失われてしまう。送信側または受信側にとって、以前送られた会話のメッセージを管理する、優先順位をつける、アーカイブする、後で検索する(すなわち、タイムシフトする)のいずれかができるツールはない。
さらに、戦術的無線通信システムに関する別の短所は、1チャンネルにつき一時に一個のメッセージしか送信できないということである。大きなビル火災を例にとって見ると、そこでは、消防士、警察および救急救命士等の複数のチームが同時にビルに取り残された被害者を救助したり、消火活動したり、被害者に医療援護を提供したり、野次馬を整理したりしている。もし、各チームが同じチャンネルを使用しているとしたら、通信は混雑し大混乱に陥るかもしれない。一人以上の人が同時に送信していたら、通信は「踏倒し」がおこる。また、高い優先順位のメッセージと低い優先順位のメッセージとを区別する方法もない。燃え盛るビルの中で消火活動または取り残された被害者の救助活動をしているチームが、当然、野次馬の整理にあたっている他のチームより高い優先順位を持つ。もし、高い優先順位のメッセージが低い優先順位のメッセージによって踏倒されたら、重要な通信が妨害されるだけでなく、ビルの中にいる消防士と被害者の命に危険が及ぶことになる。
メッセージに優先順位をつけることができないことに対する、考えられるひとつの解決策としては、複数のチャンネルを使い、それぞれのチームに異なるチャンネルを割り当てることである。しかしながら、この解決策はそれ自体一連の問題を生じる。また、消防隊長は、どのチャンネルをどの時点で聞けば間に合うのかをどうやって判断するのか。複数のチームの全員がそれぞれ異なるチャンネルと接続していたら、どうやってたがいに通信をかわすのか。一つのチームが緊急援助を求めたとき、他のチームが別のチャンネルを聞いていたら、どうやってそれを知るのか。複数のチャンネルが幾つかの問題を軽く扱った場合、それが混乱を引き起こし、チャンネルが一つのとき以上にさらなる問題を生じる可能性がある。
効果的にメッセージに優先順位をつける、マルチ会話が同時に行える、メッセージのタイムシフトを行い、送達を確実にする、あるいは後の検索・レビューのためにマルチ会話をアーカイブすることをサポートする管理ツールがないことが、戦術的無線の問題に結びついている。軍隊、警察、消防のような第一応答者の立場においては、有効な通信ツールの有無が、文字通り生死、任務の成否を分かつ。上記の燃え盛るビルの例が、戦術的無線通信に係わる現在の幾つかの問題をわかりやすく例示している。戦術的通信を使用する軍隊、警察、第一応答者、その他にも同様な問題が存在する。
パケット方式のネットワークでは、共通に使用されるプロトコルとして、通信制御プロトコル(TCP)およびユーザ・データグラム・プロトコル(UDP)がある。UDPは、データの高速送達という利点はあるが、完全性を犠牲にする。パケットがデータ送信中に脱落する可能性があり、またデータを即座に宛先に届けようとする場合は使用できない。UDPは、幾つかの欠陥があるにもかかわらず、その速度属性のゆえにヴォイス・オーバ・インターネット・プロトコル(Voice over Internet Protocol:VoIP)通信の標準になっている。一方、TCPは完全なデータ(すなわち、送信データの正確なコピー)の送達を保証するが、待ち時間を代償とする。どれほど時間がかかろうとも、全てのパケットが送達される。この遅延の問題が、TCPを「ライブ」通話に適さないものとしている。今のところ、TCP、UDPの両者に機能の進化をもたらし、「十分に良い」メディアの完全なコピーを即座に送信できる、究極の送達が可能なプロトコルは知られていない。ネットワーク上の受信側の存在と、ライブまたはタイムシフトモードでデータを届けようとする意図に基づいて、どれだけの量の情報をネットワークを通じて送るべきか、を判断できるプロトコルはない。さらに、どれだけの量のデータを送信すべきか判断する際に共通に考慮されるその他のファクタとしては、例えば、ネットワーク待ち時間、ネットワークの劣化、パケット損失、パケットダメージ、一般的な回線容量の状態等がある。しかしながら、従来技術のシステムは、受信側のプレゼンスと意図を考慮しない。その結果、データが受信側によってリアルタイムで届けられるということが大前提となる。従来技術のシステムでは、受信側が即座にデータをレンダリングするつもりがなければ、不必要に回線容量を使い、ネットワーク全体のパフォーマンスを引き下げてしまう。
上記の理由により、電話、音声メールおよび戦術的音声通信システムは十分とはいい難い。したがって、送信と受信の双方の通信デバイスおよびこの2つの通信デバイス間のネットワーク上の各ホップにおける音声その他のメディアのストレージの準リアルタイム同期を含み、音声およびメディア通信の管理システムおよび方法の改良、パケット方式のネットワーク上の音声その他のメディアの改良が必要である。
本発明は、ネットワーク上のノード間で送信されたメディアを保存したコピーのリアルタイムの漸次的同期の方法およびシステムに向けられる。この方法とシステムは、インデックスされたメディアの準リアルタイムのレンダリングを可能とするのに十分なパケットサイズおよびパケット化間隔で送信ノードから受信ノードへ利用可能なインデックスされたメディアを漸次送信するステップを含み、インデックスされたメディアを準リアルタイムにレンダリングすることによって送信されたメディアをライブでレビューする機能(experience)を受信側に提供する。受信ノードでは、送信されたインデックス済みのメディアが漸次受信され、受信ノードでローカルにまだ保存されていない任意のインデックスされたメディアが記録される。この方法とシステムはまた、ネットワークを通じて2つの通信デバイス間の会話のメディアのリアルタイム同期を含む。音声その他のメディアが任意の通信デバイスで生成されるとき、このメディアのコピーがネットワークを介してリアルタイムで同期される。この方法とシステムはまた、実装するのが簡単であり、ネットワークトラフィックと待ち時間を減少させる最適化されたルーティングプロトコルを含む。
本発明の特定の実施例を示す付属の図面とあわせて以下の説明を読めば、本発明は最良の理解が得られるであろう。
図1は本発明の通信およびメディア管理システムのアーキテクチャを示す図である。 図2Aは本発明の通信および管理システムのデバイス上で実行するクライアントのブロック図である。 図2Bは本発明の通信および管理システムのデバイス上で実行するクライアントのブロック図である。 図3は本発明の通信および管理システムで使われるサーバのブロック図である。 図4Aないし4Dは本発明の通信および管理システムで使われるデータペイロードの種々の実施例を示す。 図5は本発明に係わる共用IPネットワーク上を送信されるデータを示す図である。 図6は本発明に係わる回路ベースのネットワーク上を送信されるデータを示す図である。 図7は本発明に係わるセルラーネットワークおよびインターネットの両者上を送信されるデータを示す図である。 図8Aは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図8Bは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図8Cは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図8Dは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図8Eは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図8Fは本発明の通信および管理システムの記憶およびストリーミング機能を示す一連のフロー図である。 図9Aはペイロード品質管理部(PQM)の動作を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図9Bはペイロード品質管理部(PQM)の動作を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図9Cはペイロード品質管理部(PQM)の動作を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図9Dはデータ品質管理部(DQM)を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図9Eはデータ品質管理部(DQM)を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図9Fはデータ品質管理部(DQM)を示すフロー図であり、本発明のクライアントおよびサーバに使用されるものである。 図10は、本発明に従って2つの通信デバイス間の会話のメディアの準リアルタイム同期を示すダイアグラムである。 図11は、本発明による2つの通信デバイス間のインデックスされたメディアのリアルタイム同期のシーケンスを示すフローダイアグラムである。 図12は、本発明による分散型サービスアーキテクチャの一例を示す図である。 図13は、本発明によるルーティングプロトコルを示す分散型サービスアーキテクチャの別の例を示す図である。 図14は、本発明によるネットワークを介した各ホップでのメディアの準リアルタイム同期を示す別の分散型サービスアーキテクチャの別の例を示す図である。 図15Aは、本発明のクライアントおよびサーバアプリケーションを実行するのに用いられたハードウェアを示すブロック図である。 図15Bは、本発明のクライアントおよびサーバアプリケーションを実行するのに用いられたハードウェアを示すブロック図である。
図において同じ付番は同じ要素を示すものとする。
付属の図面に示す種々の実施例を参照して本発明を詳細に説明する。以下の説明では、本発明の完全な理解に資するために、特定の実施例について詳細に記載する。しかしながら、当業者にとっては、ここに記載する実施例の幾つかの細部を使用することなく本発明が実施可能であることは明らかである。不要な混乱を避けるために、周知の動作等については詳しい説明を控えたことは、理解できよう。
[A.機能の概要]
本通信メディアの管理方法およびシステムは、音声、ビデオ、テキスト、ロケーション、センサ情報、その他のデータ等の様々なタイプのメディアを使って、音声会話に参加するためのモードをサポートする、および/または多人数による同時会話を管理する新しいモードをサポートする。ユーザは、指定する受信者に音声メッセージを送ることによって会話に加わることができる。受信者は、好みや優先度によってリアルタイムで会話に参加したり、メッセージが検索できることを単に通知だけを受けたりすることもできる。後者の場合は、受信者は都合のよいときに記録されたメッセージを見なおしたり返信したりすることによって、タイムシフトモードで会話に参加する。
ユーザは、次の通信を行う権利を与えられる。すなわち、(i)ほぼ同期性の「ライブ」会話:これは、ユーザに標準的全二重通話と同じ体験をレンダリングする、または(ii)タイムシフトモード:すなわち、一連の時間差通信。さらに、会話に参加したユーザは、ライブモードからタイムシフトモードに切目なく遷移し、再度ライブモードに戻ることもできる。また、この属性により、ユーザは、会話ごとに優先順位をつけたり二つのモード間を移動したりして、マルチ会話に参加することを可能にする。したがって、このシステム使用する二人の個人は、互いに記録した音声メッセージをやり取りしたり、都合のよいときにそのメッセージをレビューしたりすることができる。また、メッセージをある速度で送り基本的にライブに合流させ、音声同時通話を実現する。この新しい通信の形式は、本発明の目的から、「ヴォクシング:Voxing」と呼ばれる。
誰かと「ヴォクス:Vox」すると、その会話は一連の不連続な記録されたメッセージで構成され、沢山のロケーションに記録される。また、「ヴォクス」には、送信側のエンコードデバイス(例えば、電話またはコンピュータ)を含み、ネットワーク上の複数の送信ホップ上のサーバ、さらに受信側のレンダリングデバイスが含まれる。標準的な通話または音声メールとは異なり、このシステムは次のような機能と利点を提供する。(i)会話がライブとタイムシフトまたはその逆を遷移できる。(ii)会話の不連続なメッセージは、意味論的に束ねられアーカイブされる。(iii)メッセージは記録され後で検索できるから、注意を一時的に会話からそらしても、後で都合のよいときに会話をレビューすることができる。(iv)会話は数秒、数分、数時間または数日間中座し、そこから再開することができる。(v)進行中の会話に再度加わることができる、見損ねたメッセージを即座にレビューすることができる、または現在のメッセージにキャッチアップすることができる(すなわち、ライブメッセージ)。(vi)従来の通話のように、会話をするのに特別の回路を必要としない。(vii)個人またはグループに送信するだけで会話が始められる。メッセージを受信していることに気がついたら、相手方の人は、リアルタイムでレビューし会話を行うか、後にレビューか自由に選択することができる。
また、通信メディア管理システムは、ネットワークを通じてのデータ送信を最適化する新しいモードをサポートする。ネットワークの状態が理想より悪い場合は、システムはペイロードを会話に参加している受信側に送達するのをアクティブにリアルタイムで管理する。例えば、ネットワークの状態が悪いときは、システムは送信用のデータの質を、受信側が受け取ったときにレンダリングするのに「十分に良い」レベルまで意図的に引き下げ、リアルタイムの会話に参加できるようにする。また、システムは、メッセージの「正確な」コピーを長い時間をかけて最終的に送達することを保証する。したがって、本システムおよび方法は速度と精度の両方の利点を提供する。受信側の存在および受信側がリアルタイムで即座にメッセージを見る意思があるかどうか、ネットワーク待ち時間、ネットワークの劣化、パケットの損失またはダメージおよび/または現在の回線容量の状態の測定に基づいて適時性とメディアの質との間でトレードオフを行うことによって、ネットワーク回線容量が最適に利用できるようにする。
ここで、会話のメッセージが含むことができるのは、音声のみ、または音声、ビデオおよびセンサ情報、その他のデータである。メッセージがレビューされるとき、メッセージに含まれるメディアのタイプによって、耳で聞かれる、視覚的にレビューされる、または、その組み合わせである。本発明の申請段階では、ほとんどの会話は音声のみであるが、ここに記載する通信システムおよび方法は、例えば、音声およびビデオ等の複数のメディアタイプを含む会話を広く含むことを意図している。
次の特徴や機能のうちの一またはそれ以上を提供する、改良型音声その他のメディア通信、管理システムおよび方法を開示する。
i.ユーザが、ライブ通話、会議通話、音声メッセージ、継続的または同時通信等を含む多くのタイプの会話に参加可能にする。
ii.ユーザが、会話のメッセージをライブモードまたはタイムシフトモードのどちらかのモードでレビュー可能にする(音声メッセージ)。
iii.ユーザが、同時「ライブ」モードとタイムシフトモードの間で会話を切目なく遷移することを可能にする。
iv.他の参加者またはネットワークとの接続が確立されるのを待たずにユーザが会話に参加することを可能にする。この属性は、利用できるネットワークがない、ネットワークの質が悪い、他の参加者が参加できない場合でも、ユーザに会話を始める、会話に参加する、以前に受信しタイムシフトされた会話のメッセージをレビューすることを可能にする。
v.システムに、送信側のメディアのペイロードデータの記憶を可能とし、ネットワーク送信後、全ての受信側にメディアのペイロードデータの記憶を可能とする。
vi.システムに、所定の会話において、各メッセージが識別でき、かつ所定の参加者に結びつけることができる、意味論的に有意味の会話にスレッディングすることによって、メッセージを組織化できるようにする。
vii.ユーザに、一組のユーザコントロール機能を使って、「ライブ」をレビュー、レビューするのに都合がいい時まで会話を休止またはタイムシフトする、様々なモードで再生する(例えば、早送り、ライブにキャッチアップする、会話の頭にジャンプする)、会話を管理する方法(アーカイブする、タグ付けする、検索する、アーカイブから取り出す)等、各会話を管理可能にする。
viii.システムに、オンラインの状態、所定のメッセージをライブかタイムシフトモードのどちらかでレビューする意図、メッセージに対する現在の注意、レンダリングの方法、および送信側と受信側の間のネットワークの状態を含む、参加データの管理を可能にし、全ての会話参加者と共有化可能とする。
ix.下記の場合は、ユーザが、マルチ会話を同時に管理することが可能にする。(a)1つの会話を進行、その他の全てを休止とする、(b)戦術的通信のような(これに限らず)マルチ会話を継続してレンダリングする、(c)株取引すなわち取引フロア環境などのマルチ会話は、アクティブかつ同時にレンダリングする。
x.ユーザに、全ての会話を記憶可能にし、望むなら、有形の表現媒体に持続的にアーカイブし、必要に応じ組織化、インデックス付け、検索、転記、翻訳および/またはレビューできる資産をレンダリングする。
xi.システムが、即座にレンダリングする上で「十分に良い」速度でメッセージを送達するうえで最善のモードを使って、リアルタイム通話機能をレンダリング可能にする(UDPと同様)。また、もともと記憶された完全なコピーから、紛失あるいは欠陥のあるデータの再送を要求し、最終的にメッセージの完全なコピーの送達を保証する(TCPと同様)。
xii.受信側のプレセンスおよび意図(すなわち、リアルタイムまたはタイムシフトモードでのメディアのレビュー)を使うと同時にネットワーク待ち時間、ネットワークの劣化、パケットの損失あるいはダメージおよび/または現在の回線容量の状態を測定し、システムに、適時性とメディアの質の間でトレードオフを行いネットワーク回線容量の利用を最適化することを可能とする。
種々の実施例において、上に挙げた様々な特徴や機能の一部又は全部が実施可能である。しかしながら、本発明の別の実施例においては、上に列挙した特徴や機能の全てを組み込む必要がないことは理解できよう。
[B.用語の解説]
本発明の詳細を説明するに先立ち、本明細書全体を通じて使用される幾つかの用語と略語を定義する。この用語解説は、システム構成、メディア、メディア管理、人と会話管理のグループに分類できる。
[B.1.システム構成]
クライアント:クライアントは、通信システムの中のユーザアプリケーションを意味し、ユーザインタフェース、持続的データ記憶装置、および「ヴォクシング(Voxing)」機能を含む。ユーザは、クライアントアプリケーションと情報のやりとりをし、クライアントアプリケーションは、ネットワークを通じて送受信される全ての通信(メッセージおよび信号)およびペイロード(メディア)転送を管理する。クライアントは、メディアのエンコード(例えば、音声、ビデオまたは他のデータのコンテンツの取得)、メディアのレンダリングをサポートし、セキュリティ、暗号化、認証およびネットワーク上のデータ送信の最適化をサポートする。クライアントは1個ないし複数のユーザ(すなわち、マルチテナント)によって使用することもできる。
デバイス:クライアントアプリケーションを実行する物理的デバイス。ユーザは、一個のデバイスまたは複数のデバイスによって、所定のいずれの時点でもアクティブにログインすることができる。種々の実施例において、デバイスは、汎用コンピュータ、携帯計算機、プログラマブル電話機、プログラマブルラジオまたはその他のどんなプログラマブル通信装置であってもよい。
サーバ:通信ネットワーク上のコンピュータノード。サーバは、ネットワーク上のユーザ間でやり取りされる送信メッセージのルーティングおよびメディアペイロードの持続的記憶とアーカイブの役割を持つ。サーバは、ルーティング、トランスコーディング、セキュリティ、暗号化と認証およびネットワーク上のデータ送信の最適化を提供する。
[B.2.メディア]
メッセージ:あるユーザから他のユーザへの個々の通信単位。各メッセージは音声またはビデオ等の何らかのメディアからなる。各メッセージは、以下の属性のどれかを割り当てられる。(i)メッセージ送信側のユーザ、(ii)所属している会話(iii)、オプション、またはユーザ作成の重要タグ、(iv)タイムスタンプ、(v)メディアペイロード
メディア:音声、ビデオ、テキスト、位置、温度等のセンサの読取り値、その他のデータ。
会話:デバイス上で2人以上のユーザ間の一連の(識別され、持続的に記憶されグループ化され優先順位をつけられた)メッセージ。ユーザは、一般にデバイスを用いてリアルタイムまたはタイムシフトモードでメッセージをレビューするか、望みに応じて会話のメッセージを作成、送信することによって会話に参加する。新しいメッセージを作成すると、新しい会話を定義するか、既存の会話に加えられる。
会話のヘッド:直近の話者によってエンコードされた会話の直近のメッセージ。「ライブ」をレビューするとき、会話においてユーザが存在しているところ、すなわち「ライブへジャンプ」機能を使用する場合、ジャンプするところ。
多者間会話管理システム(MCMS):クライアントアプリケーションの一部として実行するアプリケーションで、ユーザが様々なタイプのメディアを用いてマルチ会話に参加することを可能にする。現在の会話のメッセージのみがレンダリングされている場合、ユーザはMCMSアプリケーションを用いて、現時点として、マルチ会話の中から1つの会話を選択することができる。選択された現在の会話については、ユーザはタイムシフトモードでのメッセージの一連のやり取りから、標準的な電話会話と同様のほぼ同期性の「ライブ」モードに遷移でき、またタイムシフトモードに戻ることができる。選択されなかった会話のメッセージは休止状態に置かれる。他の人がまだこれらの会話参加している場合は、選択されなかった会話に関するメッセージは、蓄積されていく。ユーザは、マルチ会話の中から現在の会話に選択的に遷移し、選択された現在の会話の蓄積されたメッセージをレビューすることができる。
継続的多者間会話管理システム(MCMS−C):付加されたレンダリング機能によって、システムによって自動的に管理される優先順位とタイムシフトの階層的なシステムを通じて、MCMSと同様にユーザにマルチ会話を管理し継続して参加することを可能にする機能。現在選択されている会話メッセージのみをレンダリングできるMCMSとは異なり、MCMS−Cアプリケーションは、継続する会話のメッセージを、優先順位をつけた順序でレンダリングすることができる。MCMS−Cは特に次のような状況で利用できる。すなわち、継続する会話のメッセージを、優先順位をつけた順序でレンダリングすることが重要な場合、および/または低い優先順位の会話に属していても、全てのメッセージを受信することがリアルタイムでメッセージを受信するよりも重要な場合。MCMS−Cが適する状況の例としては、病院、タクシー全車両管理、戦術的通信などがあるが、これに限定されるものではない。
同時多者間会話管理システム(MCMS−S):MCMSと同様、選択された現在の会話だけのメッセージがレンダリングされるMCMSとは対照的に、追加機能によってMCMS−Sを使って同時レンダリングするマルチ会話を選択可能にする。MCMS−Sアプリケーションは、一人のトレーダーが異なる為替について複数のブローカーに聞いており、一人ないし複数のブローカーに取引要請を時折送信しているような、1個のユーザがマルチ会話を同時に聞いている状況に、特に適用できる。また、MCMS−Sは戦術的通信にも適している。
優先順位:ユーザがMCMS−Cに参加しているときに、つぎにどのメッセージをレンダリングするかシステムが決める機構。優先順位はシステムによって自動的に管理される。ユーザは、デフォルトで優先順位を設定できる、または予め決められた一組のシステム優先順位を使うこともできる。衝突が生じた場合、すなわち、1個以上のメッセージが同時にレンダリングされようとしているときは、システムは、少なくとも部分的に優先順位に基づいて衝突を解決し、どのメッセージを即座にレンダリングし、どのメッセージをタイムシフトするか決める。
タグ:ユーザまたはシステムが、会話またはメッセージに割り当てることができる一組の属性で、それによってデータを検索したり組織化したりできる、トピック(会社名)、命令(「動作項目」)、標識(「会話のサマリー」)、その他ラベル等。
重要タグ:他の優先順位の設定にかかわりなく、あるメッセージがレンダリングされるべきときに、送信側に指定可能とする特別のメッセージ属性。例えば、「緊急」の重要タグは、他の優先順位を無効にする。この機能は、戦術的なシステムにとっては重要な意味を持つが、どんなシステムでも、この機能を使えるようにしたり、無効にしたり設定することができる。
パケット:コンピュータネットワークを通じてルートを決めることができるバイナリデータの単位。各パケットは、ヘッダ(メタデータ)およびペイロード(メディアデータ)からなる。インターネットプロトコル(IP)、EvDO、UMTSその他のパケットベースのネットワーク、無線、光ファイバー、有線のいずれかの標準的なパケットプロトコルが含まれるが、これに限定されものではない。
ヘッダまたはパケットヘッダ:パケットを記述するパケットの部分、ペイロードに関するメタデータ、エンコードのタイプおよび宛先。
Voxパケット:システムと方法をさらに精緻化し、メッセージメディア、その他の信号情報の送達を最適化することを可能にする専用パケット。
メディアペイロード(またはペイロード):パケットの実のメディア部分。
[B.3.メディアの管理]
タイムシフト遅延(TSD):Voxパケットの着信とパケットのデバイス上でのレンダリングとの間の時間の量。TSDは最小タイムシフト遅延を上回らなければならない。TSDは、主として、受信後のユーザが会話のメッセージをレビュー選択しようとする動作によって決められる。
最小タイムシフト遅延(MTSD):クライアントによって強制されるタイムシフト遅延で、ジッタバッファ技術を用いてジッタ加工することができるようにする。これは、使用可能なメディアストリーム作るのに適当な数のパケットが到着するまで、システムにレンダリングの遅延を行わせる。システムは、時間の経過に応じてMTSDを順応的に調節し、主としてネットワークにおける変動条件を補正する。
レンダリング:ユーザの消費に適した形式でユーザにメディアストリームを送達すること(例えば、音声、テキスト、グラフィック表示、ビデオ、またはそれらの組み合わせ)。
ミキシング:一またはそれ以上のメディアストリームをレンダリングすること。例えば、レンダリングするとき、会話の二人の参加者からのメディアストリームをミックスし、複数の人が同時に話しているのと同じ会話感覚をユーザに作ること。
エンコード:ユーザ作成の(音声またはビデオ)メディアか、デバイス上で別途生成される(GPSまたはその他のセンサデータ)メディアを翻訳し、クライアントによって処理されるようにメディアをデジタルデータに変換するプロセス。
適応ジッタバッファ:ジッタバッファまたはデジッタバッファを使い、ネットワークを切り換えたパケットによって導入されたジッタ(すなわち、シーケンスから外れたパケットの着信またはパケットの遅延着信)に対抗し、ネットワーク上を送信される音声(またはビデオ)信号の連続レンダリングが途切れずに行われるようにする。レンダリングする前に、データはバッファに記憶され、適当なサイズにされたメディアのバッファが着信できるようにする。質と流れのトレードオフを行うことによって、全てのパケットが受信される前にメディアをレンダリングすることができる。適応ジッタバッファは、サイズをダイナミックに変え、遅延−質トレードオフを最適化することができる。
無限連続メッセージバッファ(PIMB):PIMBは、タイムベースのメディアを記憶する記憶部の管理システムであり、「ライブ」データのジッタの削除とアーカイブされたデータの保存と取出しの両方を行う。さらに、PIMBは付加的属性として、潜在的に無限にメディアの継続保存をおこなう。PIMBは、一部又は全ての参加者のデバイスおよび/またはサーバにて、メッセージと会話のVoxパケットを、「完全な」すなわちフルコピーで維持する。
パケット損失補償または隠蔽(PLC):メディアストリームをレンダリングする間に、PLCコンポーネントは、紛失パケットの補償を行い、結果を補間し、閲覧者にストリームを提供する。紛失パケットは沈黙としてレンダリングするか、近接するパケットからの情報を使い、補間した音またはイメージ提供することもできる。使用される個々の方法は、メディア、使用コードおよびその他一般に既知のパラメータによる。
[B.4.人]
ユーザ:システムを使う権限を与えられた人。
コンタクト:システムのユーザまたは非ユーザの記録。ユーザは、主としてコンタクトのリスト上のメンバーとともに会話に参加する。従来の電話、ラジオ又はその他の非クライアント12が使用可能なデバイスを使ってシステムにアクセスまたはシステムを使うユーザは、非ユーザである。
グループ:多数のコンタクトの集まり。コンタクトは、グループに選択的に加えられたり、グループから削除したりできる。グループの中で会話が始まれば、グループの全てのメンバーは参加することもしないこともできる。
チャンネル:主として戦術的通信システムに使われる。チャンネルはグループと同様、チャンネルで多数のコンタクトを結び付ける。
参加者:会話のメンバーとして識別される人。ユーザまたは非ユーザが参加者になりうる。
[B.5.会話の管理]
タイムシフト:タイムシフトは、メッセージを受信した後、ユーザ受信者の判断によって、随時実行できる。タイムシフトによって、ユーザは、メッセージを下記の方法でレビューすることができる。(i)MTSD後、オンデマンドで、即座にレンダリングする、(ii)ユーザの裁量により、タイムシフトモードでメッセージをレビューする、(iii)古い会話を検索、再構成のためにアーカイブから、(iv)別の優先順位の高いメッセージ(会話)のレビューに便宜を図るために一定の遅延時間の後、および/または、(v)メッセージを再度聞いたり理解したりすることが必要な場合は繰り返して。言い換えれば、タイムシフトは、システムによってMTSDが強制された後、ユーザがメッセージを随時レンダリングできることである。
レビュー:メッセージの中のメディアのコンテンツを聞く、見る、読む、または閲覧すること。レビューは、ほぼ同期性のリアルタイム「ライブモード」かタイムシフトモードのいずれかで行うことができる。
意図:以下を把握するユーザ定義の属性;(i)ユーザが会話のメッセージを即座にレビューしたいと望んでいるか、タイムシフトモードでメッセージをレビューしたいと望んでいるか、(ii)ユーザの動作に含まれている意思、または(i)と(ii)の組み合わせ。
注意:現瞬間にユーザが所与の会話のメッセージをレビューしているか否かを把握するためのユーザの属性。
ライブにキャッチアップ(CTL):「ライブにキャッチアップ」ために、会話の頭にないユーザが、先行するメッセージをより早くレビューすることができる(すなわち、会話の頭に)、レンダリングモード。CTL機能は、メッセージの早送り、メッセージのメディアの中にあるギャップの除去、躊躇粒子の除去等数多くあるキャッチアップ技術のうちどれを使っても良い。ユーザがライブに追いついたらシステムは途切れずにライブ会話に遷移する。これは、会議通話、例えばユーザが出席者の注意を一時的に会話から引き離し、再び戻ったときに全体の会話を聞きたい、といった状況のときに非常に役立つ機能である。
キャッチアップモード:ユーザ設定あるいは予め設定されたモードで、どのようにしてCTLプロセスがキャッチアップするか決める(すなわち、もっと早く実行する、沈黙、躊躇粒子の除去またはそれらの組み合わせ)。
ライブへジャンプ(JTL):この機能により、ユーザは現在の位置から会話の頭へジャンプすることができる。ユーザが、会話における現在の位置と頭の間にある全てのメッセージをレビューすることを望まないとき主としてこのJTL機能を使う。JTL機能を実行すると、ユーザは途中にある全てのメッセージをスキップし、会話の頭にある「ライブ」メッセージのレンダリングを開始する。
MCMS参加者の属性:所定の会話を行うためにユーザが定義し、ユーザの動作からシステムが解釈する、管理者が割り当てる一組の属性か、または、その組み合わせで受信側の意図、注意、優先順位、レンダリングの好みを定義する。属性には以下のものが含まれるが、これに限定されない。(i)受信側が会話のメッセージに対してレンダリングしたいときの意図。可能性のある意図値には以下のものが含まれる:「今」、「タイムシフト」、「ライブにキャッチアップ」(CTL)、「休止」、「決してない」など。(ii)キャッチアップモード。CTLプロセスがどのようにして受信側をライブにキャッチアップさせるかを決める設定(すなわち、早く実行する、沈黙ギャップ又は躊躇をスキップするまたは常用速度で実行する)。(iii)タイムシフト遅延(TSD)、会話における受信側の現在位置が会話の頭からどれだけ離れているかを定義する。(iv)受信側における他の会話に関するメッセージの優先順位。
[C.システムアーキテクチャ]
図1は、本発明の一実施例に係わる通信とメディアの管理システムのブロック図を示す。システム10は、デバイス13ないし13上でそれぞれ動作する複数のクライアント12ないし12を含む。デバイス13は、一またはそれ以上のサーバ16を含む通信サービスネットワーク14上で互いに通信を行う。一またはそれ以上のネットワーク18ないし18がレンダリングされて、複数のデバイス13ないし13を通信サービスネットワーク14に連結する。様々な実施例において、ネットワーク18は、公衆交換電話網ネットワーク(PSTN)、セルラーネットワークに基づくCDMA又はGSM、例えば、インターネット、戦術的な無線ネットワーク、その他の通信ネットワーク、またはその組み合わせであっても良い。通信サービスネットワーク14は、いろいろなネットワーク18ないし18との通信のトップあるいはその中のネットワーク層である。様々な実施例においては、ネットワーク層14は、異機種環境か同機種環境である。クライアント12ないし12は、「Voxパケット」と呼ばれる以下に詳述する個人メッセージ装置を使って、ネットワーク18ないし18上のサーバ16、およびネットワーク14と互いに通信を行う。
[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を含む。
モジュール40は、クライアント12との間で「ヴォクス(Vox)」パケットの送受信を行う間、認証、暗号化およびセキュリティのサービスをレンダリングする。通信プロトコルモジュール44は、Voxパケットを、データを送信するときにクライアント12を作動させ、データを受信するときにネイティブパケットからVoxパケットをカプセルから取り出すデバイス13に接続された下層のネットワーク18によって使われるネイティブパケットにカプセル化する。モジュール40および44は、クライアント12間での、マルチ端末同士の認証、暗号化およびセキュリティをレンダリングする。メッセージは、ネットワーク18ないし18とネットワーク14上で、第一の送信デバイス13から第二の受信デバイス13まで、認証され、暗号化され、保全される。
[D.1.1.MCMSデータベース]
データベース22は、コンタクトおよび参加者、会話およびメッセージ(ライブ、保存済み)、初期設定の優先順位、およびサーバ16に関する情報を含む、システム10内の多くの要素のための永続性のメタデータを記憶、管理する。さらに、MCMSデータベース22は、ユーザの会話、プレゼンス、およびステータス等の逐次オペレーションデータやユーザと話をしている全ての参加者、およびユーザのコンタクトリスト上のオペレーションデータなどを記憶する。例えば、会話とメッセージに関しては、データベース22は、会話のどのメッセージをユーザがレビューしたかまたはしなかったか、クライアント12が参加者であった会話ごとの優先順位、およびライブ−キャッチアップステータスなどのステータス追跡情報を保持する。それには、プレゼンス、全ての参加者のステータス、および他のネットワークおよびシステムの管理データが含まれる。
[D.1.2.MCMSアプリケーション]
MCMSアプリケーション20は、いろいろなメディアおよびデータタイプ(音声、ビデオ、テキスト、ロケーション、データなど)を用いて、参加している会話および/または管理しているマルチ会話のいろいろなヴォクシングモードサポートする。ユーザは、クライアント12を可能にしたデバイス13を使って指定された受信側にメッセージを送信することにより、会話に参加する。好み、優先順位よって、受信側は、リアルタイムでメッセージをレビューする、あるいは単にメッセージがレビューできる状態にあることに気がつく。ユーザは、タイムシフト(音声メッセージ)モードまたはほぼ同期性でレビューした一連のメッセージのやり取りから全二重の会話(標準的な「ライブ」通話と同じ)に遷移し、再び音声メッセージに戻ることができる。MCMSアプリケーション20は、別の進行中の会話の中のどのメッセージも失うことなく、ユーザがリアルタイムで最も重要な会話との相互作用をコントロールできるようにする。例えば、MCMSアプリケーション20は、現在レビューしていない会話の中から、緊急の通信すなわち優先順位の高い通信をユーザに通知する。また、MCMSアプリケーション20は、随時レビューができるように、後の検索のために全ての会話の全てのメッセージを記憶することを可能とする。
種々の実施例によれば、MCMSアプリケーション20には、以下のような幾つかの異なった動作モードがある。すなわち、それぞれメッセージの連続的なレンダリングと同時レンダリングをサポートする、MCMS−継続(MCMS−C)とMCMS−同時(MCMS−S)である。それぞれの実施例について、以下詳細に説明する。特に断らない限り、用語「MCMS」は、一般に前記異なる2つのモードを含むMCMSアプリケーション20を意味する。
MCMSアプリケーション20は、多くのモジュールとサービスを含む多層構造のアーキテクチャである。モジュールとサービスには、以下のものが含まれる。すなわち、MCMSデータベースモジュール20a、SASサービスモジュール20b、メッセージ/信号サービスモジュール20c、ユーザインタフェースアプリケーション・プログラミングインタフェース(API)20d、ユーザインタフェースモジュール20e、会話/メッセージ管理サービス部20f、優先順位サービス部20g、コンタクトサービス部20h、プレゼンス/ステータスサービス部20i、およびメッセージ/信号サービス20jである。
[D.1.2.1 MCMSデータベースモジュール]
MCMSデータベースモジュール20aは、MCMSアプリケーション20がMCMSデータベース22にアクセスするために必要な全ての機能コールを管理するサービスモジュールである。
[D.1.2.2 SASサービスモジュール]
SASサービスモジュール20bは、MCMSアプリケーション20と記憶・ストリームモジュール24との間の通信と調整を可能にする、それぞれメッセージハンドリングモジュール25a、25bを介してやり取りする一組の機能コールを含む。一組の機能コールは、MCMSアプリケーション20と記憶・ストリームモジュール24の両者に必要に応じてユーザに呼び出されたときにいろいろなヴォクシング機能を動作させ、および/またはネットワークの状態によって指示されたように実行することを可能にする。SASサービスモジュール20bによって実行される機能の中にはメッセージ通信およびメッセージ認識のステータス、メッセージをレンダリングするための命令、およびユーザのステータスとプレゼンスの維持と通信が含まれる。
[D.1.2.3 メッセージ/信号サービスモジュール]
メッセージ/信号サービスモジュール20cは、クライアント12とサーバ16の両者の上で動作し、システム10のクライアント12とサーバ16との間で通信を可能とする。この通信は、メッセージ、データおよびその他の信号を含み、クライアント12とシステム10が、通信、ネットワークステータス、ユーザ、およびユーザステータスの追跡と管理ができるようにする。サーバ16上で動作するクライアント12とメッセージ/信号サービスモジュール20cの間で送られるメッセージと信号のタイプは、例えば、以下を含む。すなわち、ユーザのネットワーク利用可能性、メッセージ全体またはメッセージの一部が失われていないか判断するためにサーバ16がクライアント12に送ったメッセージ(恐らく「高水位マーク」を含む)の追跡(例えば、「作成中の」クライアントによって作成された会話につき参加者当りのシーケンス番号)、ユーザが所定の会話のメッセージを話しているかまたはレビューしているかどうか、どこでユーザが会話の頭に関わっているか、いつ参加者が会話のライブをレビューしていないか、などである。これらは、クライアント12上のメッセージ/信号サービスモジュールとサーバ16との間で送られるメッセージと信号の多くのタイプの中の2、3の例であって、本発明はこれに限定されると解釈すべきではない。
[D.1.2.4 ユーザインタフェースAPI]
ユーザインタフェースAPI20dは、MCMSアプリケーション20のユーザインタフェースモジュール20eと下層サービスとの間のプログラミングインタフェースを定義する、一組の機能コールを定義するモジュールである。ユーザインタフェースAPI20dは、UIアプリケーションサポート、ユーザインタフェースがMCMSアプリケーション20を作動させるために必要な全ての機能コールなどの汎用的方法サポートする。種々の実施例において、ユーザインタフェースAPI20dは、クライアント12が、以下にあげるの広範囲のユーザインタフェースとデバイスタイプをサポートすることを可能とする。すなわち、アドビフラッシュベースのアプリケーションおよび/またはマイクロソフト社のWindows(登録商標)アプリケーション、セルラーまたはモバイルホンデバイス、トーンで駆動されるPSTNデバイス、音声ユーザインタフェース(VUI)、および物理的無線通信インタフェース等。種々の実施例において、ユーザインタフェースAPIモジュール20dは、高度のフレキシビリティと高度に制約されたユーザインタフェースの設計によってMCMSアプリケーション20の機能性をサポートすることを可能とする。
[D.1.2.5 MCMSユーザインタフェースモジュール]
MCMSユーザインタフェースモジュール20eは、クライアント12の音声・ビデオユーザインタフェースの動作および機能をサポートする。ユーザインタフェースモジュール20eは、ユーザ相互作用のホストをサポートし、下記のさまざまな相互作用媒体で実現することができる。すなわち、デバイス13上のグラフィカルユーザインタフェース・スクリーン、音声/DTMFインタフェース、音声ユーザインタフェースで、その全てのがユーザに、システム10とインタフェースで接続することを可能にする。サポートされるユーザ相互作用の一部リストは以下を含む。例えば、機能する;ログインする;会話を管理する、参加する、モニタする;会話のレンダリングをコントロールする;優先順位を管理する;会話をアーカイブしたレビューすることを要求する。このリストは、例示としてあげたものであり、本発明を限定するものと解釈されるべきではない。
[D.1.2.6 会話/メッセージ管理サービス]
会話/メッセージ管理サービス部20fは、一組の機能を定義するモジュールである。これは、ユーザが会話の参加者間で送受信したメディア(例えば、音声またはビデオコンテンツメッセージ)の受信とレビューを管理するうえで必要とする全ての情報を管理、保持する役目のデータ構造および処理を管理する。メッセージは、会話に組織される。アプリケーション12を実行しているデバイス13によって送受信されたメディアは、受信中に即座にレビューすることができる。また、受信メディアは、タイムシフトモードでレビューするため、会話管理、およびアーカイブする目的で、記録される。他の実施例においては、メッセージまたは会話は、希望の保持条件を指定して、オプションとして一時的にマーク付けすることもできる(例えば、一部のメッセージは、即座のレンダリング要求を無視して、保持または記憶されない)。さらに他の実施例においては、メディアはタイムシフトモードだけでレビューする目的でオプションとしてマーク付けされ、受信後即座にレビューすることはできない。
会話/メッセージ管理サービス部20fは、さらにユーザの現在の会話すなわち進行中の会話をそれぞれ随時受信中のクライアント12にメディアを送信可能にし、受信側の動作に関わらず、受信中のクライアント12は、これらのメッセージを適当な会話を切れ目なく結び付ける。
会話/メッセージ管理サービス部20fにより、全ての会話は基本的に非同期性となる。もし、二つのユーザが所定の会話にアクティブに加わり、および通信間のユーザ制御の遅延が最小であれば、現在の電話またはVoIP会話と同じく、非同期の全二重の会話となる。もし、どちらか一方のユーザの参加が遅れた場合、理由のいかんを問わず、会話は非同期の音声(またはその他のメディア)メッセージにドリフトする。代替的な実施例においては、会話は、非同期のメッセージのみあるいは同期メッセージのみとしてオプション的にタグ付けすることができる。これらのケースのどちらか一方においては、タグ付けがリセットされない限り、会話は二つのモードの間でドリフトすることはできない。タグ付けのリセット後は、会話は、ほぼ同期性(すなわち、ライブまたはリアルタイム)と非同期(すなわち、タイムシフトされたメッセージまたは音声メッセージ)モードの間で再度流れることができる。
会話/メッセージ管理サービス部20fは、漸次メッセージの送受信の処理を行う。送信するとき、メディアが作成されても良く、メッセージは同時にエンコード、記憶され、送信される。すなわち、メッセージの送信は、ユーザによるメディアの生成と同時に(すなわち、デバイス13に話す間、またはビデオ生成中に)始まっても良い。受信サイドでは、メッセージの受信、記憶およびレンダリングの全てのが漸次行われる。メッセージは、レンダリングされる前は、完全に受信される必要はない。メッセージのレンダリングは、メッセージがMTSDまで送達されると同時に始まっても良い。さらに、サービス20fは、出力メッセージの送信と入力メッセージのレンダリングを同時に行うことができる。サービス20fの漸次性により、ユーザは後の検索とレビューのために会話のメディアの記憶とストリーム中に、ここに記述するその他機能も同様、ライブ会話に参加することができる。
会話/メッセージ管理サービス部20fによるメッセージのタイムシフトによって、もし、先行するメッセージを逃したときまたは他の会話に加わっていたとき、ユーザは、会話に「ライブにキャッチアップ」することができる。このタイムシフト処理により、ユーザは、グループ全体またはチャンネル全体にメッセージを繰り返してくれるように要求を出す必要がなくなる。古いメッセージは、時間を節約するために、可能性として高速で随時再生することができる。ユーザはメンバーのメッセージや個人のメッセージを簡単に行ったり来たりスキップできる。レビュープロセスは、低い優先順位のメッセージを潜在的にスキップするようにメッセージ優先順位ベースで構成することもできる。
一実施例において、会話/メッセージ管理サービス部20fは、特定の参加者(話者)によってメッセージを識別し、同時に送達された会話のメッセージをデフォルトで混合する(MCMS−S)。任意の実施例において、ユーザは異なる会話の参加話者の通信を別個にレビューすることもできる。
さらに会話/メッセージ管理モジュール20fは、参加者同士で会話を共有することができ、その参加者をアクティブ会話またはアーカイブの会話に加えることができる。一実施例において、会話に加えられた参加者は、会話へのアクセスが与えられ、その会話の先行のメッセージを取り出しレビューすることができる。他の実施例においては、加えた参加者は、その会話のメッセージに対してのみ、その新しい参加者が加わるポイントからアクセスが与えられ、その会話先行するメッセージに対するアクセスは与えられない。
また、会話/メッセージ管理モジュール20fは、記憶・ストリームモジュール24によって実行される全てのレンダリングするタスクをコントロールするために使う機能を管理する役割を持つ。これらのタスクには、アプリケーション12を実行するデバイス13に適切にメディア(すなわち、音声、ビデオ等)をレンダリングすることが含まれる。これらのレンダリングタスクには以下が含まれるがそれに限定されない。すなわち、ミックスしたメッセージ(すなわち、メッセージのオーバラップ)をレンダリングするとともに、ユーザ定義の基準に従い、早送り、ライブへキャッチアップ、沈黙の除去、躊躇粒子の除去、周波数シフトをレンダリングすること、およびマルチ会話における個人の送信側に対する独立のゲインコントロール適用すること。
[D.1.2.7 優先順位サービス]
優先順位サービス部20gは、一組の機能を定義するモジュールである。この一組の機能は、ユーザが、ユーザが関与する継続する会話(すなわち、MCMS−C)の優先順位を管理するうえで必要な全ての情報を管理保持する役割を持つデータ構造および処理を管理する。ユーザが継続的な多角ライブ会話に参加するときは、ユーザはその会話に優先順位をつけることを求められる。異なる会話のメッセージが同時にレンダリングできる状態になると、問題が起こる。アルゴリズムを使い、メッセージがレンダリングされる順序を判断し、レンダリングされるメッセージの利用可能性とユーザによってセットされた優先順位を考慮する。アルゴリズムは、最も高い優先順位をもった利用可能なメッセージを決めて最初にレンダリングし、一方、同時に利用可能なメッセージは、自動的にタイムシフトされ、高い優先順位のメッセージレンダリングできるようにする。レンダリングが可能になれば、システムは、タイムシフトされたメッセージを、ユーザの優先順位に従い自動的にレンダリングする。
[D.1.2.8 コンタクトサービス]
コンタクトサービス部20hは、一組の機能を定義するモジュールである。この一組の機能は、一またはそれ以上のコンタクトを認証し、会話と関連づけるうえで必要な全ての情報を管理、保持する役割のデータ構造および処理を管理する。多数のコンタクトと関連づけられた会話の部分としてメッセージを送信するときは、全てのコンタクトがメッセージを受信する。
[D.1.2.9 プレゼンス/ステータスサービス]
プレゼンス/ステータスサービス部20iは、一組の機能を定義するモジュールである。この一組の機能は、プレゼンス情報とステータス情報を管理し、システムの特定のユーザおよび/または 非ユーザと共有する役割のデータの構造と処理を維持する。種々の実施例において、プレゼンス情報とステータス情報は、クライアント12のユーザに関わる会話に参加する全てのユーザと非ユーザ、コンタクトリストの全てのユーザと非ユーザ、または、予め定義するされたドメイン内のユーザ(例えば、会社またはその他の組織のメンバー)のために維持される。これらの例は、単に例示として挙げたものであり、限定と解釈されるべきではない。プレゼンス/ステータスサービス部20iモジュールは、ユーザおよび/または非ユーザの組を定義するプレゼンス情報とステータス情報を管理、共有することもできる。
プレゼンス/ステータスサービス部20iは、他のユーザの意図のステータス、注意、および所定の会話のタイムシフト遅延(すなわち、ライブの会話のメッセージをレビューすることからどれだけ遅れているか)をユーザにモニタすることを可能とする。一実施例において、プレゼンスとデータ状態の利用可能性について、プライバシーコントロールが提供されている。さらにプレゼンス/ステータスサービス部20iは、システム10が、ユーザの動作と意図にマッチするメッセージを送達することを可能とするデータをコントロールする。例えば、ユーザは、会話のライブをレビューするかしないか意図を指定することによって自分のステータスを示すことができる。応答として、プレゼンス/ステータスサービス部20iは、ユーザの意図に従って、「ライブ」またはタイムシフトでメッセージをレンダリングさせるコマンドを発する。さらに、ユーザの意図は、その会話の他の参加者と共有される。また、サービス20iは、ユーザの動作からその他のステータス値を推論することが可能である。プレゼンス情報およびステータス情報は、以下に詳しく記述するように、ネットワークのトラフィックと帯域幅を最適化する目的で使われる。
[D.1.2.10 メッセージ/信号サービス]
メッセージ/信号サービス20jは、一組の機能を定義するモジュールである。この機能は、システム10のユーザに特別のメッセージまたは聞こえる音を使ってシステム10のユーザにメッセージと信号を発する役目のデータ構造と処理を管理する。特別のメッセージまたは音は、例えば一個または複数のメッセージがライブかタイムシフトかの指示、どこからのメッセージか、優先度、その他のファクタを含んでも良い。メッセージ/信号サービス20jは、さらに以下の能力を持つ。(i)ネットワーク上にユーザが存在しているか否かを信号で知らせる。またもしユーザがもう会話のメッセージをアクティブにレビューしていないときは、通知することができる。(ii)ユーザが別の会話に注意を奪われているときまたは自分のデバイス13に全く注意払っていないとき、「リング」または別の方法で通知する。(iii)ユーザがネットワーク18上にいない場合はメッセージを残し、次回ユーザがネットワーク18に接続したときに即座にメッセージをレビューすることを促す。(iv)音響または視覚のフィードバックを生成し、送ったメッセージが受信側に受信されなかったことを送信側に警告する、メッセージが受信側に受信されたときおよび/またはメッセージが受信側に聞かれたときは、確認を生成する。(v)会議または戦術的なコールに加わっている人々が当コールに即座に注意を払う必要がある場合、優先順位スキームを実行する。この表示は、受信側による様々なレベルの緊急性または何らかの確認を伝達しても良い。
[D.1.2.11 レンダリング・エンコード]
レンダリング−エンコードモジュール21は、MCMSアプリケーション20のための全てのレンダリングタスクを実行する役割をもつ。これらのタスクには、アプリケーション12を実行するデバイス13に適したレンダリングメディアが含まれる。
[D.2 記憶・ストリームモジュール]
記憶・ストリームモジュール24は、以下に説明するように多くの機能とパフォーマンス属性をサポートする。
記憶・ストリームモジュール24は、メッセージは基本的に「全二重」で送信され、相手方もメッセージを送信中であっても、また、もし相手が出られないまたは別の通信に加わっていても、何れの当事者にも随時メッセージを送信可能にする。記憶・ストリームモジュールは、ライブのPSTNまたはVoIPコールと同じように、メッセージをレンダリングし、タイムシフトメッセージモードのためのメッセージを送達することができる。ユーザの希望に従い、送信を最適化し、レンダリングをコントロールすることができる。
記憶・ストリームモジュール24は、下層のネットワーク18上の全てのターゲットの受信側(例えば、サーバ16、その他のデバイス13)との接続性を維持し、全てのメッセージ、信号、およびメディアの通信を管理し、ネットワーク18の送達速度と帯域幅を最適化し、ネットワークの品質と容量を管理しながらユーザの現下のパフォーマンス必要条件を満足する。モジュール24は、下層のネットワーク18の質と容量と釣り合いのとれたメディアの送達を調節し、最適化する。下層のネットワークための資源が不十分な場合は、送信するメディアストリームの質を下げることができる。帯域幅の回復しだい、送信するメディアストリームの質を上げることもできる。メディアの質のトレードオフに加え、記憶・ストリームの機能により、以下に記述するように、データをリアルタイムでレンダリングしようとするユーザの意図に基づいて、各パケットで送信するメディアの量をトレードオフすることができる。
下層のネットワーク18の状態に基づいて、メディアの送達速度を動的にコントロールすることにより、記憶・ストリームモジュール24は最適化され、受信したときにレンダリングする上で「十分に良い」時間的制約のあるメディアの送達を行い、紛失、質が低い、またはダメージを受けたパケットの再送を要求するバックグラウンドのプロセスを通じて、アーカイブする目的のそのメディアの正確なすなわち完全なコピーが最終的に送達されることを保証する。最低限のメディアの品質レベルを満足するだけのネットワーク資源がある限り、この再送は、ライブコールでのメディアのレンダリングを妨げることはない。このように、システム10のクライアント12は、相当な潜在的待ち時間を犠牲にしたメディアの正確なすなわち完全なコピーの送達と完全性の保証はないがメディア素早い送達との間のパフォーマンスギャップを橋渡しするように設計されている。本アプリケーションの文脈において、用語「十分に良い」とは、メディアの質が、レンダリングされたときに理解できる、ということを意味する。したがって、「十分に良い」の概念は主観的なものであって、絶対的な用語として解釈されるべきではない。例えば、あるメディアの十分に良い質のレベルは、メディアのタイプ、状況、その他のファクタによって変わりうる。
さらに、記憶・ストリームモジュール24は、デバイス13を使って別途生成された、または、ネットワーク18上で別のデバイス13および/またはユーザから受信された全てのメディアを持続的に記憶する。クライアント12を実行するデバイス13上でこのメディアを記憶することは幾つかの大きな利点がある。(i)送信側および/または受信側が出られないまたはネットワーク接続性が貧弱である場合でも、ユーザは相手方にメッセージを残すことが可能となる。帯域幅が不十分なケースでは、メッセージは帯域幅が効果的に使える限り早く送信される。接続性が不要のケースでは、メッセージは、送信待ちのキューに並び、ネットワークの接続が使用可能になると即座にタイムシフトの送達がおこなわれる。(ii)ユーザは、ポーズ、リプレイ、早送り、ライブの進行中の会話にキャッチアップができると同時に、アーカイブされた先行する会話のメッセージを取り出しレビューすることができる。(iii)時々起こるネットワーク回線容量および接続性の問題にたいしてシステム10上のデータペイロードの最適化とシステムの復元力を向上することが可能となる。
また、記憶・ストリームモジュール24は、下記の役割をもつ。多数の参加者が話している実際の会話をシミュレートして、メッセージを適切にミキシングし、オーバラップメッセージ(会話における話者等の通常のオーバラップまたはバックグラウンドのノイズで生成される)を作成する、音声メディアの解説または翻訳をレンダリングすること、早送り、発話間の沈黙ギャップの除去、躊躇粒子の除去、周波数シフトをを含む多数のユーザ定義の基準に従ってメディアのレンダリングを調節すること、マルチ会話における個人の送信側に対する個別のゲインコントロールを適用すること能力を持つこと及び潜在的なレンダリングオプションをもつ。
記憶・ストリームモジュール24は、それ自身とMCMSとの間のコントロールおよび情報メッセージを管理する。
[D.2.1 永続的無限メッセージバッファ(PIMB)]
永続的無限メッセージバッファ又はPIMB30は、一組のインデックスされた(すなわち、タイムスタンプ付け、順番に番号付け)メディアペイロードデータの構造、およびその記憶と取出しのためのシステムである。一実施例において、PIMB30内のデータは、永久にあるいは少なくともシステムの記憶装置がいっぱいになるまで、使用可能であるという意味で、実質的に永続性をもつ。記憶資源を有効利用するために、様々な保持率と方策を採用することができる。PIMB30の物理的記憶を実施するには下記のような様々な方法があるが、これに限定されない。すなわち、RAM、フラッシュメモリ、ハードドライブ、光学メディア、またはその幾つかの組み合わせ。PIMB30も、PIMB30に記憶できるデータの量は本質的に限定されないという意味で、サイズ的に「限定」である。この限定がないということは、レンダリング後即座にデータを廃棄する現在のジッタバッファ技術との比較の上でのことである。特定の実施例において、PIMB30は、持続的記憶用のハードドライブと連結された小さくて比較的早いRAMキャシュメモリを使って実現することもできる。PIMB30の物理的記憶容量を超えた場合、オンデマンドでの後の検索のために、データはサーバ16に保持される(以下に記述する)。何れの時点でも、PIMB30に記憶された実際のデータまたはサーバ16、またはアーカイブされたデータは、ユーザ基準または「最も古く使われた」、又は、「先入れ後出し」等の入れ替えアルゴリズムを使ってコントロールされる。さらに、PIMB30は、ファイルシステム保存の属性およびランダムアクセスの属性のレンダリングをおこなう。それぞれのメッセージの期間または数にかかわらず、どんな数の会話でも記憶でき、後で検索してレビューすることができる。さらに、作成源、長さといった、会話のメッセージと関係するメタデータもPIMB30に記憶することができる。他の実施例においては、インデックスかされたメディアペイロードおよび他のデータは、指定の期間(例えば、30日)記憶することができる。メディアが指定の期間を超えると、ペイロードとデータは廃棄される。別の実施例においては、ペイロードを含むメッセージの送信側および/または受信側、またはペイロードに関わる会話またはメッセージのトピックに基づいてペイロードは廃棄することができる。さらにその他実施例においては、ペイロードおよびデータは一時的にマーク付けされ、メッセージは、即座のレンダリングの要件を超えて、PIMB30に記憶されない。
[D.2.2 データ・ネットワーク品質記憶部]
データ・ネットワーク品質記憶部(DNQS)32は、PIMB30から読み取られ、PIMB30に書き込まれるメディアペイロードとVoxパケットに関する情報を記憶するためのデータ記憶部である。
[D.2.3 PIMB書込み部]
PIMB書込み部28は、二つの基本的目的のためにデータをPIMB30に書込む。PIMB書込み部28は、クライアント12を実行するデバイス13上のメディア取得デバイス(例えば、マイクまたはカメラ)からのデータを書込む(「エンコード受信」)。また、PIMB書込み部28は、他のクライアント12からネットワーク18を通じて受信したデータを書込むPIMB30(「ネット受信」)。
[D.2.3.1 エンコード受信]
デバイス13からメディアを取得するために、PIMB書込み部28は、エンコーダ受信部28aとデータ記憶部28cを含む。例えば、あるユーザがマイクに話かける、あるいは、デバイス13でビデオメッセージを生成すると、ハードウェア34が生の音声および/またはビデオ信号を受信し、それをインデックスされたメディアペイロードにエンコードするエンコーダ受信部28aにレンダリングする(以下、単に「ペイロード」と称する場合もある)。データ記憶部28cはそのペイロードをPIMB30に記憶する。センサデータ等のその他のタイプのメディアは、同様の仕方でペイロードに変換される。
[D.2.3.2 ネット受信]
ネットワーク18を通じて受信メディアをPIMB30に記憶するため、PIMB書込み部28のネット受信機能は、ネットワーク受信部28d、データバッファ部28e、データ記憶部28f、データ品質管理部28gおよびネットワーク品質管理部28hを含む。ネットワーク受信部28dは、ネットワーク18を通じてVoxパケットを受信する。データバッファ部28eは、受信したVoxパケットを正しい順序に置き、入ってくるVoxパケットのレンダリングの少なくとも最小タイムシフト遅延(MTSD)を防ぐ。データ記憶部28fは、パケットをインデックスされたメディアペイロードに変換し、インデックスされたメディアペイロードをPIMB30に記憶する。ペイロードが記憶されと、データ品質管理部(DQM)28gは、紛失パケットあるいは欠陥パケットがないか監視する。もし紛失パケットや欠陥があるがある場合は、DQM28gはネットワーク18を通じて再送要求を予約する。送信側のデバイスは、これに応えて紛失パケットまたは欠陥パケットを再送する。最終的にはこれらのパケットは、インデックスされたメディアペイロードに変換され、PIMB30に記憶される。紛失パケットまたは欠陥パケットを取出すことによって、送信側のメッセージの「正確な」コピーは最終的にはPIMB30に記憶される。紛失パケットおよび/または欠陥パケットの再送によって、メッセージのリアルタイムのレンダリングに遅延を生じることはなく、送達されレンダリングされたパケットは「十分に良い」品質と量となる。新しい「ライブ」データと再送サポートするだけの十分なネットワーク資源がない場合は、DQM28gによって再送要求が遅延される場合もある。
[D.2.4 PIMB読取り部]
PIMB読取り部26は、二つの基本的目的のためにPIMB30からデータを読取る。データがローカルクライアント12向けにレンダリングされる場合は(「レンダリングする」)、PIMB読取り部26はPIMB30にアクセスする。データがクライアント12によってネットワーク18を通じて送信される場合も(「送信」)、データはPIMB30から読取撮られる。
[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のスピーカーまたはビデオ表示部を駆動する。
[D.2.4.2 送信]
ネットワーク18を通じてクライアント12から送信するメッセージを作成するために、PIMB読取り部26はデータ優先順位付与部26f、パケット品質管理部(PQM)26g、データ読取り部26h、パケット部26i、送信部26jおよび認証部26kを含む。データ優先順位付与部26fは、ネットワーク18を通じて送信するメッセージに優先順位をつける。優先順位は、送信できるペイロードに関するMCMS参加者の属性、ネットワークの接続性と回線容量の状態、およびライブまたはタイムシフトでレンダリングする次のホップの向こう側にいるおよびユーザの意図、そして、幾つかの実施例においては、次の所定のネットワークホップに対する多数のパケットが利用できる場合には、送信組立の可能な最適化、を使って判断される。次に、以下に詳述するように、優先順位をつけられたパケットは、ライブメッセージを行ううえで「十分に良い」品質のデータをタイムリーに送達することを確実にするPQM26gを使ってリアルタイムの帯域幅を最小化しながら最適化される。データ読取り部26hは、PIMB30から適切なペイロードを取り出す。パケット部26iは、ペイロードをVoxパケットに組立て、Voxパケットは次にネットワーク18を通じて送信部モジュール26jによって送信される。受信側がVoxパケットを受信すると、ネットワーク18を通じて認証部26kに確認が送られ、メッセージが宛先に着信したことを送信側のユーザに通知する。
[D.2.5 パケット品質管理部]
PQM26gには、以下の最適化目標がある。(i)時間的制約のあるメディアの適切なコピー(レンダリングするうえで「即座に、十分に良い」)をタイムリーに送達すること;(ii)最適な送信周波数、ペイロードの品質、および下層のネットワークのための最適なパケットサイズを使って使用可能な帯域幅を有効に使うこと;および(iii)送信周波数、ペイロードのコンテンツ、ペイロードの品質、パケットのサイズ等をネットワークの状態変化に応じて動的に調節する、または変更すること。
[D.2.6 ネットワーク品質管理部]
ネットワーク送信の受信サイドにはネットワーク品質管理部28h(NQM)がある。NQMは、実際値に対するジッタ、損失、および処理量の期待値を比較して、クライアント12にメディアを送った各送信側のためのネットワークのパフォーマンスの特定の特性を監視する役割を持つ。全ての送信側のネットワーク品質レート(NQR)を計算するために使われる。NQRは受信側のデバイスのユーザに送信側の利用可能性および会話のライブ度を示すために使われる。
[D.2.7 データ品質管理部]
データ品質管理部28gは、パケット損失、ジッタ、処理量を監視して、ネットワークを通じて受信中のデータの品質を測定する。DQM28gはこれらの測定値を3つ目的のために使う:(i)送信側に受信レポートを送り返す;(ii)オプションとして、これらの受信レポートを使って特定のデータの再送を要求する;および(iii)これらの測定値をNQM28hが利用できるようにする。
[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を含む。
MCMSサーバアプリケーション80は多層構造のアーキテクチャであって、以下を含む。すなわち、MCMSデータベースモジュール20a、記憶・ストリーム(SAS)モジュール20b、メッセージ・信号モジュール20c、会話/メッセージ管理サービス部20f、優先順位サービス部20g、コンタクト(ユーザと認証を含む)サービス部20h、プレゼンス/ステータスサービス部20iおよびメッセージ/信号サービス部20を含む。クライアント12と同じ参照番号を持つアプリケーション78の前記モジュールおよびサービス部はクライアント12の同じ参照番号を持つモジュールおよびサービス部と同様もしくは同じであり、したがって注意すべき例外を除きここでは詳しい記述を省く。種々の実施例において、MCMSデータベース82を含むMCMSサーバアプリケーション80および記憶・ストリームモジュール84は、アプリケーションの一例として、多数のユーザをサポートするように構成されている。さらに、この例は、ユーザのグループとして定義される多数のドメインをサポートするように構成されてもよい(例えば、会社または共通の組織に所属するユーザその他のグループ)。このアーキテクチャは、サーバ16上の各アプリケーション78が、各ユーザ(またはドメイン)が他のユーザには見えない多数のユーザ(またはドメイン)に使えるようにしてもよい。この区切り方は「マルチテナント」と呼ばれる。
記憶・ストリームモジュール84はネット受信と送信の機能を実行する。ネット受信機能用として、モジュール84は、ネットワーク受信部28d、データバッファ部28e、データ記憶部28f、データ品質管理部(DQM)28g、およびネットワーク品質管理部28hを含む。送信機能用として、モジュール84は、データ優先順位付与部26f、パケット最適化部26g、データ読取り部26h、パケット部26i、送信部26jおよび認証部26kを含む。記憶・ストリームモジュール84の上記の構成要素は、クライアント12の同じ参照番号を持つ構成要素と同様又は同じである。したがって、それらの詳しい記述は割愛する。
サーバ16はユーザと直接情報のやりとりはしないので、クライアント12の記憶・ストリームモジュール24に与えられたエンコードとレンダリング機能は、必要としない。MCMSアプリケーション80は、サーバ16上で動作するときは、ユーザと直接やり取りはしない。したがって、ユーザインタフェース、および ユーザインタフェースAPIモジュールおよびサービス部20e、20dは必要ない。
各サーバ16上のアプリケーション78は、潜在的に多数のテナントに関与する。つまり、システム10の多数のユーザに関与する。サーバアプリケーション78のPIMB85は、したがって、一個ののユーザのみの生成されたまたは受信したペイロードだけを記憶するために使われるPIMB30とは異なり、相当に大きく、また、多数のユーザのメディアペイロードを記憶するために使われる。記憶・ストリームモジュール84の主な目的は、クライアント12によって送信されるメッセージを受信することと他のクライアント12にメッセージを送信することである。メッセージが受信されると、PIMB85に記憶されるとともに、目的の受信側またはシステムの構成に直接依存する受信側への経路に沿って、ネットワーク層14の次のサーバ16(すなわち、ネット「ホップ」)へ送信される。アーカイブ/取出し部88は、アーカイブ部89内のPIMB85に記憶されたメディアのペイロードをアーカイブする役割を持つ。PIMB85内の物理的スペースがなくなると、PIMB85内のメディアのペイロードは大量記憶デバイスであるアーカイブ部89へ移される。種々の実施例においては、PIMB85に記憶されたペイロードは、ユーザ定義の基準および/または先入れ先出し(FIFO)または最後に使われた(LRU)等の既知の入れ替えアルゴリズムに従ってアーカイブされる。解りやすくするために、図1には、一個のサーバ16のみが示されている。実際の実施例においては、複数のサーバまたは「サーバファーム」は、多数のユーザとのネットワークのために使われる。
PIMB30およびPIMB85を記述するために使われる用語「永続性の」と「限定」は、厳密な用語として文字通り解釈すべきではない。ユーザは、重要とおもわれる幾つかのメッセージは、いつまでも記憶したいと望む。二人の友達間の普段のおしゃべり等のその他の状況では、スペースを節約するために、一定の時間が経過したら、メッセージは削除しても良い。本発明の種々の実施例によれば、システム10によって設定されるかユーザによって設定されるか、異なる保持ポリシが使われても良い。「限定」の用語は、PIMBによって強制される時間的区切りがないという意味で使用される。このことは、現在のジッタバッファシステムでは、メディアはレンダリングされた後は、廃棄されるのとは対照的である。「永続性」および「限定」の用語は、したがって、PIMB30およびPIMB85は、時間の範囲とそこに記憶されるメッセージの量については何ら内的制限がない、ということを意味すると広く解釈されるべきである。
持続的記憶媒体に会話のメッセージをアーカイブすることには多くの利点がある。音声メッセージおよびその他のメディアは、必要に応じ組織化され、インデックスされ、検索され、転記され、翻訳され、レビューすることができる。音声およびその他のメディアは、したがって、ユーザおよび組織によって管理することのできる資産となる。これらのメディア資産は、軍隊同様、会社、第一応答者、警察および消防署にとっても価値がある。
[F.Voxプロトコルおよびインデックスメディアペイロード]
上記したように、Voxプロトコルは、ペイロードの送信、記憶、および最適化の全ての面をサポートするために、記憶・ストリームモジュール24によって使われる。Voxパケットは、ネットワーク18の下層の技術における一個または複数の搬送パケットの内部のカプセル化のために設計された構造化されたメッセージフォーマットである。これによりシステム10の自由度が大きく改善される。搬送パケットの中にVoxパケットを埋め込むことによって、「ヴォクシング(Voxing)」アプリケーションのために新しい搬送層を定義するのとは対照的に、システム10は、現存する通信インフラを通じて動作する通信ネットワークに基づいて現在のパケットを利用する。Voxパケットを扱うための新しいネットワークインフラは、したがって、ここに記載するシステムおよび方法の全ての利点を利用する必要はない。
図4Aを参照すると、Voxパケット95の一般的なフォーマットの構造が示されている。Voxパケット95のフォーマットは、タイプ、サブタイプ、長さ、およびペイロードを含む。Voxパケットの別のタイプは、認証、信号発信、メディアペイロード、メディア多重化(一個のメッセージ)、およびメディア多重化(多数のメッセージ)を含む。サブタイプのフィールドは、異なるタイプの認証、信号発信、メディアタイプメッセージを指定するために使われる。認証メッセージのための可能なサブタイプとしては、キー交換および認証に必要なフィールドが含まれる。信号発信メッセージのための可能なサブタイプとしては、登録、ルーティング、メッセージのセットアップおよびネットワークの管理が含まれる。メディアメッセージのための可能なサブタイプとしては、コーデックの型と異なるペイロード集約技術が含まれる。長さフィールドはペイロードの全長すなわちサイズを定義する。ペイロードフィールドは、パケット95の実際のペイロードすなわちメディアを含む。
図4Bはネットワーク18によって使われるカプセル化せれたVoxパケット95のプロトコルの例を示す図である。この例では、UDP、IPおよびイーサネット(登録商標)の搬送パケット96の下層にそれぞれ埋め込まれたVoxパケット95を示す。この方法においては、Voxパケット95は、ネットワーク18の下層のUDP、IPおよびイーサネット(登録商標)層を通じて搬送できる。これは、パケットネットワークによって使われる標準的なプロトコルカプセル化の技術である。
図4Cは、UDP、IP、およびイーサネット(登録商標)97内でカプセル化されたメディア多重化Voxパケット95を示す図である。この例では、Voxパケット95は、メディアタイプフィールド、メディアサブタイプフィールド、長さフィールド、メッセージIDフィールド、タイムスタンプフィールド、シーケンスIDフィールドおよびメディアペイロードフィールドを含む。
図4Dは、インデックスされたメディアペイロード98のフォーマットを示す。インデックスされたメディアペイロードは、サブタイプフィールド、長さフィールド、メッセージ識別子(ID)フィールド、タイムスタンプフィールド、シーケンス識別子(ID)フィールド、およびメディアペイロード用のフィールドを含む。
Voxパケット95を搬送パケット下層のネットワークのカプセル化することによって、メディア、メッセージおよび会話を多数の属性によってそれぞれ定義することができる。
メディアがデバイス13上に作成または生成されると、それは、主としてタイムベースのものとなり、時間経過とともに意味のある形で変化する。ある人が会話に参加すると、例えば、時間の経過とともに、話し言葉はセンテンスまたは発言につなぎ合わされて、結果としてのデータ(ストリームおよびパケット)は、同じ相違を長い時間維持する。同様に、GPSその他センサデータ同様、ビデオ(スチール写真とは対照的に)は、時間の経過とともに変化する。タイプや生成のされ方にかかわらず、メディアはセグメント化され、複数のVoxパケット95のペイロード中に置かれる。続いてパケットは記憶され、送信され、受信され、記憶され、送信側と受信側のデバイス13のそれぞれでストリーム(すなわち、ストリーム中のメディア)にレンダリングされる。各パケット95は、インデックスされ、タイムスタンプ処理され、シーケンス識別子が付与されているので、個々のパケットは、メッセージにセグメント化することができる。個人のメッセージを順番にスレッディングすることによって会話を構成することができる。
システム10の固有の側面として、クライアント12によって生成されたメディアペイロードは多くのロケーションに記憶されるということである。ペイロードは、生成側のデバイス13のPIMB30に記憶されるだけでなく、受信側のサーバ16のPIMB85およびデバイス13のPIMB30にも記憶される。この基本的な機能によって、Voxing機能の多くを可能とし、ネットワークの状態が不良であっても、あるいは会話の参加者がネットワークに接続されていなくても、システム10に復元力と操作性を提供する。
[G.下層通信プロトコルとの相互操作性]
システム10は、インターネット、固定PSTNタイプ回路ネットワーク、およびモバイルまたはセルラーホンネットワークまたはその組み合わせのようないろいろな現存する通信ネットワーク18を通じて、実行する、あるいはそれらと層化することを意図している。システム10は、システム10内の異なるクライアント12とサーバ16間を移動する多数の小さな情報の単位(すなわち、Voxパケット)のコンセプトの周辺に設計されている。Voxパケットは、機能およびペイロードによってサイズは異なるが下層のネットワーク層にとっては、全て同じ種類のデータとして見える。一実施例において、システム10は、インターネット等のIPv4ネットワークが設計されて最適化されたものだが、その他のタイプのネットワークもサポートする。本ドキュメントの目的に照らして、用語「IP」は、IPv4、IPv6あるいはその他現在または未来に実施されるであろうインターネットプロトコルを意味すると理解されるべきである。
図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プロトコルに埋め込まれ送信される。
図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の標準的な手順に従って動く。
図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パケットを送信するための専用ではなく、むしろ他のタイプのネットワークトラフィックと共有してもよい。
図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にまたがるゲートウェイサーバとも考えられる。
システム10によって、システムのパフォーマンスを最適化するための、いくつかの基本的なネットワークの相互作用に関する考え方がある。これらの考え方には、Voxパケット95が送られる下層のアドレスの分解法、送られたVoxパケットの統合、および所定のネットワークまたはネットワークの組み合わせを通じて送られる一個のメッセージの最大送信単位(MTU)の管理などのファクタが含まれる。
下層のネットワークがVoxパケット95を正しいロケーションに送達できるように、ターゲットクライアント12のアドレスを知る必要がある。IPv4ネットワークでは、アドレスは主としてIPv4アドレス、ネットワーク内のホストを一意的に識別する32ビット数である。別のネットワーク技術においては、アドレスは別のタイプの識別子である場合もある。IPネットワークではドメインネームシステム(DNS)を使い、人間が読み取り可能なネームをIPアドレスに変換し、アドレス変換プロトコル(ARP)でIPアドレスを物理アドレスに変換する。下層のネットワーク技術に関わりなく、システム10は、上記のスキームのうちの一つまたは他の既知のアドレススキームを使ってVoxパケット95を正しいロケーションに送達する。
パケットベースの通信システムにおいては、もし、下層のネットワークがVoxパケットがカプセル化されたパケットを送達できなければ、送信されたVoxパケットがアドレスされたロケーションに送達されない場合もある。ほとんどのパケットネットワークは、パケットが欠落しても送信側へ通知しない。これとは逆に、パケットは送信側と受信側に依存し、欠落したパケットを通知し、補正する。システム10はこれらの受信側の受信レポートメッセージを使いパケット損失管理を調整するように設計されている。もし、下層のネットワークが欠落し紛失パケットを送信側に通知することができれば、システム10はこの情報をプロトコルの再送信に使用できる。
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ははるかに大きくてもよいが、同様の計算式を使って判断される。
純粋にパケットベースネットワークにおいては、MTU用に二個の潜在的値、すなわち、ローカルリンクMTUおよび経路MTUがある。ローカルリンクMTUは、ローカルネットワークインタフェースに効率的に送られるように、Voxパケット用に最大サイズが決定する。経路MTUは、遠隔地のノードまで全行程完全な状態で送られるように最大サイズのVoxパケットを出す。送信側がイーサネット(登録商標)を介して接続されている場合は、小さなMTUで、Voxパケットは様々な別のシステムを経由して、受信側までの道順を決められる。宛先までの経路上の最も小さなMTUの場合は、送信側によって決定され通知される必要がある。IPの世界では、「経路MTUディスカバリ」と呼ばれる最も小さいMTUを見つけるための標準的な手順がある。その他の種類のネットワークには、同様な手順が使われてもよい。改めて言うと、システム10は、別のネットワークの上に重ねられているので、上記のどのMTUアルゴリズムでも使うことができる。
[H.動作フロー図]
[H.1 記憶及びストリーム]
図8Aないし8Fは一連のフロー図であり、クライアント12とサーバ16上の記憶・ストリームモジュール24、84のそれぞれの動作を示す。図8Aは、第二のクライアント12にメッセージを送信する第一のクライアント12のための動作シーケンスを示す。図8Bと8Cは送信側クライアント12上のPIMB書込み部28とPIMBリーダ28の動作を示す。図8Dと8Eは、受信側クライアント12上のPIMB書込み部28とPIMB読取り部26の動作を示す。図10Fは、サーバ16上の記憶・ストリームモジュール84のフロー図を示す。
図8Aにおいて、デバイス13上で動作するクライアント12のユーザが、送信すべきメディアを生成する。メディアは、デバイス13の側で、ユーザがマイクに話すことによってメディアを作成する、自分のデバイス13上でビデオコンテンツを作成する等、多くの異なる方法で作ることができる。また、メディアはデバイス13によってGPS情報、温度読取り値等の受信側センサデータを受信することによって生成される。メディアがどのように生成されたかにかかわらず、メディアは、PIMB書込み部28(囲み130)によってエンコードされ、PIMB書込み部28は、メディアをインデックスされたメディアペイロードに変換し、クライアント12上のPIMB30(囲み132)に記憶する。クライアント12上のPIMB読取り部26は、PIMB30からペイロードを読取り、Voxパケットを作成し、ネットワーク18を通じてパケットを受信側クライアント12(囲み134)に送信する。経路に沿う送信側クライアント12と受信側クライアント12の間の各サーバ16は、送信されたペイロードをPIMB85に記憶し、Voxパケットを次のホップ(囲み133)に送信する。受信側クライアント12にて、PIMB書込み部28のネット受信機能がVoxパケットをインデックスされたメディアペイロード(囲み136)に変換し、ペイロードをクライアント12(囲み138)のPIMB30に記憶する。クライアント12上のPIMB読取り部26のレンダリングモジュールは、PIMB30から読取ったペイロード情報を音声またはビデオ(囲み140)等の媒体にレンダリングする。これらのステップについては、図8Bないし8Eを参照してさらに詳しく記述する。
図8Bに、PIMB書込み部28(図8Aのステップ130)によって実行されるエンコード受信機能のシーケンスを詳しく示す。最初のステップ130にて、クライアント12を操作するデバイス13のユーザが、送信すべきメディアを生成する。上記したように、メディアは、マイクに話す、カメラを使う、センサデータを受信する、その他メディアを生成するためのコンポーネントによって、得ることができる。次のステップ130にて、エンコードレシーバ28aはメディアをエンコードし、インデックスされたメディアペイロード(ステップ130)を作成し、メディアはデータ記憶部28cによってPIMB30(ステップ132)に記憶される。
図8Cは、送信側のクライアント12のPIMB読取り部26によって実行される送信機能のシーケンスを示す(図8A、ステップ134)。決定ループ134において、PIMB読取り部26の送信機能は、送信されるべきインデックスされたメディアペイロードがPIMB30に書き込まれているか、それは送信可能かどうか常にチェックする。もし、使用可能なペイロードがPIMB30にあれば、データ優先順位付与部26fは、ステップ134に示すように、MCMSの参加者属性情報を使って、最初に送るべきペイロードに優先順位をつける。最も高い優先順位のペイロードに関する情報は、図9Aないし9Cに詳述するように、PQM(ステップ134)を実行するパケット最適化部26gに渡される。次に、データ読取り部26hによって適切なペイロードがPIMB30から取り出され(ステップ134)、パケット部26iによってVoxパケット95に変換される(ステップ134)。ついで、Voxパケット95は、送信部26jによって、ネットワーク18を通じて受信クライアント12に送信される(ステップ134)。受信クライアント12は、受信したパケットの特性(損失、ジッタ、処理量)を反映した受信レポートを返す。これらの受信レポートは、PQMが所与の受信側のMABRを計算するのに必要な情報を提供する。プロセスは、戻り矢印で示すように、送信ループごとに送信ステップからフロー図のトップに繰り返される。
上記の実施例では、メディアは、一連の流れの中で、エンコードされ、PIMB30に記憶され、ネットワーク上に送信される。代替的な実施例においては、エンコードされたメディアは、PIMB30に記憶されネットワーク上を平行に送信される。すなわち、二つの機能はほぼ同時に起こる。
図8Dは、受信側のクライアント12上のPIMB書込み部28のネット受信機能(図8A、ステップ136)のシーケンスを示す。最初のステップ136で、ネットワーク受信部28dがネットワーク18を通じてVoxパケット95を受信する。データ記憶部28fはパケットをインデックスされたメディアペイロードに変換し(ステップ136)、PIMB30に記憶する(ステップ136)。ペイロードが記憶されると、データ品質管理部(DQM)28gが実行される。DQM28gは、紛失、壊れたりしたパケットがないかチェックし、送信されたデータの正確なコピーが最終的に記憶されることを確実にする。そして、ネットワークの状態に関する受信レポートを送信側に送信する。DQM28gのこれらの機能については、図9Dないし9Fを参照してさらに詳しく説明する。
図8Eは、受信側クライアント12上のPIMB読取り部26(図8A、囲み140)のレンダリング機能のシーケンスを示す。最初のステップ140において、データ優先順位付与部26aが、MTSD情報、ユーザステータス、プレゼンス情報を含むユーザの意図および注意のステータスを使って、MCMSアプリケーション20によって、レンダリングすると判断されたインデックスされたメディアペイロードに優先順位をつける。優先順位をつけられたペイロードは、データ取出し部26bによってPIMB30(ステップ140)から読取られる。PLC/補間部26cは、どちらのコーデックを使うかによって既知のパケット損失補償および補間アルゴリズムを使って、取り出したペイロードにパケット損失補償および補間(ステップ140)を実行する。次のステップで、二人以上の参加者が同じ会話の中で同時にメディアを生成した場合(例えば、両者が同時に話している)は、ミックス部26dは、会話の多数のメッセージをミックスする(ステップ140)。レンダ部26eは、ミックス部26dからのデータストリームをレンダリングし(ステップ 140)、受信側ユーザに音、ビデオ、その他のメディアを生成する(ステップ140)。
図8Fは、サーバ16が、ネットワーク18上の前のホップからVoxパケットを受信し、記憶し、アーカイブし、Voxパケットを次のホップに送信するシーケンスを示す。最初のステップで、サーバ16は、PIMB書込み部のネット受信機能を実行し(図8Dと同様)、受信したデータのインデックスされたメディアペイロードを、サーバ16のPIMB85とアーカイブ部89に保存する。また、サーバ16は、PIMB書込み部の送信機能を実行し(図8Cと同様)、ネットワーク18上の次のホップに受信したパケットを転送する。この方法においては、送信側クライアント12によって生成されたメディアのコピーが、受信側クライアント12までの経路に沿って各ホップで受信され、記憶され、送信される。
上記の実施例においては、受信したインデックスされたメディアの書き込みは、サーバ16のPIMB91に記憶され、次のホップに連続的に送信される。代替的な実施例においては、受信したインデックスされたメディアペイロードが、PIMB91に記憶し、ほぼ同時に次のホップに送信される。送信側、受信側両者のデバイス13のPIMB30にメディアを記憶することにより、メディアの漸次送信とレンダリングが可能となる。送信側においては、送信側のデバイスで生成されたメディアは、それが受信されると、漸次ネットワーク上に送信することができる。種々の実施例においては、エンコードされたメディア(どのように生成されたかにかかわらず)は、PIMB30に記憶される前、後、またはほぼ同時に漸次送信することができる。また、受信側では、入ってくるメディアは、ネットワークを通じて受信されごとに漸次レンダリングすることもでき、ユーザが望めば、ほぼリアルタイムモードでメディアをレビューすることができる。種々の実施例においては、入ってくるメディアは、受信側のデバイス13のPIMB30に記憶されるごとに、記憶される前、後、またはほぼ同時に漸次レンダリングするこができる。受信メディアをタイムシフトモードでレビューするつもりであれば、後でメディアをPIMB30(または、ローカルPIMB30に置き換えられた場合は、サーバ16上のPIMB85でも可)から取り出し、ユーザが指定する時にレビューすることもできる。
本アプリケーションの文脈において、「漸次的」または「漸次」という用語は、広く解釈されることを意図し、一般にデータの利用可能性に基づいてデータストリームを継続加工することを意味する。例えば、メディアが作成またはデバイス13上で生成されるに従い、メディアが入手可能な限り、メディアの漸次的エンコード、記憶、パッケージ化および送信は継続する。人が話すと、その人が話している間、メディアは、漸次的すなわち継続的にエンコードされ、記憶され、パッケージ化され、送信される。その人がポーズすなわち、話すのを止めると漸次プロセスするメディアはない。その人が再び話すことを再開すれば、メディアの漸次的処理は再開する。また、受信側では、メディアが受信されている限り(すなわち、入手可能な限り)、メディアは、漸次処理される。メディアが受信されると、そのメディアは継続的に記憶される。メディアが受信されている限り、ほぼリアルタイムモードの場合は、継続的にレンダリングされ、タイムシフトモードでは、記憶装置から継続的にレンダリングされる。上記説明は音声の文脈で述べたが、全てのタイプのメディアが同様に漸次処理することができる。また、メディアの漸次的加工は、必ずしもインデックスされた順序で漸次処理される必要はない。むしろ、メディアは受信された順序で、またはその他のインデックススキームによって処理される。もし、メディアがインデックスの順序から外れて受信されたら、一実施例においては、受信されたメディアは受信された順序で漸次処理される。そして、PIMB30の中で、インデックスされたシーケンスに組織化される。代替的な実施例においては、受信メディアはインデックスされたシーケンスで組織化され、漸次レンダリングされる。
[H.2 PQMの動作フロー図]
PQM26gは、継続的に計算される、送信側と受信側のノードのペアの間の実際の送信容量すなわち帯域幅の近似値(すなわち、所定の時点でのネットワークの能力の測定)、すなわち最大可能ビットレート(MABR)と呼ばれる計量に依存する。瞬時にネットワークの状態が変化するごとに、MABRは更新される。ネットワークの処理量、パケット損失、およびジッタの定期的測定値が、MABRを計算することによって考慮される。また、他の実施例においては、MABRは、時刻、ネットワークのタイプ、その他の条件またはパラメータに基づいて手動でセットまたは制限してもよい。
また、PQMは、受信側の意図を考慮し、時間依存型の送信を最適化する。下記のいずれかの場合、送信は時間依存型であるとみなされる。すなわち、(i)受信側の意図が、送信を「ライブ」すなわちほぼリアルタイムモードでレビューしようとしている、または(ii)受信側が、なんらかの理由で(例えば、メッセージは先にアーカイブ部89に保存された)、デバイス13には現在記憶されていないメッセージを即座にレビューしたいと望んでいる。受信側の意図は、受信側の動作によって推論するか、受信側が自分の意図を設定するか別途指定してもよい。一方、受信側の意図がタイムシフトモードでメッセージをレビューすることであれば、送信は時間依存型でないとみなされる。受信側が、ライブモード(すなわちリアルタイムモード)かタイムシフトモードかどちらかで送信をレビューしようという意図が、少なくとも部分的には、送信の「適時性要件」を定義する。その他の種々の実施例においては、通信の緊急性または優先順位といったファクタも、送信の適時性要件を定義するときに考慮される。
送信側と受信側のペアの間のネットワーク経路のノードもまた、受信側の意図のステータスに関して一貫性のあることが必要である。もし、一個のターゲット受信側が適時性を指示したら、すなわち、送信を即座にすなわちライブでレビューしたいと望んだ場合、送信側と受信側の経路に沿うネットワーク上の全ての中間ノードは、その他の受信側要件にもかかわらず、同じ適時性要件を持たなければならない。したがって、各中間ノード適時性要件は、送信が送られた受信側ノードに依存する。この依存性は、ネットワーク送信経路におけるターゲットノードのための「要件の融合」と言われる場合もある。
さらに、PQMは、予約されたメッセージペイロードの送信のための理想ビットレート「IBR」を考慮する。時間依存型の通信のために、IBRは、ほぼリアルタイムまたはライブ通信に必要とされるパケット化レート(以下、リアルタイムビットレート(RTBR)という)に基づいて計算される。例えば、音声場合、20ミリ秒の音声データを含む20ミリ秒毎のパケット化レートは、ライブ会話を行うための許容IBRが考慮される。キロバイト毎秒のシステムのためのRTBRは、1秒の音声ペイロードデータに送信するために生成される全てのネットワークヘッダのサイズを加えたサイズとなる。ビデオメディアまたは音声とビデオの組み合わせのためのRTBRは、単なる音声よりも実質的に高くなる。センサまたはGPS位置測定データ等のその他のタイプのメディアのためには、音声よりも低くなると思われる。非時間依存型の通信のためには、IBRは、ネットワークを通じての通信の使用量すなわち効率を最適化するために最大効率ビットレート(MEBR)に設定される。MEBRは、パケット化レートを調節することによって、下層のネットワークのために最大可能な値に計算される。送信側と受信側のペアの間で、多数のメッセージまたはペイロードが送られ場合は、統合IBR(AIBR)が送信のために考慮される。
PQMは、各送信側と受信側ペアのための一連の送信ループのデータを送信することによって動作する。各送信側と受信側ペア用の送信ループは、単独のものである。ネットワーク上のいかなる送信もその他送信側・受信側ペアのMABRに影響を与えうる。従って、MABRは、全ての受信側について継続的に計算されることが望ましい。
図9Aないし9Cは、一組の送信側と受信側ペアのためのPQMの動作シーケンスを示すフロー図である。図9Aは、一組の送信側と受信側ペア間のMABRを決定するステップを示す。図9Bは、一個の送信側と受信側ペアの各送信ループのためのAIBRを計算するステップを示すフロー図である。図9Cは、送信側と受信側ペア間で送信するデータのループ当たりの量を決定するシーケンスを示す。三つの図に示す処理は、以下に詳述するように、同時に実行され互いに情報のやりとりをする。
図9Aにおいて、フロー図50は、送信側と受信側ペア間のネットワークインタフェースのためのMABRの計算を示す。最初のステップ50において、送信側と受信側のペア間のネットワークインタフェースをモニタする。ステップ50で、送信側は、受信側におけるネットワーク接続のステータスに関する情報を含むレポートを定期的に受信する。レポートは、受信側によって観測されたネットワークインタフェースでのデータ処理量50、パケット損失50、およびジッタ50の現在のステータスに関する情報を含む。ステップ50で、このレポートに含まれるこれらの観測に基づいて送信側でMABRが計算される。これらのレポートのデータをモニタすなわち監視することによって、送信側と受信側のペア間の現在のネットワーク性能または状態に基づいてMABR値が継続的に調節される。ネットワーク性能がデータ送信にとってさらに好適になるので、MABRが向上する。もしネットワーク性能が送信にとって好適以下となれば、MABRが低下し、潜在的に結果としてゼロとなり使用不能なネットワークとなる。このレポートは、TCPネットワークのノードによって生成されるパケット損失レポートと同様のものであるが、さらに処理量情報とジッタ情報を含む。
送信側と受信側のペア間に複数のネットワークインタフェースがある場合は、MABRは、受信レポートが受信されるインタフェース毎に計算される。直近にネットワーク上にトラフィックが送られていない場合、または、受信レポートが受信されていない場合は、MABRには現在のネットワークの状態が反映されないことがある。しかしながら、データが送信されているかぎり、受信側によって受信レポートが継続的に生成されるので、送信側のMABR計量はさらに正確な値に速やかに収束する。
図9Bは送信ループのためのAIBRを計算するステップを示すフロー図52である。最初のステップ52において、メディアを有するメッセージ(メッセージに所属する時間でインデックスされたメディアの部分)が現在のループの送信側と受信側のペア間で送信される準備ができていることが確認される。つぎに、メディアを有するメッセージのリストが、作られる(52)。リスト52の各メッセージについて、各メッセージの時間的制約すなわち適時性要件が考慮される(52)。もし、個々のメッセージに時間的制約がなければ、IBRは最大効率ビットレート(MEBR)にセットされる(52)。一方、メッセージに時間的制約があるばあいは、リアルタイムビットレート(RTBR)にセットされる(52)。次のステップ52において、リストのメッセージ毎に先に計算されたIBRは、合計されて、送信ループのための統合理想ビットレート(AIBR)52となる。戻り矢印52にて示すように、上記のプロセスは、送信ループ毎に送信側と受信側のペア間で繰り返される。
図9Cにおいて、フロー図54は、送信ループ毎に送信側と受信側のペア間で送信するデータのレートを決定するシーケンスを示す。最初のステップ54において、MABR(図9Aで計算された)は、次の送信のためにAIBR(図9Bで判断された)と比較される。
MABRがAIBR以下であれば、ループ内の送信の準備ができていると識別されている全てのメッセージが、IBRレートでパケット化され(54)、送信される(54)。
一方、MABRがAIBR未満のときは、一連の手順が適用されて、PQMが以下の目標が満足されるように調節される。すなわち、データの適切なコピーをタイムリーに送達すること、利用可能な帯域幅を有効に使うこと、および/またはペイロードコンテンツおよび現在のネットワーク条件を満足する品質、パケットサイズおよび送信レート。言いかえれば、MABRがAIBR未満のとき送信されたメディアを表すのに用いるビット数は、データ損失量(すなわちスループット)が許容できる水準になるまで減らされる。
最初のステップにおいて、リストのメッセージは、時間的制約がないかレビューされる(54)。時間的制約のあるメッセージがなければ、ビットレートは、MABRに設定されて(54)、メッセージが送信される(54)。
リストに時間的制約のあるメッセージが含まれる場合は、時間的制約のないメッセージに割り当てられたビットレートは、MABRの制限が満足されるまで引き下げられる(54)。ビットレートをゼロになるまで引き下げても、MABRを満足しないときは、これらの時間的制約のないメッセージは、ループに送信されるメッセージのリストから除去される。ビットレートがMABR以下になるまで引き下げられ、残ったメッセージはパケット化され、送信される(54)。
時間的制約がないメッセージを削除してもMABRを満足しない場合、次にちょうど時間的制約があるメッセージのIBRバージョンと比べて引き下げられたビットバージョンを送信する手順が受信の際にメッセージをレビューする受信側の機能を向上する目的で実行されるので、会話がほぼリアルタイムモードで継続する。一実施例では、時間的制約があるメッセージの引き下げられたビットバージョンを生成するということは、送信すべき時間的制約があるメッセージのメディアをパケット化にするときにIBRと比べて少ないビットを用いるということである。例えば、ネットワーク上で利用可能な帯域幅が満足するまでペイロード当たりに用いられるビット数を徐々に減少させる。この手順は、コーデックの設定を調節することによって、異なる品質や低い品質のコーデック(または複数のコーデック)を用いることによって、またはその任意の組み合わせによって行われる。別の実施例では、送信すべきメッセージに含まれる時間的制約があるメディアの引き下げられたビットバージョンを生成するということは、任意の多くの既知圧縮アルゴリズムを用いるということである。ビット数を十分に減らす場合、すなわちMABRの制限を満足する場合、次にメッセージが送信される(54)。どの実施例を用いるかに拘わらず、送信ループ中で少ないビットを送信することによって、ペイロードデータをできるだけ速く送信する試みがなされる。所定の周期の時間に少ないビットを送信することによるペイロード品質、送信品質を引き下げることによって、会話はほぼリアルタイムモードに維持される。
上述した技術の何れかを用いてビットレートを引き下げても、まだMABRを満足しない場合は、時間的制約のあるメッセージを送信するためのパケット化間隔を増やす(54)。この手順によりヘッダ対ペイロードの比率が上げられ、これにより全体のビットレートが引き下げられるが、待ち時間(すなわち、受信側への送信の送達遅延)が導入される。この手順によってAIBRがMABR以下になれば、送信54がはじまる。
もし、パケット化の間隔変更後も、まだMABRが満たされない場合は、ビットレートがMABR制限内になるまで漸次引き下げられる(54)。この方法でビットレートが引き下げられると、時間的制約のあるメッセージは、ライブ会話の維持ができないレートで送られる。したがって、会話は、「ライブ」から強制的にはずされてしまう。ネットワークがダウンまたは非常に悪い状態のときはデータの送信が始まらない場合もある。再度、上記のシーケンスが送信側と受信側のペア間で送信ループ5410毎に繰り返される。ネットワーク上の条件が改善する際に、パケット化間隔を減少することによって、および/またはネットワーク条件を満たすメディアを表すビットを多く用いることによって、会話がライブモードまたはほぼリアルタイムモードで再開する。
送信側と受信側のペア間に、多数のネットワークインタフェースがある場合は、図9Cを参照して記述したシーケンスが、受信レポートが可能なインタフェース毎に実行される。種々の実施例において、送信側は、多数のインタフェースの中を、送信ロードを送達するためのロジックを含むことができる。別の例においては、ペイロードは、一個のインタフェースにのみ送ることができ、別の実施例においては、幾つかの又は全てのインタフェースを使うことができる。
上記の説明は、システム10の送信側と受信側ペアの全てに当てはまる。ほとんどの状況において、送信側と受信側ペアには、クライアント12、可動デバイス13およびサーバ16、二個のサーバ16、デバイス13を可動する一個のサーバ16とクライアント12または二個のクライアント12がそれぞれ含まれる。送信側のノードが2つ以上の受信側ノードに同時に送信している場合は、図9Aないし9Cを参照して説明した上記のシーケンスが受信側と送信側ペア毎に一斉に起こる。
[H.3 DQM動作フロー図]
DQM28gは、クライアント12で受信したデータが壊れているまたはパケットが失われていないか判断する。さらに、受信側クライアント12のDQM28gは、受信レポートを生成し、ネットワーク上の送信側ノードに送り返す。また、DQM28gは、バックグラウンドの処理を行い、送信されるデータの正確または完全なコピーが最終的に受信され記憶されることを確実にする。これらの機能について、図9Dないし9Fを参照して説明する。
図9Dは、紛失データおよび/または壊れたデータがないかチェックするDQM28gの動作を示すフロー図である。最初のステップ56にて、DQM28gは、CRCあるいは同様の完全性チェック機構等の既知の技術を使って、壊れたパケットがないかチェックする。もしパケットが壊れていると、紛失したものとみなされる(56)。次に、DQM28gは、紛失パケットがないか確かめる(56)。もし、予め決められた時間が過ぎてもシーケンスのずれたパケットが受信されなければ、それは紛失したものとみなされる。DQM28gは、紛失あるいは壊れたパケットをDNQS32にメモする(56)。一方、紛失あるいは壊れたパケットが検出されなかった場合、DQM28gは、帯域幅をセーブするために、送信側が意図的に受信したデータの品質をひき下げたのかどうか(すなわち引き下げられたメディアのビットレート表示)を判断する(56)。引き下げられた品質は、DNQS32にメモされる(56)。受信したデータの品質が引き下げられたかどうかにかかわらず、データの受信情報(例えば、パケットのシーケンス番号、タイムスタンプ、およびそのパケットが送られるネットワークの次のノードのネットワークアドレス)が、DNQS32に記憶される(56)。上記のプロセスは、フロー図の戻り矢印で示されるように最初から継続的に繰り返される。
図9Dに詳細に示すプロセスの結果、質が引き下げられていないパケット(すなわちメディアのフルビットレート表示)の受信、品質が引き下げられたパケット(すなわち引き下げられたメディアのビットレート表示)の欠陥、および紛失または壊れたパケットに関する情報は、全てDNQS32に記憶される。メディアを受信すると、DNQS32は、メディアのステータスに関する最新情報を維持する。
図9Eは、DQM28gの受信レポート生成機能の動作を示すフロー図である。最初のステップにて、DNQS32は定期的にスキャンされ(58)、受信レポートを生成する必要があるメディアかどうか判断される(58)。NOの回答の場合、上記のスキャンプロセスが繰り返される。一方、メディアが識別された場合は、プロセスにおいて、そのメディアが、時間的制約があるかどうか、すなわち、ユーザはメディアをライブでレビューしようとしているのか、それともデバイス13に記憶する必要のない、メディアを即座にレビューしようとしているのか、判断する(58)。
時間的制約がない場合は、受信側は、送信側に再送優先順位を(以下に定義する如く)低にセットするよう通知する(58)。時間的制約がある場合は、パケット損失の量が考慮される(58)。パケット損失の量が使用可能な品質の範囲を超えていれば、再送優先順位は、高にセットされる(58)。上記のようにパケット損失の量が大きすぎる場合は、受信側は、受信と同時にそのメディアをレビューすることはできない。品質が許容範囲内であれば、すなわち、送信品質(すなわち引き下げられたメディアのビットレート表示)がレンダリングしたときに十分理解可能であれば、受信レポート送信の優先順位が低にセットされる(58)。受信側が、受信と同時にレビューしているかどうかにかかわらず、受信レポートが送られ(58)、DNQS32が更新され(58)、ネットワーク品質管理部(NQM)28hが更新される(58)。したがって、ステップ58で定義される再送要求は、時間的制約に基づく条件である。ステップ58で定義される送信要求は、時間的制約と品質の両方に基づく条件である。
再送優先順位は、送信側のPQM26gに、再送が必要なメディアの送信レートに正しく優先順位をつけるように通知する。例えば、再送優先順位が高にセットされると、送信側PQM26gは、どの新しいメディアよりも先に再送しなければならない。優先順位が低の場合は、PQM26gは、新しいメディアの後に再送信メディアを送信しなければならない。
上記プロセスは、メディアが受信される毎に受信レポートが生成されるように、継続的に繰り返される。もし、送信側がタイムリーに受信レポートを受信しない場合、送信側のPQM26gは、送信レートを引き下げ、受信レポートが受信されない場合は、最終的には送信を停止する。
図9Fは、紛失または品質を引き下げられたメディアを要求するシーケンスを示すフロー図である。最初のステップ60にて、DNQS32は紛失メディアまたは品質を引き下げられたメディアがないか、定期的にスキャンされる(60)。紛失メディアも品質を引き下げられたメディアもない場合は、上に定義したスキャンが定期的に繰り返される。一実施例では、高い優先順位の要求は早急な再送信要求を意味し、低い優先順位の要求は一般に高い優先順位の再送信および/または時間的制約のあるメディアに必要とされる帯域幅を超える帯域幅が利用可能になるまで据置きした再送信要求を意味する。さらに、送信ノードで競合する低い優先順位の要求を完了するのに、多くの異なるスキームの何れか1つに従って処理してもよい。例えば、低い優先順位のメディアの再送信要求は、先着順で実行されてもよいし、時間的制約がないメディアの前に常に時間的制約があるメディアを実行してもよいし、またはその逆で実行してもよい。
予め決められた閾値の時間が経過しても、シーケンス外のパケットが着信しない場合は、メディアは紛失したものとみなされる(60)。パケットが閾値の前に着信すれば、紛失とはみなされない。一方、パケットが閾値を越えても着信しない場合は、そのパケットは紛失したとみなされる。紛失パケットについて、再送を要求する低優先順位が作られ(60)、要求の時間がDNQS32にメモされる(60)。このプロセスは、紛失パケットが受信されるまで繰り返される。紛失パケットが着信し、PIMB30の中に対応するメディアがある場合は、紛失メディアのステータスはDNQS32から除去される。したがって、ステップ60で定義される再送信要求は、メディアが紛失したかどうかの判断に基づく条件である。
もし、メディアが引き下げられたビットレート表示に下げられたならば、DQM32は、そのメディアがライブまたはリアルタイムの会話の一部かどうか判断する(60)。品質を引き下げられたメディアでない場合は、品質を引き下げられたメディアの完全な品質またはビットレートのコピーを求める要求が作られ(60)、完全な品質のメディアが紛失したと認定され(60)、要求した時間がDNQS32にメモされる(60)。そのメディアがライブの会話の一部分である場合は、ネットワーク回線容量を残すために、即座には動作はおこなわれない。会話がライブモードから遷移する場合は、60ないし60のステップが実行され、最終的には品質を引き下げられたメディアの完全な品質の(すなわち正確または完全な)コピーが確実に受信される。受信側クライアント12のPIMB30にデータが入手可能になると、関係するメディアの品質引き下げのステータスはDQNS32から取り除かれる。したがって、ステップ60で定義される送信要求は、品質の引き下げとライブ会話の一部でないことの二つに依存する条件である。
上記のプロセスは、戻り矢印で示すように、フロー図の60および60からトップの60へ、継続的に繰り返される。図9Fに示すプロセスを繰り返すことによって、送信される全てのメディアの完全なコピーが、最終的に受信側デバイス13のPIMB30に記憶される。このように、送信されるメディアの完全なコピーの記憶が受信側デバイス13で保証される。
[I.音声通信のリアルタイム同期]
図10を参照すると、デバイス13Aを用いる第1の参加者とデバイス13Bを用いる第2の参加者の間の会話のメディアのリアルタイム同期を示すダイアグラムが示されている。記憶・ストリームモジュール24の漸次性は、メディアが生成されるときに会話のメディアがデバイス13Aまたはデバイス13Bの双方で漸次保存されることを保証する。送信側では、PQM26g(図9A乃至9C)の動作は、メディアが生成されるときに送信デバイス13を用いて生成された任意のメディアを漸次送信して、ローカルのPIMB30に保存することである。受信するデバイス13では、これを受信してレンダリングするときに、DQM28gが任意の受信されたメディアをローカルのPIMB30に漸次保存する。その結果、メディアが生成されているときに、会話の参加者の双方が会話のメディアのコピーを同期する。
明瞭にするため、図10は会話を行っていた2つのデバイス13Aと13Bのみを示す。会話の参加者の数に拘わらず、メディアのリアルタイム同期が実現されてもよいことを理解されたい。さらに、図のネットワーク14は単純にするために総称的なネットワークの雲として示されている。また、ネットワーク14が一またはそれ以上のサーバー16を含んでもよく、記憶・ストリームモジュール84および2つのデバイス13Aと13B間の各中間ホップであるPIMB85は会話のメディアのコピーを保存し、デバイス13Aと13Bと共にリアルタイム同期を任意に行うことを理解されたい。
図11を参照すると、デバイス13Aとデバイス13B間の会話のメディアの準リアルタイム同期のシーケンスを示すフローチャートが示されている。この実施例では、準リアルタイムモードの会話にデバイスAとデバイスBのユーザが携わっていると想定されている。デバイス13Aと13Bは、直接的または1以上の中間サーバ16(図示せず)を介して会話を行ってもよい。
会話が開始された後(1102)、デバイス13Aとデバイス13Bのユーザは各々典型的にメディアを生成するだろう。図の左側に、デバイス13AのPIMB30を同期するためのシーケンスが示されている。右側に、デバイス13BのPIMB30を同期するためのシーケンスが示されている。このシーケンスは、ダイアグラムの両側で本質的に同じである。
会話の最中にデバイス13Aのユーザが音声メディア(1104A)を生成するだろう。このメディアが生成されるとき、それは図8Bに関して上述したようにインデックスフォーマットでエンコードされて、デバイス13AのローカルのPIMB30に保存される(1106A)。
デバイス13Bは、会話に関係するデバイス13Bで始まるローカルに作成された全ての音声メディアのステータスをデバイス13Aに通知する(1108A)。様々な実施例では、新しいメディアの通知は様々な異なる形態をとってもよい。例えば、通知は:(i)デバイス13Bが会話に関連したメディアを最初に生成して送信し始めるとき;(ii)デバイス13Bがログインするとき;(iii)会話に関係するメディアがデバイス13Bで作成され、デバイス13Aに送信される都度;(iv)デバイス13Bが会話に関係するデバイス13Bを用いて作成された全てのメディアの状態をデバイス13Aに周期的に通知するとき;(v)デバイス13Aがデバイス13Bで作成され、保存されたメディアの状態をデバイス13Bに周期的に尋ねるとき、または(vi)メディアがメディアの送信にまさに先立って、または送信と同時に利用可能であるという同期更新メッセージをデバイス13Bがデバイス13Aに通知するとき、に発生してもよい。さらに別の実施例では、(vii)会話のメディアがデバイス13Aとデバイス13B間の1以上のサーバー16ホップで保存されてもよい。(i)乃至(vi)に関して上述した様々な通知は、直接デバイス13Aと13B間ではなく、サーバー16とデバイス13Aおよび/または13Bの間で発生してもよい。最終的に、通知は(i)乃至(vii)のいくつかの組み合わせを含んでもよい。メディアが送信されるとき(図8Cに関して上述したように)、これは配列されてタイムスタンプされ、デバイス13Aがどのメディアを既に受信したか、およびどのメディアが紛失しているかを判定することができる。
通知に応じて、デバイス13Aはデバイス13AのPIMB30にまだ保存されない会話に関連した音声メディアを全て要求する(1110A)。これは、図8Dに関する上述したルーチンに続いて行われ、図9D乃至9Fに関して記載されるようなDQM28gの実行を含む。状況によって、要求されたメディアは特定のタイムスタンプを持った、またはタイムスタンプ範囲内のメディアとすることができる。例えば、デバイスAが以前に送信されたメディアの不完全なコピーを受信中である場合、次に、この要求が埋め戻しに必要とされるメディアのみを特定し、デバイスAでメディアのコピーを終える。あるいは、進行中の会話の最中では、要求は特定のエンドポイントを持たなくてもよい。代わりに、デバイスAからデバイスBへの要求は無制限であり、これが作成されているときにデバイスBは新しいメディアを送信する。
応答でデバイス13Bは、図8Cに関して上述したシーケンスを用いて、作成されている会話に関連した任意の新しいメディアと共に要求されたメディアを送信する(1112A)。これを受けて、デバイス13Aは、そのPIMBで受信されたメディアを全てローカルに保存する。その結果、メディアがデバイス13Bで作成されるとき、デバイス13Aは会話のメディアの完全なコピーを保持することができる。
デバイス13Bが音声メディアを作成するときに、シーケンス1104B乃至1114Bが実行される。シーケンス1104B乃至1114Bは1104A乃至1114Aの補集合であるため、本書で詳細に記載しない。2つのシーケンス(1104A乃至1114A)と(1104B乃至1114B)の最終結果は、会話がリアルタイムに発生するときにデバイス13Aとデバイス13Bの双方が各々会話のメディアの同期されたコピーを保持するということである。
MABRがAIBR未満であるときでさえ、デバイス13Aとデバイス13Bの会話のメディアの同期が始まる。図9Cに関して上述されるように、MABRがAIBR未満であるとき、多くの手順は「ライブでない」会話を維持するために実行され、単位時間当たりのメディアを表すのに少ないビットを用いて時間的制約があるメディアのみを送信するステップと、パケット化間隔を増加させるステップと、ネットワーク14の条件を満たすためにメディアが送信されるレートを引き下げるステップとを含む。これらの手順は、ライブでない会話を維持する機能を拡張するという利点を有するが、これが最初にエンコードされたときにメディアの正確または完全なコピーを送信しないという犠牲がある。その結果、同期は維持されるが、受信するデバイスで最初にエンコードされたメディアの正確なコピーではない。受信するデバイスでDQMと共に(図9D乃至9F)、紛失した、壊れた、およびフルビットレートバージョンでないメディアが最終的に送信され、受信するデバイスで保存される。この埋め戻し手順は、デバイス13Aと13Bの会話のメディアの完全な同期を最終的にもたらす。したがって、ある条件下では、送信されたメディアの完全または正確なコピーのリアルタイム同期は不可能であろう。もっと正確に言えば、この同期は進行中の作業であり、埋め戻しプロセスが完了した後にだけメディアの完全なコピーが受信される。
上記説明は音声会話に関して記載されたが、会話のメディアはビデオ、GPS情報または他のセンサデータを含む音声に加えて、任意の種類のメディアを含むことができることを理解されたい。さらに、必ずしも2人のユーザまたは参加者に会話を限定する必要はない。会話のメディアの準リアルタイム同期は、会話に参加するデバイス13の数に拘わらず発生する。
[J.分散型サービスアーキテクチャ]
上記の議論では、ネットワークインフラ14がデバイス13を使用可能にされた複数のクライアント12に仕える1つのサーバ16として表された。他の実施例では、ネットワークインフラはサーバ16の分散ネットワークである。
図12を参照して、本発明による分散型サービスネットワーク14の一例を示す。分散ネットワーク14は複数のサーバ16を含む。サーバ16の各々は1以上の分散ネットワークに関連した機能を実装するように構成されてもよい。所定のサーバ16は、ホームサーバ、ゲートウェイクライアントサーバ、ゲートウェイサーバ、ディレクトリサーバ、アクセスサーバ、またはその任意の組み合わせとして構成されてもよい。いくつが機能するかに拘わらず、特別のサーバ16が実行するように構成され、各々は図3に示されるようなアーキテクチャを共有し、1つの可能な例外を除いて、記憶・ストリームモジュール84とPIMB85を含む。サーバ16が単にディレクトリサーバとして構成される場合、記憶・ストリームモジュール84とPIMB85は必要ではない。
各ユーザは彼らのホームサーバとして特定のサーバ16を割り当てられる。ホームサーバは、ユーザの会話の各々のメディアがネットワーク14に保存される場所である。各会話に対して、保存されたメディアはユーザの寄付を含む全ての参加者のメディアの寄付を含む。
一実施例では、ホームデバイス13は彼らのホームサーバ16を検出するため、および他のユーザのホームサーバ16を検出するために周知のドメインネームシステム(DNS)に依頼する。他の実施例では、ライトウェイトディレクトリアクセスプロトコル(LDAP)が用いられる。当業者に自明であるように、任意の種類のネットワークにつながれたディレクトリルックアップシステムがホームサーバ16を検出するために用いられてもよい。
ホームサーバ16はまた、ホームサーバマイグレーションを管理し実行する。ユーザが通常ネットワーク14にアクセスするのに便利な場所にあるネットワーク14トポロジにホームサーバ16が通常配置される。どういう理由であれ、ユーザがいくつかの期間にネットワークトポロジの異なる部分からネットワーク14にアクセスする場合、そのユーザ用のホームサーバ16はそのユーザ用のネットワークトポロジに最適な別のサーバ16に移動されてもよい。これが起こると、永久的に保存されたユーザのメディアがネットワーク14を通じて以前のものから新しいホームサーバ16に移動される。ユーザが移動した後所定時間後に、この移動プロセスは自動的に開始されてもよいし、または手動で実行することができる。
例えば図7に示されるように、ゲートウェイサーバ16はネットワーク14と他の通信ネットワークの間のゲートウェイである。ゲートウェイサーバ16は2つのネットワークにまたがり、2つのネットワークドメイン間のトラフィックをルーティングするとき必要に応じて、任意のマッピング、トランスコーディング、再カプセル化、セキュリティ、または他の変換機能を実行する役割を担う。例えば2つのネットワークに異なるパケット化の条件がある場合、ゲートウェイサーバ16は1つのネットワークで用いられるフォーマットから第2のネットワークおよびその逆で用いられるフォーマットにパケットを再パケット化する。
ゲートウェイクライアントサーバ16は、分散型サービスアーキテクチャ14と通信デバイス1202を使用可能にされた非クライアント12の間の仲介機能を提供する。ゲートウェイクライアントサーバ16は、デバイス1202に代わって、(i)MCMSアプリケーション20(MCMS、および任意にMCMS−Sおよび/またはMCMS−Cを含む)と、(ii)モジュール84の記憶・ストリームと持続的な記憶動作とPIMB85と、の機能をネットワーク14上で実行する。具体的には、ゲートウェイクライアントサーバは「PIMBの読み取り部とレンダリング部」の機能(図8E)、「PIMBの書込み部のネット受信」の機能(図8D)、「PIMBの書込み部のエンコード受信」の機能(図8B)、および「PIMBの読取り部の送信」の機能を実行し、デバイス1202を使用可能にされた非クライアント12に代わってサーバ16のPIMB85に会話のメディアが保存される(図8C)。デバイスを使用可能にされた非クライアント12の実施例は、標準地上通信線もしくはPSTN電話、モバイルもしくは衛星電話、戦術的無線、または他の既知の遺産である通信デバイスを含んでもよい。さらに、通信デバイス1202を使用可能にされた非クライアント12は、ゲートウェイクライアントサーバ16と協働して動作するために特別に作成された非レガシーデバイスを含んでもよい。ゲートウェイクライアントサーバについてのより詳細については、2008年9月8日に各々提出された米国出願第12/206,537号および第12/206,548号を参照し、各々は「Telecommunication and Multimedia Management Method and Apparatus」とタイトルされており、この双方はあらゆる目的のために本書に組込まれる。
ユーザが内在ネットワーク18を介してネットワーク14に接続するアクセスポイントは、アクセスサーバ16と呼ばれる。ユーザのアクセスサーバ16は変化してもよい。例えば、ユーザはネットワーク14から切断し、新しい物理的位置に移動し、次に異なるサーバ16を介して再接続してもよい。また、ユーザのアクセスサーバ16はあるアクセスサーバ16から別のアクセスサーバに移行するかもしれない。例えば、ユーザが自動車で移動中に内在ネットワーク18の第1のノードを介してネットワーク14にアクセスするワイヤレスを持っている場合、ユーザがワイヤレスネットワーク18の第1のノードの範囲からワイヤレスネットワーク18の第2のノードの範囲へ移動するとき、アクセスサーバ16が変化するかもしれない。内在ワイヤレスネットワーク18の2つのノードのネットワーク14へのアクセスポイントが異なる場合、次いでそのユーザのアクセスサーバ16が変わるだろう。ユーザが任意のアクセスサーバ16を介してネットワーク14にアクセスする機能は、ユーザとネットワーク14上の他のノード間の通信を最適化することによってネットワーク効率を改良する。
ディレクトリサーバ16は残りのネットワーク12にルーティング情報を提供する。ユーザがネットワーク14に参加するときに、アクセスサーバは(i)ユーザが参加したディレクトリサーバ16に通知し、(ii)そのユーザのアクセスサーバ16としてそれ自体を特定する。ディレクトリサーバ16は、(iii)各ユーザのホームサーバ1202と共に、ネットワーク14に接続された全てのユーザについて(i)と(ii)をディレクトリに集める。ディレクトリサーバ16は継続的に更新される。ユーザが参加するか、ネットワークを去るとき、またはアクセスサーバ16および/またはユーザのホームサーバー16が変わるとき、ディレクトリが更新される。このようにディレクトリは、ゲートウェイサーバ16を介して他のネットワークに配置されたユーザ、またはネットワーク14を介したユーザ間のルーチングメッセージと他のネットワークトラフィックについての現在または最新の情報を常に提供する。
ユーザのホームサーバ16とアクセスサーバ16が同じである場合、次にそのサーバ16はそのユーザによって送信または受信されたメディアを全て永久的に保存する。送信用にユーザによって作成されたメディア、およびユーザへ送信されたメディアについては、サーバ16は、PQM(図9A乃至9C)とPQM(図9D乃至9F)の動作を含み、図8Fに関して上述した機能を実行する。このようにユーザによって送信または受信されたメディアのコピーは、ユーザのホームサーバ16で永久的に保存される。さらに、メディアの任意の不完全もしくは完全なコピー、紛失もしくは壊れたコピーは、PQM26gとDQM28gの埋め戻し動作を介して最終的に受信される。
アクセスサーバ16がユーザのホームサーバ16でない場合、PQM(図9A乃至9C)とPQM(図9D乃至9F)の動作を含み、図8Fに関して記載された同一の動作を用いて、送受信されたメディアがアクセスサーバ16で少なくとも一時的に保存される。一実施例では、ユーザのホームサーバ16とデバイス13へのメディアの配信が確認され、持続的な保存がなされる間のみ、メディアがアクセスサーバ16に保存される。他の実施例では、メディアの配信が確認された後でも、メディアがアクセスサーバ16とホームサーバ16に永久的に保存される。ホームサーバ16および/またはデバイス13への配信確認の後に、アクセスサーバ16でメディアを削除する異なるスキームは、アプリケーションとネットワークトポロジによって使用されてもよい。
ホームサーバ16は、そのアーカイブ89に会話のメディアをアーカイブする役割も担う。メディアは、ローカルで削除された後にデバイス13へメディアを再保存したり、そのデバイス13上でユーザ認証された後に新しいデバイス13へメディアを送信するなど、多くの理由でアーカイブされてもよい。
図12に示された実施例では、デバイス13を使用可能にされた多くのクライアント12は、様々なアクセスサーバ、ホームサーバ、およびゲートウェイサーバ16を介してネットワーク14に接続される。さらに、デバイス1202を使用可能にされた非クライアント12もゲートウェイクライアントサーバ16を介してネットワーク14に接続される。上述したように、各サーバ16は上記列挙された機能の1以上を実装してもよい。例えば、デバイス13がそのホームサーバ16を介してネットワーク14に接続する状況では、次いでそのサーバがそのデバイスのアクセスサーバとホームサーバであるという二元的役割を行う。デバイス13がそのホームサーバ16以外にサーバ16を介してネットワーク14にアクセスする状況では、次いでそのデバイスのアクセスサーバとホームサーバ16が異なる。さらに他の状況では、ホームサーバおよび/またはアクセスサーバ16は、ゲートウェイサーバ、ゲートウェイクライアントサーバ、および/または同様にディレクトリサーバとしても機能する。サーバ16がメッセージを送信するためにネットワーク14上のホップとして動作するときに、PQM(図9A乃至9C)とPQM(図9D乃至9F)の動作(恐らく単にディレクトリサーバとして構成されたサーバ16を除く)を実行することを含み、図8Fに関して上述したようにサーバ16がメディアを保存し送信する。サーバ16の各々は、実行される機能または複数の機能に拘わらず複数のテナントでもあり、すなわちこれらは同時に複数のユーザを各々サポートもしくは仕えることができる。
上述もしくは図12に示されるサーバ16の特定の配置と機能もしくは複数の機能は、単なる例示であり、説明のために提供される。実際の実施例では、サーバ16の数と、各々によって実行された1以上の機能と、分散ネットワーク14の実際の構成とは、ほぼ無限数の変形例に変更されてもよい。
他の実施例では、ネットワーク14が専用のディレクトリサーバ16なしで構成されてもよい。そのような実施例では、アクセスサーバ16がディレクトリとルーティング機能の幾つかまたは全てを想定して構成される。ネットワーク14のアクセスサーバ16の幾つかまたは全ては、他のアクセスサーバとホームサーバ16とユーザを検出してメッセージを送信するために「デフォルト」ルートを含むルーティングテーブルを保持するように構成されてもよい。
別の実施例では、デバイス13を使用可能にされたクライアント12が他のデバイス13もしくは1202のサーバ16として動作してもよい。例えば、無線デバイス13を使用可能にされた自動車型のクライアント12は、自動車のドライバのクライアントや全ての近くの無線サーバとすることができる。別の実施例では、コンピュータはローカルユーザのクライアント12だけでなく、ローカルネットワーク上に接続されるコンピュータを使用可能にされた他のクライアント12のサーバとして動作することができる。
さらに他の実施例では、ホームサーバおよび/またはディレクトリサーバへのネットワーク接続が引き下げられるか、利用不可能なときに、アクセスサーバ16はホームサーバ16および/またはディレクトリサーバ16へアクセスするプロキシを提供してもよい。アクセスサーバは、適切なホームサーバと、その他のアクセスサーバと、デバイス13を使用可能にされたクライアントとを検出することによって現在の最適なルーティング情報を提供し、デバイス12を使用可能にされたクライアントとこれらのサーバ16間に最も効率的なパスをマッピングする。
[K.ネットワークルーティング]
デバイス13を使用可能にされた様々なクライアント12および/またはデバイス1202を使用可能にされた非クライアント12の間で会話が発生するとき、1以上のデバイス13および/または1202から1以上サーバ16に、分散ネットワーク14を介してサーバ16からサーバ16に、および次にサーバ16から1以上のデバイス13および/または1202へ、個人メッセージが一般に送信される。メッセージはVoxパケット95の形式でネットワーク14を行き来し、内在ネットワークもしくは複数のネットワークで用いられるパケットの種類は何でも埋め込まれる。様々な実施例では、内在ネットワークは、ネットワークトラフィックを送信するためにインターネットプロトコル(IP)、実時間プロトコル(RTP)、または他の種類のプロトコルを利用してもよい。分散型アーキテクチャ14を介して個人メッセージをルーティングする上では、単純さを維持する一方でトラフィックと待ち時間を減らす手順が好適である。
図13を参照すると、本発明の一実施例で用いられるルーティング手順を示す単純な分散ネットワーク14が示されている。この実施例では、ネットワーク14は「アクセスサーバ1」と「アクセスサーバ2」とラベルを付けられたアクセスサーバ16と、デバイス13(1)乃至13(5)を使用可能にされたクライアント12と、多くのホームサーバ16と、ディレクトリサーバ16とを含む。デバイス13(1)乃至13(4)は、アクセスサーバ1を介してネットワーク14に接続される。デバイス13(5)は、アクセスサーバ2を介してネットワーク14に接続される。ホームサーバ1、2および5は、それぞれデバイス13(1)、13(2)、および13(5)のホームサーバ16である。デバイス13(3)および13(4)はホームサーバ16を共有する。また、第6のホームサーバ16は第6のデバイス13(6)に提供され、これは今この実施例のネットワーク14から切断されているので、これは意図的に示されていない。
デバイス13(1)がデバイス13(2)乃至13(6)と会話を開始するとき、これはデバイス13(2)乃至13(4)と既に接続していることを記録するアクセスサーバ1へ要求を送信する。アクセスサーバ1はまた、デバイス13(5)と13(6)およびデバイス13(1)乃至13(6)のホームサーバのステータスをディレクトリサーバ16から要求する。ディレクトリサーバ16は、デバイス13(5)がアクセスサーバ2を介してオンラインであり、デバイス13(6)はオンラインではないことをアクセスサーバ1に通知することによって応答する。ディレクトリサーバ16はまた、参加者13(1)、13(2)、13(3)−13(4)、13(5)、および13(6)のホームサーバがそれぞれホームサーバ1、2、3−4、5、および6であることをアクセスサーバ1に通知する。
デバイス13(1)が会話と関係するメッセージを送信するとき、メッセージはアクセスサーバ1へ送信される。次いでこれらのデバイスがアクセスサーバ1に接続されるので、メッセージはデバイス13(2)乃至13(4)へ直接転送される。さらにアクセスサーバ1は、残っている送信宛先、特にホームサーバー5と6およびデバイス13(5)が同一の次のホップであるアクセスサーバ2を有していることを記録する。これらの宛先が全て同一の次のホップを共有するので、アクセスサーバ1は各メッセージのコピーを1つだけアクセスサーバ2に送信する。次にメッセージは、アクセスサーバ2によってデバイス13(5)と、ホームサーバ5と、ホームサーバ6とに送信される。ホームサーバ1乃至6の各々は、それぞれデバイス13(1)乃至13(6)のメッセージを保持する。デバイス13(6)がオンラインになるとき、ホームサーバ6が会話のメディアを受信するデバイスを使用可能にして、デバイス13(6)にメッセージを転送する。もしデバイス13(5)と13(6)がネットワーク14上に異なる次のホップを有している場合、次いでメッセージのコピーを1つだけが各次のホップに送信されるだろう。他のデバイス13(2)乃至13(6)の何れかによって生成されたメッセージは、上述したように類似の手法でネットワーク14をルーティングされる。
上記ルーティング手順は多くの利点を提供している。同一のアクセスサーバを介して同一のアクセスサーバ16で特定されたデバイス13間で直接メッセージをルーティングすることによって、ネットワークトラフィックと待ち時間が減少される。また、ネットワーク上の同一の次のホップを共有する複数の受信側へ複数のコピーを転送するのとは対照的に、メッセージのコピーを1つだけ転送することによって、ネットワークトラフィックと待ち時間が再び減少される。同一のホップに沿った複数の受信側へのメッセージの送信を1つの送信に統合して複製することによって、または複数の次のホップがあるときにだけメッセージを「散布する(fanning out)」ことによって、全体的なネットワークトラフィックと待ち時間が著しく減少される。
他の実施例では、同一のアクセスサーバ16を介してネットワーク14に接続されたデバイス13が互いに直接通信することができるようにアクセスサーバ16が構成されてもよい。この実施例では、2つ(またはそれ以上の)デバイス13間で直接送信された任意のメッセージが共用アクセスサーバ16にさらに送信されなければならず、これは次に同一のデバイス13のホームサーバへメッセージを転送する。この配置は、同一のアクセスサーバ16に接続されたデバイス13間の通信の待ち時間を改良するが、デバイス13とアクセスサーバ16の双方に複雑さを増加させる犠牲を伴う。さらにアクセスサーバ16へメッセージを全て送信しなければならないので、ネットワークトラフィックが本質的に2倍になる。
[L.分散型サービスアーキテクチャを介したリアルタイム同期]
サーバ16を用いるという1つの利点は、分散ネットワーク14を介して送信されたメディアの準リアルタイム同期を維持する機能である。図14を参照すると、1以上のネットワーク18(図示せず)上に構成されるネットワーク14の一例が示されている。この実施例では、デバイス13(1)、13(2)を使用可能にされた2つのクライアントと、デバイス1202を使用可能にされた非クライアント12が、ネットワーク14を介して音声(および任意にその他の種類のメディアの)会話に携わっている。ネットワーク14はアクセスサーバ16(1)と16(2)を含み、これらはデバイス13(1)と13(2)それぞれにネットワークアクセスを提供する。デバイス1202を使用可能にされた非クライアント12は、ゲートウェイクライアントとして構成されたサーバ16を介してネットワーク14に接続する。さらに、ディレクトリサーバ16が提供される。サーバ16の各々は、任意にモジュール84およびPIMB85を含むディレクトリサーバ16を恐らく除いて、記憶・ストリームモジュール84とPIMB85を含む。
会話のメッセージがネットワーク上の各送受信ペアの間で送信されるとき、記憶・ストリームモジュール24(デバイス13(1)と13(2)用)と84(サーバ16の各々用)は、図11に関して上述したシーケンスを実行する。その結果、会話のメディアは、レガシーデバイス1202およびデバイス13(1)と13(2)の間のネットワーク14上の各サーバ16ホップのPIMB85に同期して保存される。メディアはまた、デバイス13(1)と13(2)のPIMB30に同期して保存される。
一実施例では、メディアはネットワーク14上の各サーバ16ホップで同期して永久的に保存される。他の実施例では、会話のメディアは、レガシーデバイス1202のゲートウェイクライアントサーバ16と、アクセスサーバ16(1)と16(2)ではなくデバイス13(1)と13(2)それぞれのホームサーバ16(1)と16(2)とにのみネットワーク14上で永久的に保存される。後者の実施例では、一旦ホームサーバ16(1)と16(2)および/またはデバイス13(1)と13(2)それぞれにメディアが永久的に保存されたことが確認された場合、メディアはもはやアクセスサーバ16(1)と16(2)に保存されない。
メディアがその転送元から宛先へネットワーク14を介して移動するとき、メディアは各送受信ペア間で同期される。デバイス13(1)、13(2)を使用可能にされたクライアントおよび各中間サーバ16を含むネットワーク上の各ノードは、「ホップバイホップ」で同期される。ネットワーク14上で送受信する各ホップ間のメディアの同期を実行することによって、単なる送受信する通信デバイス13(1)と13(2)とは対照的に、ネットワーク14を介したメディアの弾力性と冗長性が増加される。
ネットワーク14を介した同期は音声会話に関して記載されたが、会話のメディアが音声、ビデオ、GPS情報、またはその他のセンサデータを含む任意の種類のメディアを含むことができることを理解されたい。さらに上述したように、会話を必ずしも3人の参加者に限定する必要はない。会話のメディアの準リアルタイム同期は、参加者の人数に拘わらず発生する。また、メディアを会話との関連で送信してはならない。会話に関係しないメディアは、ネットワーク14を介して同期することができる。最後に、図14に示される特別のネットワーク構成はネットワークを介したリアルタイム同期を説明するための単なる例示であることを再び理解されたい。特別の構成は、任意の方法に制限されると解すべきでない。
図8A乃至8Fと、図9A乃至9Fと、図10乃至14とに関する上記の議論では、メディアがタイムベースのフォーマットでインデックスされるように記載されたことに注意されたい。メディアを時間でインデックスすることは例示であり、本発明を限定するものと解すべきでないことを理解されたい。それどころか、任意のインデックスフォーマットは、ビットもしくはバイト列によるインデックス、ハッシュタイプのインデックス、2分木タイプのインデックス、ファイルディレクトリベースのインデックス、またはその任意の組み合わせを用いてもよい。したがって用語「インデクシング」は、任意のインデックススキームをカバーするために広く解すべきである。
[M.クライアントおよびサーバハードウェア]
図15Aは、クライアントアプリケーション12を記憶し実行するために使われるデバイス13のハードウェアを示すブロック図140である。ハードウェアは、CPU142、メインメモリ144および大容量記憶装置146を有する。技術的には周知のことだが、クライアントアプリケーション12はメインメモリ144と大容量記憶装置146に搭載され記憶されて、CPU142によって実行される。
図15Bは、サーバアプリケーション78を記憶し実行するために使われるサーバ16(サーバ1202乃至1210の何れか)のハードウェアを示すブロック図150である。ハードウェアは、CPU152、メインメモリ154、大容量記憶装置156、およびアーカイブ部89を有する。技術的には周知のことだが、サーバアプリケーション78は、メインメモリ154および大容量記憶装置156に搭載、保存されCPU152によって実行される。上記のように、一またはそれ以上のユーザのインデックスされたメディアペイロードは、アーカイブ部89に保存される。
便宜上、多くのコンポーネントと処理について一個の事例で記述したが、当業者には正しく理解されるように、多くのコンポーネントと繰り返しの処理をここに説明したシステムおよび方法の技術は実施する上で使用できる。さらに、本発明は、特定の実施例を参照して特別に示し記述したが、当業者には正しく理解されるように、本発明の精神と範囲を超えずに、開示した実施例のフォームおよび細部の変更が可能である。例えば、本発明の実施例は、様々なコンポーネントとともに採用でき、かつ上記のものに限定されない。したがって、本発明は、全ての変形例及び同等物は本発明の精神と範囲に入ると理解されるべきものである。

Claims (11)

  1. 第1の通信デバイスと第2の通信デバイスとの間でネットワークを通じて行われた会話の音声メディアを同期する方法において、
    前記第1の通信デバイスを用いて前記音声メディアが作成されているときに、前記第1の通信デバイスを用いて作成された前記会話に関係する音声メディアを前記第1の通信デバイスに関連する第1の記憶部に漸次保存するステップと;
    前記音声メディアが作成され前記第1の記憶部に漸次保存されているときに、第1のネットワーク接続を通じて前記第2の通信デバイスに前記第1の通信デバイスを用いて作成された音声メディアを漸次送信するステップと;
    前記音声メディアが前記第2の通信デバイスを用いて作成されているときに、前記第2の通信デバイスを用いて作成された前記会話に関係する音声メディアを前記第2の通信デバイスに関連する第2の記憶部に漸次保存するステップと;
    前記音声メディアが作成され前記第2の記憶部に漸次保存されているときに、第2のネットワーク接続を通じて前記第1の通信デバイスに前記第2の通信デバイスを用いて作成された音声メディアを漸次送信するステップと;
    前記第2の通信デバイスによって送信され前記第2の通信デバイスに関連する前記第2の記憶部に保存された前記会話に関係する音声メディアを漸次受信して前記第1の記憶部に保存するステップと;
    前記第1の通信デバイスによって送信され前記第1の通信デバイスに関連する前記第1の記憶部に保存された前記会話に関係する音声メディアを漸次受信して前記第2の記憶部に保存するステップと;
    前記第1の記憶部にはなく、前記第2の記憶部に保存された前記会話に関係する送信された音声メディアと、前記第2の記憶部にはなく、前記第1の記憶部に保存された前記会話に関係する送信された音声メディアとを確認するステップと;
    前記第1の記憶部にはなく、前記第2の記憶部に保存された前記確認された音声メディアと、前記第2の記憶部にはなく、前記第1の記憶部に保存された前記確認された音声メディアとの1以上の再送信の要求を生成するステップと;
    前記第1のネットワーク接続を通じて前記第1の通信デバイスから前記第2の通信デバイスに、および前記第2のネットワーク接続を通じて前記第2の通信デバイスから前記第1の通信デバイスに前記確認された音声メディアを再送信するステップと;
    1以上の再送信の要求に応じて前記第2の通信デバイスから前記第1の記憶部に、および前記第1の通信デバイスから前記第2の記憶部に前記再送信された音声メディアを保存するステップとを具え、
    これによって前記再送信の要求が満たされるとき、前記第1の記憶部と前記第2の記憶部の音声メディアが同期されることを特徴とする方法。
  2. 請求項に記載の方法であって、前記第1のネットワーク接続を通じて前記第2の通信デバイスに前記第1の通信デバイスを用いて作成された前記音声メディアを漸次送信するステップは、
    (i)送信ループを規定するステップと;
    (ii)前記規定された送信ループ中に前記第1の通信デバイスを用いて作成された利用可能な音声メディアを確認するステップと;
    (iii)前記規定された送信ループ中に前記ネットワークで利用可能な有効ビットレートを確認するステップと;
    (iv)前記送信ループ中に前記ネットワークで利用可能な前記確認された有効ビットレートが最初にエンコードされた前記確認された利用可能な音声メディアのフルビットレート表示を送信するのに十分かどうかを判定するステップと;
    (v)前記確認されたビットレートが十分である場合に、前記利用可能なメディアのフルビットレート表示を送信するステップと;
    (vi)前記確認されたネットワーク上のビットレートが前記フルビットレート表示を送信するのに十分でないときに、前記利用可能な音声メディアの引き下げられたビットレートバージョンを生成するステップであって、前記利用可能な音声メディアの引き下げられたビットレートバージョンは、前記第1の通信デバイスと前記第2の通信デバイスがリアルタイムに会話を行う機能を良くするステップと;
    (vii)前記送信ループ中に前記ネットワーク上で利用可能な前記確認された有効ビットレートが十分でないときに、前記利用可能な音声メディアの引き下げられたビットレートバージョンを送信するステップと、をさらに具えることを特徴とする方法。
  3. 請求項に記載の方法
    連続的な送信ループを規定するステップと;
    前記確認されたネットワーク上の有効ビットレートが各規定された連続ループそれぞれに対して十分であるかないかに依存して(i)乃至(iii)と、(v)または(vi)の何れかと、(vii)とを実行するステップと、をさらに具えることを特徴とする方法。
  4. 請求項に記載の方法であって、前記利用可能な音声メディアの引き下げたビットレート表示を生成するステップは、前記利用可能な音声メディアを送信用にパケット化する場合に(a)1以上の異なるコーデック設定、(b)1以上の異なるコーデック、(c)圧縮アルゴリズム、または(d)(a)乃至(c)の任意の組み合わせを用いるステップを具えることを特徴とする方法。
  5. 請求項に記載の方法であって、前記第1の記憶部にはないが前記第2の記憶部に保存された会話に関係する音声メディアを確認するステップは、
    (i)前記第1の通信デバイスでデータ品質ストアを保持するステップと;
    (ii)前記第2の通信デバイスを用いて作成され、前記第1の通信デバイスに送信された音声メディアの全ての紛失した、壊れた、または引き下げたビットレートバージョンを前記データ品質ストアに記録するステップと、をさらに具えることを特徴とする方法。
  6. 請求項に記載の方法であって、前記1以上の送信の要求を前記第1の通信デバイスで生成し、前記第2の通信デバイスへ送信するステップは、
    (ii)データ品質ストアに記録された前記音声メディアの1以上の送信の要求を生成するステップと;
    (iii)対応する1以上の送信の要求が満たされるとき、前記データ品質ストアに記録された音声メディアの記録を削除するステップと、をさらに具えることを特徴とする方法。
  7. 請求項に記載の方法であって、前記1以上の再送信の要求に応じて前記第2の通信デバイスから前記第1の通信デバイスで受信されたメディアを前記第1の記憶部に保存するステップは、
    (iv)前記1以上の送信に応じて前記第1の記憶部に前記送信された音声メディアを保存するステップと;
    (v)前記第2の通信デバイスによって生成され、前記第2の記憶部に保存された音声メディアの完全なコピーが受信され、前記第1の記憶部に保存されるまでに(i)乃至(iv)を繰り返すステップと、をさらに具えることを特徴とする方法。
  8. 請求項1〜7の何れかに記載の方法であって、(i)前記ネットワークを通じて前記音声メディアを受信しているときに前記音声メディアをレンダリングすることによって準リアルタイムモードで、又は(ii)前記第1の記憶部および前記第2の記憶部以外の音声メディアをそれぞれレンダリングすることによってタイムシフトモードで、前記第1の通信デバイスおよび前記第2の通信デバイス上の会話の音声メディアを選択的にレンダリングするステップを、さらに具えることを特徴とする方法。
  9. 請求項1〜8の何れかに記載の方法であって、前記第1の通信デバイスは、固定電話、無線電話、携帯電話、衛星電話、コンピュータ、無線、サーバ、衛星ラジオ、戦術的無線、または戦術的電話の1つを具えることを特徴とする方法。
  10. 第1の永続的なコンピュータ読み取り可能な媒体に組み込まれ、第1の通信デバイスで実行するための第1のコピーのコンピュータコードと、第2の永続的なコンピュータ読み取り可能な媒体に組み込まれ、第2の通信デバイスで実行するための第2のコピーのコンピュータコードとであって、前記第1および第2の通信デバイスは、前記第1のコピー及び第2のコピーのコンピュータコードをそれぞれ実行するときに、請求項1〜9の何れかに記載されたステップを実行するよう構成されていることを特徴とするコンピュータコード。
  11. 第1の通信デバイス及び第2の通信デバイスであって、前記第1の通信デバイスと第2の通信デバイスは、請求項1〜9の何れかに記載されたステップをそれぞれ実行するよう構成されていることを特徴とする第1及び第2の通信デバイス。
JP2010530157A 2007-10-19 2008-10-17 ネットワークを介したリアルタイムメディア同期の方法およびシステム Expired - Fee Related JP5500385B2 (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US99961907P 2007-10-19 2007-10-19
US60/999,619 2007-10-19
US12/028,400 2008-02-08
US12/028,400 US8180029B2 (en) 2007-06-28 2008-02-08 Telecommunication and multimedia management method and apparatus
US12/192,890 2008-08-15
US12/192,890 US8090867B2 (en) 2007-10-19 2008-08-15 Telecommunication and multimedia management method and apparatus
US9327808P 2008-08-29 2008-08-29
US61/093,278 2008-08-29
PCT/US2008/080369 WO2009052428A1 (en) 2007-10-19 2008-10-17 Method and system for real-time media synchronisation across a network

Publications (2)

Publication Number Publication Date
JP2011501929A JP2011501929A (ja) 2011-01-13
JP5500385B2 true JP5500385B2 (ja) 2014-05-21

Family

ID=40416953

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010530157A Expired - Fee Related JP5500385B2 (ja) 2007-10-19 2008-10-17 ネットワークを介したリアルタイムメディア同期の方法およびシステム

Country Status (8)

Country Link
EP (1) EP2171982B1 (ja)
JP (1) JP5500385B2 (ja)
KR (1) KR101440179B1 (ja)
CN (1) CN101828375B (ja)
AT (1) ATE554584T1 (ja)
AU (1) AU2008311812B2 (ja)
CA (1) CA2701332C (ja)
WO (1) WO2009052428A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101237929B1 (ko) 2010-09-03 2013-02-28 기아자동차주식회사 차량의 롤로드 구조
CN103167431B (zh) * 2011-12-19 2015-11-11 北京新媒传信科技有限公司 一种增强语音短消息实时性的方法和系统
US9521449B2 (en) * 2012-12-24 2016-12-13 Intel Corporation Techniques for audio synchronization
JPWO2020213711A1 (ja) * 2019-04-19 2020-10-22
CN112397102B (zh) * 2019-08-14 2022-07-08 腾讯科技(深圳)有限公司 音频处理方法、装置及终端
US11792610B2 (en) 2020-08-26 2023-10-17 Stereo App Limited Complex computing network for improving establishment and streaming of audio communication among mobile computing devices
US11212126B1 (en) 2020-08-26 2021-12-28 Stereo App Limited Complex computing network for improving establishment and broadcasting of audio communication among mobile computing devices and for providing rapid audio conversations
US11864066B2 (en) 2020-08-26 2024-01-02 Stereo App Limited Complex computing network for improving establishment and streaming of audio communication among mobile computing devices
US20230023701A1 (en) * 2021-07-26 2023-01-26 Guangzhou Xiaopeng Autopilot Technology Co., Ltd. System and method for resource-driven datapoint aggregation of lidar datapoints exchanged between lidar sensor and host computing device and application of same
EP4138365A1 (fr) * 2021-08-17 2023-02-22 Bull Sas Procédé de gestion de la livraison de messages dans une infrastructure informatique et infrastructure informatique associée
WO2023067390A1 (en) * 2021-10-21 2023-04-27 Stereo App Limited Method for handling audio clips

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3555568B2 (ja) * 2000-09-04 2004-08-18 日本電気株式会社 Ip電話録音システム
JP2002199019A (ja) * 2000-12-27 2002-07-12 Toshiba Corp 通信制御装置、通信制御方法、及び通信制御プログラムが記録された記録媒体
JP3773799B2 (ja) 2001-03-16 2006-05-10 三洋電機株式会社 記録再生装置
JP3912091B2 (ja) * 2001-12-04 2007-05-09 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
US7076717B2 (en) * 2003-06-13 2006-07-11 Microsoft Corporation Time-aware best-effort hole-filling retry method and system for network communications
JP2005057362A (ja) * 2003-08-07 2005-03-03 Renesas Technology Corp 音声及び画像の送受信記録システム
CN100407708C (zh) * 2003-08-27 2008-07-30 腾讯科技(深圳)有限公司 一种即时通讯中音/视频分享的方法和系统
US7305438B2 (en) 2003-12-09 2007-12-04 International Business Machines Corporation Method and system for voice on demand private message chat
JP4446768B2 (ja) 2004-03-12 2010-04-07 三洋電機株式会社 Ip電話機
JP2006050221A (ja) * 2004-08-04 2006-02-16 Canon Inc データ観測システムおよび装置
WO2006054442A1 (ja) * 2004-11-17 2006-05-26 Sharp Kabushiki Kaisha 送信装置、受信装置及び通信システム
US8346862B2 (en) 2005-04-28 2013-01-01 Nokia Corporation Mobile communication terminal and method
JP2008236286A (ja) * 2007-03-20 2008-10-02 Casio Comput Co Ltd 通信装置およびプログラム

Also Published As

Publication number Publication date
CA2701332C (en) 2014-08-12
CA2701332A1 (en) 2009-04-19
ATE554584T1 (de) 2012-05-15
KR20100086484A (ko) 2010-07-30
CN101828375A (zh) 2010-09-08
CN101828375B (zh) 2014-10-22
JP2011501929A (ja) 2011-01-13
EP2171982B1 (en) 2012-04-18
AU2008311812A1 (en) 2009-04-23
AU2008311812B2 (en) 2013-01-17
WO2009052428A1 (en) 2009-04-23
EP2171982A1 (en) 2010-04-07
KR101440179B1 (ko) 2014-09-12

Similar Documents

Publication Publication Date Title
JP6265495B2 (ja) 電気通信及びマルチメディア管理方法及び装置
JP5500385B2 (ja) ネットワークを介したリアルタイムメディア同期の方法およびシステム
EP2493146B1 (en) Method and system for real-time synchronization across a distributed services communication network
US8099512B2 (en) Method and system for real-time synchronization across a distributed services communication network
US8559319B2 (en) Method and system for real-time synchronization across a distributed services communication network
US8699383B2 (en) Method and apparatus for real-time synchronization of voice communications
US8250181B2 (en) Method and apparatus for near real-time synchronization of voice communications
JP2011501569A (ja) 通信およびマルチメディアの管理方法および装置
US8782274B2 (en) Method and system for progressively transmitting a voice message from sender to recipients across a distributed services communication network

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110328

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130618

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140226

R150 Certificate of patent or registration of utility model

Ref document number: 5500385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees