JP2008117517A - 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム - Google Patents
記録装置および方法、再生装置および方法、記録媒体、並びにプログラム Download PDFInfo
- Publication number
- JP2008117517A JP2008117517A JP2007286946A JP2007286946A JP2008117517A JP 2008117517 A JP2008117517 A JP 2008117517A JP 2007286946 A JP2007286946 A JP 2007286946A JP 2007286946 A JP2007286946 A JP 2007286946A JP 2008117517 A JP2008117517 A JP 2008117517A
- Authority
- JP
- Japan
- Prior art keywords
- program
- content
- audio data
- recording
- operating system
- 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.)
- Pending
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
【課題】より容易に、欠落を生じさせることなく、ストリームとして供給される音声データを記録する。
【解決手段】オーディオデータ処理プログラム83は、ストリームとして供給された音声データの受信を制御する。録音アプリケーションプログラム85は、音声データのHDD14への記録を制御する。ソケットサービスプログラム84−1は、第1のプロセスにおいて、音声データをオーディオデータ処理プログラム83から受け取り、第2のプロセスにおいて、録音アプリケーションプログラム85に転送すべき音声データが存在するか否かを判定し、転送すべき音声データが存在すると判定された場合には、音声データを録音アプリケーションプログラム85に転送して、転送処理を終了し、転送すべき音声データが存在しないと判定された場合には、転送処理を即座に終了する。本発明は、音声を記録または再生する記録再生装置に適用できる。
【選択図】図3
【解決手段】オーディオデータ処理プログラム83は、ストリームとして供給された音声データの受信を制御する。録音アプリケーションプログラム85は、音声データのHDD14への記録を制御する。ソケットサービスプログラム84−1は、第1のプロセスにおいて、音声データをオーディオデータ処理プログラム83から受け取り、第2のプロセスにおいて、録音アプリケーションプログラム85に転送すべき音声データが存在するか否かを判定し、転送すべき音声データが存在すると判定された場合には、音声データを録音アプリケーションプログラム85に転送して、転送処理を終了し、転送すべき音声データが存在しないと判定された場合には、転送処理を即座に終了する。本発明は、音声を記録または再生する記録再生装置に適用できる。
【選択図】図3
Description
本発明は記録装置および方法、再生装置および方法、記録媒体、並びにプログラムに関し、特に、例えば、コンテンツを記録するか、または再生する記録装置および方法、再生装置および方法、記録媒体、並びにプログラムに関する。
従来のオーディオ機器は、一般に、いわゆる組み込み型マイクロコンピュータを内蔵している。内蔵されているマイクロコンピュータを動作させるためのソフトウェアは、組み込み型マイクロコンピュータに最適化され、規模の比較的小さいものが主流である。
ネットワークを利用する機能、および、より見やすいGUI(Graphical User Interface)を備えたオーディオ機器を実現するために、ネットワークを利用する機能、およびGUIの開発を従来の設計手法で行うことは、工数がかかりすぎ、妥当な方法ではない。
そこで、ネットワークを利用する機能、およびGUIがすでに実現されている組み込み型マイクロコンピュータ用のオペレーティングシステムを採用する場合が多い。このような場合、本来パーソナルコンピュータをターゲットに設計されているオペレーティングシステムが組み込み型マイクロコンピュータに移植される。
一方、このようなパーソナルコンピュータをターゲットに設計されているオペレーティングシステムにおいては、コンシューマデジタルオーディオ機器においては常識的な、IEC(International Electrotechnical Commission)60958に準拠するデジタルデータである音声データの処理を行って、音声データに係る著作権等を保護することは実現されていない。
また、従来のデジタルオーディオ機器の開発においては、マイクロコンピュータの能力に対して負荷が大きい処理は、専用のDSP(Digital Signal Processor)に実行させるようにすることが多かった。
これに対して、一般的なパーソナルコンピュータの機能を利用するとき、デジタルデータである音声データを処理するための専用のサウンドチップ(音声処理用IC(Integrated Circuit))は皆無に等しく、パーソナルコンピュータのCPU(Central Processing Unit)に音声データを処理させなければならない。このため、音声データを再生するか、または録音するなどの、いわゆるオーディオ機能を実現するためのプロセス(アプリケーションプログラム)は、個々に音声データを解析し、演算しなければならない。このため、CDプレーヤ機能およびハードディスクレコーダ機能を開発する場合において、CDプレーヤ機能およびハードディスクレコーダ機能毎に、IEC60958に準拠する音声データの処理の機能などの、オーディオデータ処理機能を開発しなければならない。
パーソナルコンピュータ用のオペレーティングシステムにおいては、イベントにより処理が起動される、いわゆるイベントドリブンのパラダイムが採用されている。音声データのように常に送信、受信、または転送されているデータを、このようなイベントドリブンのオペレーティングシステムにより制御されている装置で取り扱うとき、データの処理が間に合わなくなる場合が生じ得る。
音声データの処理が間に合わず、音声に欠落が生じることは、オーディオ製品として、致命的な欠点であると言える。特に、安定してシステムが動作しているなど、負荷が低い状態においては、音切れの発生が比較的少ないが、他のプロセス(他のアプリケーションプログラム)が起動または終了されたとき、または、起動中の他のアプリケーションプログラムによりハードディスクがアクセスされたなどの高負荷の状態においては、システムの負荷が大きくなり、音切れが顕著に発生する。
このように、ネットワークを利用する機能、およびGUIの機能を含み、複数のプロセスを時分割で実行するマルチタスクオペレーティングシステムにより制御される機器おいて、音声データを含むコンテンツを時間的に連続するデータ、いわゆるストリームとして取り扱う場合、入力されるストリームを記録する場合、音切れ(音声データの欠落)を生じさせずに記録することは保証できず、また、音飛びを生じさせずにストリームを出力することも保証できないという問題があった。
また、VX-Works(商標)またはμ-i-TRON(商標)などの組み込み型マイクロコンピュータ用のオペレーティングシステムにおいては、設計者がタスクの要求するターンアラウンドタイムを把握して設計しなければならず、設計は困難である。
本発明は、このような状況に鑑みてなされたものであり、例えば、ターンアラウンドタイムが保証されていないマルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録するか、またはコンテンツをストリームとして再生することができるようにするものである。
本発明の第1の側面の記録装置は、マルチタスクオペレーティングシステムの制御の基に、第1のストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置において、前記マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、前記第1のストリームとして供給された前記コンテンツの受信を制御する受信制御手段と、前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御手段と、前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、前記コンテンツを前記受信制御手段から受け取り、第2のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段とを備える。
前記受信制御手段には、受信された前記コンテンツを前記第1のストリームをなす第1の単位で記憶する第1のバッファと、前記コンテンツを第2の単位で記憶する第2のバッファと、前記第1のバッファに記憶されている前記コンテンツの単位を前記第2の単位に変換して、前記第2のバッファに移転する移転手段とをさらに設け、前記第2のバッファに記憶されている前記コンテンツを前記第2の単位で、前記転送手段に供給させることができる。
本発明の第1の側面の記録装置には、前記第1のストリームとして受信された前記コンテンツに含まれる制御情報を抽出する抽出手段をさらに設けることができる。
本発明の第1の側面の記録装置には、前記抽出手段により抽出された前記制御情報を基に、前記記録制御手段に前記コンテンツの記録の禁止を指示する指示手段をさらに設けることができる。
本発明の第1の側面の記録装置には、前記抽出手段により抽出された前記制御情報を基に、前記コンテンツを処理する処理手段をさらに設けることができる。
前記受信制御手段には、前記第2のプログラムを登録する登録手段を設け、前記第2のプログラムが登録されている場合に限り、前記記録制御手段の要求に対応して、前記第3のプログラムの起動を前記マルチタスクオペレーティングシステムに要求させることができる。
本発明の第1の側面の記録方法は、マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置の記録方法において、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む。
本発明の第1の側面の記録媒体は、マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む記録処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラムが記録されている記録媒体。
本発明の第1の側面のプログラムは、マルチタスクオペレーティングシステムを実行し、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置を制御する処理をコンピュータに実行させるプログラムであり、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラム。
本発明の第2の側面の再生装置は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置において、前記マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御手段と、前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、第1のバッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御手段と、前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、転送先を前記送信制御手段とした前記コンテンツを前記読み出し制御手段から受け取り、前記第1のバッファに空きがある場合、第2のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段とを備える。
本発明の第2の側面の再生方法は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置の再生方法において、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む。
本発明の第2の側面の記録媒体は、マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む再生処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラムが記録されている記録媒体。
本発明の第2の側面のプログラムは、マルチタスクオペレーティングシステムを実行し、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置を制御する処理をコンピュータに実行させるプログラムであり、前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップとを含む処理をコンユータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラム。
本発明の第1の側面においては、マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、第1のストリームとして供給されたコンテンツの受信が制御され、前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録が制御され、前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、前記コンテンツが前記第1のプログラムから受け取られ、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かが判定され、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツが前記第2のプログラムに転送されて、転送処理が終了され、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理が即座に終了される。
本発明の第2の側面においては、マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、コンテンツ記録媒体に記録されているコンテンツの読み出しが制御され、前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、第1のバッファに格納されている前記コンテンツの前記ストリームとしての送信が制御され、前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツが前記第1のプログラムから受け取られ、前記第1のバッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かが判定され、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツが第2のプログラムに転送されて、転送処理が終了され、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理が即座に終了される。
本発明の第1の側面によれば、例えば、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録することができる。
本発明の第2の側面によれば、例えば、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、コンテンツをストリームとして再生することができる。
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書又は図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書又は図面に記載されていることを確認するためのものである。従って、明細書又は図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
以下、図面を参照して本発明を適用した実施の形態について説明する。
図1は、本発明に係る記録再生装置の一実施の形態の構成を示す図である。
CPU(Central Processing Unit)11は、記録再生装置を動作させるための基本プログラムであるオペレーティングシステムまたは後述する各種のアプリケーションプログラムなど、SDRAM(Synchronous Dynamic Random Access Memory)12に記憶されている各種のプログラムを実行して、所定の処理を実際に実行する。また、CPU11は、記録再生装置全体を制御する。オペレーティングシステムとして、例えば、本来、パーソナルコンピュータをターゲットとする、いわゆるマルチタスクオペレーティングシステムであるLINUX OSを利用することができる。
SDRAM12は、CPU11が実行するプログラム、およびプログラムの実行にあたり必要なパラメータ若しくはデータを記憶する。
なお、SDRAM12は、RD-RAM(Rambus(商標) DRAM)など他の方式のDRAMまたはSRAM(Static RAM)であってもよい。
IDE(Integrated Device Electronics)インターフェース13は、ATA(AT Attachment)に準拠した記録媒体を接続するためのインターフェースであり、CPU11並びにHDD(Hard Disk Drive)14およびCD-ROM(Compact Disc-Read Only Memory)ドライブ15が接続されている。
HDD14は、CPU11により実行される、オペレーティングシステムまたは各種のアプリケーションプログラムを記録し、記録されているプログラムを読み出して、読み出したプログラムをCPU11に供給する。
HDD14は、内蔵されているハードディスクを駆動し、IDEインターフェース13を介して、CPU11から供給されたデータをハードディスクに記録し、ハードディスクに記録されているデータを読み出して、読み出したデータをCPU11に供給する。例えば、HDD14は、IDEインターフェース13を介して、CPU11から供給された、コンテンツ(楽曲)の一例である音声データをハードディスクに記録し、ハードディスクに記録されている音声データを読み出して、読み出した音声データをCPU11に供給する。
CD-ROMドライブ15は、装着されているCD-ROMまたはCD(Compact Disc)に記録されているデータを読み出して、読み出したデータをIDEインターフェース13を介してCPU11に供給する。例えば、CD-ROMドライブ15は、装着されているCDに記録されているコンテンツ(楽曲)の一例である音声データを読み出して、読み出した音声データをIDEインターフェース13を介してCPU11に供給する。
PCI(Peripheral Component Interconnect)バス16は、アドインカードなどの拡張用デバイス等を記録再生装置に接続するためのバスであり、グラフィックカード17、サウンドカード18、およびドライブ19が接続されている。
グラフィックカード17は、PCIバス16を介して、CPU11から供給されたデータを基に、図示せぬディスプレイに画像またはテキストを表示するための信号を生成し、ディスプレイに画像またはテキストを表示させる。
サウンドカード18は、PCIバス16を介して、CPU11から供給されたデータを、後述するDAC(Digital to Analog Converter)52に供給する。また、サウンドカード18は、後述する外部再生装置51から供給されたデータを取得し、PCIバス16を介して、取得したデータをCPU11に供給する。
サウンドカード18は、IEC(International Electrotechnical Commission)60958の規格に準拠し、時間的に連続したデータ、いわゆるストリームである音声データを出力する。サウンドカード18は、IEC60958の規格に準拠し、時間的に連続したストリームである音声データを入力する。
ドライブ19は、装着されている磁気ディスク31、光ディスク32、光磁気ディスク33、または半導体メモリ34に記録されているプログラムを読み出して、PCIバス16を介して、取得したデータをCPU11またはSDRAM12に供給する。
なお、以下、記録再生装置が、コンテンツの一例としての音声データを記録するか、または再生する処理を説明するが、コンテンツは、音声データに限らず、動画像、または数値データなどであってもよい。
図2は、記録再生装置における音声データの流れの概要を説明する図である。
例えば、CDプレーヤまたはMD(Mini Disc)プレーヤなどの外部の外部再生装置51からコンテンツ(楽曲)であるストリームである音声データを取得し、取得した音声データをHDD14に記録するとき、音声データは、サウンドカード18から入力され、DMA(Direct Memory Access)方式によりサウンドカード18からSDRAM12に供給される。サウンドカード18に一時的に記憶された音声データは、HDD14に供給され、HDD14に記憶される。
HDD14に記録されている音声データを、外部装置の一例であるDAC(Digital to Analog Converter)52に出力するとき、すなわち、コンテンツ(楽曲)である音声データを再生するとき、CPU11の制御の基に、HDD14は、記録している音声データを読み出して、読み出した音声データをSDRAM12に供給する。
同様に、CD-ROMドライブ15に装着されているCDに記録されている音声データを、再生するとき、CPU11の制御の基に、CD-ROMドライブ15は、CDに記録されている音声データを読み出して、読み出した音声データをSDRAM12に供給する。
SDRAM12は、HDD14またはCD-ROMドライブ15から供給された音声データを記憶する。
SDRAM12に記憶された音声データは、DMA方式によりサウンドカード18に供給される。サウンドカード18は、SDRAM12から供給された音声データをストリームとしてDAC52に出力する。DAC52は、音声データをデジタルアナログ変換して、音声信号を生成する。例えば、DAC52は、音声信号を図示せぬラウドスピーカに供給し、ラウドスピーカに音声を出力させる。
図3は、CPU11が実行するプログラムの機能の構成を説明するブロック図である。
デバイスドライバ81は、カーネル82の要求に基づいて、IDEインターフェース13、HDD14、CD-ROMドライブ15、グラフィックカード17、およびサウンドカード18を制御するプログラムである。実際には、IDEインターフェース13、HDD14、CD-ROMドライブ15、グラフィックカード17、およびサウンドカード18は、個々に、個別のデバイスドライバにより制御されるが、本明細書において、個々のデバイスドライバをまとめてデバイスドライバ81と表現する。
カーネル82は、オペレーティングシステム(基本プログラム)の中心をなすプログラムであり、各種のデバイス制御、ファイルシステム、ユーザプロセスの実行と監視、メモリマネージメント等の、記録再生装置が動作するのに必要な機能を提供する。
ここで、プロセスとは、マルチタスクオペレーティングシステムにおいて、メモリ資源、ディスク資源、またはI/O資源などを独立して占有するプログラムの実行単位をいう。マルチタスクオペレーティングシステムにおいて、実行している各プログラムに対応するプロセスに、見かけ上独立したメモリ空間やI/O空間が割り当てられるので、それぞれのプログラムは個々に動作しているように見える。これにより、各プログラムにおいては、同時に実行される他のプログラムとの関係を考慮する必要がなくなる。
プロセスには、ユーザ(使用者)により起動されたユーザプロセス、またはオペレーティングシステムの機能の一部を独立したプロセスとして実行するシステムプロセスなどが含まれる。
例えば、カーネル82は、処理の開始または終了の管理、装置の管理、および障害の管理などのシステム制御、並びに例外処理、プロセス管理、およびプロセス間通信制御などの実行管理などを実行する。カーネル82は、ユーザプロセスであるオーディオデータ処理プログラム83、録音アプリケーションプログラム85、および再生アプリケーションプログラム86を、プロセスを単位として、時分割で実行させる。
オーディオデータ処理プログラム83は、外部から供給された音声データを記録するとき、デバイスドライバ81およびカーネル82を介して、外部からストリームとして供給された音声データを取得し、取得した音声データをソケットサービスプログラム84−1を介して、録音アプリケーションプログラム85に供給する。また、オーディオデータ処理プログラム83は、外部に音声データを出力して、外部の機器に音声データを再生させるとき、ソケットサービスプログラム84−2を介して、再生アプリケーションプログラム86から、音声データを取得し、カーネル82およびデバイスドライバ81を介して、サウンドカード18に、取得した音声データをストリームとして外部に出力させる。
オーディオデータ処理プログラム83は、複数のプログラム(プロセス)、例えば、再生アプリケーションプログラム86に代表されるCDプレイヤーアプリケーション、または録音アプリケーションプログラム85に代表されるHDレコーダアプリケーションから共通して使用されるソフトウエアである。各プロセスがオーディオデータ処理プログラム83を共通に使用できるようにするため、オーディオデータ処理プログラム83は、後述するソケットと称するプロセス間通信手法を用いる。
このようにすることで、本来、各アプリケーションプログラムのそれぞれが独自におこなわなければならないが、共通の処理である音声データの解析、または演算その他処理を、オーディオデータ処理プログラム83に一任することができる。
その結果、共通の処理を録音アプリケーションプログラム85および再生アプリケーションプログラム86にそれぞれ実装する無駄を省く、いわゆる、資源の共通利用が図られる。
ソケットサービスプログラム84−1は、オーディオデータ処理プログラム83を入力側とし、録音アプリケーションプログラム85を出力側とするソケットを確立するためのプログラムである。ソケットサービスプログラム84−1により確立されたソケットは、オーディオデータ処理プログラム83から、録音アプリケーションプログラム85に、音声データを転送する。
さらに、ソケットは、オーディオデータ処理プログラム83と録音アプリケーションプログラム85とのメッセージの交換に使用される。
ソケットサービスプログラム84−2は、再生アプリケーションプログラム86を入力側とし、オーディオデータ処理プログラム83を出力側とするソケットを確立するためのプログラムである。ソケットサービスプログラム84−2により確立されたソケットは、再生アプリケーションプログラム86から、オーディオデータ処理プログラム83に、音声データを転送する。
さらに、ソケットは、オーディオデータ処理プログラム83と再生アプリケーションプログラム86とのメッセージの交換に使用される。
ソケットサービスプログラム84−1および84−2は、例えば、共有ライブラリのAPI(Application Programming Interface)としてオペレーティングシステムと共に提供される。
本発明に係る記録再生装置において、再生アプリケーションプログラム86から見たオーディオデータ処理プログラム83の処理は、時間遅れなく、即座に実行されるように見える。同様に、録音アプリケーションプログラム85から見たオーディオデータ処理プログラム83の処理は、時間遅れなく、即座に実行されるように見える。
図4は、オーディオデータ処理プログラム83、アプリケーションプログラム、およびソケットの関係の例を示す図である。図4において、それぞれの実線は、オーディオデータ処理プログラム83と、アプリケーションプログラム1乃至アプリケーションプログラム4のいずれかとがメッセージを交換するためのそれぞれのソケットを示す。
図4において、1点鎖線は、アプリケーションプログラム1からオーディオデータ処理プログラム83に音声データを供給するためのソケットを示す。図4において、2点鎖線は、オーディオデータ処理プログラム83からアプリケーションプログラム3に音声データを供給するためのソケットを示す。
オーディオデータ処理プログラム83との間でメッセージを交換するためのソケットは、アプリケーションプログラム1乃至アプリケーションプログラム4のそれぞれ毎に存在する。しかし、オーディオデータ処理プログラム83が音声データを送信するためのソケットは、複数のアプリケーションプログラムのうち、録音の処理を実行する1つのアプリケーションプログラムに対して、1つしか存在しない。また、オーディオデータ処理プログラム83が音声データを受信するためのソケットは、複数のアプリケーションプログラムのうち、再生の処理を実行する1つのアプリケーションプログラムに対して、1つしか存在しない。
このようにすることで、音声データが他のアプリケーションプログラムに横取りされることによる音声の欠落、または音声データに他のアプリケーションプログラムから供給された他の音声データが混入することによる音飛びが防止される。
音声データを送信するためのソケットを排他的に確立させる処理は、後述する。
なお、ソケットは、BSD UNIX(登録商標)上で開発されたSocket、米マイクロソフト(商標)社で開発されたWinSock、またはUnix(登録商標) System Vで開発されたSTREAMアーキテクチャを採用するOpenTransportなどであってもよい。
ソケットは、複数のプロセス間を通信するために一般的に利用され、インターネットプロトコルの1つとして実装されることも多い。ソケットを利用する利点の1つは、大量のデータの転送が容易であることである。ソケットの詳細については、後述する。
録音アプリケーションプログラム85は、ソケットサービスプログラム84−1により提供されるソケットを介して、オーディオデータ処理プログラム83から供給された音声データを、HDD14に記録させるプログラムである。録音アプリケーションプログラム85は、取得した音声データを、カーネル82およびデバイスドライバ81を介して、HDD14に供給する。HDD14は、カーネル82およびデバイスドライバ81を介して、録音アプリケーションプログラム85から供給された音声データを記録する。
より具体的には、録音アプリケーションプログラム85が、システムコールにより、カーネル82に、音声データの記録を要求したとき、カーネル82は、デバイスドライバ81に、HDD14への音声データの記録を制御させる。
再生アプリケーションプログラム86は、カーネル82およびデバイスドライバ81を介して、CD-ROMドライブ15に、装着されているCD91から音声データを読み出させ、読み出した音声データを取得する。または、再生アプリケーションプログラム86は、カーネル82およびデバイスドライバ81を介して、HDD14に、記録されている音声データを読み出させ、読み出した音声データを取得する。
より具体的には、再生アプリケーションプログラム86が、システムコールにより、カーネル82に、CD-ROMドライブ15からの音声データの読み出しを要求したとき、カーネル82は、デバイスドライバ81に、CD-ROMドライブ15からの、装着されているCDに記録されている音声データの読み出しを制御させる。または、再生アプリケーションプログラム86が、システムコールにより、カーネル82に、HDD14からの音声データの読み出しを要求したとき、カーネル82は、デバイスドライバ81に、HDD14からの音声データの読み出しを制御させる。
再生アプリケーションプログラム86は、取得した音声データを、ソケットサービスプログラム84−2により提供されるソケットを介して、オーディオデータ処理プログラム83に供給する。
オーディオデータ処理プログラム83は、再生アプリケーションプログラム86から供給された音声データの出力を、カーネル82に要求する。カーネル82は、デバイスドライバ81に、サウンドカード18を制御させ、音声データをストリームとして出力させる。
CPU11により実行されるプログラムが支配する仮想的な空間は、カーネル空間と、ユーザプロセス空間とに分類される。カーネル空間は、オペレーティングシステム、主としてカーネル82に支配される空間である。これに対して、ユーザプロセス空間においては、オペレーティングシステム以外の通常のアプリケーションプログラムが実行される。
例えば、カーネル空間において、オペレーティングシステムを構成する、デバイスドライバ81、カーネル82、並びにソケットサービスプログラム84−1およびソケットサービスプログラム84−2が実行される。通常のアプリケーションプログラムである、オーディオデータ処理プログラム83、録音アプリケーションプログラム85、および再生アプリケーションプログラム86は、ユーザプロセス空間で実行される。
システムコールとは、ユーザプロセス空間で実行される通常のアプリケーションプログラムが、カーネル空間で実行されるオペレーティングシステムにサービスを要求する手続をいう。例えば、ユーザプロセス空間とカーネル空間とに跨る音声データの転送、または、HDD14、CD-ROMドライブ15、若しくはサウンドカード18などのデバイスの制御は、システムコールにより実行される。例えば、オーディオデータ処理プログラム83とカーネル82との音声データの転送は、オーディオデータ処理プログラム83からカーネル82へのシステムコールにより実行される。また、サウンドカード18の制御は、システムコールにより実行される。
本明細書において、システムコールには、いわゆるライブラリコール、またはカーネルコールが含まれる。
次に、オーディオデータ処理プログラム83の構成を説明する。
図5は、オーディオデータ処理プログラム83に含まれるプログラムおよび機能を説明するブロック図である。
読み出し制御プログラム101は、サウンドカード18からの音声データの読み出しを制御し、IEC60958に準拠するストリームを取得したサウンドカード18から読み出した音声データを読み出しデータバッファ102に格納する。
読み出しデータバッファ102は、サウンドカード18から読み出した音声データを、サブフレームを単位として一時的に記憶する。読み出しデータバッファ102は、例えば、いわゆるリングバッファとすることができる。
例えば、読み出しデータバッファ102は、N個のバッファ(データの記憶の単位となるバッファ)からなるリングバッファである。最新の音声データは、1番目のバッファから順に、2番目のバッファ、3番目のバッファ、4番目のバッファと格納され、N番目のバッファまで音声データが格納されたとき、次に、1番目のバッファに戻って音声データが格納される。このように、リングバッファにおいては、N個のバッファが論理的な環を形成し、論理的に形成され環に沿って、音声データの格納の処理と音声データの読み出しの処理とが実行される。
このため、リングバッファ上の、次に音声データを格納すべき位置を示す書き込みポインタと、リングバッファ上の、次に音声データを読み出すべき位置を示す読み出しポインタとが、リングバッファ毎に設けられる。
書き込みポインタで示される位置および読み出しポインタで示される位置、すなわち、書き込みポインタの値および読み出しポインタの値を基に、そのリングバッファが空であるか、一杯であるかを判断することができる。
オーディオデータ解析フィルタプログラム103は、読み出しデータバッファ102に格納されている音声データに含まれる、音声データの特徴を示すデータを解析して、解析された結果に対応するデータを音声データに加える。オーディオデータ解析フィルタプログラム103は、解析された結果に対応するデータが加えられた音声データを、録音データバッファ104、またはスイッチ105を介して、IEC60958エンコードプログラム106に供給する。
録音データバッファ104は、録音アプリケーションプログラム85に供給する音声データを一時的に記憶する。録音データバッファ104は、例えば、いわゆるリングバッファとすることができる。
オーディオデータ処理プログラム83は、録音アプリケーションプログラム85に送信すべき新たな音声データが録音データバッファ104にないとき、録音アプリケーションプログラム85の読み出し処理を遅延させる。
録音データバッファ104に新たな音声データが順次格納されているにもかかわらず、録音アプリケーションプログラム85が音声データの読み出しを行わないとき、または音声データを読み出せないとき、録音データバッファ104が一杯になるまで、音声データが保持される。
これにより、録音アプリケーションプログラム85により録音される音声データ(コンテンツ(楽曲))の音切れが防止される。
オーディオデータ処理プログラム83は、録音アプリケーションプログラム85との同期を常に取る必要がなく、録音アプリケーションプログラム85が所定の理由で、オーディオストリーミングを行うためのリアルタイム性を確保できない場合にも、音切れを防止する。
送信制御プログラム107は、録音データバッファ104に格納されている音声データの録音アプリケーションプログラム85への供給を制御するプログラムである。より詳細には、送信制御プログラム107は、録音アプリケーションプログラム85が、録音データバッファ104の記録開始位置を指定してから、録音終了位置を指定するまで、すなわち、録音アプリケーションプログラム85が録音の処理を実行している間、録音データバッファ104に新たな音声データが格納される度に、新たに格納された音声データを録音アプリケーションプログラム85に供給する。
送信制御プログラム107は、録音アプリケーションプログラム85への音声データの供給の制御に際し、録音アプリケーションプログラム85とメッセージを交換する。
受信制御プログラム108は、再生アプリケーションプログラム86から音声データを取得し、取得した音声データを再生データバッファ109に格納する処理を制御するプログラムである。受信制御プログラム108は、再生アプリケーションプログラム86からの音声データの取得の処理に際し、再生アプリケーションプログラム86とメッセージを交換する。
再生データバッファ109は、再生アプリケーションプログラム86から供給された音声データを一時的に記憶する。再生データバッファ109は、例えば、いわゆるリングバッファとすることができる。
録音データバッファ104および再生データバッファ109は、図21および図22を参照して後述される構造を有する音声データを格納する。
再生データバッファ109に格納された音声データは、図18乃至図20のフローチャートを参照して後述される処理により、サウンドカード18に送出される。音声データがサウンドカード18に送出されると、再生データバッファ109に空きができるので、再生アプリケーションプログラム86からの音声データの転送を受け付けることができるようになる。
再生アプリケーションプログラム86は、再生データバッファ109に空きがあるとき、所定の大きさの音声データを1度に再生データバッファ109に転送させる。以降、再生アプリケーションプログラム86は、再生データバッファ109に空きができると、その度に、所定の大きさの音声データを1度に再生データバッファ109に転送する。
従って、録音の場合と同様に、再生アプリケーションプログラム86が何らかの要因で定期的な音声データの転送ができない場合であっても、再生データバッファ109に音声データが格納されているとき、再生音の音切れを抑制できようになる。
また、再生データバッファ109に格納されている音声データをクリアすることにより、再生アプリケーションプログラム86が再生を停止するとき、または再生する曲を変更するとき、再生データバッファ109に格納されている音声データが継続してサウンドカード18から出力されることが防止される。
スイッチ105は、オーディオデータ解析フィルタプログラム103から供給された音声データ、再生データバッファ109から供給された音声データ、または無音のデータであるゼロデータを生成するゼロデータ生成プログラム110より供給されたゼロデータである音声データのいずれか1つを選択し、選択された音声データをIEC60958エンコードプログラム106に供給する。
例えば、録音アプリケーションプログラム85により録音される音声を確認しながら(サウンドカード18から音声データを出力しながら)録音を実行するとき、出力される音声データのソースとして、録音データバッファ104が選択される。すなわち、スイッチ105は、オーディオデータ解析フィルタプログラム103から供給された音声データを選択し、選択された音声データをIEC60958エンコードプログラム106に供給する。
このようにすることで、使用者は、図18乃至図20のフローチャートを参照して説明する処理により加工された音声データを確認しながら、録音をすることができる。
例えば、再生アプリケーションプログラム86が再生の処理を実行するとき、出力される音声データのソースとして、再生データバッファ109が選択される。すなわち、スイッチ105は、再生データバッファ109から供給された音声データを選択し、選択された音声データをIEC60958エンコードプログラム106に供給する。
また、例えば、再生のプロセスおよび録音のプロセスが存在しないとき、すなわち、再生アプリケーションプログラム86および録音アプリケーションプログラム85が起動されていないとき、録音データバッファ104および再生データバッファ109が共に選択されず、無音の音声データが出力される。すなわち、スイッチ105は、無音のデータであるゼロデータを生成するゼロデータ生成プログラム110より供給されたゼロデータである音声データを選択し、選択された音声データをIEC60958エンコードプログラム106に供給する。
再生アプリケーションプログラム86が曲の再生を一時停止しているとき、再生データバッファ109の動作を止める必要があるので、この場合も、録音データバッファ104および再生データバッファ109が共に選択されず、無音の音声データが出力される。
IEC60958エンコードプログラム106は、スイッチ105を介して供給された音声データを、IEC60958の規格に準拠するようにエンコードする、すなわち音声データの方式をIEC60958の規格に準拠するように変更する。IEC60958エンコードプログラム106は、IEC60958の規格に準拠するようにエンコードした音声データを書き込みデータバッファ111に供給する。
書き込みデータバッファ111は、IEC60958エンコードプログラム106から供給された音声データを、サブフレームを単位として一時的に記憶する。書き込みデータバッファ111は、例えば、いわゆるリングバッファとすることができる。
オーディオデータ処理プログラム83が動作しているとき、書き込みデータバッファ111に格納されている音声データは、サウンドカード18に常に一定のタイミングで出力されているので、書き込みデータバッファ111は、コンスタントに動作していると言える。
読み出しデータバッファ102および書き込みデータバッファ111は、IEC60958に準拠するサブフレームを単位として、音声データを記憶する。これに対して、録音データバッファ104および再生データバッファ109は、サブフレームに比較してより多い数のサンプルデータからなるデータ(図30を参照して後述する)を単位として、音声データを記憶する。
なお、音声データのストリームは、IEC60958に準拠する方式であると説明したが、音声データのストリームは、例えば、MPEG(Moving Pictures Experts Group)方式のトランスポートストリームまたはパケッタイズドエレメンタリストリームなど他の方式のストリームでも良く、ストリームの方式は、本発明を限定するものではない。
次に、図6乃至図11を参照して、オーディオデータ処理プログラム83乃至再生アプリケーションプログラム86による処理の概要を説明する。
図6は、再生アプリケーションプログラム86の登録の処理を説明するフローチャートである。
ステップS1001において、再生アプリケーションプログラム86は、登録名を生成する。ステップS1002において、再生アプリケーションプログラム86は、プロセス間通信により、登録名と共に、ソケットの確立要求をオーディオデータ処理プログラム83に送信する。
ステップS2001において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86から送信された、登録名、およびソケットの確立要求を受信する。ステップS2002において、オーディオデータ処理プログラム83は、再生の処理を実行する相手として他のアプリケーションプログラムが登録されていないか、すなわち、再生のアプリケーションプログラムの重複登録をチェックする。他のアプリケーションプログラムが再生のアプリケーションプログラムとして既に登録されているとき、以後の処理は、実行されない。
これにより、複数の再生のアプリケーションプログラムの重複登録が防止される。その結果、アプリケーションプログラムから音声データを受信する2つ以上のソケットが確立されることがなくなり、音飛びが防止される。
ステップS2001の処理で受信した登録名が他のアプリケーションプログラムに対応して登録されていないと判断された場合、ステップS2003に進み、オーディオデータ処理プログラム83は、ステップS2001の処理で受信した登録名を登録して、登録した登録名に対応する登録IDを生成する。オーディオデータ処理プログラム83は、生成した登録IDを登録名に対応させて登録する、すなわち登録IDおよび登録名を対応させて記憶する。
オーディオデータ処理プログラム83は、カーネル82に、再生アプリケーションプログラム86とのソケットの確立を要求する。
ステップS2004において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86に、登録IDを送信する。
ステップS1003において、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83から送信された登録IDを受信する。
ステップS1004において、再生アプリケーションプログラム86は、受信した登録IDを記憶し、処理は終了する。
録音アプリケーションプログラム85の登録の処理は、図6を参照して説明した処理と同様なので、その説明は省略する。
複数の録音のアプリケーションプログラムの重複登録が防止される。その結果、アプリケーションプログラムに音声データを送信する2つ以上のソケットが確立されることがなくなり、音切れが防止される。
図7は、オーディオデータ処理プログラム83に処理を要求するためのメッセージに格納されている登録IDの確認の処理を説明するフローチャートである。
ステップS1101において、再生アプリケーションプログラム86は、プロセス情報に登録IDを格納したメッセージを送信する。メッセージの構成については、後述する。
ステップS2101において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86から送信された、プロセス情報に登録IDを格納したメッセージを受信する。オーディオデータ処理プログラム83は、メッセージのプロセス情報から登録IDを抽出する。
ステップS2102において、オーディオデータ処理プログラム83は、記憶している登録IDを基に、抽出された登録IDが未登録であるか否かを判定し、抽出された登録IDが登録されていると判定された場合、ステップS2103に進み、メッセージに格納されているコマンドに対応する処理を実行する。
一方、ステップS2102において、抽出された登録IDが未登録であると判定された場合、ステップS2104に進み、オーディオデータ処理プログラム83は、エラーメッセージを再生アプリケーションプログラム86に送信する。抽出された登録IDが未登録であると判定された場合、オーディオデータ処理プログラム83は、メッセージに格納されているコマンドに対応する処理を実行しない。
ステップS1102において、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83から送信されたエラーメッセージを受信し、処理は終了する。
録音アプリケーションプログラム85から送信されたメッセージについても、図7を参照して説明した、メッセージに格納されている登録IDの確認の処理が同様に実行されるので、その説明は省略する。
このようにすることで、複数のアプリケーションプログラムが、再生の処理、または録音の処理において、オーディオデータ処理プログラム83を使用するとき、複数のアプリケーションプログラムが同時に再生の処理、または録音の処理を、オーディオデータ処理プログラム83に要求することを防止することができる。
例えば、再生を実行するあるプロセスが再生の処理を実行している場合、再生を実行する他のプロセスからの、オーディオデータ処理プログラム83への再生のための音声データの送信を許したとき、あるプロセスから供給される音声データに他のプロセスの音声のデータが混ざり込んでしまうことになり、あるプロセスから供給される音声データを正しく再生することができなくなる。
同様に、録音を実行するあるプロセスが録音の処理を実行している場合、オーディオデータ処理プログラム83からの、録音を実行する他のプロセスへの録音のための音声データの送信を許したとき、音声データが横取りされてしまうことになり、あるプロセスは一部が欠けた音声データを記録することになる。
このように、共通して使用されるオーディオデータ処理プログラム83のこのような競合状態を防ぐために、オーディオデータ処理プログラム83は、オーディオデータ処理プログラム83を使用する各アプリケーションプログラムに、それぞれを識別するための情報を最初に要求する。
実際に、再生の処理または録音の処理が実行されるとき、オーディオデータ処理プログラム83は、録音データバッファ104の使用者、および再生データバッファ109の使用者を記憶しておき、録音データバッファ104または再生データバッファ109が使用されているとき、他の使用者からの使用を排除する排他制御を実行する。
図8は、オーディオデータ処理プログラム83による、再生アプリケーションプログラム86から送信されたメッセージに格納されているコマンドに対応する処理を実行する処理を説明するフローチャートである。
ステップS1201において、再生アプリケーションプログラム86は、メッセージを送信するためのソケットを介して、実行要求のコマンドを格納したメッセージをオーディオデータ処理プログラム83に送信する。
図9は、メッセージの構成を説明する図である。メッセージは、コマンド、エラー、プロセス情報、および引数を含む。
メッセージに含まれるコマンドは、メッセージを送信するアプリケーションプログラムがオーディオデータ処理プログラム83に要求する処理内容を示す。エラーは、オーディオデータ処理プログラム83が、コマンドで要求された処理を実行した結果を示す。エラーには、異常終了の結果に限らず、処理が正常に終了した場合、処理が正常に終了したことを示すデータが設定される。
プロセス情報は、アプリケーションプログラム、すなわちプロセスの名前、または登録ID等を含む。引数は、コマンドに応じた引数、例えば、コマンドの処理に必要なパラメータなどである。オーディオデータ処理プログラム83が、コマンドで要求された処理を実行した結果をアプリケーションプログラムに通知する場合、必要なとき、引数に、コマンドの実行結果が設定される。
ステップS2201において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86からソケットを介して送信されたメッセージを受信する。ステップS2202において、オーディオデータ処理プログラム83は、受信したメッセージからコマンドを抽出し、コマンドを解釈する。例えば、オーディオデータ処理プログラム83は、コマンドのビット列に対応させて、サービスの名称を配置したテーブルを予め記憶し、記憶しているテーブルを基に、コマンドに対応するサービスの名称を取得する。
ステップS2203において、オーディオデータ処理プログラム83は、コマンドに対応する処理を実行する。例えば、オーディオデータ処理プログラム83は、コマンドに対応するサービスの名称を基に、サービスの名称に対応した処理を起動する。
ステップS2204において、オーディオデータ処理プログラム83は、メッセージを送信するためのソケットを介して、ステップS2203の処理の実行結果を格納したメッセージを、再生アプリケーションプログラム86に送信する。実行の結果は、メッセージのエラーに格納される。
ステップS1202において、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83から送信された、実行結果を格納したメッセージを受信し、処理は終了する。
オーディオデータ処理プログラム83による、録音アプリケーションプログラム85から送信されたメッセージに格納されているコマンドに対応する処理を実行する処理は、図8に示すフローチャートを参照して説明した処理と同様なのでその説明は省略する。
このように、オーディオデータ処理プログラム83は、他のアプリケーションプログラムから送信されたメッセージに格納されているコマンドを基に、所定の処理を実行する。オーディオデータ処理プログラム83に、コマンドを格納したメッセージを送信し、所定の処理を要求したアプリケーションプログラムは、オーディオデータ処理プログラム83から送信された、実行結果を格納したメッセージを基に、オーディオデータ処理プログラム83の処理の結果を知ることができる。
図10のフローチャートを参照して、再生アプリケーションプログラム86からオーディオデータ処理プログラム83に音声データを送信する処理の概要を説明する。
ステップS1301において、再生アプリケーションプログラム86は、メッセージを送信するためのソケットを介して、再生のコマンドを格納したメッセージをオーディオデータ処理プログラム83に送信する。メッセージは、再生のコマンドを格納するとともに、プロセス情報として、再生アプリケーションプログラム86の登録IDを格納する。
ステップS2301において、オーディオデータ処理プログラム83は、再生のコマンドを格納したメッセージを受信する。ステップS2302において、オーディオデータ処理プログラム83は、メッセージのプロセス情報として格納されている登録IDを基に、メッセージを送信したプログラム、すなわち、再生アプリケーションプログラム86が再生の処理が可能なプログラムであるかを判断する。ステップS2303において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86が再生の処理が可能なプログラムであると判断した場合、メッセージを送信するためのソケットを介して、エラーにACKを格納したメッセージを再生アプリケーションプログラム86に送信し、再生アプリケーションプログラム86が再生の処理が可能なプログラムでないと判断した場合、メッセージを送信するためのソケットを介して、エラーにNACKを格納したメッセージを再生アプリケーションプログラム86に送信する。
ステップS1302において、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83から送信されたACKまたはNACKが格納されたメッセージを受信する。再生アプリケーションプログラム86は、メッセージのエラーに格納されているACKまたはNACKを抽出する。
ステップS1303において、再生アプリケーションプログラム86は、ACKを受信したか否かを判定し、ACKを受信したと判定された場合、ステップS1304に進み、再生する音声データを、音声データを送信するためのソケットを介してオーディオデータ処理プログラム83に送信する。
ステップS2304において、オーディオデータ処理プログラム83は、音声データを送信するためのソケットを介して送信された音声データを受信する。
ステップS2305において、オーディオデータ処理プログラム83は、受信された音声データの大きさ(例えば、バイト数)を基に、音声データに欠落があるか否かなど、受信した音声データをチェックする。
ステップS2306において、オーディオデータ処理プログラム83は、音声データに欠落がある場合、エラーにNACKを格納したメッセージをソケットを介して再生アプリケーションプログラム86に送信し、音声データに欠落がない場合、エラーにACKを格納したメッセージをソケットを介して再生アプリケーションプログラム86に送信する。
ステップS1305において、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83から送信された、ACKまたはNACKがエラーに格納されているメッセージを受信する。再生アプリケーションプログラム86は、メッセージのエラーからACKまたはNACKを抽出する。
ステップS1306において、再生アプリケーションプログラム86は、NACKを格納したメッセージを受信したか否かを判定し、NACKを格納したメッセージを受信したと判定された場合、ステップS1307に進み、音声データをオーディオデータ処理プログラム83に送信するためのソケットを介して、音声データを再送する。ステップS1307の処理で再送される音声データは、ステップS1304の処理で送信される音声のデータと同一である。
ステップS2307において、オーディオデータ処理プログラム83は、再生アプリケーションプログラム86から再送された音声のデータを受信する。なお、ステップS2304の処理で欠落がない音声データが受信された場合、ステップS2307の処理は実行されない。
また、音声データの再送の処理は、1つの音声データに対応して、1度限りとされる。1つの音声データを数回再送すると、再生のタイミングが間に合わなくなるためである。
ステップS1306において、ACKを格納したメッセージを受信したと判定された場合、オーディオデータ処理プログラム83がステップS2304の処理で欠落がない音声データを受信したので、音声データを再送する必要がなく、ステップS1307の処理はスキップされ、処理は、ステップS1308に進む。
ステップS1308において、再生アプリケーションプログラム86は、音声データの送信を終了するか否かを判定し、音声データの送信を終了しないと判定された場合、ステップS1304に戻り、音声データの送信の処理を繰り返す。
ステップS1308において、音声データの送信を終了すると判定された場合、処理は終了する。
ステップS1303において、NACKを受信したと判定された場合、再生アプリケーションプログラム86が再生の処理が可能なプログラムでない、すなわち、再生アプリケーションプログラム86は、オーディオデータ処理プログラム83に音声データを送信することはできないので、処理は終了する。
図11のフローチャートを参照して、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に音声データを送信する処理の概要を説明する。
ステップS3401において、録音アプリケーションプログラム85は、メッセージを送信するためのソケットを介して、録音のコマンドを格納したメッセージをオーディオデータ処理プログラム83に送信する。メッセージは、録音のコマンドを格納するとともに、プロセス情報として、録音アプリケーションプログラム85の登録IDを格納する。
ステップS2401において、オーディオデータ処理プログラム83は、録音のコマンドを格納したメッセージを受信する。ステップS2402において、オーディオデータ処理プログラム83は、メッセージのプロセス情報として格納されている登録IDを基に、メッセージを送信したプログラム、すなわち、録音アプリケーションプログラム85が録音の処理が可能なプログラムであるかを判断する。ステップS2403において、オーディオデータ処理プログラム83は、録音アプリケーションプログラム85が録音の処理が可能なプログラムであると判断した場合、メッセージを送信するためのソケットを介して、ACKをエラーに格納したメッセージを録音アプリケーションプログラム85に送信し、録音アプリケーションプログラム85が録音の処理が可能なプログラムでないと判断した場合、メッセージを送信するためのソケットを介して、NACKをエラーに格納したメッセージを録音アプリケーションプログラム85に送信する。録音アプリケーションプログラム85が録音の処理が可能なプログラムでないと判断された場合、以下の処理は実行されず、音声データは送信されない。
ステップS3402において、録音アプリケーションプログラム85は、オーディオデータ処理プログラム83から送信されたACKまたはNACKが格納されたメッセージを受信する。録音アプリケーションプログラム85は、メッセージのエラーに格納されているACKまたはNACKを抽出する。
ステップS2403において、録音アプリケーションプログラム85が録音の処理が可能なプログラムであると判断された場合、ステップS2404に進み、オーディオデータ処理プログラム83は、録音する音声データを、音声データを送信するためのソケットを介して録音アプリケーションプログラム85に送信する。
ステップS3404において、録音アプリケーションプログラム85は、音声データを送信するためのソケットを介して送信された音声データを受信する。
ステップS3405において、録音アプリケーションプログラム85は、受信された音声データの大きさ(例えば、バイト数)を基に、音声データに欠落があるか否かなど、受信した音声データをチェックする。
ステップS3406において、録音アプリケーションプログラム85は、音声データに欠落がある場合、エラーにNACKを格納したメッセージをソケットを介してオーディオデータ処理プログラム83に送信し、音声データに欠落がない場合、エラーにACKを格納したメッセージをソケットを介してオーディオデータ処理プログラム83に送信する。
ステップS2405において、オーディオデータ処理プログラム83は、録音アプリケーションプログラム85から送信された、ACKまたはNACKがエラーに格納されているメッセージを受信する。オーディオデータ処理プログラム83は、メッセージのエラーからACKまたはNACKを抽出する。
ステップS2406において、オーディオデータ処理プログラム83は、NACKを格納したメッセージを受信したか否かを判定し、NACKを格納したメッセージを受信したと判定された場合、ステップS2407に進み、音声データを録音アプリケーションプログラム85に送信するためのソケットを介して、音声データを再送する。ステップS2407の処理で再送される音声データは、ステップS2404の処理で送信される音声のデータと同一である。
ステップS3407において、録音アプリケーションプログラム85は、オーディオデータ処理プログラム83から再送された音声のデータを受信する。なお、ステップS3404の処理で欠落がない音声データが受信された場合、ステップS3407の処理は実行されない。
また、音声データの再送の処理は、1つの音声データに対応して、1度限りとされる。1つの音声データを数回再送すると、録音のタイミングが間に合わなくなるためである。
ステップS2406において、ACKを格納したメッセージを受信したと判定された場合、録音アプリケーションプログラム85がステップS3404の処理で欠落がない音声データを受信したので、音声データを再送する必要がなく、ステップS2407の処理はスキップされ、処理は、ステップS2408に進む。
ステップS2408において、オーディオデータ処理プログラム83は、音声データの送信を終了するか否かを判定し、音声データの送信を終了しないと判定された場合、ステップS2404に戻り、音声データの送信の処理を繰り返す。
ステップS2408において、音声データの送信を終了すると判定された場合、処理は終了する。
ステップS3403において、NACKを受信したと判定された場合、録音アプリケーションプログラム85が再生の処理が可能なプログラムでない、すなわち、録音アプリケーションプログラム85は、オーディオデータ処理プログラム83に音声データを送信することはできないので、処理は終了する。
次に、オーディオデータ処理プログラム83乃至再生アプリケーションプログラム86の処理の詳細を説明する。
図12は、オーディオデータ処理プログラム83の起動の処理を説明するフローチャートである。
ステップS11において、オーディオデータ処理プログラム83は、自分自身、すなわち、オーディオデータ処理プログラム83全体のプロセスを始動する。
ステップS12において、オーディオデータ処理プログラム83は、初期化の処理を実行する。
ステップS13において、オーディオデータ処理プログラム83は、カーネル82に、オーディオデータ処理プログラム83に含まれる各プログラム、すなわち読み出し制御プログラム101乃至ゼロデータ生成プログラム110のスレッドとしての起動を要求する。
また、オーディオデータ処理プログラム83は、読み出しデータバッファ102、録音データバッファ104、再生データバッファ109、および書き込みデータバッファ111の記憶領域を確保する。
マルチスレッドシステムにおいては、複数のスレッドが、1つのプロセスで実行され、マルチスレッドシステムは、1つのプロセス内でのマルチタスク処理を可能とする。同じプロセス中のスレッド同士は、メモリ資源またはI/O(Input/Output)資源などのリソースを共有するので、読み出し制御プログラム101乃至ゼロデータ生成プログラム110間のデータの転送は、容易に実行されることになる。
ステップS14において、カーネル82は、オーディオデータ処理プログラム83に含まれる各プログラム、すなわち読み出し制御プログラム101乃至ゼロデータ生成プログラム110を並列(時分割)に実行し、処理は終了する。
読み出し制御プログラム101乃至ゼロデータ生成プログラム110は、停止が要求されるまで、並列に実行される。
図13は、送信制御プログラム107による、メッセージの処理を説明するフローチャートである。
ステップS31において、送信制御プログラム107は、カーネル82から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップS32に進み、ソケット接続要求またはメッセージが受信されたか否かを判定し、ソケット接続要求およびメッセージが受信されていないと判定された場合、ステップS32に戻り、ソケット接続要求またはメッセージが受信されるまで、判定の処理を繰り返す。
ステップS32の処理は、例えば、selectシステムコールと称する関数の実行により実現される。
ステップS32において、ソケット接続要求またはメッセージが受信されたと判定された場合、ステップS33に進み、送信制御プログラム107は、受信されたのがメッセージであるか否かを判定し、メッセージが受信されたと判定された場合、ステップS34に進み、メッセージからコマンドを抽出し、抽出されたコマンドに応じた処理を起動し、コマンドに対応する処理を実行し、ステップS31に戻り、処理を繰り返す。
ステップS33において、受信されたのがソケット接続要求であると判定された場合、ステップS35に進み、送信制御プログラム107は、録音アプリケーションプログラム85または再生アプリケーションプログラム86とのソケット接続を確立して、ステップS31に戻り、処理を繰り返す。
例えば、ソケット接続の確立により、録音アプリケーションプログラム85または再生アプリケーションプログラム86と、オーディオデータ処理プログラム83とに対応するポート番号が、ソケットオブジェクトとしてカーネル82に記憶される。ソケットサービスプログラム84−1または84−2は、ソケット接続の確立により生成されたソケットオブジェクトを基に、音声データを受け取る相手、または音声データの転送先を特定する。
例えば、ソケット接続の確立を要求した相手、すなわち、録音アプリケーションプログラム85および再生アプリケーションプログラム86のいずれかは、ソケット接続が確立されたとき、オーディオデータ処理プログラム83から、自分が利用すべきソケットを特定するためのハンドルを取得する。
ステップS31において、停止が要求されたと判定された場合、処理は終了する。
受信制御プログラム108による、メッセージの処理は、図13のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
次に、読み出し制御プログラム101による、サウンドカード18から音声データを読み出す処理を図14のフローチャートを参照して説明する。
ステップS51において、読み出し制御プログラム101は、録音アプリケーションプログラム85から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップS52に進み、サウンドカード18から読み出しデータバッファ102の半分の大きさの音声データを読み出す。より詳細には、読み出し制御プログラム101は、システムコールにより、カーネル82にサウンドカード18からの音声データの読み出しを要求し、カーネル82は、デバイスドライバ81に、サウンドカード18からの音声データの読み出しを実行させる。カーネル82は、読み出された音声データを読み出し制御プログラム101に供給する。
ステップS52、並びに後述するステップS56およびステップS59の処理において、読み出される音声データは、IEC60958の規格に準拠したサブフレームの集合からなる。
図15は、サウンドカード18から読み出される音声データの方式を説明する図である。IEC60958の規格に準拠した音声データは、ストリームとしてサウンドカード18から入力され、入力された音声データは、オーディオデータ処理プログラム83に供給される。また、オーディオデータ処理プログラム83から供給された、IEC60958の規格に準拠した音声データは、サウンドカード18から出力される。
図15は、IEC60958の規格の最小単位であるサブフレームである音声データの構造を示す図である。サブフレームは、サンプル(音声の振幅を示すデータ)を1つ含む、32ビットのデータからなる。フレームは、2つのサブフレームからなり、L(左)チャンネルおよびR(右)チャンネルのサンプルを1つずつ含む。フレームをサンプルと称する場合もある。
すなわち、サブフレームは、LチャンネルおよびRチャンネルのいずれかの1つのサンプルを含む。
ブロックは、連続する192個のフレームからなる。
図中の左側に対応する、サブフレームの最上位から、4ビットは、プリアンブル(Preamble)である。プリアンブルは、B、M、またはWのいずれかである。
ブロックの先頭のサブフレームは、Lチャンネルのサンプルを格納し、ブロックの先頭のサブフレームのプリアンブルは、Bである。
Rチャンネルのサンプルを格納するサブフレームのプリアンブルは、Wである。
ブロックの先頭のサブフレームを除き、Lチャンネルのサンプルを格納するサブフレームのプリアンブルは、Mである。
プリアンブルの次の4ビット(最上位から5ビット目乃至8ビット目)は、補助ビット(Auxiliary Sample Bits)であり、補助ビットの次の20ビット(最上位から9ビット目乃至28ビット目)は、音声のサンプル(サンプリングデータ)であるオーディオサンプルワード(Audio Sample Word)である。
補助ビットの4ビットには、音声データを24ビットに拡張したとき、音声データの上位のビットが格納される。
サブフレームの最上位から29ビット目の1ビットは、サブフレームが有効であるか否かを示す有効フラグ(Validity Bit)(以下、Vビットとも称する)であり、Vビットの次の1ビットは、ユーザデータ(User Data Bit)(以下、Uビットとも称する)である。サブフレームの最上位から31ビット目の1ビットは、チャネルの状態を示すチャンネルステータス(Channel Status Bit)(以下、Cビットとも称する)であり、Cビットの次のビットは、パリティビット(Parity Bit)(以下、Pビットとも称する)である。
1つのブロックに属するサブフレームのCビットは、集合して、音声データの属性を示す。すなわち、音声データの属性を示すチャンネルステータスは、1つのブロックにおける、192ビット(24バイト)の、Lチャンネルのサンプルを格納するサブフレームのCビットにより構成される。
言い換えれば、チャンネルステータスは、プリアンブルがBであるサブフレームのCビット、およびプリアンブルがMであるサブフレームのCビットが順に収集され、構成される。
チャンネルステータスには、音声データの用法である業務用または民生用の区別を示すビット、音声データであるかまたは音声以外のデータであるかの識別を示すビット、エンファシスの有無を示す3ビットのデータ、IEC60958の規格における8ビットのカテゴリコード、またはLビットなどが含まれる。
なお、プリアンブルWには、プリアンブルBまたはプリアンブルMと同じ内容が格納されている。
カテゴリコードにより示されるカテゴリが光ディスク機器、例えば、CDまたはMD(Mini-Disc)である場合、各サブフレームに含まれるUビットは、サブコードと称する形式を有し、サブコードから光ディスクに記録されているコンテンツ(曲)の番号を変更するときに有用な情報を含む。
サブコードについては、以下のように定められている。
Uビットは、左右両チャンネルを多重化して使用し、平均1176ビットからなるサブコードブロックを構成する。CDの1フレームは、12のオーディオサンプルとして1つのサブコーディングシンボルからなる。98のサブコーディングシンボルでサブコードブロックを構成し、その結果、必要なUビットは、12*98=1176ビットとなる。
サブコードシンクは、最小16回連続する'0'ビットで現される。スタートビットは、'1'である。スタートビットに続いて、Q乃至Wの7ビットが伝送される。スタートビットの間隔は、最小8ビットから最大16ビットまで可変できる。
サブコードフレームは、98フレームからなり、サブコードフレームには、それぞれ98ビットの、サブコードP、サブコードQ、サブコードR、サブコードS、サブコードT、サブコードU、サブコードV、およびサブコードWが含まれる。
図14に戻り、ステップS53において、読み出し制御プログラム101は、サウンドカード18から読み出された音声データのうち、先頭のサブフレームのプリアンブルがWであるか否かを判定する。ステップS53において、先頭のサブフレームのプリアンブルがWであると判定された場合、先頭のサブフレームにはRチャンネルのサンプルが格納されているので、ステップS54に進み、読み出し制御プログラム101は、読み出した音声データを、読み出しデータバッファ102の書き込みポインタが示す、書き込み位置から1サブフレーム後にずらして、読み出しデータバッファ102に格納する。
ステップS55において、読み出し制御プログラム101は、ステップS54の音声データの読み出しデータバッファ102への格納の処理に対応して、書き込みポインタを更新する。
ステップS56において、読み出し制御プログラム101は、読み出しデータバッファ102の半分から1サブフレームの大きさを減算した大きさの音声データを、サウンドカード18から読み出し、手続は、ステップS60に進む。
一方、ステップS53において、先頭のサブフレームのプリアンブルがWでないと判定された場合、先頭のサブフレームにはLチャンネルのサンプルが格納されているので、ステップS57に進み、読み出し制御プログラム101は、読み出した音声データを、読み出しデータバッファ102の書き込みポインタの指している位置に格納する。
ステップS58において、読み出し制御プログラム101は、ステップS57の音声データの読み出しデータバッファ102への格納の処理に対応して、書き込みポインタを更新する。
ステップS59において、読み出し制御プログラム101は、読み出しデータバッファ102の半分の大きさの音声データを、サウンドカード18から読み出し、手続は、ステップS60に進む。
ステップS60において、読み出し制御プログラム101は、ステップS56の処理またはステップS59の処理で読み出した音声データを、読み出しデータバッファ102の書き込みポインタが指している位置に格納する。
ステップS61において、読み出し制御プログラム101は、ステップS60の音声データの読み出しデータバッファ102への格納の処理に対応して、書き込みポインタを更新し、ステップS51に戻り、音声データの読み出しの処理を繰り返す。
ステップS51において、録音アプリケーションプログラム85から停止が要求されたと判定された場合、処理は終了する。
このように、サウンドカード18から読み出された、読み出しデータバッファ102の半分の大きさの音声データの先頭に位置するサブフレームが、Lチャンネルのサンプルを格納する場合、図16に示すように、音声データは、読み出しデータバッファ102の書き込みポインタで指定される位置に書き込まれる。そして、サウンドカード18から、さらに読み出しデータバッファ102の半分の大きさの音声データが読み出され、読み出された音声データが、読み出しデータバッファ102に、前回に書き込まれた音声データに続いて書き込まれる。
サウンドカード18から読み出された、読み出しデータバッファ102の半分の大きさの音声データの先頭に位置するサブフレームが、Rチャンネルのサンプルを格納する場合、図17に示すように、音声データは、読み出しデータバッファ102の書き込みポインタで指定される位置から、1サブフレーム後にずらして書き込まれる。そして、サウンドカード18から、さらに読み出しデータバッファ102の半分の大きさから1サブフレームを減算した大きさの音声データが読み出され、読み出された音声データが、読み出しデータバッファ102に、前回に書き込まれた音声データに続いて書き込まれる。
このようにすることで、読み出しデータバッファ102の所定の位置には、Lチャンネルのサブフレームが格納されることになり、LチャンネルとRチャンネルとの音声の逆転が防止される。
次に、図18乃至図20のフローチャートを参照して、オーディオデータ解析フィルタプログラム103およびIEC60958エンコードプログラム106による、音声データの解析および加工の処理を説明する。
ステップS101において、オーディオデータ解析フィルタプログラム103は、カーネル82から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップS102に進み、読み出しポインタの値を基に、読み出しデータバッファ102に新たな音声のデータが格納されたか否かを判定する。
ステップS102において、読み出しデータバッファ102に新たな音声のデータが格納されたと判定された場合、ステップS103に進み、オーディオデータ解析フィルタプログラム103は、録音データバッファ104に格納されている音声データのうち、書き込みポインタで示される音声データのヘッダに通し番号を書き込む。
図21および図22は、録音データバッファ104または再生データバッファ109に格納される音声データの構造を説明する図である。
図21に示すように、録音データバッファ104に格納される音声データ、および再生データバッファ109に格納される音声データは、ヘッダ部およびオーディオデータ部からなる。ヘッダ部には、サウンドカード18から取得された音声データを解析して得られた情報、すなわち、音声データの処理を制御するための情報が格納される。オーディオデータ部には、サウンドカード18から取得された音声データのサンプル、すなわち音声そのもののデータが格納される。1つのオーディオデータ部には、複数の音声データのサンプルが格納される。すなわち、1つのオーディオデータ部は、複数のサブフレームに対応する。
録音アプリケーションプログラム85は、オーディオデータ処理プログラム83に対して録音の開始または停止の指示を行うことにより、オーディオデータ処理プログラム83に、録音データバッファ104に格納されている音声データのうち、録音を開始する音声データの位置、および録音を停止する音声データの位置を通知することができる。
図22は、録音データバッファ104に格納される音声データ、および再生データバッファ109に格納される音声データのヘッダ部の構造の詳細を説明する図である。
ヘッダ部には、通し番号、Cビット情報、SCMS(Serial Copy Management System)情報、デジタルデータのカテゴリ、外部装置再生フラグ、トラックチェンジフラグ、トラックチェンジポイント位置情報、有効オーディオデータ長、再生情報、およびオーディオ信号レベルが含まれる。
通し番号は、音声データに付される連続する番号である。通し番号は、録音アプリケーションプログラム85が録音経過時間を知るために利用される。録音経過時間を知る方法については、後述する。
また、例えば、録音アプリケーションプログラム85は、オーディオデータ処理プログラム83に対して録音の開始または停止の指示を行うとき、オーディオデータ処理プログラム83に、通し番号により、録音データバッファ104に格納されている音声データのうち、録音を開始する音声データ(例えば、最初の音声データ)、および録音を停止する音声データ(例えば、最後の音声データ)を通知するようにしてもよい。
Cビット情報は、サウンドカード18から読み出される、IEC60958の規格に準拠した音声データに含まれるCビットと同一の情報が設定される。
SCMS情報は、サウンドカード18から読み出される、IEC60958の規格に準拠した音声データに含まれるCビットを解析して得られた情報のうち、サウンドカード18から読み出された音声データの録音が許可されているか否かを示す情報である。
デジタルデータのカテゴリは、サウンドカード18から読み出される、IEC60958の規格に準拠した音声データに含まれるCビットを解析して得られたカテゴリ情報に加えて、サウンドカード18を介して読み出された音声データが、オーディオ用CD-R(CD-Recordable)に記録されている音声データであるか、または通常のCDに記録されている音声データであるかを判定するための情報を付したものである。
オーディオ用CD-Rのカテゴリは、CDであるが、オーディオ用CD-Rに記録されている音声データのCビットに含まれる著作権情報が、4乃至10Hzで振動している特殊なカテゴリである。著作権情報が4乃至10Hzで振動している音声データは、記録してはならないので、その旨を示す情報がカテゴリとしてヘッダ部に格納される。
外部装置再生フラグは、サウンドカード18を介して読み出される音声データを供給する外部再生装置51が再生中であるか否かを示すフラグである。
一般に、多くの録音機器は、入力された音声データの音声のレベルが所定のスレッシュ値以下である状態が、所定の期間続いたとき、曲間を検出したものと判断し、曲の番号を変えるという機能を有する。
しかしながら、販売されているCDには、アーティストの意志により、長く続く無音を意図的に挿入したものが存在する。このようなCDから読み取られた音声データを記録するとき、1つの曲に曲間が挿入されてしまう場合がある。
これを防止するために、外部再生装置51が再生中であれば、曲間を挿入しないようにすればよい。
外部再生装置51が再生中であるか否かの判断は、音声データのカテゴリがCDである場合、サブコードQに含まれるaframeが20回連続狭義単調増加しているか否かを基準とする。従って、外部再生装置51が再生中であるか否かの判断は、音声データのカテゴリがCDであるときのみ可能である。
トラックチェンジフラグは、サウンドカード18を介して読み出される音声データのUビットを解析した結果、曲の切れ目が検出されたことを示す。
トラックチェンジポイント位置情報は、トラックチェンジフラグが真であるとき(曲の切れ目が検出されたとき)、オーディオデータ部の先頭から何バイト目に曲間が検出されたかを示す。
有効オーディオデータ長は、再生アプリケーションプログラム86により再生データバッファ109に音声データが格納されたとき、再生データバッファ109に格納された音声データのうち、何バイト目まだの音声データを実際に再生すべきかを指定する。1つの曲に対応する音声データの大きさが、オーディオデータ部の大きさに比較して小さいとき、有効オーディオデータ長が、有効に利用さることになる。
再生情報は、再生経過時間または録音経過時間を知るために利用されるメモ領域である。再生情報を基に、再生経過時間または録音経過時間を知る方法は、後述する。
オーディオ信号レベルは、録音データバッファ104または再生データバッファ109に格納されている音声データの信号レベルを示す。
図18に戻り、ステップS103において、録音データバッファ104の書き込みポインタで示される音声データのヘッダ部に通し番号が書き込まれる。
ステップS104において、オーディオ解析フィルタプログラム103は、読み出しデータバッファ102に格納されている音声データのうち、読み出しポインタで指定されている読み出し位置の音声データに、IEC60958のデコードの処理、およびDIN情報解読処理を適用する。
すなわち、オーディオ解析フィルタプログラム103は、読み出しデータバッファ102に格納されている、IEC60958の規格に準拠するサブフレームの形式である音声データのうち、読み出し位置の音声データから、CビットおよびUビット、並びに音声のサンプリングデータであるオーディオサンプルワードを分離する、いわゆるIEC60958デコード処理を読み出しデータバッファ102の音声データに適用する。オーディオ解析フィルタプログラム103は、CビットおよびUビットを分離し、解析した結果を、録音データバッファ104の書き込みポインタで指定される音声データのヘッダ部に書き込む。
オーディオ解析フィルタプログラム103は、分離されたCビットなどを解析することにより、サウンドカード18から読み出され、読み出しデータバッファ102に格納されている音声データが、SCMSの規格に準拠して、記録可能であるかを調べる。記録が禁止されている、または記録してはならない音声データであると判定された場合、記録の処理は、停止される。
SCMSの規格によれば、デジタルデータである音声データの2世代に渡るコピーが発生しないことが保証される。
オーディオ解析フィルタプログラム103は、カテゴリがCDまたはMDであるとき、Uビットから曲間を検出する。オーディオ解析フィルタプログラム103は、検出した曲間に対応する情報を、録音データバッファ104の書き込みポインタで指定される音声データのヘッダ部に書き込む。
図23は、カテゴリがCDであるときのサブコードQの構造を示す図である。
図24は、カテゴリがMDであるときのサブコードQの構造を示す図である。
8ビットのTNOは、再生されている楽曲の曲番号を示す。オーディオ解析フィルタプログラム103は、曲番号を基に、曲間を検出する。
カテゴリがCDであるときのサブコードQにおける、各8ビットずつのamin,asec、およびaframeは、それぞれBCD(Binary-Coded Decimal)2桁のデータを含む。amin,asec、およびaframeの合わせて6桁のBCDのデータは、CDの先頭を基準とした、CDに記録されている音声の経過時間を示す。サブコードフレームの繰り返し周波数は、75Hzなので、aframeには、1/75秒を単位とした経過時間を示すデータが配置され、asecには、1秒を単位とした、経過時間を示すデータが配置され、aminには、1分を単位とした、経過時間を示すデータが配置される。
ステップS105において、オーディオ解析フィルタプログラム103は、Cビットの解析の結果を基に、音声データがエンファシスされているか否かを判定し、音声データがエンファシスされていると判定された場合、ステップS106に進み、音声データをデエンファシスし、手続は、ステップS107に進む。
ステップS105において、音声データがエンファシスされていないと判定された場合、デエンファシスの処理は不要なので、ステップS106の処理はスキップされ、手続は、ステップS107に進む。
これにより、録音アプリケーションプログラム85により録音される音声データは、常に、デエンファシスされたものとなる。
このように、音声データに含まれる、Cビット、Uビット、またはサブコードQなどの制御情報が抽出され、抽出された制御情報に基づいて、音声データの記録が禁止されるか、またはコンテンツである音声データが処理される。
ステップS107において、オーディオ解析フィルタプログラム103は、オーディオサンプルワードのレベル変更のための演算を実行して、レベルが変更されたオーディオサンプルワードを録音データバッファ104のオーディオデータ部に書き込む。例えば、オーディオ解析フィルタプログラム103は、-∞dB乃至+18dB間で、オーディオサンプルワードのレベルを調整する。
ステップS108において、オーディオ解析フィルタプログラム103は、録音データバッファ104の書き込みポインタをインクリメントする。
ステップS109において、オーディオ解析フィルタプログラム103は、読み出しデータバッファ102の読み出しポインタをインクリメントし、手続は、ステップS110に進む。
ステップS102において、読み出しデータバッファ102に新たな音声のデータが格納されていないと判定された場合、録音データバッファ104への音声データの書き込みの処理は必要ないので、ステップS103乃至ステップS109の処理はスキップされ、手続は、ステップS110に進む。
ステップS110において、オーディオデータ処理プログラム83は、録音アプリケーションプログラム85、再生アプリケーションプログラム86、またはカーネル82からの指示を基に、書き込みデータバッファ111に書き込む音声データを選択する。
ステップS111において、IEC60958エンコードプログラム106は、再生データバッファ109が選択された、すなわち、再生データバッファ109に格納されている音声データを書き込みデータバッファ111に書き込むか否かを判定し、再生データバッファ109が選択されたと判定された場合、ステップS112に進み、再生データバッファ109に新たな音声データが格納されたか否かを判定する。
ステップS112において、再生データバッファ109に新たな音声データが格納されたと判定された場合、ステップS113に進み、IEC60958エンコードプログラム106は、スイッチ105を切り換えて、読み出しポインタで指定される、再生データバッファ109の読み出し位置から、音声データを取得する。
ステップS114において、IEC60958エンコードプログラム106は、再生データバッファ109に読み出しポインタをインクリメントさせる。
ステップS115において、IEC60958エンコードプログラム106は、ステップS113の処理で取得された音声データを、IEC60958方式にエンコードし、音声データのピーク値を計算し、手続は、ステップS117に進む。
すなわち、ステップS115において、IEC60958エンコードプログラム106は、再生データバッファ109から読み出した音声データのヘッダ部に含まれる制御情報を抽出し、抽出した制御情報を基に、コンテンツである音声データを処理する。
ステップS112において、再生データバッファ109に新たな音声データが格納されていないと判定された場合、ステップS116に進み、IEC60958エンコードプログラム106は、スイッチ105を切り換えて、ゼロデータ生成プログラム110から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値(すなわち、ゼロ)を計算し、手続は、ステップS117に進む。
ステップS111において、再生データバッファ109が選択されていないと判定された場合、再生データバッファ109に格納されている音声データを処理する必要がないので、ステップS112乃至ステップS116の処理はスキップされ、手続は、ステップS117に進む。
ステップS117において、IEC60958エンコードプログラム106は、録音データバッファ104が選択された、すなわち、録音データバッファ104に格納されている音声データを書き込みデータバッファ111に書き込むか否かを判定し、録音データバッファ104が選択されたと判定された場合、ステップS118に進み、録音データバッファ104に新たな音声データが格納されたか否かを判定する。
ステップS118において、録音データバッファ104に新たな音声データが格納されたと判定された場合、ステップS119に進み、IEC60958エンコードプログラム106は、スイッチ105を切り換えて、再生データバッファ109から、音声データを取得する。
ステップS120において、IEC60958エンコードプログラム106は、ステップS119の処理で取得された音声データを、IEC60958方式にエンコードし、音声データのピーク値を計算し、手続は、ステップS122に進む。
ステップS118において、録音データバッファ104に新たな音声データが格納されていないと判定された場合、ステップS121に進み、IEC60958エンコードプログラム106は、スイッチ105を切り換えて、ゼロデータ生成プログラム110から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値(すなわち、ゼロ)を計算し、手続は、ステップS122に進む。
ステップS117において、録音データバッファ104が選択されていないと判定された場合、録音データバッファ104に格納されている音声データを処理する必要がないので、ステップS118乃至ステップS121の処理はスキップされ、手続は、ステップS122に進む。
ステップS122において、IEC60958エンコードプログラム106は、録音データバッファ104および再生データバッファ109のいずれも選択されていないか否かを判定し、録音データバッファ104および再生データバッファ109のいずれも選択されていないと判定された場合、ステップS123に進み、スイッチ105を切り換えて、ゼロデータ生成プログラム110から供給されたゼロデータを、IEC60958方式にエンコードし、音声データのピーク値(すなわち、ゼロ)を計算し、手続は、ステップS124に進む。
ステップS122において、録音データバッファ104または再生データバッファ109のいずれかが選択されていると判定された場合、IEC60958方式にエンコードされた音声データがすでに取得されているので、ステップS123の処理はスキップされ、手続は、ステップS124に進む。
ステップS124において、IEC60958エンコードプログラム106は、書き込みデータバッファ111の書き込みポインタが指す位置に、IEC60958方式にエンコードされた音声データを書き込む。
ステップS125において、IEC60958エンコードプログラム106は、書き込みデータバッファ111の書き込みポインタをインクリメントする。
ステップS126において、書き込み制御プログラム112は、書き込みデータバッファ111の読み出しポインタが指す位置の音声データをサウンドカード18に書き込む。より詳細には、書き込み制御プログラム112は、システムコールにより、カーネル82にサウンドカード18への音声データの書き込みを要求し、書き込みデータバッファ111の読み出しポインタが指す位置の音声データをカーネル82に供給する。カーネル82は、デバイスドライバ81に、サウンドカード18への、供給された音声データの書き込みを実行させる。サウンドカード18に供給された音声データは、ストリームとして出力される。
ステップS127において、書き込み制御プログラム112は、書き込み制御プログラム112は、書き込みデータバッファ111の読み出しポインタが指す位置の音声データの再生情報を読み出す。
ステップS128において、書き込み制御プログラム112は、書き込みデータバッファ111の読み出しポインタをインクリメントし、ステップS101に戻り、処理を繰り返す。
ステップS101において、停止が要求されていると判定された場合、処理は終了する。
オーディオデータ解析フィルタプログラム103およびIEC60958エンコードプログラム106による、音声データの解析および加工の処理においては、読み出しデータバッファ102、録音データバッファ104、再生データバッファ109、および書き込みデータバッファ111に格納されている音声データが転送される。
ステップS104の処理、ステップS115の処理、ステップS116の処理、ステップS120の処理、ステップS121の処理、およびステップS123の処理が適切な順番で実行されるので、音声データの処理がより短時間でできるようになる。
また、録音データバッファ104に格納されている音声データを、書き込みデータバッファ111に格納するようにした場合、記録しようとする音声データをストリームとして出力することができ、記録と同時に再生することができる。
次に、送信制御プログラム107による、録音アプリケーションプログラム85への、録音データバッファ104に格納されている音声データの送信の処理を図25のフローチャートを参照して説明する。
ステップS151において、送信制御プログラム107は、カーネル82から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、手続は、ステップS152に進む。
ステップS152において、送信制御プログラム107は、録音アプリケーションプログラム85から、ソケット接続要求があるか否かを判定し、ソケット接続要求がないと判定された場合、ソケットの接続の要求がされるまで、ステップS152に戻り、判定の処理を繰り返す。
ステップS152において、ソケット接続要求があると判定された場合、送信制御プログラム107は、ソケットを確立させ、ステップS153に進み、送信制御プログラム107は、メッセージの交換に使用されるソケットを介して送信されたメッセージを基に、録音アプリケーションプログラム85から録音の開始が要求されたか否かを判定する。
ソケットを確立する処理を、より詳細に説明すると、送信制御プログラム107は、カーネル82に、録音アプリケーションプログラム85とのソケットの確立を要求する。カーネル82は、オーディオデータ処理プログラム83と録音アプリケーションプログラム85とのソケットを確立させる。
ステップS153において、録音アプリケーションプログラム85から録音の開始が要求されたと判定された場合、ステップS154に進み、送信制御プログラム107は、録音データバッファ104の読み出しポインタを設定し録音開始位置を決定する。送信制御プログラム107は、録音データバッファ104の読み出しポインタを基に、録音アプリケーションプログラム85に渡す音声データがあるか否かを判定し、録音アプリケーションプログラム85に渡す音声データがあると判定された場合、ステップS155に進み、録音データバッファ104の読み出しポインタが指す位置の音声データを読み出す。
ステップS156において、送信制御プログラム107は、読み出した音声データを、ソケットサービスプログラム84−1により確立された、オーディオデータ処理プログラム83を入力側とし、録音アプリケーションプログラム85を出力側とし、音声データを転送するためのソケットに書き込む。
例えば、送信制御プログラム107は、録音アプリケーションプログラム85に対応するポート番号を指定して、ソケットオブジェクトのsendメソッドを呼び出することにより、音声データをソケットに書き込む。送信制御プログラム107がソケットオブジェクトのsendメソッドを呼び出すと、カーネル82によりソケットサービスプログラム84−1が起動され、ソケットサービスプログラム84−1は、送信制御プログラム107から書き込まれた音声データを受け取り、所定のバッファに格納する。
ここで、ターンアラウンドタイムが保証されておらず、イベントドリブンなマルチタスクオペレーティングシステムを利用した処理系における、録音データバッファ104、およびソケットを使用した音声データの転送についてより詳細に説明する。
録音データバッファ104は、記録に必要な大きさ以上の大きさの音声データをスプールし、録音データバッファ104に格納されている音声データが録音アプリケーションプログラム85に送信されるので、録音アプリケーションプログラム85において、記録している音声のデータが途切れてしまうことが防止される。
次に、イベントドリブンなマルチタスクオペレーティングシステムにおいて、問題となるのは、録音または再生を行う音声データのアップデートができたことを相手に通知することである。
例えば、44.1KHzでサンプリングされた音声データ4096バイトを1単位として、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に送信するとき、23.22m秒毎に、オーディオデータ処理プログラム83は、録音アプリケーションプログラム85に音声データがアップデートできたことを通知しなければならない。
ソケットを利用しない場合の処理の例を図26に示す。
ソケットを利用しない場合において、音声データがアップデートできたことを通知する処理がオーバーヘッドとなる。従来、ソケットを利用せずにプロセス間の通知を行うには、アプリケーションプログラムにシグナルを送るか、またはプロセス間通信用のメッセージキューを利用していた。
図26において、Aで示す矢印は、オーディオデータ処理プログラム83から、録音アプリケーションプログラム85への通知を示す。図26において、Bで示す星印は、通知に対応する録音アプリケーションプログラム85の応答の処理を示す。
アプリケーションプログラムにシグナルを送るか、またはプロセス間通信用のメッセージキューを利用すると、処理のプライオリティが低く、オペレーティングシステムのプロセススケジューリングの問題以外に、通知を受ける方のプログラムの応答時間が一定しないという問題が生じる。
同様に、シェアードメモリを利用した場合、通知に時間がかかる。
また、例えば、1つのスレッドにおいて実行されるポーリングの処理においては、10m秒毎に一定のデータを処理するように設定したとしても、システムの状態により、その間隔が20m秒になる場合がありえる。
図26において、Cで示すように、オーディオデータ処理プログラム83から、録音アプリケーションプログラム85への通知がなされてから、23.22m秒以内に、録音アプリケーションプログラム85が、応答の処理が実行できない場合が生じ得る。このような場合には、音声データが欠落してしまうことになる。
これに対して、ソケットを利用したとき、ソケットは、プロセス(アプリケーションプログラム)とプロセスとを結ぶデータのパイプの役割を果たす。
ソケットを介して音声データを送るプロセスは、ソケットが音声データで一杯であるか否かを知ることができ、音声データで一杯でないとき、音声データが一杯になるまで音声データを送ることができる。ソケットを介して音声データを送るプロセスは、ソケットの状態のみに依存し、他のアプリケーションプログラムの状態に依存しない。
ソケットを介して音声データを受け取るプロセスは、ソケットに音声データがあればそれを取得することができ、ソケットに音声データがなければ読み出しが待たされる(他の処理が実行される)。ソケットを介して音声データを受け取るプロセスは、ソケットがエンプティであるか否かを知ることができ、ソケットがエンプティになるまで、音声データを取得することができる。
すなわち、オーディオデータ処理プログラム83側から見れば、ソケットを利用することにより、再生または記録において、音声データが途切れないように、録音アプリケーションプログラム85または再生アプリケーションプログラム86に対して、音声データの送信のイニシアティブを取ることができるようになる。
ここで、ソケットについて、さらにより詳細に説明する。
多くのプロセス間通信のほとんどは、1台のコンピュータ上で共有リソースを使用することを前提としている。つまり、使用されるリソースは、ファイルシステム空間、共有メモリ、またはメッセージキューなど、それぞれの方法ごとに異なるが、そのコンピュータで実行中の1つのプロセスだけが、リソースを使用できる点は共通する。
オペレーティングシステムの一例であるUNIX(登録商標)では、プロセス間通信の1つであるパイプと呼ばれる機構を拡張したソケットインターフェースと呼ばれる通信手段が導入された。ソケットは、ネットワークを介した通信も扱うことができるように設計され、ソケットの1つの特徴は、高い汎用性にある。
具体的には、あるコンピュータ上のプロセスと他のコンピュータのプロセスとは、ソケットを使い、互いに通信できる。ソケットを利用してクライアントサーバシステムをネットワーク上に分散して構築することができる。また、UNIX(登録商標)に限らず、Windows(登録商標)においても、ソケットの仕様が公開され、利用可能である。したがって、ネットワークを介して、異なるオペレーティングシステム間で通信ができる。
図27に示すように、ソケットは、1台のマシン上でローカルなクライアントサーバシステムや、ネットワークを介したクライアントサーバシステムの開発を可能にする通信機構である。UNIX(登録商標)が提供する印刷などの機能、リモートログイン機能、またはFTP(File Transfer Protocol)サービスとネットワークユーティリティの通信機能は、ソケットを使って実現されている。
ソケットの動作は、会社などにかかってくる電話にたとえて説明されることが多い。つまり、会社にかかってきた電話は、受け付けによって適切な部署にまわされ(サーバープロセス)、さらに、そこから適切な担当者(サーバーソケット)へと転送される。この時点で、かかってきた電話(クライアント)と適切な通話先(エンドポイント)とが結びつけられたことになり、間に介在するオペレータ役は、他の電話を受けることができるようになる。
UNIX(登録商標)において、こうしたソケットの接続は、以下の要領で行われる。まず、サーバーアプリケーションは、ソケットを作成する。ソケットは、サーバープロセスに割り当てられるオペレーティングシステムのリソースである。サーバーがソケット作成した時点では、ほかのプロセスは、まだソケットにアクセスできない。
次に、サーバープロセスがソケットに名前をつける。ローカルな通信をおこなう場合、ソケットの名前には、ファイルシステム上のファイル名が与えられる。一方、ネットワークソケットの場合、クライアントからの接続可能な特定のネットワークに応じたサービス識別子(ポート番号・アクセスポイント)が、ソケットの名前となる。
サーバープロセスは、名前のついたソケットにクライアントが接続してくるのを待つ。サーバーがクライアントからの接続を許諾すると、名前のついたソケットとは別の新しいソケットが作成され、以降、この新しいソケットが、クライアントとサーバーとの通信に用いられ、名前のついたソケットは、他のクライアントからの接続要求を待つために再利用される。
ソケットは、ドメイン・タイプ・プロトコルという3つの属性によって特徴づけられる。また、ソケットはアドレスを持ち、このアドレスがソケットの名前として使われる。アドレスの形式はドメインによって異なる。
ソケットのドメインは、ソケットの通信で使用されるネットワークを指定するものである。最もよく使われるソケットのドメインは、インターネットネットワークである。インターネットネットワークは多くのUNIX(登録商標)のLAN(Local Area Network)環境やインターネットで用いられている。インターネットネットワークを支えているプロトコル(IP(Internet Protocol))においては、1つのアドレスファミリであるIPアドレスを用いて通信が行われる。ほとんどの場合、インターネット上のマシンを特定するには名前を使うが、これらの名前は実際に通信をおこなう前に低水準のIPアドレスに変換される。クライアントがネットワーク上でソケットを介してサーバーと接続するには、サーバーコンピュータのIPアドレスを知っている、もしくは探せる必要がある。
一方、サーバー上では複数のサービスが提供されている可能性がある。そこで、クライアントは、IPアドレスに付随するIPポートを使って接続先のマシンの特定のサービスを指定する。システム内部では、一意のポート番号によってポートが識別される。外部との間ではIPアドレスとポート番号との組み合わせにより接続先が特定される。ソケットは、通信の端点(エンドポイント)であり、実際に通信をおこなう前にソケットをポートに結びつける必要がある。
サーバー側では、特定のポートへの接続を待つ。よく知られたサービスにはあらかじめ決められたポート番号が割り当てられている。例えば、FTP(File Transfer Protocol)などは21、HTTP(Hypertext Transfer Protocol)は80などである。
また、ソケットのタイプというものがある。これは1つのドメインには、それぞれの特徴の異なる様々な通信手段が用意されていることが多いためである。UNIX(登録商標)ドメインと呼ばれるドメインソケットでは信頼性の高い双方向通信経路が利用できる。ネットワークドメインの場合には、ネットワークの特性に注意する必要がある。インターネットプロトコルではストリームとデータグラムという二つの異なるレベルのサービスが存在する。このうちストリームソケットでは、信頼性の高い順次双方向のバイトストリームに基づく接続が利用でき、送信されたデータが喪失したり、重複したり、順番入れ替わったりしないことが保証されている。もう1つのサービスであるデータグラムソケットにおいては、接続の確立および維持は行われない。データグラムソケットは、情報に対する一回のみに問い合わせ、ステータス情報の定期的な提供、またはプライオリティが低いログの収集などに適している。
音声データの転送には、ストリームソケットが使用される。
次に、本発明に係る記録再生装置におけるソケットの動作について、説明する。
図28は、オーディオデータ処理プログラム83が、録音アプリケーションプログラム85に送信すべき音声データを有する場合の処理を説明する図である。
録音アプリケーションプログラム85は、オーディオデータ処理プログラム83から音声データを受け取るために、ソケットサービスプログラム84−1による確立される、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に音声データを転送するためのソケットから、所定の大きさの音声データを読み出す処理を繰り返す。
録音アプリケーションプログラム85は、ソケットに音声データが読み出されているとき、所定の大きさの音声データをソケットから取得し、ソケットから音声データを取得した後、即座に、次の処理を実行する。録音アプリケーションプログラム85は、ソケットに音声データが読み出されていないとき、音声データをソケットから読み出そうとするが、ソケットに音声データがないので、即座に、次の処理を実行する。
録音アプリケーションプログラム85による、ソケットから音声データを読み出す処理は、ソケットに音声データが読み出されているときであっても、ソケットに音声データが読み出されていないときであっても、即座に実行されて、終了し、次の処理が実行される。
言い換えれば、録音アプリケーションプログラム85による、ソケットから音声データを読み出す処理(プロセス)は、音声データを読み出す処理に要する時間だけで常に終了する。従って、録音アプリケーションプログラム85による、ソケットから音声データを読み出す処理は、他のプロセスの状態の変化を待つことがなく、音声データを読み出す処理に要する時間以上に、記録再生装置のリソースを占有することがない。
録音データバッファ104に、録音アプリケーションプログラム85に送信すべき音声データが格納されているとき、オーディオデータ処理プログラム83は、ソケットサービスプログラム84−1による確立される、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に音声データを転送するためのソケットに書き出す。
ソケットに音声データが書き出されたとき、録音アプリケーションプログラム85は、あらかじめ読み出しの準備が整っているので、ソケットに音声データが到着し次第すぐに音声データを読み出す。
録音データバッファ104に、録音アプリケーションプログラム85に送信すべき音声データが格納されていないとき、図29に示すように、オーディオデータ処理プログラム83は、ソケットに音声データを書き出さない。録音アプリケーションプログラム85は、ソケットに音声データがある限り、音声データの読み出しの処理を実行し、ソケットに音声データがないとき、音声データの読み出しの処理を実行しない。
このように、ステップS156の処理は、無用にリソースを占有することなく、音声データをソケットに書き出すのに必要な期間で終了する。
図25に戻り、ステップS157において、図11のフローチャートを参照して説明したように、録音アプリケーションプログラム85が、ACKまたはNACKを格納したメッセージを送信してくるので、送信制御プログラム107は、オーディオデータ処理プログラム83と録音アプリケーションプログラム85とのメッセージの交換に使用されるソケットから、ACKまたはNACKを格納したメッセージを読み出す。
ステップS158において、送信制御プログラム107は、メッセージからACKまたはNACKを抽出して、NACKが受信されたか否かを判定し、NACKが受信されたと判定された場合、ステップS159に進み、ステップS155の処理で読み出した音声データを、再送する。すなわち、送信制御プログラム107は、ソケットサービスプログラム84−1により確立された、オーディオデータ処理プログラム83を入力側とし、録音アプリケーションプログラム85を出力側とし、音声データを転送するためのソケットに、音声データを再度書き込み、ステップS160に進む。
ステップS158において、ACKが受信されたと判定された場合、録音アプリケーションプログラム85において、受信された音声データの欠落が発生していないので、音声データを再送する処理は不要であるから、ステップS159の処理はスキップされ、手続は、ステップS160に進む。
ステップS160において、送信制御プログラム107は、録音データバッファ104の読み出しポインタをインクリメントし、ステップS153に戻り、ソケットを介した音声データの送信の処理を繰り返す。
ステップS154において、録音アプリケーションプログラム85に渡す音声データがないと判定された場合、録音アプリケーションプログラム85に音声データを送信する処理を実行する必要がないので、ステップS153に戻り、録音開始が要求されたか否かの判定を繰り返す。
ステップS153において、録音の開始が要求されていないと判定された場合、ステップS161に進み、送信制御プログラム107は、メッセージの交換に使用されるソケットを介して送信されたメッセージを基に、録音アプリケーションプログラム85から録音の停止が要求されたか否かを判定する。
ステップS161において、録音の停止が要求されたと判定された場合、ステップS162に進み、送信制御プログラム107は、録音データバッファ104の読み出しポインタおよび書き込みポインタを基に、録音アプリケーションプログラム85に渡す音声データがあるか否かを判定し、録音アプリケーションプログラム85に渡す音声データがあると判定された場合、最後まで音声データを録音アプリケーションプログラム85に送信する必要があるので、ステップS155に進み、音声データの送信の処理を実行する。
録音データバッファ104に録音アプリケーションプログラム85に渡す音声データがあるか否かは、録音データバッファ104の読み出しポインタの値と、録音データバッファ104の書き込みポインタの値とが一致するか否かにより判断することができる。
ステップS162において、録音アプリケーションプログラム85に渡す音声データがないと判定された場合、ステップS163に進み、終了を示すパターンをソケットに書き込んで、ステップS151に戻り、処理を繰り返す。
ステップS163における、再生の終了を示すパターンとは、図21に示される構造化された音声データのヘッダ部に設定されるパターンである。再生の終了を示すパターンは、例えば、図30に示すように、通常のヘッダ部に現れない、0と1とが交互に現れるパターンである。
ステップS151において、停止が要求されたと判定された場合、処理は終了する。
次に、録音アプリケーションプログラム85の録音の処理について説明する。
本発明に係る記録再生装置における録音アプリケーションプログラム85の処理を対比により、より明確にするために、図31に従来の録音の処理を説明するフローチャートを示す。
すなわち、ステップS181において、従来の記録再生装置は、録音データバッファに音声データがあるか否かを判定し、録音データバッファに音声データがないと判定された場合、ステップS181に戻り、録音データバッファに音声データが格納されるまで、処理を繰り返す。
ステップS181において、録音データバッファに音声データがあると判定された場合、ステップS182に進み、記録再生装置は、録音データバッファから音声データを取得する。
ステップS183において、記録再生装置は、取得した音声データを記録し、ステップS181に戻り、録音の処理を繰り返す。
以上のような、従来の録音の処理においては、ステップS181において、プロセスに割り当てられた最大時間の間、録音データバッファに音声データが格納されるまで判定の処理が繰り返されることになり、判定の処理が繰り返される間、記録再生装置のリソースは、判定の処理によって継続的に占有されることになる。
この間、他のプロセスは、録音データバッファを利用することができず、例えば、サウンドカードから読み出した音声データを録音データバッファに書き込むことはできない。
従って、従来の録音の処理における、ステップS181において、録音データバッファに音声データが格納されるまで判定の処理が繰り返されることにより、他のプロセスに遅延が生じることになる。他のプロセスの遅延は、録音の処理のプロセスに影響を与え、録音の処理のプロセスに遅延を生じさせることになる。
図32は、本発明に係る記録再生装置における録音アプリケーションプログラム85による録音の処理を説明するフローチャートである。
ステップS201において、録音アプリケーションプログラム85は、ソケットサービスプログラム84−1により確立される、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に音声データを転送するためのソケットから、音声データを取得する。
ステップS201の処理において、ソケットに音声データがあるとき、録音アプリケーションプログラム85は、ソケットから音声データを即座に取得して、ステップS201の処理を終了する。
ステップS201の処理において、ソケットに音声データがないとき、録音アプリケーションプログラム85は、ソケットから音声データを取得しないで、即座にステップS201の処理を終了する。
例えば、録音アプリケーションプログラム85は、ソケットオブジェクトにreceiveメッセージを送る。これにより、制御がソケットサービスプログラム84−1に移行する。ソケットサービスプログラム84−1は、受け取った音声データに対応するポート番号と、カーネル82に記憶されている録音アプリケーションプログラム85に対応するポート番号とを基に、音声データを録音アプリケーションプログラム85の受信用バッファ(受信用パケットオブジェクト)に転送し、制御を録音アプリケーションプログラム85に戻す。これにより、録音アプリケーションプログラム85からは、ソケットオブジェクトにreceiveメッセージを送ると、受信バッファに音声データが入ってくるように見える。
ステップS202において、録音アプリケーションプログラム85は、取得した音声データを記録し、ステップS201に戻り、録音の処理を繰り返す。
より詳細には、ステップS202において、録音アプリケーションプログラム85は、カーネル82に、HDD14への音声データの記録を要求すると共に、カーネル82に音声データを供給する。カーネル82は、デバイスドライバ81に、音声データをHDD14に記録させる。
次に、図25のステップS156の処理に対応して実行される、プロセスにおける、ソケットサービスプログラム84−1による、音声データの受け取りの処理を図33のフローチャートを参照して説明する。
ステップS211において、ソケットサービスプログラム84−1は、ステップS156の処理により送信制御プログラム107から書き込まれた音声データを受け取り、処理は終了する。受け取られた音声データは、例えば、ソケットサービスプログラム84−1内の所定のバッファに格納される。
図34は、図32のステップS201の処理に対応して実行される、プロセスにおける、ソケットサービスプログラム84−1による、音声データの転送の処理を説明するフローチャートである。
ステップS221において、ソケットサービスプログラム84−1は、録音アプリケーションプログラム85に転送すべき音声データがあるか否かを判定し、転送すべき音声データがあると判定された場合、ステップS222に進み、音声データを録音アプリケーションプログラム85に転送し、処理は終了する。
ステップS221において、転送すべき音声データがないと判定された場合、ステップS222の処理はスキップされ、即座に処理は終了する。
このように、本発明の録音の処理においては、録音アプリケーションプログラム85が音声データを取得する処理に要する時間は、常に、ソケットから音声データを読み出す時間に要する時間を越えることがない。すなわち、録音データバッファ104等のリソースが実行時間の長いプロセスで占有されることがない。
従って、録音の処理が、サウンドカード18から音声データを読み出す処理に影響を与えることはない。
その結果、オーディオデータ処理プログラム83から録音アプリケーションプログラム85に供給される音声データに遅延が生じることがなく、外部から供給された音声データを記録するとき、音声データに欠落を生じることがない。
このように、ストリームとして供給されるコンテンツを受信し、受信したコンテンツのコンテンツ記録媒体への記録を制御するようにした場合には、コンテンツを記録することができる。
また、マルチタスクオペレーティングシステム上で実行される第1のプログラムにより、ストリームとして供給されたコンテンツの受信を制御し、マルチタスクオペレーティングシステム上で実行される第2のプログラムにより、コンテンツのコンテンツ記録媒体への記録を制御し、マルチタスクオペレーティングシステム上で実行される第3のプログラムにより、第1のプロセスにおいて、転送先を第2のプログラムとしたコンテンツを第1のプログラムから受け取り、第2のプロセスにおいて、転送すべきコンテンツがない場合、第2のプロセスを即座に終了し、転送すべきコンテンツがある場合、コンテンツを第2のプログラムに転送して、第2のプロセスを終了するようにした場合には、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、ストリームとして供給されるコンテンツを記録することができる。
次に、録音アプリケーションプログラム85が録音経過時間を取得する方法について説明する。
図35は、録音アプリケーションプログラム85が録音経過時間を取得する処理を説明する図である。
図35においてAで示す矢印は、オーディオデータ処理プログラム83が、サウンドカード18から音声データを読み出すタイミングを示す。図35においてBで示す矢印は、録音アプリケーションプログラム85が、オーディオデータ処理プログラム83から音声データを取得するタイミングを示す。
オーディオデータ処理プログラム83の内部には、読み出しデータバッファ102および録音データバッファ104が設けられているので、オーディオデータ処理プログラム83が使用されると、録音アプリケーションプログラム85は、受信した音声データの量のみから、正確な録音経過時間を知ることができない。すなわち、録音アプリケーションプログラム85がオーディオデータ処理プログラム83から取得した音声データは、その時点でサウンドカード18に入力されている音声データに比較して、過去の音声データであるからである。
そこで、まず始めに、録音アプリケーションプログラム85は、オーディオデータ処理プログラム83へ録音開始を通知する。この通知を受けたオーディオデータ処理プログラム83は、図22に示すヘッダ部の通し番号に、0から順に番号を付する。録音アプリケーションプログラム85は、オーディオデータ処理プログラム83がサウンドカード18から読み出した音声データに付した通し番号を、オーディオデータ処理プログラム83から、ポーリング等おこなって定期的に読み出す。録音データバッファ104に格納される音声データのオーディオデータ部に格納されるサンプルの数は固定なので、原則として、通し番号およびサンプルの数から経過時間が算出される。
一方、トラックチェンジがあったときは、次のように経過時間が算出される。
録音アプリケーションプログラム85は、オーディオデータ処理プログラム83から音声データを受け取り、その受け取った音声データのヘッダ部のトラックチェンジフラグ(図22に示す)を基に、曲が変わったか否かを判定する。録音アプリケーションプログラム85は、曲が変わったと判定されたときにおける、ポーリング動作でオーディオデータ処理プログラム83から得られた通し番号と、転送により受け取った音声データに格納されている通し番号とを控えておく。
曲(曲番)が変わってからの録音経過時間は、(ポーリングで得られた通し番号−転送し受け取った通し番号)を基に、計算で算出される。
例えば、転送により受け取った音声データの通し番号が、4である場合に、トラックチェンジフラグから曲が変わったことを検出したとき、録音アプリケーションプログラム85は、ポーリングで得られた通し番号が6であるとき、ポーリングで得られた通し番号である6から4を減算し、減算の結果である2から録音経過時間を算出する。
同様に、録音アプリケーションプログラム85は、ポーリングで得られた通し番号が8であるとき、ポーリングで得られた通し番号である8から4を減算し、減算の結果である4から録音経過時間を算出する。録音アプリケーションプログラム85は、ポーリングで得られた通し番号が10であるとき、ポーリングで得られた通し番号である10から4を減算し、減算の結果である6から録音経過時間を算出する。
このようにすることで、録音を実行中に、曲が変わっても(トラックチェンジがあっても)、曲の先頭からの録音の経過時間を正確に求めることができる。
次に、図36のフローチャートを参照して、オーディオデータ処理プログラム83による、再生アプリケーションプログラム86からの音声データの受信の処理について説明する。
ステップS231において、受信制御プログラム108は、カーネル82から停止が要求されたか否かを判定し、停止が要求されていないと判定された場合、ステップS232に進み、再生アプリケーションプログラム86から、ソケット接続要求があるか否かを判定する。
ステップS232において、ソケット接続要求がないと判定された場合、ソケットの接続の要求がされるまで、ステップS232に戻り、判定の処理を繰り返す。
ステップS232において、ソケット接続要求があると判定された場合、ステップS233に進み、受信制御プログラム108は、ソケットを確立させ、ソケットから音声データを読み出す。
より詳細には、受信制御プログラム108は、カーネル82に、再生アプリケーションプログラム86とのソケットの確立を要求する。カーネル82は、受信制御プログラム108と再生アプリケーションプログラム86とのソケットを確立させる。
受信制御プログラム108は、再生アプリケーションプログラム86からソケットに書き込まれた音声データを、ソケットから読み出す。
ステップS234において、受信制御プログラム108は、予め記憶している音声データの大きさを示すデータ、および受信された音声データの大きさ(例えば、バイト数)を基に、音声データに欠落があるか否かを判定し、音声データに欠落があると判定された場合、ステップS235に進み、メッセージを交換するためのソケットを介して、再生アプリケーションプログラム86にNACKを送信する。
ステップS236において、受信制御プログラム108は、再生アプリケーションプログラム86から再送されてきた音声データをソケットから読み出して、手続は、ステップS238に進む。
ステップS234において、音声データに欠落がないと判定された場合、音声データの再送を要求する必要がないので、ステップS237に進み、受信制御プログラム108は、メッセージを交換するためのソケットを介して、再生アプリケーションプログラム86にACKを送信し、手続は、ステップS238に進む。
ステップS238において、受信制御プログラム108は、ソケットから読み出された音声データのヘッダ部のパターンが、例えば、図30に示す、再生終了パターンであるか否かを判定し、再生終了パターンでないと判定された場合、受信の処理が継続されるので、ステップS239に進み、ソケットから読み出した音声データを、再生データバッファ109の書き込みポインタが指す位置に書き込む。
ステップS240において、受信制御プログラム108は、再生データバッファ109の書き込みポインタをインクリメントする。
ステップS241において、受信制御プログラム108は、再生データバッファの書き込みポインタおよび読み出しポインタの値から、再生データバッファ109に空きがあるか否かを判定し、再生データバッファ109に空きがないと判定された場合、再生データバッファ109に空きができるまで、ステップS241の判定の処理を繰り返す。
ステップS241において、再生データバッファ109に空きがあると判定された場合、ステップS233に戻り、音声データの受信の処理を繰り返す。
ここで、再生アプリケーションプログラム86からオーディオデータ処理プログラム83へのソケットを介した音声データの送信の処理を説明する。
図37は、再生データバッファ109に空きがある場合の処理を説明する図である。
再生アプリケーションプログラム86は、送信すべき音声データがあるとき、オーディオデータ処理プログラム83に音声データを送信するために、ソケットサービスプログラム84−2による確立される、再生アプリケーションプログラム86からオーディオデータ処理プログラム83に音声データを転送するためのソケットへの音声データの書き込みの処理を実行し、送信すべき音声データがないとき、ソケットへの音声データの書き込みの処理を実行しない。
再生アプリケーションプログラム86は、オーディオデータ処理プログラム83に送信すべき音声データがあるとき、所定の大きさの音声データをソケットに書き込み、即座に、次の処理を実行する。再生アプリケーションプログラム86は、オーディオデータ処理プログラム83に送信すべき音声データがないとき、音声データがないので、即座に、次の処理を実行する。
再生アプリケーションプログラム86による、ソケットに音声データを書き込む処理は、ソケットに音声データが書き込まれたときであっても、ソケットに音声データが書き込まれないときであっても、即座に実行されて、終了し、次の処理が実行される。
言い換えれば、再生アプリケーションプログラム86による、ソケットへの音声データを書き込む処理は、音声データを書き込む処理に要する時間だけで常に終了する。従って、再生アプリケーションプログラム86による、ソケットに音声データを書き込む処理は、他のプロセスの状態の変化を待つことがなく、音声データを書き込む処理に要する時間以上に、記録再生装置のリソースを占有することがない。
オーディオデータ処理プログラム83は、再生データバッファ109に空きがあるとき、再生アプリケーションプログラム86から音声データを受け取るために、ソケットサービスプログラム84−2による確立される、再生アプリケーションプログラム86からオーディオデータ処理プログラム83に音声データを転送するためのソケットから、所定の大きさの音声データを読み出す。
再生データバッファ109に空きがないとき、図38に示すように、オーディオデータ処理プログラム83は、ソケットから音声データを読み出さない。再生データバッファ109に空きがあるなしにかかわらず、再生アプリケーションプログラム86は、送信すべき音声データがあるとき、ソケットへの音声データの書き込みの処理を実行し、送信すべき音声データがないとき、ソケットへの音声データの書き込みの処理を実行しない。
ステップS238において、再生終了パターンであると判定された場合、再生アプリケーションプログラム86から音声データの終了が通知されているので、ステップS231に戻り、停止要求の判定の処理を実行する。
ステップS231において、停止が要求されていると判定された場合、処理は終了する。
図39は、再生アプリケーションプログラム86による音声データの読み出しの処理を説明するフローチャートである。
ステップS261において、再生アプリケーションプログラム86は、再生すべき音声データをCD91から取得する。
より詳細には、ステップS261において、再生アプリケーションプログラム86は、カーネル82に、CD91からの音声データの読み出しを要求する。カーネル82は、デバイスドライバ81に、CD-ROMドライブ15を制御させ、CD91に記録されている音声データを読み出させる、読み出した音声データを再生アプリケーションプログラム86に供給する。
なお、再生アプリケーションプログラム86による、HDD14からの音声データの読み出しも同様に実行される。
ステップS262において、再生アプリケーションプログラム86は、ソケットサービスプログラム84−2により確立される、再生アプリケーションプログラム86からオーディオデータ処理プログラム83に音声データを転送するためのソケットに、音声データを供給し、ステップS261に戻り、再生の処理を繰り返す。
ステップS262の処理において、オーディオデータ処理プログラム83に供給すべき音声データがあるとき、再生アプリケーションプログラム86は、ソケットに音声データを即座に供給して、ステップS262の処理を終了する。
ステップS262の処理において、オーディオデータ処理プログラム83に供給すべき音声データがないとき、再生アプリケーションプログラム86は、ソケットに音声データを供給しないで、即座にステップS262の処理を終了する。
ソケットサービスプログラム84−2が再生アプリケーションプログラム86から音声データを受け取る処理は、図33のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
ソケットサービスプログラム84−2がオーディオデータ処理プログラム83に音声データを転送する処理は、図34のフローチャートを参照して説明した処理と同様なので、その説明は省略する。
このように、本発明の再生の処理においては、再生アプリケーションプログラム86が音声データを供給する処理に要する時間は、常に、ソケットに音声データを書き込む時間に要する時間を越えることがない。従って、再生データバッファ109等のリソースが実行時間の長いプロセスで占有されることがない。
従って、再生の処理が、サウンドカード18に音声データを書き込む処理に影響を与えることはない。
その結果、再生アプリケーションプログラム86からオーディオデータ処理プログラム83に供給される音声データに遅延が生じることがなく、外部に音声データを出力するとき、音声データに欠落を生じることがない。
このように、本発明に係る記録再生装置は、プロセスの実行のタイミングが保証されないマルチタスクオペレーティングシステムにより制御されていても、オーディオ装置として当然の要求である、音切れまたは音飛びを生じない、安定した再生および録音を行うことができる。
このように、コンテンツを記録媒体から読み出して、ストリームとして送信するようにした場合、コンテンツを再生することができる。
また、マルチタスクオペレーティングシステム上で実行される第1のプログラムにより、コンテンツ記録媒体に記録されているコンテンツの読み出しを制御し、マルチタスクオペレーティングシステム上で実行される第2のプログラムにより、バッファに格納されているコンテンツのストリームとしての送信を制御し、マルチタスクオペレーティングシステム上で実行される第3のプログラムにより、第1のプロセスにおいて、転送先を第2のプログラムとしたコンテンツを第1のプログラムから受け取り、バッファに空きがある場合、第2のプロセスにおいて、転送すべきコンテンツがないとき、第2のプロセスを即座に終了し、転送すべきコンテンツがあるとき、コンテンツをバッファに転送して、第2のプロセスを終了するようにした場合、マルチタスクオペレーティングシステムにより制御される機器おいて、より容易に、欠落を生じさせることなく、コンテンツをストリームとして再生することができる。
次に、再生アプリケーションプログラム86が再生経過時間を取得する方法について説明する。
図40は、再生アプリケーションプログラム86が再生経過時間を取得する処理を説明する図である。図40においてCで示す矢印は、再生アプリケーションプログラム86がオーディオデータ処理プログラム83に音声データを送信するタイミングを示す。図40においてDで示す矢印は、オーディオデータ処理プログラム83がサウンドカード18に音声データを供給するタイミングを示す。
オーディオデータ処理プログラム83の内部には、再生データバッファ109および書き込みデータバッファ111が設けられているので、オーディオデータ処理プログラム83が使用されると、再生アプリケーションプログラム86は、送信した音声データのみから、正確な再生経過時間を知ることができない。すなわち、再生アプリケーションプログラム86がオーディオデータ処理プログラム83に供給した音声データは、その時点でサウンドカード18から出力されている音声データに比較して、未来の音声データであるからである。
再生アプリケーションプログラム86は、オーディオデータ処理プログラム83に出力に音声データを転送するときに、図21のヘッダ部の再生情報(図22)にメモを書き込む。再生情報の内容は、再生を目的とするプロセスごとに自由であるが、例えば、再生アプリケーションプログラム86は、あとで再生時間がわかるように再生の経過時間を示す時間情報などを書き込んでおく。
再生アプリケーションプログラム86は、ポーリング等の処理で、オーディオデータ処理プログラム83から、サウンドカード18に書き込もうとする音声データ(書き込む直前の音声データ)に付加されている再生情報(メモ)を取得する。
再生アプリケーションプログラム86は、取得した再生情報に含まれる再生の経過時間を示す時間情報を基に、再生経過時間を表示する。
このようにすることで、再生アプリケーションプログラム86は、現在聞こえている(出力されている)曲の再生経過時間と等しい、再生経過時間を表示することができる。
以上のように、本発明によれば、オーディオデータ処理プログラム83により、サウンドカード18またはHDD14などのオーディオ用ハードウェアの制御がブラックボックス化されるので、録音アプリケーションプログラム85または再生アプリケーションプログラム86は、それぞれ独自にオーディオ用ハードウェアを制御する必要がない。
また、オーディオデータ処理プログラム83が音声データに関する特有の処理、例えば、IEC60958の規格に準拠する処理を実行するようにしたので、音声データを記録する録音アプリケーションプログラム85、または音声データを再生する再生アプリケーションプログラム86をにおいて、音声データに関する特有の処理を実行させる必要がない。また、オーディオデータ処理プログラム83は、IEC60958の規格に準拠する音声データに含まれる情報を解析して、解析した結果を構造化された音声データに格納し、構造化された音声データを録音アプリケーションプログラム85に供給するようにしたので、録音アプリケーションプログラム85は、より簡単に実現できるようになる。
例えば、CDから読み出された音声データを記録しているとき、音声データに含まれるサブコードQを解析して、曲間を検出することは、経験的なノウハウが必要であり、高い精度で曲間を検出できるようにすることは困難である。オーディオデータ処理プログラム83を利用することにより、このようなノウハウがなくとも、確実に、かつ容易に、曲間を知ることができるようなる。
また、オーディオデータ処理プログラム83が、再生アプリケーションプログラム86から供給された音声データを、IEC60958の規格に準拠する音声データに変換するようにしたので、再生アプリケーションプログラム86は、音声データのうち、オーディオサンプルワード以外の情報、例えば、プリアンブル、Vビット、またはCビットなどの設定の処理を実行する必要がない。
すなわち、オーディオデータ処理プログラム83がIEC60958の規格に準拠する音声データの解析および演算を一手に引き受けて、著作権の保護やデジタルオーディオ機器として当然の決まりごとに対応する処理を録音アプリケーションプログラム85および再生アプリケーションプログラム86に提供するようにしたので、録音アプリケーションプログラム85および再生アプリケーションプログラム86を短時間で容易に開発できるようになる。
録音アプリケーションプログラム85または再生アプリケーションプログラム86は、構造化されている音声データに含まれる情報を使用して、録音時間または再生時間を得ることができる。
オーディオデータ処理プログラム83は、サウンドカード18から音声データを読み出すための読み出しデータバッファ102とは別に、録音アプリケーションプログラム85に音声データを送信するための録音データバッファ104を有するので、録音時の音切れをより少なくすることができる。また、オーディオデータ処理プログラム83は、サウンドカード18に音声データを供給するための書き込みデータバッファ111とは別に、再生アプリケーションプログラム86から音声データを受信するための再生データバッファ109を有するので、再生時の音飛びをより少なくすることができる。
再生アプリケーションプログラム86または録音アプリケーションプログラム85は、オーディオデータ処理プログラム83に対して、録音または再生時に、開始、終了、または一時停止などの制御することができ、細かな録音再生の制御をすることができる。
オーディオデータ処理プログラム83は、1つの録音アプリケーションプログラム85を登録して、登録した録音アプリケーションプログラム85にのみ、音声データを供給するので、複数のプロセスが起動していても、音声データが横取りされて、録音時に音切れを発生させることがない。同様に、オーディオデータ処理プログラム83は、1つの再生アプリケーションプログラム86を登録して、登録した再生アプリケーションプログラム86からのみ、音声データを受信するので、複数のプロセスが起動していても、異なる音声データが割り込んで、再生時に音飛びを発生させることがない。
なお、本発明に係る記録再生装置が、オーディオデータ処理プログラム83、録音アプリケーションプログラム85、および再生アプリケーションプログラム86を実行すると説明したが、複数の装置が、個々に、オーディオデータ処理プログラム83、録音アプリケーションプログラム85、または再生アプリケーションプログラム86のいずれか1つを実行するようにしてもよい。この場合において、音声データは、ネットワークを介して送信される。
また、オーディオデータ処理プログラム83は、ソケットを介して、他のプログラムとメッセージを交換できるので、例えば、開発時または販売された後であっても、何らかの不具合が発生した場合、ネットワークを介して、アップデートするようにしてもよい。
なお、音声データを記録するコンテンツ記録媒体の例として、HDD14およびCD91を一例としてあげたが、HDD14およびCD91に限らず、磁気ディスク31、光ディスク32、光磁気ディスク33、または半導体メモリ34などのコンテンツ記録媒体にコンテンツを記録し、磁気ディスク31、光ディスク32、光磁気ディスク33、または半導体メモリ34などのコンテンツ記録媒体に記録されているコンテンツを再生するようにしてもよい。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図1に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク31(フレキシブルディスクを含む)、光ディスク32(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク33(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ34などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されている図示せぬROMや、HDD14などで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインターフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
CPU 11, 12 SDRAM, 14 HDD, 15 CD-ROMドライブ, 18 サウンドカード, 19 ドライブ, 31 磁気ディスク, 32 光ディスク, 33 光磁気ディスク, 34 半導体メモリ, 81 デバイスドライバ, 82 カーネル, 83 オーディオデータ処理プログラム, 84−1および84−2 ソケットサービスプログラム, 85 録音アプリケーションプログラム, 86 再生アプリケーションプログラム, 91 CD, 101 読み出し制御プログラム, 102 読み出しデータバッファ, 103 オーディオデータ解析フィルタプログラム, 104 録音データバッファ, 105 スイッチ, 106 IEC60958エンコードプログラム, 107 送信制御プログラム, 108 受信制御プログラム, 109 再生データバッファ, 110 ゼロデータ生成プログラム, 111 書き込みデータバッファ, 112 書き込み制御プログラム
Claims (15)
- マルチタスクオペレーティングシステムの制御の基に、第1のストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置において、
前記マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、前記第1のストリームとして供給された前記コンテンツの受信を制御する受信制御手段と、
前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御手段と、
前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、前記コンテンツを前記受信制御手段から受け取り、第2のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段と
を備える記録装置。 - 前記転送手段は、ソケットである
請求項1に記載の記録装置。 - 前記受信制御手段は、
受信された前記コンテンツを前記第1のストリームをなす第1の単位で記憶する第1のバッファと、
前記コンテンツを第2の単位で記憶する第2のバッファと、
前記第1のバッファに記憶されている前記コンテンツの単位を前記第2の単位に変換して、前記第2のバッファに移転する移転手段と
をさらに備え、
前記第2のバッファに記憶されている前記コンテンツを前記第2の単位で、前記転送手段に供給する
請求項1に記載の記録装置。 - 前記第1のストリームとして受信された前記コンテンツに含まれる制御情報を抽出する抽出手段をさらに備える
請求項1に記載の記録装置。 - 前記抽出手段により抽出された前記制御情報を基に、前記記録制御手段に前記コンテンツの記録の禁止を指示する指示手段をさらに備える
請求項4に記載の記録装置。 - 前記抽出手段により抽出された前記制御情報を基に、前記コンテンツを処理する処理手段をさらに備える
請求項4に記載の記録装置。 - 前記受信制御手段は、さらに、前記第1のストリームとして受信された前記コンテンツの第2のストリームとしての送信を制御する
請求項1に記載の記録装置。 - 前記受信制御手段は、
前記第2のプログラムを登録する登録手段を備え、
前記第2のプログラムが登録されている場合に限り、前記記録制御手段の要求に対応して、前記第3のプログラムの起動を前記マルチタスクオペレーティングシステムに要求する
請求項1に記載の記録装置。 - マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置の記録方法において、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む記録方法。 - マルチタスクオペレーティングシステムの制御の基に、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む記録処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラムが記録されている記録媒体。 - マルチタスクオペレーティングシステムを実行し、ストリームとして供給されたコンテンツをコンテンツ記録媒体に記録する記録装置を制御する処理をコンピュータに実行させるプログラムであり、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記ストリームとして供給された前記コンテンツの受信を制御する受信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、前記コンテンツの前記コンテンツ記録媒体への記録を制御する記録制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラム。 - マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置において、
前記マルチタスクオペレーティングシステム上の第1のプログラムの実行により実現される、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御手段と、
前記マルチタスクオペレーティングシステム上の第2のプログラムの実行により実現される、第1のバッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御手段と、
前記マルチタスクオペレーティングシステム上の第3のプログラムの実行により実現される、第1のプロセスにおいて、転送先を前記送信制御手段とした前記コンテンツを前記読み出し制御手段から受け取り、前記第1のバッファに空きがある場合、第2のプロセスにおいて、前記記録制御手段に転送すべきコンテンツが存在するか否かを判定し、前記記録制御手段に転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記記録制御手段に転送して、転送処理を終了し、前記記録制御手段に転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送手段と
を備える再生装置。 - マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置の再生方法において、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む再生方法。 - マルチタスクオペレーティングシステムの制御の基に、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生処理をコンピュータに実行させるプログラムが記録されている記録媒体であり、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む再生処理をコンピュータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラムが記録されている記録媒体。 - マルチタスクオペレーティングシステムを実行し、コンテンツ記録媒体に記録されているコンテンツをストリームとして再生する再生装置を制御する処理をコンピュータに実行させるプログラムであり、
前記マルチタスクオペレーティングシステム上で実行される第1のプログラムによる、前記コンテンツ記録媒体に記録されている前記コンテンツの読み出しを制御する読み出し制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第2のプログラムによる、バッファに格納されている前記コンテンツの前記ストリームとしての送信を制御する送信制御ステップと、
前記マルチタスクオペレーティングシステム上で実行される第3のプログラムによる、第1のプロセスにおいて、転送先を前記第2のプログラムとした前記コンテンツを前記第1のプログラムから受け取り、前記バッファに空きがある場合、第2のプロセスにおいて、前記第2のプログラムに転送すべきコンテンツが存在するか否かを判定し、前記第2のプログラムに転送すべきコンテンツが存在すると判定された場合には、前記コンテンツを前記第2のプログラムに転送して、転送処理を終了し、前記第2のプログラムに転送すべきコンテンツが存在しないと判定された場合には、転送処理を即座に終了する転送ステップと
を含む処理をコンユータに実行させる前記第1のプログラム乃至前記第3のプログラムからなるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007286946A JP2008117517A (ja) | 2007-11-05 | 2007-11-05 | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007286946A JP2008117517A (ja) | 2007-11-05 | 2007-11-05 | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002263628A Division JP2004102647A (ja) | 2002-09-10 | 2002-09-10 | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008117517A true JP2008117517A (ja) | 2008-05-22 |
Family
ID=39503294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007286946A Pending JP2008117517A (ja) | 2007-11-05 | 2007-11-05 | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008117517A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011043892A (ja) * | 2009-08-19 | 2011-03-03 | Nec Corp | マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08320878A (ja) * | 1995-05-26 | 1996-12-03 | Hitachi Ltd | 情報処理装置および情報処理方法 |
JPH11184715A (ja) * | 1997-12-24 | 1999-07-09 | Matsushita Electric Ind Co Ltd | データ処理プロセス実行制御装置 |
JP2001034559A (ja) * | 1999-07-23 | 2001-02-09 | Victor Co Of Japan Ltd | 動画像サーバシステム |
-
2007
- 2007-11-05 JP JP2007286946A patent/JP2008117517A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08320878A (ja) * | 1995-05-26 | 1996-12-03 | Hitachi Ltd | 情報処理装置および情報処理方法 |
JPH11184715A (ja) * | 1997-12-24 | 1999-07-09 | Matsushita Electric Ind Co Ltd | データ処理プロセス実行制御装置 |
JP2001034559A (ja) * | 1999-07-23 | 2001-02-09 | Victor Co Of Japan Ltd | 動画像サーバシステム |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011043892A (ja) * | 2009-08-19 | 2011-03-03 | Nec Corp | マルチコアシステム、マルチコアシステムの制御方法、及びマルチプロセッサ |
US8719628B2 (en) | 2009-08-19 | 2014-05-06 | Nec Corporation | Multi-core system, method of controlling multi-core system, and multiprocessor |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4772297B2 (ja) | メディアファウンデーションメディアプロセッサ | |
US6766407B1 (en) | Intelligent streaming framework | |
US20070050479A1 (en) | Content receiving apparatus and content receiving method | |
JP2006081159A (ja) | インバンド制御情報を伝送するためのストラテジー | |
JP2004102647A (ja) | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム | |
US6937599B1 (en) | Data source, data conversion device, inverse data conversion device, auxiliary data file generation device, reception method, medium and information aggregate | |
JP2008117517A (ja) | 記録装置および方法、再生装置および方法、記録媒体、並びにプログラム | |
JP2007317021A (ja) | コンテンツ再生システム、コンテンツサーバ、およびコンテンツ変換プログラム | |
US7944937B2 (en) | Data transmission apparatus efficiently using network resources | |
JP4595247B2 (ja) | データ再生方法、データ再生制御プログラムおよびデータ再生装置 | |
JP2006033396A (ja) | 送信装置、受信装置、通信システム、送信方法、受信方法、送信プログラム、受信プログラム及びサーバ装置 | |
US8023803B2 (en) | Moving picture recording apparatus | |
JP5268477B2 (ja) | 情報処理装置およびその制御方法、データ処理システム | |
CN116048450A (zh) | 音频播放方法、装置,嵌入式设备及存储介质 | |
JP2005278201A (ja) | データ転送装置およびデータ転送方法 | |
JP2005276226A (ja) | データ転送装置およびデータ転送装置の制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090917 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100309 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100629 |