(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0016】
(A)主たる実施形態
以下、本発明によるデータ処理装置及びプログラムの一実施形態を、図面を参照しながら詳述する。
【0017】
(A−1)実施形態の構成
図1は、この実施形態のデータ処理装置1及び周辺装置との接続構成を示すブロック図である。
【0018】
データ処理装置1は、ネットワーク6に接続する端末2(2−1、2−2)に対して、メディアデータ処理サービスを提供するメディアサーバである。この実施形態では、例として、データ処理装置1は、IVRとして機能するサーバ(メディアサーバ)であるものとして説明するが、データ処理装置1が提供するメディアデータ処理サービスの内容や、提供先については限定されないものである。
【0019】
図1に示すように、データ処理装置1は、例えば既存のPCやワークステーション等のハードウェア10上に汎用OS20を搭載したプラットフォーム上に構築されているものとする。汎用OS20は、例えば、Linux(登録商標)やWindows(登録商標)等の汎用的なOSを適用することができる。
【0020】
そして、汎用OS20上には、シグナリング処理を行うシグナリング処理部50と、スレッド31を用いてメディアデータ処理を行うメディアデータ処理部30とが搭載されている。さらに、データ処理装置1には、メディアデータ処理部30及びシグナリング処理部50を利用したメディアデータ処理サービスを提供するアプリケーション40が搭載されている。
【0021】
すなわち、アプリケーション40は、メディアデータ処理部30及びシグナリング処理部50を利用して、端末2(2−1、2−2)に対してIVRのサービスを提供するアプリケーションとして機能する。
【0022】
メディアデータ処理部30は、アプリケーション40の制御に応じて、ネットワーク6上の通信装置(端末2等)に対するメディアデータサービスを提供するミドルウェアである。メディアデータ処理部30は、アプリケーション40から1つの呼(セッション)について、メディアデータサービスが要求されると、当該呼に対するスレッド31を生成する。そして、メディアデータ処理部30には、スレッド31が実行するメディアデータ処理のライブラリ(処理プログラムの集合体)が備えられており、スレッド31はそれらのライブラリを利用して、アプリケーション40の制御に応じたメディアデータ処理を実行する。
図1では、メディアデータ処理部30には、N個のスレッド31(31−1〜31−N)が生成された状態について示している。なお、メディアデータ処理部30で、同時に生成されるスレッド31の数は限定されないものである。
【0023】
なお、メディアデータ処理部30は、プロセッサやメモリ等を有するコンピュータ(ハードウェア10)に、実施形態のデータ処理プログラムを実行させることにより実現することができる。
【0024】
API処理部32は、API(Application Program Interface)により、アプリケーション40からの制御指示を受付ける(機能呼出を受付ける)ためのインタフェースである。アプリケーション40は、API処理部32の仕様(APIの仕様)に基づいた制御指示を供給することにより、メディアデータ処理部30を利用したメディアデータ処理を実行することができる。APIの機能は、例えば、セッション開始/停止、音声ファイル再生開始/停止などがある。
【0025】
メディアデータ処理部30では、アプリケーション40からAPI処理部32にセッション開始が指示された場合に、当該セッションに対応するスレッド31が生成される。そして、アプリケーション40では、各セッションのIDと、各セッションに対応するスレッド31のIDが紐づけて管理されることになる。
【0026】
そして、アプリケーション40から、いずれかのスレッド31に対する制御指示があった場合には、API処理部32は、その制御指示に対応するスレッド31(例えば、スレッドのID等により特定する)に、当該制御指示を伝達する。
【0027】
また、この実施形態では、API処理部32と各スレッド31との間は、直接通信する構成ではなく、共有メモリ36を媒体として情報伝達する構成となっている。これは、すべてのスレッド31が常に起動しているわけではないため、API処理部32と各スレッド31との間で、効率的に情報伝達するための構成である。したがって、アプリケーション40からの制御指示をいずれかのスレッド31に伝達する場合、API処理部32は、共有メモリ36にスレッドのIDを付した情報(指示内容を記述した情報)を共有メモリ36に格納する。そして、各スレッド31は、起動する度に共有メモリ36を確認して、自己への指示の情報が格納されていれば、その情報を取得して処理を行う。
【0028】
イベントキュー33は、各スレッド31で発生したイベント(例えば、セッション開始等)を一旦保持して、アプリケーション40に報告する処理を行うキューである。
【0029】
イベントキュー35は、スレッド31で所定時間を計時
(計測)する処理(以下、「タイマ処理」と呼ぶ)によるタイムアウト(タイマ満了)に伴って発生するイベント(以下、「タイムアウトイベント」と呼ぶ)を一旦保持して、コールバックスレッド34に供給する処理を行うキューである。コールバックスレッド34は、スレッド31からのタイムアウトイベントの供給を受けると、アプリケーション40のコールバック処理部41に、当該スレッド31に対応するコールバック処理を実行させるものである。コールバック処理とは、スレッド31で、タイムアウトイベントが発生した場合に、アプリケーション40から当該スレッド31に対して実行されるべき次のステップの処理(例えば、音声ファイルの再生停止の制御指示等)について、メディアデータ処理部30側(コールバックスレッド34)から実行を促す処理である。
【0030】
そして、コールバックスレッド34は、タイムアウトイベントが供給されると、アプリケーション40のコールバック処理部41に、当該タイムアウトイベントに対応するコールバック処理(当該タイムアウトイベントの発行元のスレッド31に対する制御指示の処理)を実行させる。例えば、アプリケーション40では、スレッド31に対してタイマ処理を実行させる際に、当該タイマ処理に対応するコールバック処理を定義した情報をコールバック処理部41に設定しておくものとする。そして、コールバック処理部41は、当該スレッド31で、当該タイマ処理に対応するタイムアウトイベントが発行されると、予め設定されたコールバック処理(当該スレッド31に対する制御指示)をアプリケーション40本体に実行させるものとする。
【0031】
このように、データ処理装置1では、スレッド31からアプリケーション40へのタイマイベントに伴うコールバック処理専用の伝達経路(コールバックスレッド34及びイベントキュー35)が設定されているものとする。
【0032】
この実施形態では、API処理部32と、スレッド31とは、共有リソース(メモリや変数等)ヘのアクセスが生じるため、排他制御により、同時に動作することが出来ない構成となっているものとする。そのため、データ処理装置1では、API処理部32とスレッド31との処理が競合してデッドロックしないように、スレッド31とは別にコールバックスレッド34を追加している。
【0033】
この実施形態では、メディアデータ処理部30において、各スレッド31は、定期的に起動(以下、「周期起動」と呼ぶ)して処理を行うものとする。この実施形態では、例として、スレッド31は、メディアデータ処理に係る呼(セッション)が起動すると、20ms周期で周期起動し、周期起動したときに、メディアデータ処理として、メディアデータの処理などを実行する。
【0034】
ここでは、各スレッド31は、周期起動した場合、その周期起動のインターバル分のメディアデータの処理を実行するものとする。例えば、スレッド31が音声データファイルから、音声データの符号化及びRTP(Real−time Transport Protocol)パケット生成・送信処理を行う場合を想定する。この場合、スレッド31は、周期起動する度に、20ms分の音声データについて符号化及びRTPパケットの生成・送信処理を行うことになる。
【0035】
各スレッド31が処理するメディアデータの保存先は限定されないものであり、例えば、汎用サーバなどのハードディスクに保存されているものでも良いし、ネットワーク6で接続されている別サーバ上のファイルであっても良いし、メモリ上に展開されていても良い。各スレッド31は、セッション開始、セッション停止、音声ファイル再生開始、音声ファイル再生停止などの契機でイベント生成して、イベントキュー33に供給(アタッチ)する。この実施形態では、例として、各スレッド31は、アプリケーション40が保持している音声ファイルF1を取得し、音声ファイルF1の音声データを符号化(例えば、G.711などのCodecでエンコード)して、RTPパケットのペイロードに挿入し、端末2に向けて送出する処理を行うものとする。以下では、各スレッド31が音声ファイルF1からRTPパケット生成して送信する処理を「再生処理」とも呼ぶものとする。
【0036】
各スレッド31は、周期起動する度にインクリメントされるカウンタを用いて時間計測を行うタイマ処理部311を有している。各スレッド31では、このタイマ処理部311に基づいたタイミングで、アプリケーション40から指示されたタイマ処理を行う。例えば、アプリケーション40から1秒間の音声ファイル再生処理(1秒間を計時するタイマ処理及び音声ファイルの再生処理)の制御指示があった場合には、50回の周期起動(20ms×50=1s)が行われたときに、1秒間分のメディアデータが処理されたものとして取り扱う。
【0037】
(A−2)実施形態の動作
次に、以上のような構成を有するこの実施形態のデータ処理装置1の動作を説明する。上述の通り、この実施形態では、データ処理装置1はIVRとして機能するものである。そして、ここでは、例として、データ処理装置1から、端末2−1に対して音声ファイルF1の再生処理(音声データを挿入したRTPパケットの送信処理)を行う場合について説明する。具体的には、スレッド31−1が、アプリケーション40からの制御指示(APIを用いた制御指示)に基づいて音声ファイルの再生処理を行うものとする。
【0038】
図2では、タイミングT100からタイミングT101までの10秒間音声ファイルF1を再生した後、タイミングT101からタイミングT102までの5秒間無音状態とし、さらにタイミングT102からタイミングT103までの間音声ファイルF1を再度再生する処理を行うことについて示している。言い換えると、
図2では、音声ファイルF1を再生する動作を2回行い、再生間隔(無音期間)を5秒としている。なお、音声ファイルF1の再生時間については、10secの音声ファイルを準備しておき再生完了を契機として制御するようにして良いが、この実施形態では、タイマ処理で制御するものとして説明する。
【0039】
アプリケーション40内で、
図2に示すような音声ファイルの再生タイミングを記述する形式(記述言語)については限定されないものであるが、例えば、MSCML(IETF RFC5022:(Media Server ControI Markup Language(MSCML)andProtocol))を利用するようにしてもよい。
【0040】
MSCMLでは、delay、repeat、durationといったパラメータを用いて再生タイミングを記述することができる。「delay」は、ファイル再生前に指定の時間分再生を遅延させることを示すパラメータである(ただし、初回の再生前には適用されない)。また、delayの期間中は無音となる。「repeat」は、音声ファイルの再生回数を示すパラメータである。なお、「repeat」に所定のパラメータを設定することにより、無制限(∞)のリピート再生の指定も可能である。「duration」は、音声ファイルの再生する時間(位置)を示すパラメータである。セッション(呼)開始からdurationに示される時間に達したとき、自動的にセッション(呼)が切断され、音声ファイル再生も終了する。
【0041】
したがって、
図2のタイミングチャートに示されるタイミングをMSCMLのパラメータで記述すると、「音声ファイル再生時間:10sec、delay:5sec、repeat:2、duration:−(無し)」となる。
【0042】
また、
図3では、「音声ファイル再生時間:10sec、delay:5sec、repeat:無制限(∞)、duration:35sec」とした場合の再生タイミングについて示したタイミングチャートとなっている。
【0043】
この実施形態のアプリケーション40では、MSCMLにより記述された再生タイミングの制御情報に基づいて、スレッド31−1に対する制御内容(制御指示の内容や、次回のタイムアウトに伴うコールバック処理として設定する内容)の決定が行われる。
【0044】
次に、上述の
図3のようなタイミングで音声ファイル再生が行われた場合のデータ処理装置1内部の詳細な動作について、
図4〜
図6のシーケンス図を用いて説明する。
【0045】
図4〜
図6では、スレッド31−1で20msec間隔で発生する各周期起動についてそれぞれB101〜B1351のいずれかの符号を付している。そして、
図4〜
図6において、各周期起動に係る破線の内部に図示されたステップの処理は、スレッド31−1において、当該周期起動で実行される処理であることを示している。
【0046】
また、
図4〜
図6のフローチャートの初期状態として、アプリケーション40の制御指示(セッション開始)に基づいて、メディアデータ処理部30にスレッド31−1が生成されているものとして説明する。
【0047】
そして、アプリケーション40から、API処理部32に対して、スレッド31−1に係る10secを計時するタイマ処理の起動、及び、音声ファイルF1の再生開始の制御指示があったものとする。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納したものとする(S101、S102)。
【0048】
その後、スレッド31−1は、周期起動して周期起動B101の処理(ステップS103〜S106の処理)が実行される。
【0049】
周期起動B101において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識して、当該制御指示を取得する(S103)。
【0050】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、10secの計時(カウンタ値が500となるまでの計時)を行うタイマ処理を開始させる(S104)。
【0051】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生処理を開始する。スレッド31−1は、周期起動B101の段階では、音声ファイルF1の20msec分の音声の音声データについて再生処理を行う。また、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S105)。 そして、音声ファイルF1の再生処理を開始すると、スレッド31−1は、イベントキュー33に、再生処理を開始した旨のイベントを通知する(S106)。以上で、スレッド31−1による周期起動B101での処理が終了する。
【0052】
そして、再生開始処理のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S107)。
【0053】
そして、次の周期起動B102のタイミングを迎えると、スレッド31−1は、音声ファイルF1の次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S108)。
【0054】
そして、スレッド31−1は、周期起動B102と同様の処理(ステップS106)の処理について繰り返し、タイマ処理部311のカウンタ値が499に達した状態で、周期起動B101から数えて500回目の周期起動B600を迎えたものとする。周期起動B600において、スレッド31−1は、後述するステップS202〜S203の処理を実行する。
【0055】
周期起動B600では、スレッド31−1は、音声ファイルF1の、次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S201)。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は500となり、タイマ処理部311のタイムアウトを検出することになる(S202)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S203)。以上で、スレッド31−1による周期起動B600での処理が終了する。
【0056】
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する(S203)。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S204)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルの再生停止の制御、及び、5secを計時するタイマ処理の起動制御が設定されているものとする。
【0057】
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の定義に従って、API処理部32に対して、スレッド31−1に係る音声ファイルF1の再生停止、及び、5secを計時するタイマ処理の起動の制御指示を行う(S205、S207)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S206、S208)。
【0058】
その後、スレッド31−1は、周期起動して周期起動B601の処理(ステップS209〜S212の処理)を実行する。
【0059】
周期起動B601において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S209)。
【0060】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生停止処理を行う(S210)。そして、音声ファイルF1の再生停止処理を行うと、スレッド31−1は、イベントキュー33に、再生停止処理を実行した旨のイベントを通知する(S211)。
【0061】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、5secの計時(カウンタ値が250となるまでの計時)を行うタイマ処理を開始させる(S212)。以上で、スレッド31−1による周期起動B601での処理が終了する。
【0062】
そして、再生処理停止のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S213)。
【0063】
そして、スレッド31−1は、その後周期起動を繰り返し、周期起動の度にタイマ処理部311のカウンタ値をインクリメントする。そして、スレッド31−1は、タイマ処理部311のカウンタ値が249に達した状態で、周期起動B601から数えて249回目の周期起動B850を迎えたものとする。周期起動B850において、スレッド31−1は、後述するステップS301、S302の処理を実行する。
【0064】
周期起動B850では、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は250となり、タイマ処理部311のタイムアウトを検出することになる(S301)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S302)。以上で、スレッド31−1による周期起動B850での処理が終了する。
【0065】
なお、周期起動B601〜B850の間は、スレッド31−1は、無音の音声データの再生処理(周期起動ごとに20msec分の無音の音声データの再生処理)を行うようにしてもよい。ただし、端末2−1側で、RTPパケットが供給されない間無音の音声を出力する構成となっている場合には、上述のようなスレッド31−1からの無音の音声に係る再生処理は必要ない。
【0066】
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S303)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルF1の再生開始の制御、及び、10secを計時するタイマ処理の起動制御が設定されているものとする。
【0067】
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の設定に従って、API処理部32に対して、音声ファイルF1の再生開始の制御、及び、10secを計時するタイマ処理の起動制御の制御指示を行う(S304、S306)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S305、S307)。
【0068】
その後、スレッド31−1は、周期起動して周期起動B851の処理(ステップS308〜S310の処理)が実行される。
【0069】
周期起動B851において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S308)。
【0070】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、10secの計時(カウンタ値が500となるまでの計時)を行うタイマ処理を開始させる(S309)。
【0071】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生処理を開始し、音声ファイルF1の最初の20msec分の音声の音声データについて再生処理を行う。また、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S310)。
【0072】
そして、音声ファイルF1の再生処理を開始すると、スレッド31−1は、イベントキュー33に、再生処理を開始した旨のイベントを通知する(S311)。以上で、スレッド31−1による周期起動B851での処理が終了する。
【0073】
そして、再生開始処理のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S312)。
【0074】
そして、スレッド31−1は、周期起動により再生処理を繰り返し、タイマ処理部311のカウンタ値が499に達した状態で、周期起動B851から数えて500回目の周期起動B1350を迎えたものとする。周期起動B1350において、スレッド31−1は、後述するステップS401〜S403の処理を実行する。
【0075】
周期起動B1350では、スレッド31−1は、音声ファイルF1の、次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S401)。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は500となり、タイマ処理部311のタイムアウトを検出することになる(S402)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S403)。以上で、スレッド31−1による周期起動B1350での処理が終了する。
【0076】
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S404)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルF1の再生停止の制御が設定されているものとする。
【0077】
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の定義に従って、API処理部32に対して、音声ファイルF1の再生停止の制御指示を行う(S405)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S406)。
【0078】
その後、スレッド31−1は、周期起動して周期起動B1351の処理(ステップS407〜S409の処理)が実行される。
【0079】
周期起動B1351において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S407)。
【0080】
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生停止処理を行う(S408)。そして、音声ファイルF1の再生停止処理を行うと、スレッド31−1は、イベントキュー33に、再生停止処理を実行した旨のイベントを通知する(S409)。以上で、スレッド31−1による周期起動B601での処理が終了する。
【0081】
そして、再生処理停止のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S410)。
【0082】
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
【0083】
(A−3−1)データ処理装置1では、スレッド31の側で、タイマ処理部311のカウンタを用いたタイマ処理を実行するようにしたので、正確な再生タイミング制御が可能である。
【0084】
また、スレッド31のタイマ処理部311において、周期起動ごとにカウンタをインクリメントしていくだけでタイマ処理を行うことができる。すなわち、データ処理装置1では、アプリケーション40側で、タイマ処理に係る処理を実装する必要がなく、タイマ処理の追加による処理負荷増加はほとんど発生しない。
【0085】
(A−3−2)データ処理装置1では、スレッド31からアプリケーション40へのタイマイベントに伴うコールバック処理専用の伝達経路(コールバックスレッド34及びイベントキュー35)が設定されている。これにより、データ処理装置1では、シンプルな構成で迅速にタイムアウトイベントに伴うコールバック処理を実行することができる。すなわち、データ処理装置1では、効率的にタイムアウトイベントに伴うコールバック処理を実行することができる。
【0086】
なお、データ処理装置1において、上述のコールバック処理専用の伝達経路を省略するようにしてもよいが、その場合、コールバック処理と同様の処理の効率が低下することになる。例えば、スレッド31から、イベントキュー33を介して、アプリケーション40にタイムアウトイベントの発生(例えば、音声ファイルの再生開始後にタイムアウトが発生した旨のイベント)を通知し、アプリケーション40側でそのイベントの内容を解析して次の処理(例えば、音声ファイル再生の停止の処理)を決定して、API処理部32経由でスレッド31に命令するようにしてもよい。しかし、この場合、アプリケーション40でのイベント解析や、判断処理が必要になるため、上述のコールバック処理に係る伝達経路の方が、少ない処理量で高速に次の処理を実行することが可能になる。
【0087】
また、タイムアウトイベント以外のイベントについてもイベントキュー33に集中させる場合、イベントキュー33がボトルネックとなって処理が遅延する可能性がある。しかし、データ処理装置1のようにタイムアウトイベント専用の伝達経路を備えることにより、シンプルな構成で迅速にタイムアウトイベントに伴うコールバック処理を実行することができる。さらに、コールバック処理に対応する処理をメディアデータ処理部30内部だけで行う構成としてもよいが、アプリケーション40からAPIを用いてコールバックする伝達経路の方が、メディアデータ処理部30内の構成をシンプルにすることができる。
【0088】
言い換えると、データ処理装置1では、コールバックスレッド34を追加したことにより、コールバック処理部41からAPI制御を実行することができるので、アプリケーション40の実装が容易である。特に、メディアデータ処理部30をミドルウェアとして実現した場合、アプリケーション40に影響を与えずに、ミドルウェア(メディアデータ処理部30)のバージョンアップを行うことが容易となる。
【0089】
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
【0090】
(B−1)上記の実施形態では、データ処理装置1において、音声ファイルの再生タイミングの制御を例として説明したがそれ以外のタイミング制御(例えば、動画像の再生タイミング等)に利用するようにしてもよい。
【0091】
(B−2)上記の実施形態では、イベントキュー35は、タイムアウトイベント専用のキューとして説明したが、イベントキュー33とイベントキュー35の割り振りは異なるものであってもよい。例えば、イベントキュー33を省略した構成としてもよい。
【0092】
また、上記の実施形態では、コールバックスレッド34は1つの構成として説明したが複数としてもよい。
【0093】
(B−3)上記の実施形態では、メディアデータ処理部30、アプリケーション40、及びシグナリング処理部50が同じコンピュータ上に構築された例について説明したが、それぞれ異なるコンピュータ上に構築するようにしてもよい。すなわち、データ処理装置1を構築する際の分散処理の構成は限定されないものである。