|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
ソースデータラインはデータを書き込めるデータラインです。ソースデータラインはミキサーに対してソースとして動作します。アプリケーションがオーディオバイトをソースデータラインに書き込むと、ソースデータラインはバイトのバッファリングを処理し、それをミキサーに配信します。ミキサーはサンプルを他のソースからのサンプルとミックスし、それを出力ポートなどのターゲットに配信します。出力ポートとは、サウンドカードのオーディオ出力デバイスなどのことです。
このインタフェースの命名規則は、ラインとミキサーの関係を反映しています。アプリケーションから見ると、ソースデータラインはオーディオデータのターゲットの役割を果たします。
ソースデータラインは、該当する
オブジェクトを使って DataLine.Info
Mixer
の
メソッドを呼び出すことにより、ミキサーから取得できます。
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
書き込まれるバイト数は、次のようなサンプルフレームの整数を表示する必要があります。
[書き込まれるバイト数] % [フレームサイズのバイト数] == 0
IllegalArgumentException
が表示される場合があります。
b
- データラインに書き込まれるデータを含むバイト配列len
- バイト単位での配列の有効データの長さ (つまり、バイト単位での書き込み要求データの量)
IllegalArgumentException
- 要求されたバイト数が完全なサンプルフレーム数に相当しない場合TargetDataLine.read(byte[], int, int)
,
DataLine.available()
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.