以下、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図4は、本発明の実施の形態1に係る端末切替システムのシステム構成を示す。
図2の従来の端末切替システムと比べて、図4の端末切替システムは、端末間でストリーミングセッションをシームレスに切り替えることができるものであって、本発明の切替元端末100および切替先端末200は、切替元端末100から切替先端末へのシームレスな端末切替を実現するために、内部構成および動作に特徴を有している。すなわち、図4の端末切替システムは、より具体的には、通信相手とセッションを保持している端末を、当該セッションを維持しながら別の端末へ切替える際に、レスポンスディレイを増加させることなく、切替元端末に対して切替先端末で出力されるメディアデータの連続性を確保するための構成および動作を有する。
また、切替元端末100と切替先端末200との物理的な位置関係に鑑み、切替元端末100と切替先端末200との間は、UWB(Ultra Wide Band)やBluetooth(登録商標)等のPAN(Personal Area Network:近距離無線ネットワーク)300をネットワークとして利用することもできる。
図5は、本実施の形態の切替先端末200の内部の構成を示すブロック図である。
切替先端末200は、切替元端末100やCN400とのセッション制御(つまり、セッションの確立や終了等の制御)を行うシグナリング部210と、CN400から送信されたデータを受信するデータ受信部220と、受信したデータのメディアバッファ250への蓄積制御を行うメディア同期制御部230と、受信したデータを蓄積するメディアバッファ250と、受信したデータを復号するデコーダ260と、デコーダが復号したデータを出力する出力部270とから構成されている。
上記構成において、メディア同期制御部230と、シグナリング部210とが従来の技術とは異なる構成要素である。
まず、メディア同期制御部230の構成と動作は、次のようになっている。
メディア同期制御部230は、従来技術に対して新しく追加された構成要素であり、メディアバッファ250のデータ蓄積量および蓄積されているデータのデータ番号の管理を行い、CN400からデータを受信した際に、メディアバッファ250の蓄積量に応じた制御を行い、メディアバッファ250に空きが無い場合は、データを切替元端末100に送信する。また、デコーダ260に出力すべき最新データ番号のデータがメディアバッファ250に存在しない場合には、切替元端末100から最新データ番号のデータを取得することにより、データ番号の連続性を維持することができる。
図6は、メディア同期制御部230の内部の構成を示すブロック図である。
メディア同期制御部230は、最新データ番号管理部232、メディアバッファ管理部234、スイッチ236、データ送信部238、および切替元端末蓄積データ取得部240から構成されている。
最新データ番号管理部232は、シグナリング部210から受取った最新データ番号を保持し、デコーダ260がメディアバッファ250からデータを取得した際に、最新データ番号の更新を行い、メディアバッファ管理部234に更新を通知する。
メディアバッファ管理部234は、メディアバッファ250のデータ蓄積量および蓄積されているデータのデータ番号の管理を行う。そして、データ受信部220がCN400からデータを受信した際に、メディアバッファ250に空きが無い場合は、当該受信データをデータ送信部238に送り、メディアバッファ250に空きがある場合は、当該受信データをメディアバッファ250に書込む。また、最新データ番号管理部232から最新データの更新が通知された際に、最新データ番号のデータがメディアバッファ250に存在しない場合には、切替先端末蓄積データ取得部240に、切替元端末100の後述のメディアバッファ160から最新データ番号のデータを取得するように通知する。
スイッチ236は、データ受信部220がCN400から受信したデータの出力を、メディアバッファ管理部234の判断に応じて、メディアバッファ250またはデータ送信部238に切替える。
データ送信部238は、メディアバッファ250に空きが無い場合に、データ受信部220がCN400から受信したデータであってメディアバッファ管理部234から送られたデータを切替元端末100に送信し、仮想的バッファとして利用する。
切替元端末蓄積データ取得部240は、メディアバッファ管理部234による最新データ番号のデータ取得通知に基づいて、切替元端末100から最新データ番号のデータを取得し、メディアバッファ250に書込む。
ここで、切替先端末200の動作について詳細に説明する前に、図7を用いて端末切替技術全般に共通する前提について説明する。図7には、切替元端末100、切替先端末200、CN400、およびネットワーク500からなる端末切替システムが示される。
図7に示すように、切替元端末100のメディアバッファ160のバッファサイズはMであり、最大M個のデータを保持することができる。一方、切替先端末200のメディアバッファ250のバッファサイズはLである。一般的にMとLのサイズは異なる。図7は、端末切替処理中の状態を示している。図7において、切替元端末100のメディアバッファ160には、事前蓄積されて、M個のデータが保持されている。一方、切替先端末200のメディアバッファ250は、空の状態である。
各端末100、200のデコーダ170、260は、メディアバッファ160、250のデータを一定間隔で読み出して復号処理を行い、復号処理の結果を出力部180、270に送信する。データが毎秒30フレームの画像データであるとすると、デコーダ170、260は、1/30秒毎に、メディアバッファ160、250から1フレーム分の画像データを取得することになる。図7では、切替元端末100の出力部180にはI−1番のデータが出力されている。メディアバッファ160には、データ403が、デコーダ170から次に取得されるべきデータとして蓄積されている。当該データを「最新データ」と呼び、最新データのデータ番号を「最新データ番号」と呼ぶ。なお、データ403等に記載された記号、例えば、f(I)は、I番のデータを示し、Iはデータの番号を意味する。
データ401およびデータ402は、CN400から切替元端末100および切替先端末200にそれぞれ送信されるデータを示す。CN400と切替先端末200との間のセッションが確立されることにより、CN400は、切替先端末200に向けたデータ送信を開始することができる。データ402は、送信される最先のデータであり、N番のデータf(N)である。一方、このとき切替元端末100に送信されているデータ401は、Y番のデータf(Y)である。一般にNとYは異なり、データ401とデータ402は同期が取られていない。
以上のような端末切替技術全般に共通する前提を踏まえ、図8のフローチャートを用いて切替先端末200の動作を説明する。
このフローチャートでは、ステップS1013からステップS1019を繰り返すことにより、デコーダ260は、メディアバッファ250がオーバーフローする状況を回避し、継続的に連続したデータ番号のデータを取得することができるようになっている。
切替元端末100は、切替先端末200の動作が開始される以前に、ユーザから端末切替要求を受け端末切替動作を開始する。具体的には、上述したように切替先端末200にSIPの「REFER」メッセージを送信することにより、端末切替要求を通知する。なお、切替元端末100は、当該メッセージの送信に当たり、メッセージのヘッダまたはペイロードに、切替元端末100のメディアバッファ160のバッファサイズMおよびメディアバッファ160に蓄積されている最新データ番号であるIを記載する。また、切替元端末100は、同時に、切替先端末200とデータの送受信を行うためにセッションを確立する。
切替先端末200は、切替元端末100からセッション切替要求を受信すると、バッファサイズMおよび最新データ番号Iを取得し、最新データ番号管理部232の図示しないレジスタに保持する。また、最新データ番号のインデックスiおよびCN400から受信するデータのインデックスnを0に初期化する。
さらに、シグナリング部210は、切替元端末100からのセッション確立要求に応じて、切替元端末100とデータを送受信するためにセッションを確立する(S1001)。シグナリング部210は、CN400とセッションを確立すべく、SIPの「INVITE」メッセージをCN400に送信する(S1002)。セッションが確立されるまでの間、CN400からデータは送られてこない。
メディアバッファ管理部234は、メディアバッファ250に最新データ番号(I+i)のデータf(I+i)が存在しないので、切替元端末蓄積データ取得部240にf(I+i)を切替元端末100から取得するように指示する。それを受けて、切替元端末蓄積データ取得部240は、切替元端末100のメディアバッファ160からf(I+i)を取得し、メディアバッファ250に書込む(S1003)。
最新データ番号管理部232は、デコーダ260がメディアバッファ250から最新データを取得するタイミングを監視しており、データ取得した際に、メディアバッファ管理部234にその旨通知する。デコーダ260が最新データを取得するまでの間に、データ受信部220が、CN400からデータf(N)を受信しない場合には(S1004:NO)、最新データ番号のインデックスiを更新(i++)し(S1005:(i++)は現在のiに1を加算した値を以後のiとする意味である。以下、同様)、ステップS1003に進む。
一方、デコーダ260が最新データを取得するまでの間に、データ受信部220が、CN400からデータf(N)を受信した場合には(S1004:YES)、メディアバッファ管理部234は、スイッチ236の出力をメディアバッファ側に接続し、データf(N)をメディアバッファ250に書込む。また、シグナリング部210を介して、切替元端末100に、N番以降のデータをCN400から受信しても、メディアバッファ160に書込むことなく破棄するように指示する(S1006)。
メディアバッファ管理部234は、最新データ番号(I+i)と、メディアバッファ250のバッファサイズLと、CN400から到着した最先のデータ番号Nとの関係により、N>(I+i)+Lが成り立たない場合には(S1007:NO)、次のように最新データ番号(I+i)とNとの関係を検証する(S1008)。
N−1=I+iが成り立たない場合には(S1008:NO)、メディアバッファ管理部234は、デコーダ260がメディアバッファ250から最新データを取得するタイミングで最新データ番号のインデックスiを更新(i++)する(S1009)。そして、データ受信部220がCN400から次のデータを受信した際、CN400から受信するデータのインデックスnを更新(n++)し、データf(N+n)をメディアバッファ250に書込む(S1010)。メディアバッファ管理部234は、メディアバッファ250に最新データ番号(I+i)のデータf(I+i)が存在しないので、切替元端末蓄積データ取得部240にf(I+i)を切替元端末100から取得するように指示する。それを受けて、切替元端末蓄積データ取得部240は、切替元端末100のメディアバッファ160からf(I+i)を取得し、メディアバッファ250に書込む(S1011)。
以上の動作(S1009〜S1011)を繰り返すことにより、N−1=I+iが成り立つ場合には(S1008:YES)、切替先端末200のメディアバッファ250の中において事前蓄積状態が完成したので、メディアバッファ管理部234は、シグナリング部210を介して、切替元端末100に端末切替完了通知を送信すると同時に、切替元端末100とのセッションを切断し(S1012)、端末切替に係る処理を完了する。
一方、N>(I+i)+Lが成り立つ場合には(S1007:YES)、メディアバッファ管理部234は、デコーダ260がメディアバッファ250から最新データを取得するタイミングで最新データ番号のインデックスiを更新(i++)し(S1013)、メディアバッファ250に最新データ番号(I+i)のデータf(I+i)が存在するか否かを確認する(S1014)。データf(I+i)が存在しない場合には(S1014:NO)、メディアバッファ管理部234は、切替元端末蓄積データ取得部240にf(I+i)を切替元端末100から取得するように指示する。それを受けて、切替元端末蓄積データ取得部240は、切替元端末100のメディアバッファ160からf(I+i)を取得し、メディアバッファ250に書込み(S1015)、ステップS1016に進む。
データf(I+i)が存在する場合には(S1014:YES)、メディアバッファ管理部234は、データ受信部220が、CN400から次のデータを受信した際、CN400から受けるデータのインデックスnを更新(n++)し(S1016)、メディアバッファ250の空きの有無を確認する(S1017)。このとき、メディアバッファ250にデータを蓄積する空きスペースが存在する場合には(S1017:YES)、データf(N+n)をメディアバッファ250に書込む(S1018)。一方、メディアバッファ250にデータを蓄積する空きスペースが存在しない場合には(S1017:NO)、メディアバッファ管理部234は、スイッチ236の出力をデータ送信部側に接続し、データf(N+n)をデータ送信部238に送る。データ送信部238は、当該データを切替元端末100に転送する(S1019)。
以降、以上の動作(S1013〜S1019)を繰り返すことにより、デコーダ260は、メディアバッファ250がオーバーフローする状況を回避し、継続的に連続したデータ番号のデータを取得することができる。
図9Aおよび図9Bは、以上説明した切替先端末200を含むシームレスな端末切替システムの動作におけるある瞬間を切り出した図である。図の内容としては、図7において使用したものと同じであるが、理解を助けるために以下のような具体的な数値を与えるものとする。メディアバッファ160のバッファサイズMは6、メディアバッファ250のバッファサイズLは4とする。切替時の最新データ番号Iは7、CN400から到着する最先のデータ番号Nは15とし、iが2のタイミングで切替先端末200に到着する。このような設定では、N>(I+i)+Lが成り立つ(S1007:YES)。
図9Aは、インデックスiが4、インデックスnが1である瞬間の状態を切り出したものである。出力部270には既にデータ番号10のデータが出力されており、最新データ番号は11である。図9Aは、メディアバッファ250内にf(11)は存在しないので(S1014:NO)、切替元端末100のメディアバッファ160からf(11)を取得して、メディアバッファ250に書込んだ直後の状態である(S1015)。なお、Nは15であるため、データ番号が15以降のデータは破棄されるので(S1006)、切替元端末100のメディアバッファ160にはデータ番号が15以降のデータは蓄積されていない。また、切替元端末100は、切替元端末蓄積データ取得部240によって取得されたデータをメディアバッファ160から削除する。
図9Bは、インデックスiが6、インデックスnが4である瞬間の状態を切り出したものである。出力部270には既にデータ番号12のデータが出力されており、最新データ番号は13である。図9Bの状態は、データ受信部220がf(19)を受信した際に(S1016)、メディアバッファ250には空きが無く、メディア送信部238によってf(19)が切替元端末100に転送され(S1019)、メディアバッファ160に書込まれた直後の状態である。なお、メディアバッファ160に既に蓄積されているf(18)も同様にして、切替先端末200から転送されたものである。
図10は、図9Aおよび図9Bに示した例と同様の設定の下で、従来の端末切替装置と本発明の端末切替装置の効果を比較したものである。図10の左半分は、従来の端末切替システムにおける切替元端末10の出力(切替元出力)および切替先端末40の出力(切替先出力)を示し、図10の右半分は、本発明の端末切替システムにおける切替元端末100の出力(切替元出力)および切替先端末200の出力(切替先出力)を示す。
ここでは、図1に示すシームレスな端末切替の説明と同様に、ユーザが切替元端末10、100に切替指示を出した時刻をTc、切替元端末10、100でデータの出力を停止した時刻をTs、切替先端末40、200でデータの出力を開始した時刻をTdとする。切替元端末10、100におけるデータの出力停止については、意図的に出力停止時刻を遅らせる等の特別な処理は行わないので、時刻Tsについては、従来の端末切替システム、本発明の端末切替システムとも同時刻とする。また、時刻Tsは、切替先端末40、200が切替元端末10、100からセッション切替要求を受信した時刻でもあり、インデックスiが0に初期化される。
Trは、CN20、400から最先のデータf(15)が到着する時刻である。本例の設定ではインデックスiが2の時刻に、データf(15)は切替先端末40、200に到着する。
図10において、従来の切替先端末40では、時刻Trの後、メディアバッファ46が事前蓄積されるまでデータf(15)を出力することができない。メディアバッファ46のバッファサイズLは4であるため、時刻Tdになって初めてf(15)が出力される。この結果、切替元端末10でデータの出力を停止し、切替先端末40でデータ出力を開始するまでの時間であるタイムギャップTd−Tsは、6となる。
また、時刻Tdに切替先端末40で出力されるデータ番号と時刻Tsに切替元端末10で出力されるデータ番号との差であるメディアギャップは、15−6−1=8となる。
一方、図10において、本発明の切替先端末200では、時刻Tsにおいて、データf(7)を切替元端末100のメディアバッファ160から取得することにより、切替先端末200は、時刻Tsにf(7)を出力することが可能となる。すなわち、TsとTdは同時刻となりタイムギャップTd−Tsは0である。また、メディアギャップは、7−6−1=0である。よって、レスポンスディレイTd−Tcを増加することなく、タイムギャップおよびメディアギャップを0とし、従来の端末切替システムと比較し、シームレスな端末切替を実現可能であることがわかる。
また、時刻Tr以降にCN400から受信したデータは、切替先端末200または切替元端末100のメディアバッファ250、160に保持され、切替先端末200でのデータ出力が連続となるための時刻に出力されるので、切替後にデータ出力が不連続となることはない。
以上の説明から明らかなように、切替元端末100から切替要求を受信した直後から切替元端末蓄積データ取得部240によって、切替元端末100のメディアバッファ160のデータがメディアバッファ250に供給されることにより、メディアバッファ160を切替先端末200の論理的なメディアバッファとして利用することが可能になる。
これにより、切替先端末200の事前蓄積状態が確保され、デコーダ260は、メディアバッファ250に物理的にデータが事前蓄積されるのを待つことなく、即座に復号処理を開始することができる。結果として、タイムギャップを限りなく0に近づけることができる。また、CN400との間のセッションが確立し、CN400からデータが到着した後は、メディアバッファ管理部234が、メディアバッファ250のデータ蓄積状況を確認し、メディアバッファ250に空きが無い場合には、切替元端末100のメディアバッファ160に書込むことにより、メディアバッファ250のオーバーフローによるデータ損失を防ぐことができる。
一方で、メディアバッファ管理部234は、メディアバッファ250に最新データ番号のデータが存在しないときには、そのデータを切替元端末100のメディアバッファ160から取得することにより、データ番号の連続性を確保することができる。
以上により、シームレスな端末切替を実現することができる。
次に、切替元端末100の構成および動作について図11を用いて説明する。なお、図7に示した構成要素と同じ構成要素については、同一の番号を付している。
切替元端末100は、切替先端末200やCN400とのセッション制御を行うシグナリング部110と、CN400から送信されたデータを受信するデータ受信部120と、切替先端末200から送信されたデータを受信するデータ受信部130と、CN400から受信したデータの出力をメディアバッファ160または破棄に切換えるスイッチ140と、切替先端末200からデータ取得要求があった際に、メディアバッファ160から所望のデータを送信する蓄積データ供給部150と、受信したデータを蓄積するメディアバッファ160と、受信したデータを復号するデコーダ170と、デコーダが復号したデータを出力する出力部180とから構成されている。
次に、切替元端末100の動作について図12を用いて詳細に説明する。
ユーザから端末切替要求を受ける以前は、切替元端末100は、CN400との間でセッション確立状態にある。このとき、スイッチ140はオンであり、データ受信部120は、CN400からデータを受信し、受信したデータをメディアバッファ160に書込む。
切替元端末100は、ユーザから端末切替要求を受けると、メディアバッファ160にアクセスし、最新データ番号Iを取得する(S1201)。シグナリング部110は、メディアバッファ160のバッファサイズMと最新データ番号Iを端末切替要求メッセージのヘッダまたはペイロードに記載して、切替先端末200に送信する。さらに、切替先端末200とデータの送受信を行うためにセッションの確立を開始する(S1202)。
データ受信部120がCN400からデータを受信した場合には(S1203:YES)、スイッチ140がオンであれば(S1204:オン)、当該受信データをメディアバッファ160に蓄積する(S1205)。なお、シグナリング部110が、切替先端末200から、N番以降のデータをCN400から受信しても、メディアバッファ160に書込むことなく破棄するような指示を受信したときは、データ受信部120がf(N)を受信した後に、スイッチ140をオフに切替える。これにより、それ以降CN400から受信するデータはメディアバッファ160に蓄積されることなく破棄される。
データ受信部130が切替先端末200からデータを受信した場合には(S1206:YES)、当該受信データをメディアバッファ160に蓄積する(S1207)。
蓄積データ供給部150が切替先端末200からデータ取得要求を受信した場合には(S1208:YES)、該当するデータをメディアバッファ160から取得し、切替先端末200に送信する(S1209)。なお、該当するデータをメディアバッファ160から取得した際、当該データをメディアバッファ160から消去する。
CN400と切替先端末200との間のセッションが確立すると、セッションモビリティが達成されたことになり、CN400と切替元端末100との間のセッションは必要なくなる。シグナリング部110がCN400からCN400と切替元端末100との間のセッション切断要求を受信した場合には(S1210:YES)、CN400との間のセッション切断処理を開始する(S1211)。
なお、当該切断処理は、切替先端末200からCN400との間のセッション確立完了通知(セッション切替要求応答、例えば、「REFER」メッセージの応答)を受信することによって、切替元端末100から行うようにしても良い。
切替先端末200のメディアバッファ250の中で事前蓄積状態が完成して、端末切替に係る処理を完了するために送信される切替先端末200と切替元端末100との間のセッション切断要求をシグナリング部110が受信した場合には(S1212:YES)、切替先端末200との間のセッション切断処理を開始する(S1213)。
なお、切替先端末200と切替元端末100との間のセッション切断要求をシグナリング部110が受信しない場合には(S1212:NO)、切替元端末100は以上の動作(S1203〜S1212)を繰り返す。
次に、切替元端末100、切替先端末200、およびCN400の三者間でやり取りされるメッセージシーケンスについて、図13を用いて説明する。
切替元端末100は、ユーザから端末切替要求を受信して(S1201)、端末切替処理を開始する。切替元端末100は、切替先端末200にセッション切替要求M1を送信する(S1202、S1001)。シグナリング部110が切替先端末200に送信する端末切替要求M1は、SIPの「REFER」メッセージを使用することができる。
また、これと同時に、切替元端末100は、切替先端末200との間のセッションを確立するために切替先端末200にセッション確立要求M2を送信する(S1202、S1001)。セッション確立要求M2は、SIPの「INVITE」メッセージを使用することができる。
切替先端末200は、セッション切替要求M1を受け取り、CN400との間でセッションを確立するためにセッション確立要求M3をCN400に送信する(S1002)。セッション確立要求M3は、SIPの「INVITE」メッセージを使用することができる。
CN400との間でセッションが確立し、切替先端末200がCN400からデータを受信し始めた後(S1004:YES)、切替先端末200は、N番以降のデータをCN400から受信しても、メディアバッファ160に書込むことなく破棄するように指示するデータ破棄要求M4を切替元端末100に送信する(S1006)。データ破棄要求M4は、データ番号Nが記載されている限り、SIP以外のメッセージを利用することも可能である。
CN400と切替先端末200との間でセッションが確立した後、CN400は、切替元端末100との間のセッションを切断するためにセッション切断要求M5を切替元端末100に送信する(S1210:YES)。セッション切断要求M5は、SIPの「BYE」メッセージを使用することができる。
切替先端末200は、端末切替が完了した場合に(S1008:YES)、切替元端末100にセッション切断要求M6を送信して切替元端末100との間のセッションを切断する(S1012、ステップS1213)。切替元端末100に送信するセッション切断要求M6は、SIPの「BYE」メッセージを使用することができる。
切替先端末200が、メディアバッファ250内に存在しないデータを取得するために、切替元端末蓄積データ取得部240から切替元端末100の蓄積データ供給部150に送信するデータ取得要求M7は(S1003、ステップS1011、ステップS1015、ステップS1208)、切替先端末200が取得したいデータのデータ番号が記載されている限り、SIP以外のメッセージを利用することも可能である。
以上のように、本実施の形態によれば、切替元端末100のメディアバッファ160を切替先端末200の論理的(または仮想的)なメディアバッファとして利用するため、端末切替要求直後から事前蓄積状態を生成することができる。また、切替先端末200のメディアバッファ250のデータ蓄積状況を確認し、メディアバッファ250に空きが無い場合には、切替元端末100のメディアバッファ160にデータを書込むため、メディアバッファ250のオーバーフローによるデータ損失を防ぐことができる。また、切替先端末200のメディアバッファ250に最新データ番号のデータが存在しないときには、そのデータを切替元端末100のメディアバッファ160から取得するため、データ番号の連続性を確保することができ、シームレスな端末切替を実現することができる。
なお、本実施の形態で実現される機能および動作はコンピュータのプログラムにより実現するようにしてもよく、その場合は、そのプログラムを格納する図示しないメモリや制御を行うCPU等を、切替元端末100や切替先端末200、CN400に備えるものとする。また、プログラムを格納する媒体は外部記憶媒体でもよく、例えば、EPROMやフラッシュEEPROM、CD−ROMなどであってもよい。これらの点は、特に断らないが、他の実施の形態においても同様である。
(実施の形態2)
次いで、本発明の実施の形態2に係る端末切替システムについて説明する。
本実施の形態の端末切替システムは、シームレスな端末切替性能については、実施の形態1の端末切替システムと同等であるが、端末切替後のユーザの利便性をより一層向上することを目的としている。
本実施の形態の端末切替システムは、端末装置と通信相手との間でストリーミングセッションが確立し、データ受信手段が通信相手からデータを受信し始めた後に、蓄積手段に通信相手から受信したデータを格納するための空きが無い場合に、通信相手に対して、通信相手からのデータ到着を遅延させる遅延制御手段を備える。
ここでは、2つの態様について説明する。
まず、本実施の形態の第1の態様について説明する。
第1の態様は、通信相手に対して、所定の時間だけデータの送出を停止させることにより、通信相手からのデータ到着を遅延させる場合である。
実施の形態1では、N>(I+i)+Lが成り立つ場合には(S1007:YES)、メディアバッファ250がオーバーフローするのを防止するため、切替先端末200は、CN400から送信されるデータを保持するために、切替元端末100のメディアバッファ160を利用する。
それにより、切替元端末100と切替先端末200との間でデータのやり取りがいつまでも続くことになり(S1013〜S1019)、切替元端末100と切替先端末200との間のセッションを切断することができない。
ユーザにとっては、端末切替終了後は、切替元端末100と切替先端末200との間の通信状態を気にせず、切替先端末200を持ち歩くことができればより好ましい。例えば、切替元端末100が、据置き型のテレビであり、切替先端末200が携帯端末である場合に、据置き型で受信していたストリーミングセッションを携帯端末に切替え、当該セッションを継続したまま携帯端末を屋外に持ち出すこと等が可能となるからである。
本実施の形態のシームレスな端末切替システムは、かかる点を改良したものであり、一定時間が経過した後は、CN400から送信されるデータを保持するために切替元端末100のメディアバッファ160を利用しなくて済むようになる。
本実施の形態の切替先端末の構成は、実施の形態1の切替先端末200と基本的な構成は全く同じであり、単にメディア同期制御部とシグナリング部の動作が異なるのみである。よって、本実施の形態では、各構成要素に対して実施の形態1と同じ符号を用いることとし、構成についての説明は省略する。ただし、実施の形態1と区別するため、本実施の形態の切替先端末を200aで示すことにする(ただし、図示せず)。以下、本実施の形態の切替先端末200aの動作について、メディア同期制御部230とシグナリング部210の動作に着目して説明する。
図14は、本発明の実施の形態2に係る端末切替システムにおける切替先端末の動作を説明するフローチャートである。なお、図14において、多くの処理(S1401〜S1419)は、図8に示す実施の形態1の場合と全く同様であるので、重複する部分については必要な場合を除いて説明を省略する。
切替先端末200aがCN400からデータf(N)を受取ると、メディアバッファ管理部234は、最新データ番号(I+i)と、メディアバッファ250のバッファサイズLと、CN400から到着した最先のデータ番号Nとの関係により、N>(I+i)+Lが成り立つ場合には(S1407:YES)、メディア送出同期制御のためのインデックスkをN−(I+i+L−1)に初期化する(S1420)。
kの値は、最新データ番号(I+i)と、CN400からの最先到着データ番号Nと、メディアバッファ250のサイズLとによって定まり、切替先端末200aだけでシームレスな端末切替を実現するためには、kの値だけ切替先端末200aのメディアバッファ250のサイズが足りないことを意味している。
本実施の形態では、メディアバッファ管理部234は、CN400に対してメディア送出同期制御を行わない場合には(S1421:NO)、実施の形態1における定常状態(S1413〜S1419)を繰り返す。一方、CN400に対してメディア送出同期制御を行う場合には(S1421:YES)、初回に限り(S1422:YES)、シグナリング部210を介してCN400に対して、k回だけ切替先端末200aに対してデータを送信するのを休止するように通知する(S1423)。
kが正の値である場合には(S1424:YES)、メディア送出同期制御のためのインデックスkをデクリメントする(S1425)。一方、kが正の値でない場合には(S1424:NO)、切替先端末200aのメディアバッファ250の中で事前蓄積状態が完成したので、メディアバッファ管理部234は、シグナリング部210を介して、切替元端末100に端末切替完了通知を送信すると同時に、切替元端末100との間のセッションを切断し(S1426)、端末切替に関する処理を完了する。
このように、メディアバッファ管理部234は、シグナリング部210を介してCN400に対して、切替先端末200aに対してデータを送信するのを休止するように通知するので(S1423)、データ受信部220は、kが正の値である一定の期間だけ、CN400からデータを受信しない。一方で、デコーダ260は、CN400からデータを受信するか否かにかかわらず、一定の間隔でメディアバッファ250から最新データを取得するので、メディアバッファ管理部234は、デコーダ260がメディアバッファ250から最新データを取得するタイミングで最新データ番号のインデックスiを更新(i++)し(S1413)、メディアバッファ250に最新データ番号(I+i)のデータf(I+i)が存在するか否かを確認する(S1414)。
その結果、データf(I+i)が存在しない場合には(S1414:NO)、メディアバッファ管理部234は、切替元端末蓄積データ取得部240にf(I+i)を切替元端末100から取得するように指示する。この指示を受けて、切替元端末蓄積データ取得部240は、切替元端末100のメディアバッファ160からf(I+i)を取得し、メディアバッファ250に書込む(S1415)。
このように、CN400のデータ送信を休止することにより、事前蓄積されているデータ総量を減らすことになり、メディアバッファ250のバッファサイズ不足を吸収することができる。
次いで、図15のグラフを用いて、本実施の形態の第1の態様における切替元端末100のメディアバッファ160と切替先端末200aのメディアバッファ250にそれぞれ蓄積されているデータの時間変化を説明する。
図15では、グラフの縦軸を蓄積データ数とし、横軸を時間とする。このグラフの説明においても、図7の説明で用いた記号と同様の記号を用いるものとする。すなわち、切替元端末100のメディアバッファサイズをM、切替先端末200aのメディアバッファサイズをL、最新データ番号を(I+i)とする。メディア送出同期制御のためのインデックスkは、N−(I+i+L−1)である。ここで、インデックスkの初期値をK(固定値)とする。デコーダ260は、メディアバッファ250から一定間隔でデータを読み出し復号処理を行うものとし、その間隔をαとする。また、CN400がデータ送信する間隔もαである。
次に、グラフ中の時刻について説明する。
Trは、図7で用いたものと同様であり、切替先端末200aがCN400から送信された最先着のデータを受信する時刻である。また、このときのデータ番号はNとする。また、T1は、切替元端末100がCN400からデータ番号Nのデータを受信した時刻であり、それ以降の受信データは破棄する(S1406)。時刻Trにおいて、最新データ番号は(I+i)であり、切替元端末100のメディアバッファ160は、((I+i)+(M−1))番までのデータを蓄積している。
したがって、切替元端末100がデータ番号Nのデータを受信するまでには、(N−((I+i)+(M−1)))×αだけの時間を要する。ところで、KはN−(I+i+L−1)であるので、Kを用いると、時刻TrからT1までの時間は、(K−(M−L))×αとなる。
T2は、切替先端末200aのメディアバッファ250が一杯の状態、つまり、CN400からデータを受信した結果、切替先端末200aのメディアバッファ250がL個のデータを蓄積する状態に達した時刻である。T2以降、切替先端末200aは、受信したデータの切替元端末100への転送を開始する(S1419)。
T3は、メディア送出同期制御を開始する時刻であり、CN400は、一定の期間、切替先端末200aに対してデータの送出を停止する。T4は、メディア送出同期制御を終了する時刻であり、T4以降、CN400は、切替先端末200aに対してデータの送出を再開する。
図15のグラフにおいて、太線の実線は、切替先端末200aのメディアバッファ250のデータ蓄積量(切替先メディアバッファ蓄積量)を示し、太線の破線は、切替元端末100のメディアバッファ160のデータ蓄積量(切替元メディアバッファ蓄積量)を示している。また、細線の実線は、CN400から送出され、単位時間αにおいてメディアバッファに入力されるデータ量を示している。
次に、グラフの左端から時間軸に沿ってグラフの内容を説明する。
時刻Trまでは、切替元端末100にCN400からデータが送信される。切替元端末100のメディアバッファ160に入力されるデータ量は、単位時間α当たり1である。切替先端末200aは、切替元端末100のメディアバッファ160からデータを取得するので、切替元端末100のメディアバッファ160のデータ蓄積量はMで一定である。一方で、切替先端末200aのメディアバッファ250は、切替元端末100から取得したデータをすぐにデコーダ260に出力するため、データが蓄積されることはない。
時刻Trになると、切替先端末200aは新たにCN400からデータを受信し始めるので、切替元端末100および切替先端末200aの各メディアバッファ160、250に入力されるデータ量の和は、単位時間α当たり2となる。このとき、切替先端末200aはCN400から受信したデータを蓄積するので、メディアバッファ250の蓄積量は1/αで増加する。一方、切替元端末100の状況は変わらず、蓄積量はMで一定である。
時刻T1になると、切替元端末100は、CN400から受信したデータを破棄し、メディアバッファ160に蓄積しなくなるので、切替元端末100および切替先端末200aの各メディアバッファ160、250に入力されるデータ量の和は、単位時間α当たり1となる。このとき、切替元端末100のメディアバッファ160へのデータ入力が無くなる一方、切替元端末100のメディアバッファ160から切替先端末200aがデータを取得するので、切替元端末100のメディアバッファ160の蓄積量は1/αで減少する。一方で、切替先端末200aの状況は変わらず、蓄積量は1/αで増加する。
時刻T2になると、切替先端末200aのメディアバッファ250は一杯になる。依然としてデータは切替先端末200aのみに入力され、入力されるデータ量は単位時間α当たり1である。このとき、切替先端末200aはCN400から受信したデータを切替元端末100に転送するので、メディアバッファ250の蓄積量はLで一定となる。切替元端末100は、切替先端末200aからデータを受信してメディアバッファ160に蓄積すると同時に、切替先端末200aにデータを送信するので、メディアバッファ160の蓄積量はKで一定となる。ここで、切替先端末200aのメディアバッファ250は、時刻Trから1/αの速度で増加し、時刻T2でLに達するので、時刻TrからT2までの時間は、L×αとなる。
時刻T3になると、CN400がメディア送出同期制御を開始し、CN400は、K×αの期間の間、切替先端末200aに対してデータの送出を停止する。よって、メディアバッファ250に入力されるデータ量は、単位時間α当たり0である。その結果、切替先端末200aのメディアバッファ250の蓄積量はLで一定となる。一方で、切替元端末100は、切替先端末200aにデータを送信するので、メディアバッファ160の蓄積量は1/αで減少し、時刻T4で0となる。
時刻T4になると、CN400はメディア送出同期制御を終了し、切替先端末200aに対してデータ間隔αでデータ送信を再開する。よって、切替先端末200aのメディアバッファ250に入力されるデータ量は、単位時間α当たり1となる。切替先端末200aのメディアバッファ250では、CN400からデータを入力してデコーダ260に出力するので、切替元端末100のメディアバッファ160のデータ蓄積量はLで一定となる。
以上により、事前蓄積されているデータ総量をLに減らすことができ、切替元端末100のメディアバッファ160を利用する必要がなくなる。
次に、切替先端末200aおよびCN400との間でそれぞれやり取りされるメッセージについて説明する。
切替先端末200aがCN400に対して、データを送信するのをK回分だけ休止するように指示するメッセージ(S1423)は、メッセージのヘッダまたはペイロードに少なくともKの値が記載される限り、SIP以外のメッセージを使用することができる。
なお、当該メッセージを受信したCN400は、一定間隔αで送信しているデータの送信をK×αの期間休止する。ただし、送出するデータの番号はこれによる影響を全く受けず、当初予定された送出時刻がK×αの時間先送りになるだけである。
以上説明したように、本実施の形態の第1の態様によれば、CN400による定期的なデータ送出を所定の時間だけ停止し、一方で、当該期間の間デコーダ260は切替元端末100のメディアバッファ160からのデータを取得するため、結果として切替先端末200aのメディアバッファ250のバッファサイズ不足を吸収することができる。その結果、一定時間後に切替先端末200は切替元端末100との間のセッションを切断し、もはや切替元端末100のメディアバッファ160を利用することなく、シームレスな端末切替を実現することができる。これにより、端末切替後のユーザの利便性はより一層向上する。
次に、本実施の形態の第2の態様について説明する。
第2の態様は、通信相手から自己へのデータ送出間隔を所定の時間だけ大きくすることにより、通信相手からのデータ到着を遅延させる場合である。より具体的には、例えば、通信相手から自己へのデータ送出間隔を、所定の時間だけ、通信相手から切替元端末にデータが送信されていたときの送信間隔(元のセッションの送信間隔)、または、端末切替直後に通信相手から切替先端末にデータが送信されてきたときの送信間隔よりも大きく設定させることにより、通信相手からのデータ到着を遅延させる。
第1の態様では、時刻T2以降にメディア送出同期制御を開始することが可能となり(S1421:YES)、時刻T3から時刻T4までのK×αの期間の間、CN400が切替先端末200aに送信しているデータの送信を休止することにより、切替先端末200aに事前蓄積されているデータ総量をLに減らしている。
これに対して、本態様においては、CN400からのデータの送信を休止する代わりに、CN400のデータ送出間隔をαからβに変更することにより、切替先端末200aに事前蓄積されているデータ総量をLに減らすようにしている。この方法によれば、時刻T2を待たずして、任意の時刻にメディア送出同期制御を開始することができる(S1421:YES)。
図16は、本実施の形態の第2の態様における切替元端末100のメディアバッファ160と切替先端末200aのメディアバッファ250にそれぞれ蓄積されているデータの時間変化を示すグラフである。図16で使用される記号は、βを除いて、図15で用いたものと全く同様である。ここで、βはメディア送出同期制御により変更した後のCN400のデータ送出間隔であり、αよりも大きい値である(β>α)。また、図16においては、メディア送出同期制御を開始する時刻T3をTrと同時刻に行っているため、T3はTrと一致する。
次に、グラフの左端から時間軸に沿ってグラフの内容を説明する。
時刻Trまでは、切替元端末100にCN400からデータが送信される。切替元端末100のメディアバッファ160に入力されるデータ量は、単位時間α当たり1である。切替先端末200aは、切替元端末100のメディアバッファ160からデータを取得するので、切替元端末100のメディアバッファ160のデータ蓄積量はMで一定である。一方で、切替先端末200aのメディアバッファ250は、切替元端末100から取得したデータをすぐにデコーダ260に出力するため、データが蓄積されることはない。
時刻Trになると、切替先端末200aは新たにCN400からデータを受信し始めるものの、CN400がメディア送出同期制御を開始し、CN400からのデータ送出間隔をβとすることにより、切替先端末200aのメディアバッファ250へ入力されるデータ量は単位時間α当たりα/βである。また、CN400から切替元端末100のメディアバッファ160へ入力されるデータ量は変わらず、単位時間α当たり1である。
したがって、切替元端末100および切替先端末200aの各メディアバッファ160、250に入力されるデータ量の和は、1+α/βとなる。このとき、切替先端末200aはCN400から受信したデータを蓄積するので、切替先端末200aのメディアバッファ250の蓄積量は1/βの速度で増加する。一方、切替元端末100の状況は変わらず、メディアバッファ160の蓄積量はMで一定である。
時刻T1になると、切替元端末100は、CN400から受信したデータを破棄し、メディアバッファ160に蓄積しなくなるので、切替元端末100および切替先端末200aの各メディアバッファ160、250に入力されるデータ量の和は単位時間α当たりα/βとなる。このとき、切替元端末100のメディアバッファ160へのデータ入力がなくなる一方、切替元端末100のメディアバッファ160から切替先端末200aがデータを取得するので、切替元端末100のメディアバッファ160の蓄積量は1/αの速度で減少する。一方で、切替先端末200aの状況は変わらず、切替先端末200aのメディアバッファ250の蓄積量は1/βの速度で増加する。
時刻T2になると、切替先端末200aのメディアバッファ250は一杯になる。そして、後述する適切なβを設定することにより、時刻T2と同時刻であるT4に、CN400はメディア送出同期制御を終了し、切替先端末200aに対してデータ間隔αでデータ送信を再開する。よって、切替先端末200aに入力されるデータ量は単位時間α当たり1となる。このとき、切替先端末200aのメディアバッファ250では、CN400からデータを入力してデコーダ260に出力するので、切替先端末200のメディアバッファ250のデータ蓄積量はLで一定となる。
ここで、切替先端末200aのメディアバッファ250は、時刻Trから1/βの速度で増加し、時刻T2でLに達している。したがって、時刻TrからT2までの時間は、L×βとなる。一方、切替元端末100のメディアバッファ160は、時刻T1から1/αの速度で減少し、時刻T2で0に達している。したがって、時刻T1からT2までの時間は、M×αとなる。
さて、時刻Trで送出間隔βを適切に設定することにより、時刻T2とT4は一致する。上記のように、時刻TrからT2まではL×βかかり、時刻T1からT4まではM×αかかる。時刻TrからT1までは(K−(M−L))×αかかるので、これらの関係から、適切なβの値は、(1+K/L)×αとなる。したがって、時刻Trにおいて、βの値を(1+K/L)×αと計算し、CN400にβを用いてメディア送出同期制御を行うように要請することにより、時刻T2と時刻T4を一致させ、事前蓄積されているデータ総量をLに減らすことができる。
以上説明したように、本実施の形態の第2の態様によれば、CN400によるデータ送出間隔を一定の時間だけαからβに拡大するため、切替先端末200aのメディアバッファ250のバッファサイズ不足を吸収することができる。その結果、一定時間後に切替先端末200aは切替元端末100との間のセッションを切断し、もはや切替元端末100のメディアバッファ160を利用することなく、シームレスな端末切替を実現することができる。これにより、端末切替後のユーザの利便性はより一層向上する。
(実施の形態3)
次いで、本発明の実施の形態3に係る端末切替システムについて説明する。
本実施の形態の端末切替システムは、シームレスな端末切替性能については、実施の形態1の端末切替システムと同等であるが、切替元端末のメディアバッファの代わりに、第三者端末のメディアバッファを利用する点が異なる。ここで、「第三者端末」とは、切替元端末とCN以外の端末であって、ネットワーク揺らぎの影響を受けないデータ伝送が可能なネットワークを介して切替先端末と接続可能な端末のことを広く意味する。
実施の形態1においては、N>(I+i)+Lが成り立つ場合には(S1007:YES)、切替先端末200のメディアバッファ250がオーバーフローするのを防止するため、切替先端末200は、CN400から送信されるデータを保持するために、切替元端末100のメディアバッファ160を利用する。しかしながら、特に、切替元端末100がバッテリで駆動している場合など、切替元端末100に処理負担をかけるのは好ましくない。
そこで、本実施の形態のシームレスな端末切替システムでは、かかるシームレスな端末切替の利便性を向上するために、切替元端末以外の第三者端末のメディアバッファを利用するようにした。
図17は、本発明の実施の形態3に係る端末切替システムのシステム構成図である。なお、本実施の形態の端末切替システムは、図4に示す実施の形態1の端末切替システムと同一の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
図17の端末切替システムは、切替元端末100と、CN400と、インターネットなどのネットワーク500と、端末切替のターゲットとなる切替先端末600と、第三者端末700とから構成されている。また、実施の形態1の場合と同様に、切替元端末100と切替先端末200との間は、PAN(近距離無線ネットワーク)300をネットワークとして利用することもできるようになっている。
第三者端末700は、ネットワーク500に接続することができ、切替先端末600との間では、図示しないが、UWBやBluetooth(登録商標)等のPANをネットワーク500として利用することなどにより、ネットワーク揺らぎ(ジッタ)の影響を受けずに通信することが可能である。
さらに、第三者端末700は、データを蓄積するための図示しないメディアバッファを具備している。なお、第三者端末700の構成は、例えば、図11に示す切替元端末100と同一であってもよく、同様に理解することができるので、その詳細な説明は省略する。
図18は、本実施の形態の切替先端末600の内部の構成を示すブロック図である。なお、図18において、実施の形態1の切替先端末200と動作が同じ構成要素に対しては、同一の符号を付している。
この切替先端末600は、切替元端末100、CN400、および第三者端末700との間のセッション制御を行うシグナリング部210aと、CN400から送信されたデータを受信するデータ受信部220と、受信したデータのメディアバッファ250への蓄積制御を行うメディア同期制御部610と、受信したデータを蓄積するメディアバッファ250と、受信したデータを復号するデコーダ260と、デコーダが復号したデータを出力する出力部270とから構成されている。
上記構成において、メディア同期制御部610と、シグナリング部210aとが実施の形態1の切替先端末200とは異なる構成要素である。
ここで、メディア同期制御部610は、メディアバッファ250のデータ蓄積量および蓄積されているデータのデータ番号の管理を行い、CN400からデータを受信した際に、メディアバッファ250の蓄積量に応じた制御を行い、メディアバッファ250に空きが無い場合は、データを第三者端末700に送信する。また、デコーダ260に出力すべき最新データ番号のデータがメディアバッファ250に存在しない場合において、最新データ番号が、既に第三者端末700に送信されたデータ番号でない場合には、切替元端末100のメディアバッファ160から最新データ番号のデータを取得する。一方、最新データ番号が、既に第三者端末700に送信されたデータ番号である場合には、第三者端末700のメディアバッファから最新データ番号のデータを取得することにより、データ番号の連続性を維持することができる。シグナリング部210aは、CN400や切替元端末100との間のセッションに加えて、第三者端末700との間のセッションを確立し、制御することができる。
図19は、メディア同期制御部610の内部の構成を示すブロック図である。なお、図19において、実施の形態1のメディア同期制御部230と動作が同じ構成要素に対しては、同一の符号を付している。
メディア同期制御部610は、最新データ番号管理部232、メディアバッファ管理部612、スイッチ236、データ送信部614、切替元端末蓄積データ取得部240、および第三者端末蓄積データ取得部616から構成されている。
最新データ番号管理部232は、シグナリング部210aから受取った最新データ番号を保持し、デコーダ260がメディアバッファ250からデータを取得した際に、最新データ番号の更新を行い、メディアバッファ管理部612に更新を通知する。
メディアバッファ管理部612は、メディアバッファ250のデータ蓄積量および蓄積されているデータのデータ番号の管理を行う。そして、データ受信部220がCN400からデータを受信した際に、メディアバッファ250に空きが無い場合は、当該受信データのデータ番号を記録して当該受信データをデータ送信部614に送り、メディアバッファ250に空きがある場合は、当該受信データをメディアバッファ250に書込む。
また、メディアバッファ管理部612は、最新データ番号管理部232から最新データの更新が通知された際に、最新データ番号のデータがメディアバッファ250に存在しない場合において、最新データ番号が、既に第三者端末700に送信されたデータ番号でない場合には、切替元端末蓄積データ取得部240に、切替元端末100のメディアバッファ160から最新データ番号のデータを取得するように通知する。また、最新データ番号が、既に第三者端末700に送信されたデータ番号である場合には、第三者端末蓄積データ取得部616に、第三者端末700のメディアバッファから最新データ番号のデータを取得するように通知する。
スイッチ236は、データ受信部220がCN400から受信したデータの出力を、メディアバッファ管理部612の判断に応じて、メディアバッファ250またはデータ送信部614に切替える。
データ送信部614は、メディアバッファ250に空きが無い場合に、データ受信部220がCN400から受信したデータであってメディアバッファ管理部612から送られたデータを第三者端末700に送信する。
切替元端末蓄積データ取得部240は、メディアバッファ管理部612による最新データ番号のデータ取得通知に基づいて、切替元端末100のメディアバッファ160から最新データ番号のデータを取得し、メディアバッファ250に書込む。
第三者端末蓄積データ取得部616は、メディアバッファ管理部612による最新データ番号のデータ取得通知に基づいて、第三者端末700のメディアバッファから最新データ番号のデータを取得し、メディアバッファ250に書込む。
上記構成において、メディアバッファ管理部612、データ送信部614、および第三者端末蓄積データ取得部616は、実施の形態1のメディア同期制御部230の対応する構成要素とはそれぞれ異なる。
具体的には、メディアバッファ管理部612は、第三者端末700に送信したデータ番号を保持するレジスタ612aを内部に具備し、記録された当該データ番号を参照して、データの取得元を切替元端末100にするか、または第三者端末700にするかを判断する点が異なる。また、データ送信部614は、データの送信先が、切替元端末100でなく第三者端末700である点が異なる。
また、第三者端末蓄積データ取得部616は、新たに加えられた構成要素であり、メディアバッファ管理部612による最新データ番号のデータ取得通知に基づいて、第三者端末700のメディアバッファから最新データ番号のデータを取得し、メディアバッファ250に書込む機能を有する。
次に、切替先端末600の動作について、図20を用いて詳細に説明する。図20は、切替先端末600の動作を説明するフローチャートである。なお、図20において、図8に示す実施の形態1の場合と全く同様である動作(S2001〜S2012)については、その説明を省略する。
切替先端末600が、CN400からデータf(N)を受取ると、メディアバッファ管理部612は、最新データ番号(I+i)と、メディアバッファ250のバッファサイズLと、CN400から到着した最先のデータ番号Nとの関係により、N>(I+i)+Lが成り立つ場合には(S2007:YES)、シグナリング部210aを介して第三者端末700との間のセッションを確立し、第三者端末700に送信済みデータのデータ番号を記録するためのレジスタ612aを初期化する(S2020)。
なお、第三者端末700は、セッション確立に先立って、サービス発見プロトコルを用いて特定されている。サービス発見プロトコルは、例えば、SLP(Service Location Protocol)やUPnP(Universal Plug and Play)のSSDP(Simple Service Discovery Protocol)などを用いることができる。
メディアバッファ管理部612は、デコーダ260がメディアバッファ250から最新データを取得するタイミングで最新データ番号のインデックスiを更新(i++)し(S2013)、メディアバッファ250に最新データ番号(I+i)のデータf(I+i)が存在するか否かを確認する(S2014)。
そして、データf(I+i)が存在しない場合には(S2014:NO)、メディアバッファ管理部612は、第三者端末700に送信済みデータのデータ番号を記録するためのレジスタ612aを確認する(S2021)。
その結果、当該レジスタ612aに最新データ番号(I+i)が存在しない場合には(S2021:NO)、切替元端末蓄積データ取得部240にf(I+i)を切替元端末100から取得するように指示する。この指示を受けて、切替元端末蓄積データ取得部240は、切替元端末100のメディアバッファ160からf(I+i)を取得し、メディアバッファ250に書込む(S2015)。
一方、当該レジスタ612aに最新データ番号(I+i)が存在する場合には(S2021:YES)、第三者端末蓄積データ取得部616にf(I+i)を第三者端末700から取得するように指示する。この指示を受けて、第三者端末蓄積データ取得部616は、第三者端末700のメディアバッファからf(I+i)を取得し、メディアバッファ250に書込む(S2022)。
また、データf(I+i)が存在する場合には(S2014:YES)、メディアバッファ管理部612は、データ受信部220がCN400から次のデータを受信した際、CN400から受け取るデータのインデックスnを更新(n++)し(S2016)、メディアバッファ250の空きの有無を確認する(S2017)。
その結果、メディアバッファ250にデータを蓄積する空きスペースが存在する場合には(S2017:YES)、データf(N+n)をメディアバッファ250に書込む(S2018)。
一方、メディアバッファ250にデータを蓄積する空きスペースが存在しない場合には(S2017:NO)、メディアバッファ管理部612は、スイッチ236の出力をデータ送信部614側に接続し、データf(N+n)をデータ送信部614に送る。データ送信部614は、当該データを第三者端末700に転送する(S2019)。メディアバッファ管理部612は、当該転送したデータのデータ番号(N+n)を、第三者端末700に送信したデータ番号を保持する内部のレジスタ612aに記録する(S2023)。
以降、以上の動作(S2013〜S2023)を繰り返すことにより、デコーダ260は、メディアバッファ250がオーバーフローする状況を回避し、継続的に連続したデータ番号のデータを取得することができる。
以上のように、CN400との間のセッションが確立し、CN400からデータが到着した後は、切替先端末600と第三者端末700との間でセッションを確立することにより、メディアバッファ管理部612は、メディアバッファ250のデータ蓄積状況を確認し、メディアバッファ250に空きが無い場合には、第三者端末700のメディアバッファに書込むことにより、切替先端末600のメディアバッファ250のオーバーフローによるデータ損失を防ぐ。
一方で、メディアバッファ管理部612は、メディアバッファ250に最新データ番号のデータが存在しないときには、内部のレジスタ612aに記録されている第三者端末700への送信済みデータ番号を参照し、切替元端末100のメディアバッファ160または第三者端末700のメディアバッファから最新データ番号のデータを取得することにより、データ番号の連続性を確保する。
このように、好適な第三者端末700を利用することにより、切替元端末100と切替先端末600との間のセッションを早期に切断することが可能になり、ユーザの利便性をより一層向上したシームレスな端末切替を実現することができる。
なお、本実施の形態では、実施の形態1のシームレスな端末切替システムにおける切替元端末100のメディアバッファ160の代わりに、第三者端末700のメディアバッファを利用する態様について説明したが、実施の形態2で説明したシームレスな端末切替システムを、本実施の形態と同様にして、第三者端末を用いて改変することは、当業者であれば容易に想到することができる。
本発明は、通信相手とセッションを保持している端末を、当該セッションを維持しながら別の端末へ切替えるものであり、その際に、レスポンス遅延を増加させることなく、切替元端末または第三者端末に対して切替先端末で出力されるメディアデータの連続性を確保したシームレスな端末切替を実現することができるという効果を有する。
本発明は、セッションモビリティにおいて、また、特に端末のメディアバッファに事前蓄積を要するストリーミングアプリケーションのセッションモビリティにおいて、シームレスな端末切替を実現するために、(1)切替指示直後に、切替先端末のメディアバッファに、事前蓄積状態を生成し、(2)CNとの間のセッション確立後も、データ番号の連続性を損なうことなくメディアバッファへデータを蓄積し続けることができるシームレスな端末切替技術を提供することを目的とするものである。
本発明は、上述した実施例に限定されるものではなく、本発明の範囲を超えることなく種々の変形例や修正された例も実施することが可能である。