|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
ソースデータラインはデータを書き込めるデータラインです。ソースデータラインはミキサーに対してソースとして動作します。アプリケーションがオーディオバイトをソースデータラインに書き込むと、ソースデータラインはバイトのバッファリングを処理し、それをミキサーに配信します。ミキサーはサンプルを他のソースからのサンプルとミックスし、それを出力ポートなどのターゲットに配信します。出力ポートとは、サウンドカードのオーディオ出力デバイスなどのことです。
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。アプリケーションから見ると、ソースデータラインはオーディオデータのターゲットの役割をします。
ソースデータラインは、該当する オブジェクトを使って DataLine.InfoMixer の メソッドを呼び出すことにより、ミキサーから取得できます。
getLine
SourceDataLine インタフェースは、オーディオデータをデータラインのバッファに書き込むメソッドを提供します。オーディオを再生またはミックスするアプリケーションは、バッファがアンダーフロー (空白化) しないうちに、データを素早くソースデータラインに書き込みます。アンダーフローによりオーディオに不連続部が生じることがあり、クリック音として知覚されます。アプリケーションは、DataLine インタフェースで定義された メソッドを使用して、データラインのバッファで現在キューに入っているデータの量を判別することができます。ブロックせずにバッファに書き込めるデータの量は、バッファサイズとキューに入っているデータの量の差異です。アンダーフローのためにオーディオ出力の配信が停止した場合、available イベントが生成されます。オーディオ出力が再開すると、STOP イベントが生成されます。
START
Mixer,
DataLine,
TargetDataLine| クラス javax.sound.sampled.DataLine から継承した内部クラス |
DataLine.Info |
| クラス javax.sound.sampled.Line から継承した内部クラス |
Line.Info |
| メソッドの概要 | |
void |
open(AudioFormat format)
指定されたフォーマットでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。 |
void |
open(AudioFormat format,
int bufferSize)
指定されたフォーマットと指定されたバッファサイズでラインを開き、ラインが必要なシステムリソースを獲得して操作可能になるようにします。 |
int |
write(byte[] b,
int off,
int len)
このソースデータラインを通してオーディオデータをミキサーに書き込みます。 |
| インタフェース javax.sound.sampled.DataLine から継承したメソッド |
available, drain, flush, getBufferSize, getFormat, getFramePosition, getLevel, getMicrosecondPosition, isActive, isRunning, start, stop |
| インタフェース javax.sound.sampled.Line から継承したメソッド |
addLineListener, close, getControl, getControls, getLineInfo, isControlSupported, isOpen, open, removeLineListener |
| メソッドの詳細 |
public void open(AudioFormat format,
int bufferSize)
throws LineUnavailableException
バッファサイズはバイトで指定されますが、サンプルフレームの整数を表示する必要があります。この条件に適合しないバッファサイズでこのメソッドを呼び出すと、IllegalArgumentException が表示されることがあります。開いたラインの実際のバッファサイズは、指定されたバッファサイズとは異なることがあります。実際に設定された値は、後続の呼び出し によって照会できます。
DataLine.getBufferSize()
この操作が完了すると、ラインは開くものとしてマークされ、 イベントがラインのリスナーにディスパッチされます。
OPEN
すでに開いているラインでこのメソッドを呼び出すのは不適切であり、IllegalStateException が表示されることがあります。
ラインによっては、一度閉じると再度開けない場合があります。こうしたラインを再度開こうとすると、常に LineUnavailableException が表示されます。
format - 望ましいオーディオ形式bufferSize - 望ましいバッファサイズLineUnavailableException - リソースの制約のためにラインを開けない場合IllegalArgumentException - バッファサイズがサンプルフレームの整数を表示しない場合IllegalStateException - ラインがすでに開いている場合SecurityException - セキュリティ上の制約のためにラインを開けない場合open(AudioFormat),
Line.open(),
Line.close(),
Line.isOpen(),
LineEvent
public void open(AudioFormat format)
throws LineUnavailableException
実装側がバッファサイズを選択します。バッファサイズはバイトで決定されますが、サンプルフレームの整数を含んでいます。システムが選択したバッファサイズは、後続の を呼び出して照会できます。
DataLine.getBufferSize()
この操作が完了すると、ラインは開くものとしてマークされ、 イベントがラインのリスナーにディスパッチされます。
OPEN
すでに開いているラインでこのメソッドを呼び出すのは不適切であり、IllegalStateException が表示されることがあります。
ラインによっては、一度閉じると再度開けない場合があります。こうしたラインを再度開こうとすると、常に LineUnavailableException が表示されます。
format - 望ましいオーディオ形式LineUnavailableException - リソースの制約のためにラインを開けない場合IllegalStateException - ラインがすでに開いている場合SecurityException - セキュリティ上の制約のためにラインを開けない場合open(AudioFormat, int),
Line.open(),
Line.close(),
Line.isOpen(),
LineEvent
public int write(byte[] b,
int off,
int len)
available 参照)、要求された量のデータが書き込まれるまで、このメソッドがブロックされます。これは、書き込み要求されたデータの量がデータラインのバッファサイズより大きい場合にも当てはまります。ただし、要求された量が書き込まれる前にデータラインがクローズ、停止、またはフラッシュされた場合は、メソッドはブロックされないでそれまでに書き込まれたバイト数を返します。
ブロックせずに書き込めるバイト数は、DataLine インタフェースの メソッドを使って確認できます。このバイト数はブロックせずに確実に書き込めますが、追加データを書き込もうとするとブロックされるかどうかは確実ではありません。
available
書き込まれるバイト数は、次のようなサンプルフレームの整数を表示する必要があります。
[書き込まれるバイト数] % [フレームサイズのバイト数] == 0IllegalArgumentException が表示される場合があります。b - データラインに書き込まれるデータを含むバイト配列len - バイト単位での配列の有効データの長さ (つまり、バイト単位での書き込み要求データの量)IllegalArgumentException - 要求されたバイト数がサンプルフレームの整数を表示しない場合TargetDataLine.read(byte[], int, int),
DataLine.available()
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.