JP6205689B2 - データ処理装置及びプログラム - Google Patents

データ処理装置及びプログラム Download PDF

Info

Publication number
JP6205689B2
JP6205689B2 JP2012183503A JP2012183503A JP6205689B2 JP 6205689 B2 JP6205689 B2 JP 6205689B2 JP 2012183503 A JP2012183503 A JP 2012183503A JP 2012183503 A JP2012183503 A JP 2012183503A JP 6205689 B2 JP6205689 B2 JP 6205689B2
Authority
JP
Japan
Prior art keywords
processing means
data processing
event
thread
time
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.)
Active
Application number
JP2012183503A
Other languages
English (en)
Other versions
JP2014041480A (ja
Inventor
高詩 石黒
高詩 石黒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2012183503A priority Critical patent/JP6205689B2/ja
Publication of JP2014041480A publication Critical patent/JP2014041480A/ja
Application granted granted Critical
Publication of JP6205689B2 publication Critical patent/JP6205689B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、データ処理装置及びプログラムに関し、例えば、メディアデータをスレッド単位で処理するミドルウェアに適用し得る。
SIP端末に係るメディアデータ(例えば、音声や映像等のデータ)のデータ処理を行うサーバは、リアルタイムなメディア通信を行うためのライブラリ(データ処理プログラム)を備えるミドルウェアを用いて構築される場合がある。
例えば、IVR(Interactive Voice Response)装置や、電話会議サーバ等のメディアサーバ機能を用いて動作するサーバを新たに開発する場合、どの製品でも、メディアデータのデータ処理(例えば、符号化方式の変換処理)や、メディアデータの中継処理の基本的な動作自体は共通する処理が多い。そのため、メディアデータのデータ処理については、メディアデータを処理するライブラリを備えたミドルウェアを用いて開発を行うことで、開発期間の短縮、開発コストの低減、開発製品の高品質化等のメリットが得られる。
ところで、IVR等の電話音声のデータ処理を行うサーバでは、多数の呼について同時に処理する必要があるため、それぞれの呼にスレッドを割り当てて処理を行う構成が一般的である。スレッド単位で、電話音声のデータ処理を行う従来技術としては、例えば、特許文献1〜3の記載技術がある。
特許文献1では、呼ごとに生成される親スレッド内で生成される子スレッドの効率的な処理を容易に実現するために、子スレッド間で調整して処理を行い、親スレッドでの複雑な排他制御を行わないようにしている。
特許文献2では、シングルCPUを用いたコンピュータにおいて、TSS(タイム・シェアリング・システム)を利用したマルチタスク環境を実現するOS上で、音声データの処理を効率的に行うことについて記載されている。特許文献2では、TSSが各タスクに割り当てるクォンタム(処理単位時間)に依存せず、1つのクォンタムに複数のタスクのデータ処理を混在させることにより、TSSの仕様(クォンタム)に依存せず、効率的な音声データ処理を行うことができる。
特許文献3では、複数のスレッドが動作するプロセス内で、各スレッドが予め確保した所定の領域外のメモリ利用を行った場合でもプロセスの強制終了を回避することについて記載されている。特許文献3では、所定の領域外のメモリ利用を行うスレッドが発生した場合には、プロセス全体に影響がないと判断した場合のみ当該スレッドのみを削除している。
特開2003−150391号公報 特開2006−185303号公報 特開2005−284630号公報
ところで、メディアデータを処理するミドルウェアを利用したサーバでは、当該ミドルウェアと、当該ミドルウェアを利用して動作するアプリケーションとの間で、処理タイミングは同期していることが望ましい。例えば、IVR等のサーバで、音声ファイルの再生タイミングを制御する場合には、アプリケーション側での処理待ち時間(実時間)と、ミドルウェア側のスレッドで処理した処理量(例えば、パケット数)が同期していることが望ましい。したがって、このような場合、従来のメディアサーバでは、ミドルウェア側の処理量に応じてアプリケーション側の待ち時間を補正する必要がある。このような問題を解決する方法としては、例えば、ミドルウェア内で動作する多数のスレッドとアプリケーションとで、共通の時計を用いて同期させることが考えられるが、その場合、ミドルウェアの利便性(アプリケーション開発の効率)や汎用性を低下させたり(アプリケーションの仕様を制限させる)、ミドルウェアの処理量の増大につながる。
また、特許文献1〜3の記載技術を、メディアサーバのミドルウェアに適用した場合でも、アプリケーションとミドルウェア内の多数のスレッドとの処理タイミングについて、効率的に同期させる構成については記載されていない。
のため、メディアデータの処理を行うスレッドについて、処理タイミングを効率的に制御することができるデータ処理装置及びプログラムが望まれている。
第1の本発明のデータ処理装置は、(1)アプリケーション処理手段の制御に応じて、メディアデータの処理を行うメディアデータ処理手段を備え、(2)上記メディアデータ処理手段は、(2−1)周期的に起動して、メディアデータの再生及び再生停止を行うデータ処理手段と、(2−2)上記データ処理手段が起動する度にカウンタ値が加算されるカウンタを用いて時間の計測を行うタイマ手段とを備え、(3)上記データ処理手段は、上記アプリケーション処理手段の制御に応じて、当該データ処理手段が行う上記再生及び上記再生停止に係る時間計測を、上記タイマ手段を用いて行い、(4)上記データ処理手段は、上記アプリケーション処理手段から指定される、メディアデータを再生または再生停止する処理時間に亘り周期的に起動して処理を行うとともに、上記タイマ手段に当該処理時間をタイムアウト時間とする時間の計測を実行させ、上記タイマ手段でタイムアウトが発生した場合のタイムアウトイベントを出力し、(5)上記メディアデータ処理手段は、(6)それぞれの上記データ処理手段で発生した、タイムアウトイベントのみを処理する第1のイベント処理手段と、(7)それぞれの上記データ処理手段で発生したタイムアウトイベント以外のイベントを処理する第2のイベント処理手段と、(8)上記第1のイベント処理手段でタイムアウトイベントが保持されると、当該タイムアウトイベントに係る上記データ処理手段への所定の処理を、上記アプリケーション処理手段に要求するコールバック要求処理手段とをさらに備えることを特徴とする。
第2の本発明のデータ処理プログラムは、コンピュータを、(1)アプリケーション処理手段の制御に応じて、メディアデータの処理を行うメディアデータ処理手段として機能させ、(2)上記メディアデータ処理手段は、(2−1)周期的に起動して、メディアデータの再生及び再生停止を行うデータ処理手段と、(2−2)上記データ処理手段が起動する度にカウンタ値が加算されるカウンタを用いて時間の計測を行うタイマ手段とを備え、(3)上記データ処理手段は、上記アプリケーション処理手段の制御に応じて、当該データ処理手段が行う上記再生及び上記再生停止に係る時間計測を、上記タイマ手段を用いて行い、(4)上記データ処理手段は、上記アプリケーション処理手段から指定される、メディアデータを再生または再生停止する処理時間に亘り周期的に起動して処理を行うとともに、上記タイマ手段に当該処理時間をタイムアウト時間とする時間の計測を実行させ、上記タイマ手段でタイムアウトが発生した場合のタイムアウトイベントを出力し、(5)上記メディアデータ処理手段は、(5−1)それぞれの上記データ処理手段で発生した、タイムアウトイベントのみを処理する第1のイベント処理手段と、(5−2)それぞれの上記データ処理手段で発生したタイムアウトイベント以外のイベントを処理する第2のイベント処理手段と、(5−3)上記第1のイベント処理手段でタイムアウトイベントが保持されると、当該タイムアウトイベントに係る上記データ処理手段への所定の処理を、上記アプリケーション処理手段に要求するコールバック要求処理手段とをさらに備えることを特徴とする。
発明によれば、メディアデータの処理を行うスレッドについて、処理タイミングを効率的に制御することができる。
実施形態に係るデータ処理装置の機能的構成について示したブロック図である。 実施形態に係る音声ファイルの再生スケジュールの例(その1)について示したタイミングチャートである。 実施形態に係る音声ファイルの再生スケジュールの例(その2)について示したタイミングチャートである。 実施形態に係るデータ処理装置の動作について示したシーケンス図(その1)である。 実施形態に係るデータ処理装置の動作について示したシーケンス図(その2)である。 実施形態に係るデータ処理装置の動作について示したシーケンス図(その3)である。
(A)主たる実施形態
以下、本発明によるデータ処理装置及びプログラムの一実施形態を、図面を参照しながら詳述する。
(A−1)実施形態の構成
図1は、この実施形態のデータ処理装置1及び周辺装置との接続構成を示すブロック図である。
データ処理装置1は、ネットワーク6に接続する端末2(2−1、2−2)に対して、メディアデータ処理サービスを提供するメディアサーバである。この実施形態では、例として、データ処理装置1は、IVRとして機能するサーバ(メディアサーバ)であるものとして説明するが、データ処理装置1が提供するメディアデータ処理サービスの内容や、提供先については限定されないものである。
図1に示すように、データ処理装置1は、例えば既存のPCやワークステーション等のハードウェア10上に汎用OS20を搭載したプラットフォーム上に構築されているものとする。汎用OS20は、例えば、Linux(登録商標)やWindows(登録商標)等の汎用的なOSを適用することができる。
そして、汎用OS20上には、シグナリング処理を行うシグナリング処理部50と、スレッド31を用いてメディアデータ処理を行うメディアデータ処理部30とが搭載されている。さらに、データ処理装置1には、メディアデータ処理部30及びシグナリング処理部50を利用したメディアデータ処理サービスを提供するアプリケーション40が搭載されている。
すなわち、アプリケーション40は、メディアデータ処理部30及びシグナリング処理部50を利用して、端末2(2−1、2−2)に対してIVRのサービスを提供するアプリケーションとして機能する。
メディアデータ処理部30は、アプリケーション40の制御に応じて、ネットワーク6上の通信装置(端末2等)に対するメディアデータサービスを提供するミドルウェアである。メディアデータ処理部30は、アプリケーション40から1つの呼(セッション)について、メディアデータサービスが要求されると、当該呼に対するスレッド31を生成する。そして、メディアデータ処理部30には、スレッド31が実行するメディアデータ処理のライブラリ(処理プログラムの集合体)が備えられており、スレッド31はそれらのライブラリを利用して、アプリケーション40の制御に応じたメディアデータ処理を実行する。図1では、メディアデータ処理部30には、N個のスレッド31(31−1〜31−N)が生成された状態について示している。なお、メディアデータ処理部30で、同時に生成されるスレッド31の数は限定されないものである。
なお、メディアデータ処理部30は、プロセッサやメモリ等を有するコンピュータ(ハードウェア10)に、実施形態のデータ処理プログラムを実行させることにより実現することができる。
API処理部32は、API(Application Program Interface)により、アプリケーション40からの制御指示を受付ける(機能呼出を受付ける)ためのインタフェースである。アプリケーション40は、API処理部32の仕様(APIの仕様)に基づいた制御指示を供給することにより、メディアデータ処理部30を利用したメディアデータ処理を実行することができる。APIの機能は、例えば、セッション開始/停止、音声ファイル再生開始/停止などがある。
メディアデータ処理部30では、アプリケーション40からAPI処理部32にセッション開始が指示された場合に、当該セッションに対応するスレッド31が生成される。そして、アプリケーション40では、各セッションのIDと、各セッションに対応するスレッド31のIDが紐づけて管理されることになる。
そして、アプリケーション40から、いずれかのスレッド31に対する制御指示があった場合には、API処理部32は、その制御指示に対応するスレッド31(例えば、スレッドのID等により特定する)に、当該制御指示を伝達する。
また、この実施形態では、API処理部32と各スレッド31との間は、直接通信する構成ではなく、共有メモリ36を媒体として情報伝達する構成となっている。これは、すべてのスレッド31が常に起動しているわけではないため、API処理部32と各スレッド31との間で、効率的に情報伝達するための構成である。したがって、アプリケーション40からの制御指示をいずれかのスレッド31に伝達する場合、API処理部32は、共有メモリ36にスレッドのIDを付した情報(指示内容を記述した情報)を共有メモリ36に格納する。そして、各スレッド31は、起動する度に共有メモリ36を確認して、自己への指示の情報が格納されていれば、その情報を取得して処理を行う。
イベントキュー33は、各スレッド31で発生したイベント(例えば、セッション開始等)を一旦保持して、アプリケーション40に報告する処理を行うキューである。
イベントキュー35は、スレッド31で所定時間を計時(計測)する処理(以下、「タイマ処理」と呼ぶ)によるタイムアウト(タイマ満了)に伴って発生するイベント(以下、「タイムアウトイベント」と呼ぶ)を一旦保持して、コールバックスレッド34に供給する処理を行うキューである。コールバックスレッド34は、スレッド31からのタイムアウトイベントの供給を受けると、アプリケーション40のコールバック処理部41に、当該スレッド31に対応するコールバック処理を実行させるものである。コールバック処理とは、スレッド31で、タイムアウトイベントが発生した場合に、アプリケーション40から当該スレッド31に対して実行されるべき次のステップの処理(例えば、音声ファイルの再生停止の制御指示等)について、メディアデータ処理部30側(コールバックスレッド34)から実行を促す処理である。
そして、コールバックスレッド34は、タイムアウトイベントが供給されると、アプリケーション40のコールバック処理部41に、当該タイムアウトイベントに対応するコールバック処理(当該タイムアウトイベントの発行元のスレッド31に対する制御指示の処理)を実行させる。例えば、アプリケーション40では、スレッド31に対してタイマ処理を実行させる際に、当該タイマ処理に対応するコールバック処理を定義した情報をコールバック処理部41に設定しておくものとする。そして、コールバック処理部41は、当該スレッド31で、当該タイマ処理に対応するタイムアウトイベントが発行されると、予め設定されたコールバック処理(当該スレッド31に対する制御指示)をアプリケーション40本体に実行させるものとする。
このように、データ処理装置1では、スレッド31からアプリケーション40へのタイマイベントに伴うコールバック処理専用の伝達経路(コールバックスレッド34及びイベントキュー35)が設定されているものとする。
この実施形態では、API処理部32と、スレッド31とは、共有リソース(メモリや変数等)ヘのアクセスが生じるため、排他制御により、同時に動作することが出来ない構成となっているものとする。そのため、データ処理装置1では、API処理部32とスレッド31との処理が競合してデッドロックしないように、スレッド31とは別にコールバックスレッド34を追加している。
この実施形態では、メディアデータ処理部30において、各スレッド31は、定期的に起動(以下、「周期起動」と呼ぶ)して処理を行うものとする。この実施形態では、例として、スレッド31は、メディアデータ処理に係る呼(セッション)が起動すると、20ms周期で周期起動し、周期起動したときに、メディアデータ処理として、メディアデータの処理などを実行する。
ここでは、各スレッド31は、周期起動した場合、その周期起動のインターバル分のメディアデータの処理を実行するものとする。例えば、スレッド31が音声データファイルから、音声データの符号化及びRTP(Real−time Transport Protocol)パケット生成・送信処理を行う場合を想定する。この場合、スレッド31は、周期起動する度に、20ms分の音声データについて符号化及びRTPパケットの生成・送信処理を行うことになる。
各スレッド31が処理するメディアデータの保存先は限定されないものであり、例えば、汎用サーバなどのハードディスクに保存されているものでも良いし、ネットワーク6で接続されている別サーバ上のファイルであっても良いし、メモリ上に展開されていても良い。各スレッド31は、セッション開始、セッション停止、音声ファイル再生開始、音声ファイル再生停止などの契機でイベント生成して、イベントキュー33に供給(アタッチ)する。この実施形態では、例として、各スレッド31は、アプリケーション40が保持している音声ファイルF1を取得し、音声ファイルF1の音声データを符号化(例えば、G.711などのCodecでエンコード)して、RTPパケットのペイロードに挿入し、端末2に向けて送出する処理を行うものとする。以下では、各スレッド31が音声ファイルF1からRTPパケット生成して送信する処理を「再生処理」とも呼ぶものとする。
各スレッド31は、周期起動する度にインクリメントされるカウンタを用いて時間計測を行うタイマ処理部311を有している。各スレッド31では、このタイマ処理部311に基づいたタイミングで、アプリケーション40から指示されたタイマ処理を行う。例えば、アプリケーション40から1秒間の音声ファイル再生処理(1秒間を計時するタイマ処理及び音声ファイルの再生処理)の制御指示があった場合には、50回の周期起動(20ms×50=1s)が行われたときに、1秒間分のメディアデータが処理されたものとして取り扱う。
(A−2)実施形態の動作
次に、以上のような構成を有するこの実施形態のデータ処理装置1の動作を説明する。上述の通り、この実施形態では、データ処理装置1はIVRとして機能するものである。そして、ここでは、例として、データ処理装置1から、端末2−1に対して音声ファイルF1の再生処理(音声データを挿入したRTPパケットの送信処理)を行う場合について説明する。具体的には、スレッド31−1が、アプリケーション40からの制御指示(APIを用いた制御指示)に基づいて音声ファイルの再生処理を行うものとする。
図2では、タイミングT100からタイミングT101までの10秒間音声ファイルF1を再生した後、タイミングT101からタイミングT102までの5秒間無音状態とし、さらにタイミングT102からタイミングT103までの間音声ファイルF1を再度再生する処理を行うことについて示している。言い換えると、図2では、音声ファイルF1を再生する動作を2回行い、再生間隔(無音期間)を5秒としている。なお、音声ファイルF1の再生時間については、10secの音声ファイルを準備しておき再生完了を契機として制御するようにして良いが、この実施形態では、タイマ処理で制御するものとして説明する。
アプリケーション40内で、図2に示すような音声ファイルの再生タイミングを記述する形式(記述言語)については限定されないものであるが、例えば、MSCML(IETF RFC5022:(Media Server ControI Markup Language(MSCML)andProtocol))を利用するようにしてもよい。
MSCMLでは、delay、repeat、durationといったパラメータを用いて再生タイミングを記述することができる。「delay」は、ファイル再生前に指定の時間分再生を遅延させることを示すパラメータである(ただし、初回の再生前には適用されない)。また、delayの期間中は無音となる。「repeat」は、音声ファイルの再生回数を示すパラメータである。なお、「repeat」に所定のパラメータを設定することにより、無制限(∞)のリピート再生の指定も可能である。「duration」は、音声ファイルの再生する時間(位置)を示すパラメータである。セッション(呼)開始からdurationに示される時間に達したとき、自動的にセッション(呼)が切断され、音声ファイル再生も終了する。
したがって、図2のタイミングチャートに示されるタイミングをMSCMLのパラメータで記述すると、「音声ファイル再生時間:10sec、delay:5sec、repeat:2、duration:−(無し)」となる。
また、図3では、「音声ファイル再生時間:10sec、delay:5sec、repeat:無制限(∞)、duration:35sec」とした場合の再生タイミングについて示したタイミングチャートとなっている。
この実施形態のアプリケーション40では、MSCMLにより記述された再生タイミングの制御情報に基づいて、スレッド31−1に対する制御内容(制御指示の内容や、次回のタイムアウトに伴うコールバック処理として設定する内容)の決定が行われる。
次に、上述の図3のようなタイミングで音声ファイル再生が行われた場合のデータ処理装置1内部の詳細な動作について、図4〜図6のシーケンス図を用いて説明する。
図4〜図6では、スレッド31−1で20msec間隔で発生する各周期起動についてそれぞれB101〜B1351のいずれかの符号を付している。そして、図4〜図6において、各周期起動に係る破線の内部に図示されたステップの処理は、スレッド31−1において、当該周期起動で実行される処理であることを示している。
また、図4〜図6のフローチャートの初期状態として、アプリケーション40の制御指示(セッション開始)に基づいて、メディアデータ処理部30にスレッド31−1が生成されているものとして説明する。
そして、アプリケーション40から、API処理部32に対して、スレッド31−1に係る10secを計時するタイマ処理の起動、及び、音声ファイルF1の再生開始の制御指示があったものとする。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納したものとする(S101、S102)。
その後、スレッド31−1は、周期起動して周期起動B101の処理(ステップS103〜S106の処理)が実行される。
周期起動B101において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識して、当該制御指示を取得する(S103)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、10secの計時(カウンタ値が500となるまでの計時)を行うタイマ処理を開始させる(S104)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生処理を開始する。スレッド31−1は、周期起動B101の段階では、音声ファイルF1の20msec分の音声の音声データについて再生処理を行う。また、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S105)。 そして、音声ファイルF1の再生処理を開始すると、スレッド31−1は、イベントキュー33に、再生処理を開始した旨のイベントを通知する(S106)。以上で、スレッド31−1による周期起動B101での処理が終了する。
そして、再生開始処理のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S107)。
そして、次の周期起動B102のタイミングを迎えると、スレッド31−1は、音声ファイルF1の次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S108)。
そして、スレッド31−1は、周期起動B102と同様の処理(ステップS106)の処理について繰り返し、タイマ処理部311のカウンタ値が499に達した状態で、周期起動B101から数えて500回目の周期起動B600を迎えたものとする。周期起動B600において、スレッド31−1は、後述するステップS202〜S203の処理を実行する。
周期起動B600では、スレッド31−1は、音声ファイルF1の、次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S201)。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は500となり、タイマ処理部311のタイムアウトを検出することになる(S202)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S203)。以上で、スレッド31−1による周期起動B600での処理が終了する。
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する(S203)。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S204)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルの再生停止の制御、及び、5secを計時するタイマ処理の起動制御が設定されているものとする。
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の定義に従って、API処理部32に対して、スレッド31−1に係る音声ファイルF1の再生停止、及び、5secを計時するタイマ処理の起動の制御指示を行う(S205、S207)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S206、S208)。
その後、スレッド31−1は、周期起動して周期起動B601の処理(ステップS209〜S212の処理)を実行する。
周期起動B601において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S209)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生停止処理を行う(S210)。そして、音声ファイルF1の再生停止処理を行うと、スレッド31−1は、イベントキュー33に、再生停止処理を実行した旨のイベントを通知する(S211)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、5secの計時(カウンタ値が250となるまでの計時)を行うタイマ処理を開始させる(S212)。以上で、スレッド31−1による周期起動B601での処理が終了する。
そして、再生処理停止のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S213)。
そして、スレッド31−1は、その後周期起動を繰り返し、周期起動の度にタイマ処理部311のカウンタ値をインクリメントする。そして、スレッド31−1は、タイマ処理部311のカウンタ値が249に達した状態で、周期起動B601から数えて249回目の周期起動B850を迎えたものとする。周期起動B850において、スレッド31−1は、後述するステップS301、S302の処理を実行する。
周期起動B850では、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は250となり、タイマ処理部311のタイムアウトを検出することになる(S301)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S302)。以上で、スレッド31−1による周期起動B850での処理が終了する。
なお、周期起動B601〜B850の間は、スレッド31−1は、無音の音声データの再生処理(周期起動ごとに20msec分の無音の音声データの再生処理)を行うようにしてもよい。ただし、端末2−1側で、RTPパケットが供給されない間無音の音声を出力する構成となっている場合には、上述のようなスレッド31−1からの無音の音声に係る再生処理は必要ない。
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S303)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルF1の再生開始の制御、及び、10secを計時するタイマ処理の起動制御が設定されているものとする。
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の設定に従って、API処理部32に対して、音声ファイルF1の再生開始の制御、及び、10secを計時するタイマ処理の起動制御の制御指示を行う(S304、S306)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S305、S307)。
その後、スレッド31−1は、周期起動して周期起動B851の処理(ステップS308〜S310の処理)が実行される。
周期起動B851において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S308)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、タイマ処理部311のカウンタ値を初期化(0)して起動し、10secの計時(カウンタ値が500となるまでの計時)を行うタイマ処理を開始させる(S309)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生処理を開始し、音声ファイルF1の最初の20msec分の音声の音声データについて再生処理を行う。また、スレッド31−1は、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S310)。
そして、音声ファイルF1の再生処理を開始すると、スレッド31−1は、イベントキュー33に、再生処理を開始した旨のイベントを通知する(S311)。以上で、スレッド31−1による周期起動B851での処理が終了する。
そして、再生開始処理のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S312)。
そして、スレッド31−1は、周期起動により再生処理を繰り返し、タイマ処理部311のカウンタ値が499に達した状態で、周期起動B851から数えて500回目の周期起動B1350を迎えたものとする。周期起動B1350において、スレッド31−1は、後述するステップS401〜S403の処理を実行する。
周期起動B1350では、スレッド31−1は、音声ファイルF1の、次の20msec分の音声の音声データについて再生処理を行い、さらに、タイマ処理部311のカウンタ値をインクリメントする処理を行う(S401)。そして、この時点で、スレッド31−1において、タイマ処理部311のカウンタ値は500となり、タイマ処理部311のタイムアウトを検出することになる(S402)。そして、スレッド31−1は、タイマ処理部311のタイムアウトを検出すると、タイムアウトイベントを、イベントキュー35に供給する(S403)。以上で、スレッド31−1による周期起動B1350での処理が終了する。
そして、イベントキュー35は、供給されたタイムアウトイベントを、コールバックスレッド34に供給する。そして、コールバックスレッド34は、供給されたタイムアウトイベントに対応するコールバック処理を、アプリケーション40(コールバック処理部41)に要求する(S404)。ここでは、アプリケーション40(コールバック処理部41)には、スレッド31−1に対する次のコールバック処理として、音声ファイルF1の再生停止の制御が設定されているものとする。
そして、アプリケーション40(コールバック処理部41)は、次のコールバック処理の定義に従って、API処理部32に対して、音声ファイルF1の再生停止の制御指示を行う(S405)。そして、API処理部32は、その制御指示の内容を記述した制御指示を共有メモリ36に格納する(S406)。
その後、スレッド31−1は、周期起動して周期起動B1351の処理(ステップS407〜S409の処理)が実行される。
周期起動B1351において、スレッド31−1は、まず、共有メモリ36の内容を確認して自己への制御指示が格納されていることを認識し、当該制御指示を取得する(S407)。
そして、スレッド31−1は、取得した制御指示の内容に基づいて、音声ファイルF1の再生停止処理を行う(S408)。そして、音声ファイルF1の再生停止処理を行うと、スレッド31−1は、イベントキュー33に、再生停止処理を実行した旨のイベントを通知する(S409)。以上で、スレッド31−1による周期起動B601での処理が終了する。
そして、再生処理停止のイベントが通知されたイベントキュー33は、そのイベントを保持して、アプリケーション40に通知する(S410)。
(A−3)実施形態の効果
この実施形態によれば、以下のような効果を奏することができる。
(A−3−1)データ処理装置1では、スレッド31の側で、タイマ処理部311のカウンタを用いたタイマ処理を実行するようにしたので、正確な再生タイミング制御が可能である。
また、スレッド31のタイマ処理部311において、周期起動ごとにカウンタをインクリメントしていくだけでタイマ処理を行うことができる。すなわち、データ処理装置1では、アプリケーション40側で、タイマ処理に係る処理を実装する必要がなく、タイマ処理の追加による処理負荷増加はほとんど発生しない。
(A−3−2)データ処理装置1では、スレッド31からアプリケーション40へのタイマイベントに伴うコールバック処理専用の伝達経路(コールバックスレッド34及びイベントキュー35)が設定されている。これにより、データ処理装置1では、シンプルな構成で迅速にタイムアウトイベントに伴うコールバック処理を実行することができる。すなわち、データ処理装置1では、効率的にタイムアウトイベントに伴うコールバック処理を実行することができる。
なお、データ処理装置1において、上述のコールバック処理専用の伝達経路を省略するようにしてもよいが、その場合、コールバック処理と同様の処理の効率が低下することになる。例えば、スレッド31から、イベントキュー33を介して、アプリケーション40にタイムアウトイベントの発生(例えば、音声ファイルの再生開始後にタイムアウトが発生した旨のイベント)を通知し、アプリケーション40側でそのイベントの内容を解析して次の処理(例えば、音声ファイル再生の停止の処理)を決定して、API処理部32経由でスレッド31に命令するようにしてもよい。しかし、この場合、アプリケーション40でのイベント解析や、判断処理が必要になるため、上述のコールバック処理に係る伝達経路の方が、少ない処理量で高速に次の処理を実行することが可能になる。
また、タイムアウトイベント以外のイベントについてもイベントキュー33に集中させる場合、イベントキュー33がボトルネックとなって処理が遅延する可能性がある。しかし、データ処理装置1のようにタイムアウトイベント専用の伝達経路を備えることにより、シンプルな構成で迅速にタイムアウトイベントに伴うコールバック処理を実行することができる。さらに、コールバック処理に対応する処理をメディアデータ処理部30内部だけで行う構成としてもよいが、アプリケーション40からAPIを用いてコールバックする伝達経路の方が、メディアデータ処理部30内の構成をシンプルにすることができる。
言い換えると、データ処理装置1では、コールバックスレッド34を追加したことにより、コールバック処理部41からAPI制御を実行することができるので、アプリケーション40の実装が容易である。特に、メディアデータ処理部30をミドルウェアとして実現した場合、アプリケーション40に影響を与えずに、ミドルウェア(メディアデータ処理部30)のバージョンアップを行うことが容易となる。
(B)他の実施形態
本発明は、上記の実施形態に限定されるものではなく、以下に例示するような変形実施形態も挙げることができる。
(B−1)上記の実施形態では、データ処理装置1において、音声ファイルの再生タイミングの制御を例として説明したがそれ以外のタイミング制御(例えば、動画像の再生タイミング等)に利用するようにしてもよい。
(B−2)上記の実施形態では、イベントキュー35は、タイムアウトイベント専用のキューとして説明したが、イベントキュー33とイベントキュー35の割り振りは異なるものであってもよい。例えば、イベントキュー33を省略した構成としてもよい。
また、上記の実施形態では、コールバックスレッド34は1つの構成として説明したが複数としてもよい。
(B−3)上記の実施形態では、メディアデータ処理部30、アプリケーション40、及びシグナリング処理部50が同じコンピュータ上に構築された例について説明したが、それぞれ異なるコンピュータ上に構築するようにしてもよい。すなわち、データ処理装置1を構築する際の分散処理の構成は限定されないものである。
1…データ処理装置、10…ハードウェア、20…汎用OS、30…メディアデータ処理部、31…スレッド、311…タイマ処理部、31、31−1〜31−N…スレッド、32…API処理部、33…イベントキュー、34…コールバックスレッド、35…イベントキュー、36…共有メモリ、40…アプリケーション、41…コールバック処理部、50…シグナリング処理部。

Claims (2)

  1. アプリケーション処理手段の制御に応じて、メディアデータの処理を行うメディアデータ処理手段を備え、
    上記メディアデータ処理手段は、
    周期的に起動して、メディアデータの再生及び再生停止を行うデータ処理手段と、
    上記データ処理手段が起動する度にカウンタ値が加算されるカウンタを用いて時間の計測を行うタイマ手段とを備え、
    上記データ処理手段は、上記アプリケーション処理手段の制御に応じて、当該データ処理手段が行う上記再生及び上記再生停止に係る時間計測を、上記タイマ手段を用いて行い、
    上記データ処理手段は、上記アプリケーション処理手段から指定される、メディアデータを再生または再生停止する処理時間に亘り周期的に起動して処理を行うとともに、上記タイマ手段に当該処理時間をタイムアウト時間とする時間の計測を実行させ、上記タイマ手段でタイムアウトが発生した場合のタイムアウトイベントを出力し、
    上記メディアデータ処理手段は、
    それぞれの上記データ処理手段で発生した、タイムアウトイベントのみを処理する第1のイベント処理手段と、
    それぞれの上記データ処理手段で発生したタイムアウトイベント以外のイベントを処理する第2のイベント処理手段と、
    上記第1のイベント処理手段でタイムアウトイベントが保持されると、当該タイムアウトイベントに係る上記データ処理手段への所定の処理を、上記アプリケーション処理手段に要求するコールバック要求処理手段をさらに備えることを特徴とするデータ処理装置。
  2. コンピュータを、
    アプリケーション処理手段の制御に応じて、メディアデータの処理を行うメディアデータ処理手段として機能させ、
    上記メディアデータ処理手段は、
    周期的に起動して、メディアデータの再生及び再生停止を行うデータ処理手段と、
    上記データ処理手段が起動する度にカウンタ値が加算されるカウンタを用いて時間の計測を行うタイマ手段とを備え、
    上記データ処理手段は、上記アプリケーション処理手段の制御に応じて、当該データ処理手段が行う上記再生及び上記再生停止に係る時間計測を、上記タイマ手段を用いて行い、
    上記データ処理手段は、上記アプリケーション処理手段から指定される、メディアデータを再生または再生停止する処理時間に亘り周期的に起動して処理を行うとともに、上記タイマ手段に当該処理時間をタイムアウト時間とする時間の計測を実行させ、上記タイマ手段でタイムアウトが発生した場合のタイムアウトイベントを出力し、
    上記メディアデータ処理手段は、
    それぞれの上記データ処理手段で発生した、タイムアウトイベントのみを処理する第1のイベント処理手段と、
    それぞれの上記データ処理手段で発生したタイムアウトイベント以外のイベントを処理する第2のイベント処理手段と、
    上記第1のイベント処理手段でタイムアウトイベントが保持されると、当該タイムアウトイベントに係る上記データ処理手段への所定の処理を、上記アプリケーション処理手段に要求するコールバック要求処理手段と
    をさらに備えることを特徴とするデータ処理プログラム。
JP2012183503A 2012-08-22 2012-08-22 データ処理装置及びプログラム Active JP6205689B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012183503A JP6205689B2 (ja) 2012-08-22 2012-08-22 データ処理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012183503A JP6205689B2 (ja) 2012-08-22 2012-08-22 データ処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2014041480A JP2014041480A (ja) 2014-03-06
JP6205689B2 true JP6205689B2 (ja) 2017-10-04

Family

ID=50393690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012183503A Active JP6205689B2 (ja) 2012-08-22 2012-08-22 データ処理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP6205689B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7278632B2 (ja) * 2021-05-19 2023-05-22 株式会社ユニバーサルエンターテインメント 遊技機

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH086819A (ja) * 1994-06-17 1996-01-12 Hitachi Ltd デバイスドライバプログラムのテスト装置およびその方法
JP2904483B2 (ja) * 1996-03-28 1999-06-14 株式会社日立製作所 周期的プロセスのスケジューリング方法
JPH10333926A (ja) * 1997-06-03 1998-12-18 N T T Data:Kk プログラム実行管理方法、装置、及び記録媒体
JP2009230425A (ja) * 2008-03-21 2009-10-08 Toyota Motor Corp 情報処理装置
KR101242662B1 (ko) * 2009-12-03 2013-03-12 한국전자통신연구원 원격 플러그인 장치, 로봇 플러그인 실행 엔진 장치 및 로봇 플러그인 실행 시스템

Also Published As

Publication number Publication date
JP2014041480A (ja) 2014-03-06

Similar Documents

Publication Publication Date Title
CN110290180B (zh) 分布式任务调度方法、装置、计算机设备和存储介质
US11601361B2 (en) System and method for timely and uniform distribution for real-time packet transmission
US7835821B2 (en) Robot server for controlling robot, system having the same for providing content, and method thereof
US7437275B2 (en) System for and method of multi-location test execution
EP2675132B1 (en) System for dynamic stream management in audio video bridged networks
US20120284696A1 (en) Method, Apparatuses and a System for Compilation
CN111010614A (zh) 一种显示直播字幕的方法、装置、服务器及介质
Sojka et al. Modular software architecture for flexible reservation mechanisms on heterogeneous resources
JP2001043094A (ja) マイクロスケジューリング方法及び運営体制カーネル
KR20210146428A (ko) 구조화된 오디오 출력을 사용하여 재생 감지 및/또는 무선 스피커에서 비정렬된 재생에 적응
JP2009193583A (ja) 共同ワーキング・セッションを管理する方法、システムおよびコンピュータ・プログラム
WO2020135655A1 (zh) 音频处理方法、装置、终端和存储介质
JP6205689B2 (ja) データ処理装置及びプログラム
KR20070052641A (ko) 로봇 제어를 위한 로봇 서버, 이를 포함하는 컨텐츠 제공시스템 및 그 방법
CN109842590B (zh) 一种查勘任务的处理方法、装置及计算机可读存储介质
US9692831B1 (en) Pausing interactive sessions
CN113452853B (zh) 语音交互方法及装置、电子设备、存储介质
US20070116039A1 (en) Media flow converter for use in real-time delivery transactions
CN114745564A (zh) 服务调度方法及装置
CN112433870A (zh) 数据调用方法和装置、计算机可读存储介质、电子设备
US20180341644A1 (en) Method and system for activating virtual assistants without the presence of the user
JP5298055B2 (ja) 資源内に配置された制御対象機器を制御する機器制御装置、プログラム及び方法
US8139743B2 (en) Method for providing enhanced audio conferencing services in a telephony system
JP6035601B2 (ja) パケットリプレイ方法
KR100719416B1 (ko) 데이터 처리 장치 및 데이터 처리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161011

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170404

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170704

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170712

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: 20170808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170821

R150 Certificate of patent or registration of utility model

Ref document number: 6205689

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150