JP4238614B2 - ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 - Google Patents
ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP4238614B2 JP4238614B2 JP2003088944A JP2003088944A JP4238614B2 JP 4238614 B2 JP4238614 B2 JP 4238614B2 JP 2003088944 A JP2003088944 A JP 2003088944A JP 2003088944 A JP2003088944 A JP 2003088944A JP 4238614 B2 JP4238614 B2 JP 4238614B2
- Authority
- JP
- Japan
- Prior art keywords
- filter
- stream data
- data
- flow rate
- monitoring
- 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
Links
Images
Landscapes
- Electrophonic Musical Instruments (AREA)
- Complex Calculations (AREA)
Description
【発明の属する技術分野】
本発明は、ストリームデータ(動画データ、楽音データ等)を入力デバイスから入力(キャプチャ)させ、何らかの処理を施した後、前記入力デバイスとは別個の出力デバイスから出力するストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体に関する。
【0002】
【従来の技術】
マルチメディア・データなどのストリームデータの処理においては、データストリームは、何らかのタイミング情報に基づいて同期して入出力や処理がなされるようになっている。タイミング情報としては、物理クロックや、ストリームデータに含まれるタイムスタンプ情報等がある。
【0003】
このようなストリームデータを処理する装置においては、ストリームデータが入力される入力デバイスと、入力されたストリームデータを外部へ向けて出力する出力デバイスとがそれぞれ異なるクロックにより動作していることが多い。例えば、入力デバイスも出力デバイスも共に44.1KHzのクロックで動作していることになっていても、発振器が異なることにより、両者の動作クロックの周期が微妙にずれることがあり得る。これにより、デバイス間のデータのやり取りの際にデータがオーバーフローしたり逆に枯渇したりすることにより、ノイズの発生など出力データが望ましい形とならないことが生じ得るという問題がある。
また、各デバイスの処理能力が何らかの理由により変動することにより、データがオーバーフローしたり逆に枯渇したりすることが生じ得るという問題がある。
【0004】
このような問題は、こうしたストリームデータをソフトウエア的に構成する場合にも生じ得る。近年、パーソナルコンピュータ(PC)でストリームデータをソフトウエア的に処理するため、例えばマイクロソフト社のWINDOWS98などにおいては、USB(Universal Serial Bus)やIEEE1394インターフェースを用いてPCと外部機器を接続するために、DirectShow(登録商標)と呼ばれるストリームデータをPC上で処理するのに適したAPI(Application Program Interface)が提供されている。DirectShowにおいては、データに対する何らかの処理を行うモジュール(これをフィルタという)を相互に接続して目的とするデータ処理を行っている。
【0005】
こうした相互接続ソフトウエア・フィルタにより構成されるデータ処理システムにおいて、各フィルタの動作クロックが微妙にずれているような場合、これにより、データがオーバーフローしたり逆に枯渇したりすることにより、出力データが望ましい形とならないことが生じ得るという問題がある。
また、フィルタの一部がユーザ・モードで作成されたり、カーネル・モードであっても低いプライオリティで作成されるような場合には、データがオーバーフローしたり逆に枯渇したりすることにより、出力データが望ましい形とならないことが生じ得るという問題がある。例えば、オーディオ・データの処理システムに含まれるイフェクタ・フィルタは、イフェクトの設定をユーザが操作するためのユーザインタフェース機能を持つため、ユーザ・モードにより作成されることが多い。なお、ここで「カーネル・モード」とは、マイクロソフト社製のWINDOWS(登録商標)などのOSにおいて、非常に高いプライオリティが与えられた動作モードであり、コードはすべてのハードウエアとすべてのメモリに直接アクセス可能なモードをいう。また、「ユーザ・モード」とは、同様にWINDOWS(登録商標)などのOSにおいて、プライオリティが低く設定された動作モードであり、コードはハードウエアに直接アクセスすることができないようにされているモードをいう。
【0006】
この場合、カーネル・モードのフィルタとユーザ・モードのフィルタとの間やユーザ・モードのフィルタの間でのデータの受け渡しにはカーネル・モードのフィルタ間のデータの受け渡しと比べて大きな処理負荷がかかるため、他のタスクの影響によりイフェクタ・フィルタの処理能力が変動して、イフェクタ・フィルタの前後においてデータのオーバーフロー又は枯渇が生じ、ストリームデータの理想的な出力ができなくなったり、ノイズが発生したりするという問題が生じる。
また、イフェクタ・フィルタがカーネル・モードで作成されていても、低いプライオリティで作成されている場合には、他のタスクの影響によりイフェクタ・フィルタの処理能力が変動し、データのオーバーフロー又は枯渇が生ずることが起こり得る。
【0007】
この問題に鑑みた先行技術として、特許文献1に記載される同期化装置が知られている。この装置は、位置時間値(データストリームに関連する時間インターバル情報に基づく値であって、処理されるデータストリームの位置を反映するもの)、物理時間値(ハードウエア・オシレータまたはクロックに基づく値)、相関時間値(位置時間値などの指定時間値を参照時間値と共に提供するもの)という3つの異なる時間値を持ち、多数のデバイスで共通に利用することにより複数のストリームデータの入力及び出力タイミングのずれを最小化するようにしている。
【0008】
【特許文献1】
特開平10-283199号(7頁他)
【0009】
【発明が解決しようとする課題】
しかし、この公報に開示の装置では、入力及び出力タイミングのずれを最小化することはできるが、3つの異なる時間値を利用するため、処理レートの整合等のために複雑な制御を必要とした。本発明は、以上のような問題点に鑑みてなされたものであり、クロック制御のための複雑な構成を必要とせず、入力及び出力タイミングのずれを最小化することを目的とする。
【0010】
【課題を解決するための手段】
上記目的達成のため、本出願の第1の発明に係るストリームデータ処理システムは、相互接続ソフトウエア・フィルタにより構成されるストリームデータ処理システムにおいて、前記相互接続ソフトウエア・フィルタは、外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタと、前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタと、前記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタと、前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタとを含み、前記キャプチャ・フィルタは、前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、前記キャプチャ・フィルタに保持された一定区間のデータ配列のサンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整するように構成したことを特徴とする。
【0011】
この第1の発明によれば、ストリームデータの流量が流量監視フィルタにより監視され、この監視結果に基づきデータ流量が調整される。
【0012】
この第1の発明において、前記流量監視フィルタは、その後段に配置されるフィルタのバッファ情報に基づいて前記流量を判断するようにするのが好適である。さらに、前記キャプチャ・フィルタは、補間により前記データを挿入又は削除するのが好ましい。
また、前記流量監視フィルタは、前記後段に配置されるフィルタへの前記ストリームデータの出力を停止させた状態で前記バッファ情報を取得するようにすることができる。
また、前記流量監視フィルタは、ユーザ・モードで作成されるフィルタのバッファ情報に基づいて前記流量を判断するようにすることができる。この場合において、前記流量監視フィルタは、前記ストリームデータの流量に関する情報を前記キャプチャ・フィルタにフィードバックするように構成され、前記キャプチャ・フィルタは、前記フィードバックされた情報に基づき、前記流量が所定量より小さい場合には、前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入することにより前記ストリームデータの流量を調整すると共に、前記流量が所定量より大きい場合には、バッファを間引く処理を実行することにより前記ストリームデータの流量を調整するように構成することができる。
【0013】
上記目的達成のため、本出願の第2の発明に係るストリームデータ処理方法は、互接続ソフトウエア・フィルタを生成してストリームデータを処理するストリームデータ処理方法において、外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタを生成する工程と、前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタを生成する工程と、記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタを生成する工程と、前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタを生成する工程と、前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、、前記キャプチャ・フィルタに保持された一定区間のデータ配列のサンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記イフェクタ・フィルタにおける前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整する工程とを備えたことを特徴とする。
【0014】
上記目的達成のため、本出願の第3の発明に係るストリームデータ処理プログラムは、相互接続ソフトウエア・フィルタを生成してストリームデータを処理するストリームデータ処理方法において、外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタを生成する工程と、
前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタを生成する工程と、前記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタを生成する工程と、前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタを生成する工程と、前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、前記キャプチャ・フィルタに保持された一定区間のデータ配列のサンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記イフェクタ・フィルタにおける前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整する工程とをコンピュータに実行させるように構成されたことを特徴とする。また、このストリームデータ処理プログラムをコンピュータで読み取り可能な記録媒体に記録するようにしてもよい。
【0015】
【発明の実施の形態】
次に、本発明の実施の形態を、図面に基づいて説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るストリームデータ処理システムのハードウエア構成を示すブロック図である。本実施の形態では、ストリームデータは、エレキギター、電子ピアノなどの楽器1より出力される楽音データであり、これをパーソナルコンピュータ(PC)2で処理し、スピーカ3より出力するものとする。PC2は、CPU11、ROM12、RAM13、ハードディスクドライブ(HDD)14等を有している。CPU11は、オペレーティングシステム(OS)の制御の下、各種のプログラムを実行するようにされている。
【0016】
ROM12は、電源投入時に起動するブート・プログラムその他を記憶している不揮発性メモリである。また、RAM13は、起動された各種のプログラムを一時記憶するとともに、各種データを処理するための作業領域を提供する。HDD14は、OS及び各種プログラムを記憶するための磁気ディスクを駆動するためのドライブ装置である。
【0017】
インターフェース(I/F)15は、楽器1よりの楽音データを所定の方式に基づいて変換しCPU11に出力する。また、オーディオ・コントローラ16は、楽音信号の出力処理を行うための制御装置である。また、各種入力装置(マウス、キーボード等)からの入力は、I/F17を介してCPU11に入力される。
【0018】
次に、PC2で実行されるプログラムのソフトウエア構成について説明する。図2は、PC2で実行されるプログラムのソフトウエア構造を、ハードウエア構成との対応関係を含めて図示したものである。
本実施の形態では、マイクロソフト社のDirectShow(登録商標)というAPIによりストリームデータが処理されるものとする。
【0019】
このDirectShowの仕組みにおいて、ソフトウエアは、フィルタと呼ばれる複数のオブジェクトを生成することにより構成され、また、各フィルタは、図示を略すフィルタ・グラフと呼ばれるアーキテクチャにより接続される。具体的には、本実施の形態のソフトウエアは、図2に示すように、キャプチャ・フィルタ21、イフェクタ・フィルタ22、流量監視フィルタ23、レンダラ・フィルタ24から構成される。この例では、イフェクタ・フィルタ22はユーザ・モードで、残余のフィルタはカーネル・モードで作成されているが、イフェクタ・フィルタ22はカーネル・モードで作成してもよい。また、この実施の形態では、フィルタ21〜24は同一周波数の所定のクロックで動作するように設定されるが、様々な誤差要因により、実際のクロックの周期には、各フィルタ間で微妙なズレが存在しているものとする。
【0020】
キャプチャ・フィルタ21は、楽器1からの楽音データを取得するとともに、後段のイフェクタ・フィルタ22等が認識できるようなフォーマットに変換して出力する機能を備えたものである。キャプチャ・フィルタ21は、USBバッファ21aと、リングバッファ21bと、出力待ちバッファ21cとを備えている。
楽器1からの楽音データは、最初にUSBバッファ21aに保持され、順次リングバッファ21b、出力待ちバッファ21cへと転送される。リングバッファ21bは入力データのフォーマット変換の処理などに用いられる。出力待ちバッファ21cの構成は様々に変更できるが、ここでは1024バイトのバッファが8個割り当てられるようにされたものとする。
【0021】
イフェクタ・フィルタ22は、キャプチャ・フィルタ21から出力される楽音データに任意の変化を加えるためのものであり、入力バッファ22aと,リングバッファ22bと、出力待ちバッファ22cとを備えている。入力バッファ22aは、前段のキャプチャ・フィルタ21内の出力待ちバッファ21cと同様の構成とすることができる。入力バッファ22aは、出力待ちバッファ21cとの間で所定のクロックに基づきバッファの受け渡しを行う。そして、入力バッファ22a、リングバッファ22b、出力待ちバッファ22cへと順次データの転送が行われる。リングバッファ22bは楽音データのイフェクト付加の処理などに用いられる。出力待ちバッファ22cも、出力待ちバッファ21cや入力バッファ22aと同様の構成とすることができる。
このイフェクタ・フィルタ22は、ユーザの多様な要請に応えるため様々なものが作られるとともに、ユーザが直接に操作の対象とする部分であるので、通常、ユーザ・モードで作られることが多い。
【0022】
流量監視フィルタ23は、イフェクタ・フィルタ22とレンダラ・フィルタ24との間に接続されており、入力バッファ23a、リングバッファ23b、出力待ちバッファ23cとを備えている。入力バッファ23a,出力待ちバッファ23cの構成は、前段の入力バッファ22a,出力待ちバッファ22cの構成と同じでよい。入力バッファ23aは、前段のイフェクタ・フィルタ22内の出力待ちバッファ22cとの間で所定のクロックに基づきバッファの受け渡しを行う。以下、順次入力バッファ23a、リングバッファ23b、出力待ちバッファ23cへとデータの転送が行われる。
また、この流量監視フィルタ23は、フィルタ21−24により構成されるストリームデータ処理システムのデータストリーム中のデータの流量を監視するとともに、この監視の結果をキャプチャ・フィルタ21やイフェクタ・フィルタ22に向けて出力(フィードバック)する機能を有する。詳細は後述する。
【0023】
レンダラ・フィルタ24は、ストリームデータをオーディオ・コントローラ16が認識できるフォーマットで出力するためのフィルタであり、レンダリングするデータを保持するためのバッファ24aを備えている。バッファ24aは、前段の出力待ちバッファ23c等と同様の構成でよい。バッファ24aは、出力待ちバッファ23cとの間で所定のクロックに基づきバッファの受け渡しを行い、適宜オーディオ・コントローラ16へデータを出力する。
なお、上記のフィルタ21〜24は、上述のように、基本的には同一の動作クロックにより駆動されているが、様々な誤差要因により微妙な周波数のズレが生じ得る。こうした周波数のズレがあり流量が多い場合には、上流のフィルタのバッファと下流のフィルタのバッファとの間でのデータの受け渡しにおいて、下流のフィルタの入力バッファにデータが溜まるのではなく、上流のフィルタの出力待ちバッファの方にデータが溜まることになる。
【0024】
マネージャ25は、流量監視フィルタ23の監視タイミングを制御したり、この監視結果などの監視に関する情報に基づいてキャプチャ・フィルタ21からの出力、及びレンダラ・フィルタ24への入力、出力を制御したりするなど、各フィルタ間のデータ伝送の管理を担当する部分である。
【0025】
次に、本実施の形態の作用を、図3に示すフローチャートに基づいて説明する。
HDD14よりストリームデータ処理プログラムが読み込まれ、キャプチャ・フィルタ21、イフェクタ・フィルタ22、流量監視フィルタ23、レンダラ・フィルタ24等のフィルタが生成される。そして、楽器1よりPC2に楽音データが入力されると、このデータがキャプチャ・フィルタ21、イフェクタ・フィルタ22、流量監視フィルタ23、レンダラ・フィルタ24の順に転送され、スピーカ3に向けて出力される
【0026】
この間、流量監視フィルタ23は、データ流量を監視するため、レンダラ・フィルタ24内の複数のバッファ24aのうちレンダリング中のバッファの数Crをカウントする(S1)。
入力バッファ24aのレンダリング中のバッファ数Crをカウントするようにしているのは、キャプチャ・フィルタ21のクロックとレンダラ・フィルタ24のクロックとの差が生じた場合に、その影響が反映され易いためである。すなわち、キャプチャ・フィルタ21のクロックがレンダラ・フィルタ24のクロックより速い状態においては、流量監視フィルタ23の出力待ちバッファ23cでデータが溜まり、レンダラ・フィルタ24の入力バッファ24aでレンダリング中のバッファ数Crが少なくなる。この場合には、データ流量が多すぎると判断できる。一方、キャプチャ・フィルタ21のクロックがレンダラ・フィルタ24のクロックより遅い状態においては、流量監視フィルタ23の出力待ちバッファ23cに保持されるデータが減り、レンダラ・フィルタ24の入力バッファ24aでレンダリング中のバッファ数Crが多くなる。この場合には、データ流量が少なすぎると判断できる。このレンダリング中のバッファ数Crのカウント結果に基づき、データ流量を制御する変数insertpoint、rejectpointを変化させる。
【0027】
バッファ24aにおいてレンダリング中のバッファ数Crのカウントは、流量監視フィルタ23内の出力待ちバッファ23cの数をカウントすることにより実行してもよい。しかし、レンダリング中のバッファの何割がレンダリングが完了しているものかまで推測することは困難である。そこで、流量監視フィルタ23の出力待ちバッファ23cのキューにバッファが入れられてからレンダラ・フィルタ24に出力されるまでの時間Twにより、バッファ24aにおいてレンダリング中のバッファ数Crを演算(カウント)する。時間Twが大きければ流量監視フィルタ23内の出力待ちバッファ23cの数は大きく、つまりレンダリング中のバッファ数Crは小さくなる。逆に、時間Twが小さければ流量監視フィルタ23内の出力待ちバッファ23cの数は小さく、つまりレンダリング中のバッファ数Crは大きくなる。
【0028】
なお、バッファ数Crを演算する場合には、流量監視フィルタ23のストリームが起動されたときに、まず下流のレンダラ・フィルタ24にはデータを送らないで、出力待ちバッファ23cにキューイングされているバッファの数をカウントし、バッファが一定時間キューイングされなくなった時のカウント値を出力待ちバッファ23cとレンダラ・フィルタ24との間のデータのやり取りに使用されるバッファ総数Cbとする。
レンダリング中のバッファ数Crは、
【0029】
【数1】
Cr=Cb−Tw×R/Lb
ただし、
Lb:バッファ24aの各バッファのデータ長
R :ストリームデータのデータの周期に対応した単位時間当たりの転送データの代表値
【0030】
として求められる。ここで、Twの値は、例えば10回程度の移動平均を取ったものとすると、高い精度でCrを演算することができる。
【0031】
Crが演算されたら、流量監視フィルタ23は、この演算値Crに基づいて変数insertpoint、rejectpointを決定する(S2)。変数insertpoint、rejectpointは、Crが所定の範囲内にあり、データ流量が過不足なく適当である場合にはinsertpoint=0、rejectpoint=0に設定される。Crが所定の範囲より大きく、データ流量が不足している場合には、insertpoint>0、rejectpoint=0とされ、一方、Crが所定の範囲より小さく、データ流量が過剰である場合には、insertpoint=0、rejectpoint>0とされる。
【0032】
流量監視フィルタ23は、この変数insertpoint、rejectpointをキャプチャ・フィルタ21に向けて出力する(S3)。
キャプチャ・フィルタ21は、この変数insertpoint、rejectpointが、0であるか又は0より大きいかを判定する(S4)。
キャプチャ・フィルタ21は、insertpoint>0の場合には、データを挿入するデータ挿入処理を実行する(S5)。すなわち、キャプチャ・フィルタ21のUSBバッファ21aでキャプチャした一定区間のデータ配列Sのデータ数をNとした場合、新しく生成するデータ配列Cのデータ数MをM=N+pとする。
一方、rejectpoint>0の場合には、キャプチャ・フィルタ21はデータを削除するデータ削除処理を実行する(S6)。すなわち、キャプチャ・フィルタ21でキャプチャした一定区間のデータ配列Sの長さをNとした場合、新しく生成するデータ配列Cの長さMをM=N−pとする。S4、S5が終了したら、S1に戻って再度Crのカウントを行う。
【0033】
次に、キャプチャ・フィルタ21におけるデータ補間によるデータの追加及び削除の方法を、図4を用いて説明する。
元のデータ列Sが図4に示すごとく1区間にNサンプルのデータを含むものである場合に、p個のデータを補間して1区間にMサンプル(M=N+p)のデータを含む新たなデータ列Cを生成する場合を考える。
このとき、新データ列Cでの新たなサンプリング点m(i)は元のサンプリング点n(i)との関係において、
【0034】
【数2】
m(i)=N/M×n(i)(i=1,2、・・・N)
【0035】
と表される。
【0036】
また、これらの新たなサンプリング点におけるデータ値を、元のサンプリング点のデータに基づき、直線補間法を用いて求める。すなわち、m(i)がデータ配列S中でデータn(k)とn(k+1)との間にあるとした場合(k=1,2・・・、N)、 m(i)でのデータの値Cv(m(i))は、
【0037】
【数3】
Cv(m(i))
=(Sv(n(k))×(n(k+1)−m(i))
+Sv(n(k+1))×(m(i)−n(k)))/(n(k+1)−n(k))
【0038】
と表され、
特に、n(k+1) =n(k)+1の場合、
【0039】
【数4】
Cv(m(i))
=Sv(n(k))×(1−(m(i)−n(k)))+Sv(n(k+1))×(m(i)−n(k))
【0040】
となる。
このように、本実施の形態のストリームデータ処理システムでは、レンダラ・フィルタ24でのバッファ24aでの状況を流量監視フィルタ23で監視し、監視結果に基づいてキャプチャ・フィルタ21でのデータを補間により削除又は挿入している。これにより、キャプチャ・フィルタ21とレンダラ・フィルタ24のクロック周期の差によりデータストリームがオーバーフローしたり枯渇したりすることが無くなる。なお、データの追加及び削除処理は流量監視フィルタ23で行ってもよい。この場合、入力バッファ23aから受け取ったデータをリングバッファ23bを用いてデータの削除、挿入の処理を行い、出力待ちバッファ23cに渡す。
【0041】
PC2での処理を容易にするため、整数演算により補間データを求めるようにしてもよい。すなわち、n(k)とn(k+1)の間を例えば4096ポイントに分割して、次のように演算を実行してもよい。
【0042】
【数5】
Cv(m(i))=(Sv(n(k))×(4096−R)+Sv(n(k+1))×R)/4096
ただし、R=(N/M×n(i)×4096)mod 4096
【0043】
[第2の実施の形態]
次に、本発明の第2の実施の形態を、図5に基づいて説明する。この実施の形態のフィルタ構成は、第1の実施の形態(図2)と同様である。ただし、流量監視フィルタ23は、レンダラ・フィルタ24の入力バッファ24aを監視する代わりに、ユーザ・モードで作成されているイフェクタ・フィルタ22の入力バッファ22aのバッファ数Cr´を監視し、このバッファ数Cr´に基づいて、キャプチャ・フィルタ21でのデータを補間により削除又は挿入する点において、第1の実施の形態と異なっている。
【0044】
この第2の実施の形態の作用を、図5に示すフローチャートに基づいて説明する。
流量監視フィルタ23は、イフェクタ・フィルタ22内の複数の入力バッファ22aのバッファの数Cr´をカウントする(S11)。
Cr´がカウントされたら、流量監視フィルタ23は、この演算値Cr´に基づいて変数insertpoint'、rejectpoint'を決定する(S12)。変数insertpoint'、rejectpoint'は、Cr´が所定の範囲内にあり、データ流量が過不足なく適当である場合にはinsertpoint'=0、rejectpoint'=0に設定される。Cr´が所定の範囲より大きく、データ流量が不足している場合には、insertpoint'>0、rejectpoint'=0とされ、一方、Cr´が所定の範囲より小さく、データ流量が過剰である場合には、insertpoint'=0、rejectpoint'>0とされる。
【0045】
流量監視フィルタ23は、この変数insertpoint'、rejectpoint'をキャキャプチャ・フィルタ21に向けて出力する(S13)。
キャプチャ・フィルタ21は、この変数insertpoint'、rejectpoint'が、0であるか又は0より大きいかを判定する(S14)。キャプチャ・フィルタ21は、insertpoint'>0、rejectpoint'=0の場合には、データを挿入するデータ挿入処理を実行する(S15)。すなわち、イフェクタ・フィルタ22のUSBバッファ21aの一定区間のデータ配列Sのデータ数をNとした場合、新しく生成するデータ配列Cのデータ数MをM=N+pとする。
【0046】
一方、insertpoint'=0、rejectpoint'>0の場合には、キャプチャ・フィルタ21はデータを削除するデータ削除処理を実行する(S16)。すなわち、キャプチャ・フィルタ21のUSBバッファ21aの一定区間のデータ配列Sの長さをNとした場合、新しく生成するデータ配列Cの長さMをM=N−pとする。S4、S5が終了したら、S1に戻って再度Cr´のカウントを行う。キャプチャ・フィルタ21におけるデータ補間によるデータの追加及び削除の方法は、第1の実施の形態(図4)と同様である。
【0047】
なお、イフェクタ・フィルタ22は、他のタスクの影響によりその処理能力が変動するため、データのオーバーフロー又は枯渇が生じ易い。特に、イフェクタ・フィルタ22がユーザ・モードで作成されたり、カーネル・モードであっても低いプライオリティで作成されたりしている場合には、その傾向が強くなる。このため、この実施の形態では、流量が所定値以下の場合には、上述のデータ挿入及び削除処理を行うと共に、流量が所定値以上となった場合には、データ補間によるデータの追加及び削除に加え、バッファ自体を間引く処理を実行する。その際、ノイズ除去のため、削除されたバッファに対応する区間の前後で周知のクロスフェード処理等を行うことが好ましい。なお、このバッファ自体を間引く処理は、イフェクタ・フィルタ22で行ってもよい。
【0048】
以上、ストリームデータの一例として楽音データを処理する場合について説明したが、本発明はこれに限られるものではなく、例えば映像データを処理する場合にも適用できるし、また効果音等の音響データ付の映像情報のような、楽音データと映像データの複合した信号を処理するのに適用できることはいうまでもない。
また、本実施の形態では、キャプチャ・フィルタ21、イフェクタ・フィルタ22、流量監視フィルタ23、レンダラ・フィルタ24を設け、流量監視フィルタ23をレンダラ・フィルタ24の一段前に配置しているが、一段前である必要は必ずしもなく、例えば、上記以外の他のフィルタを流量監視フィルタ24とレンダラ・フィルタ24との間に配置してもよい。ただし、流量監視フィルタ23は、監視対象であるフィルタの前段で、かつできるだけ近い位置に設置するのが好ましい。
また、上記実施の形態ではデータ補間の方法として直線補間を利用したが、これ以外の補間方法、例えばラグランジュ補間やスプライン補間を利用してもよい。
また、上記実施の形態では、USBバッファ21aを利用したが、IEEE1394インターフェースなどのバッファを用いても良い。
【0049】
【発明の効果】
以上説明したように、本発明によれば、クロック制御のための複雑な構成を採用することなく、ストリームデータの入力・出力のタイミングの遅れを最小化することができる。
【図面の簡単な説明】
【図1】 本発明の第1の実施の形態に係るストリームデータ処理システムの全体構成を示す。
【図2】 図1に示すストリームデータ処理システムのソフトウエア構成を示す。
【図3】 図1に示すストリームデータ処理システムの作用を示すフローチャートである。
【図4】 データ列中のデータの挿入・削除の方法を示す。
【図5】 本発明の第2の実施の形態に係るストリームデータ処理システムの作用を示すフローチャートである。
【符号の説明】
1・・・楽器、 3・・・出力装置(スピーカ)、 11・・・CPU、 12・・・ROM、 13・・・RAM、 14・・・HDD、 15・・・I/F、 16・・・オーディオ・コントローラ、 21・・・キャプチャ・フィルタ、 22・・・イフェクタ・フィルタ、 23・・・流量監視フィルタ、 24・・・レンダラ・フィルタ。
Claims (9)
- 相互接続ソフトウエア・フィルタにより構成されるストリームデータ処理システムにおいて、
前記相互接続ソフトウエア・フィルタは、
外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタと、
前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタと、
前記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタと、
前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタと
を含み、
前記キャプチャ・フィルタは、前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、前記キャプチャ・フィルタに保持された一定区間のデータ配列のサンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整するように構成したことを特徴とするストリームデータ処理システム。 - 前記流量監視フィルタは、その後段に配置されるフィルタのバッファ情報に基づいて前記流量を判断する請求項1に記載のストリームデータ処理システム。
- 前記キャプチャ・フィルタは、補間により前記データを挿入又は削除する請求項1に記載のストリームデータ処理システム。
- 前記流量監視フィルタは、前記後段に配置されるフィルタへの前記ストリームデータの出力を停止させた状態で前記バッファ情報を取得する請求項2に記載のストリームデータ処理システム。
- 前記流量監視フィルタは、ユーザ・モードで作成されるイフェクタ・フィルタのバッファ情報に基づいて前記流量を判断する請求項1に記載のストリームデータ処理システム。
- 前記キャプチャ・フィルタは、前記フィードバックされた情報に基づき、前記流量が所定量より小さい場合には、前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入することにより前記ストリームデータの流量を調整すると共に、
前記流量が所定量より大きい場合には、前記バッファを間引く処理を実行することにより前記ストリームデータの流量を調整することを特徴とする
請求項5に記載のストリームデータ処理システム。 - 相互接続ソフトウエア・フィルタを生成してストリームデータを処理するストリームデータ処理方法において、
外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタを生成する工程と、
前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタを生成する工程と、
前記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタを生成する工程と、
前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタを生成する工程と、
前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、前記キャプチャ・フィルタに保持された一定区間のデータ配列の サンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記イフェクタ・フィルタにおける前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整する工程とを備えたことを特徴とするストリームデータ処理方法。 - 相互接続ソフトウエア・フィルタを生成してストリームデータを処理するストリームデータ処理方法において、
外部より入力される楽音のストリームデータを保持し、後段のフィルタに出力するキャプチャ・フィルタを生成する工程と、
前記キャプチャ・フィルタが出力するストリームデータを入力して任意の変化を加えるためのイフェクタ・フィルタを生成する工程と、
前記イフェクタ・フィルタが出力するストリームデータを入力して外部に出力するレンダラ・フィルタを生成する工程と、
前記イフェクタ・フィルタと前記レンダラ・フィルタとの間に配置され前記キャプチャ・フィルタと前記レンダラ・フィルタとの間の前記ストリームデータの流量を監視する流量監視フィルタを生成する工程と、
前記流量監視フィルタからの前記監視に関する情報のフィードバックを受け、この監視に関する情報に基づき、前記キャプチャ・フィルタに保持された一定区間のデータ配列のサンプル数を増減して、該サンプル数の増減に応じた新たなサンプリング点におけるデータ列を生成することにより、前記イフェクタ・フィルタにおける前記ストリームデータからデータを一部削除し又は前記ストリームデータにデータを挿入して前記流量を調整する工程
とをコンピュータに実行させるように構成されたことを特徴とするストリームデータ処理プログラム。 - 請求項8に記載のストリームデータ処理プログラムを格納したコンピュータで読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003088944A JP4238614B2 (ja) | 2002-04-26 | 2003-03-27 | ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002126886 | 2002-04-26 | ||
JP2003088944A JP4238614B2 (ja) | 2002-04-26 | 2003-03-27 | ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005520A JP2004005520A (ja) | 2004-01-08 |
JP4238614B2 true JP4238614B2 (ja) | 2009-03-18 |
Family
ID=30447541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003088944A Expired - Fee Related JP4238614B2 (ja) | 2002-04-26 | 2003-03-27 | ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4238614B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011111235A1 (ja) * | 2010-03-08 | 2011-09-15 | 株式会社日立製作所 | ストリームデータ処理システム、ストリームデータ処理方法及びストリームデータ流量制御プログラム |
-
2003
- 2003-03-27 JP JP2003088944A patent/JP4238614B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004005520A (ja) | 2004-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060253675A1 (en) | Method and apparatus for scheduling real-time and non-real-time access to a shared resource | |
US20060184261A1 (en) | Method and system for reducing audio latency | |
JP2004513454A (ja) | 周期的タスクのベストケース反応時間を決定する方法および装置 | |
US6150599A (en) | Dynamically halting music event streams and flushing associated command queues | |
US7434078B2 (en) | Synchronization with hardware utilizing software clock slaving via a clock | |
EP2313827B1 (en) | Method and system for measuring task load | |
WO2021052120A1 (zh) | 离线视频文件倍速分析方法和装置 | |
US7421706B2 (en) | Methods and systems for predicting events associated with renderable media content samples | |
JP4238614B2 (ja) | ストリームデータ処理システム、ストリームデータ処理方法、ストリームデータ処理プログラム、及びこのプログラムを格納したコンピュータで読み取り可能な記録媒体 | |
KR100682444B1 (ko) | 오디오 신호 프로세서 | |
US7590459B2 (en) | Stream data processing system, stream data processing method, stream data processing program, and computer readable recording medium for storing stream data processing program | |
JPH04330561A (ja) | デジタル信号処理装置 | |
JP4254677B2 (ja) | 楽音発生装置および楽音発生処理のプログラム | |
JP4547123B2 (ja) | オーディオ・インターフェイス回路 | |
JP3134811B2 (ja) | データ処理装置 | |
JP2002032233A (ja) | マルチスレッドシステムにおけるデータi/o処理方法 | |
JP2006139158A (ja) | 音響信号の合成装置および合成再生装置 | |
JP2684820B2 (ja) | サラウンド回路 | |
JP3693045B2 (ja) | 楽音発生装置 | |
JP2677062B2 (ja) | 時系列データの編集装置 | |
JP5245689B2 (ja) | 並列処理装置、プログラム及び記録媒体 | |
JP4325781B2 (ja) | 暗号装置 | |
JP3416498B2 (ja) | サーバ装置およびその制御方法並びにサーバ装置制御プログラムを記録した記録媒体 | |
JP2020071729A (ja) | 処理フレームワーク連携装置、処理フレームワーク連携方法および処理フレームワーク連携プログラム | |
JP2000122650A (ja) | 音声データ処理装置およびコンピュータシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050927 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080116 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080122 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080324 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080902 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081015 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20081020 |
|
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: 20081125 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081208 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120109 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140109 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |