|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface SourceDataLine
소스 데이터 라인은 데이터를 기입할 수 있는 데이터 라인입니다. 소스 데이터 라인은 믹서에 대해서 소스로서 동작합니다. 어플리케이션이 오디오 바이트를 소스 데이터 라인에 기입하면(자), 소스 데이터 라인은 바이트의 버퍼링을 처리해, 그것을 믹서에 전달합니다. 믹서는 샘플을 다른 소스로부터의 샘플과 믹스 해, 그것을 출력 포트등의 타겟으로 전달합니다. 출력 포트란, 사운드 카드의 오디오 출력 디바이스등의 일입니다.
이 인터페이스의 명명 규칙은, 라인과 믹서의 관계를 반영하고 있습니다. 어플리케이션으로부터 보면(자), 소스 데이터 라인은 오디오 데이터의 타겟의 역할을 완수합니다.
소스 데이터 라인을 믹서로부터 가져오려면 , 적절한
객체를 지정해 DataLine.Info
Mixer
의
메소드를 호출합니다.
getLine
SourceDataLine
인터페이스는, 오디오 데이터를 데이터 라인의 버퍼에 기입하는 메소드를 제공합니다. 오디오를 재생 또는 믹스 하는 어플리케이션은, 버퍼가 언더 플로우(underflow) (공백화) 하지 않는 동안에 데이터를 재빠르게 소스 데이터 라인에 기입합니다. 언더 플로우(underflow)에 의해 오디오에 불연속부가 생기는 일이 있어, 클릭음으로서 지각됩니다. 어플리케이션에서는,DataLine
인터페이스로 정의되고 있는
메소드를 사용해, 데이터 라인의 버퍼로 현재 큐에 들어가 있는 데이터의 양을 판별할 수가 있습니다. 블록 하지 않고 버퍼에 기입할 수 있는 데이터량은, 버퍼 사이즈와 큐에 들어가 있는 데이터량과의 차이입니다. 언더 플로우(underflow)를 위해서(때문에) 오디오 출력의 전달이 정지했을 경우는,available
이벤트가 생성됩니다. 오디오 출력이 재개하면(자),STOP
이벤트가 생성됩니다.
START
Mixer
,
DataLine
,
TargetDataLine
상자의 클래스의 개요 |
---|
인터페이스 javax.sound.sampled. DataLine 로부터 상속된 상자의 클래스/인터페이스 |
---|
DataLine.Info |
메소드의 개요 | |
---|---|
void |
open (AudioFormat format)
지정된 포맷으로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다. |
void |
open (AudioFormat format,
int bufferSize)
지정된 포맷과 지정된 버퍼 사이즈로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다. |
int |
write (byte[] b,
int off,
int len)
이 소스 데이터 라인을 개입시켜 오디오 데이터를 믹서에 기입합니다. |
인터페이스 javax.sound.sampled. DataLine 로부터 상속된 메소드 |
---|
available , drain , flush , getBufferSize , getFormat , getFramePosition , getLevel , getLongFramePosition , getMicrosecondPosition , isActive , isRunning , start , stop |
인터페이스 javax.sound.sampled. Line 로부터 상속된 메소드 |
---|
addLineListener , close , getControl , getControls , getLineInfo , isControlSupported , isOpen , open , removeLineListener |
메소드의 상세 |
---|
void open(AudioFormat format, int bufferSize) throws LineUnavailableException
버퍼 사이즈는 바이트 단위로 지정합니다만, 샘플 frame size의 배수인 것이 필요합니다. 이 요건에 적합하지 않는 버퍼 사이즈를 지정해 이 메소드를 호출하면(자), IllegalArgumentException 가 throw 되는 일이 있습니다. 연 라인의 실제의 버퍼 사이즈는, 지정한 버퍼 사이즈와는 다른 일이 있습니다. 실제로 설정된 값은, 계속되어
를 호출하면 조회할 수 있습니다.
DataLine.getBufferSize()
이 조작이 성공하면(자), 라인은 열려 있는 상태로서 마크 되어
이벤트가 라인의 청취자에게 발송 됩니다.
OPEN
벌써 열려 있는 라인으로 이 메소드를 호출하는 것은 부적절하고,IllegalStateException
가 표시되는 일이 있습니다.
라인에 따라서는, 한 번 닫으면(자) 재차 열 수가 없는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException
가 표시됩니다.
format
- 바람직한 오디오 형식bufferSize
- 바람직한 버퍼 사이즈
LineUnavailableException
- 자원의 제약을 위해서(때문에)
라인을 열지 않는 경우
IllegalArgumentException
- 버퍼 사이즈가 샘플 frame size
배수가 아닌 경우,
혹은 format
의 지정이 불완전 또는 무효인 경우
IllegalStateException
- 라인이 벌써 열려 있는 경우
SecurityException
- 시큐리티의 제약을 위해서(때문에)
라인을 열지 않는 경우open(AudioFormat)
,
Line.open()
,
Line.close()
,
Line.isOpen()
,
LineEvent
void open(AudioFormat format) throws LineUnavailableException
버퍼 사이즈는 구현에 의해 선택됩니다. 버퍼 사이즈는 바이트 단위입니다만, 샘플 frame size의 배수인 것이 필요합니다. 시스템이 선택한 버퍼 사이즈는, 계속되어
를 호출하면 조회할 수 있습니다.
DataLine.getBufferSize()
이 조작이 성공하면(자), 라인은 열려 있는 상태로서 마크 되어
이벤트가 라인의 청취자에게 발송 됩니다.
OPEN
벌써 열려 있는 라인으로 이 메소드를 호출하는 것은 부적절하고,IllegalStateException
가 표시되는 일이 있습니다.
라인에 따라서는, 한 번 닫으면(자) 재차 열 수가 없는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException
가 표시됩니다.
format
- 바람직한 오디오 형식
LineUnavailableException
- 자원의 제약을 위해서(때문에)
라인을 열지 않는 경우
IllegalArgumentException
- format
의
의 지정이 불완전 또는 무효인 경우
IllegalStateException
- 라인이 벌써 열려 있는 경우
SecurityException
- 시큐리티의 제약을 위해서(때문에)
라인을 열지 않는 경우open(AudioFormat, int)
,
Line.open()
,
Line.close()
,
Line.isOpen()
,
LineEvent
int write(byte[] b, int off, int len)
available
를 참조), 요구된 양의 데이터를 기입해 끝낼 때까지 이 메소드는 블록 됩니다. 이것은, 기입이 요구된 데이터의 양이 데이터 라인의 버퍼 사이즈보다 큰 경우에도 들어맞읍니다. 다만, 요구된 양의 기입이 끝나기 전에 데이터 라인이 클로즈, 정지, 또는 플래시 되었을 경우는, 메소드의 블록이 해제되어, 그때까지 기입해진 바이트수가 돌려주어집니다.
블록 되지 않고 기입할 수 있는 바이트수는,DataLine
인터페이스의
메소드를 사용해 확인할 수 있습니다. 이 바이트수는 블록 되지 않고 확실히 기입할 수 있습니다만, 추가 데이터를 기입하려고 했을 때에 블록 될지 어떨지는 확실하지는 않습니다.
available
기입해지는 바이트수는, 다음과 같은 샘플 프레임의 정수를 표시할 필요가 있습니다.
[기입해지는 바이트수] % [frame size의 바이트수] == 0
IllegalArgumentException
가 throw 되는 경우가 있습니다.
b
- 데이터 라인에 기입해지는 데이터를 포함한 바이트 배열len
- 바이트 단위에서의 배열의 유효 데이터의 길이
(즉, 바이트 단위에서의 기입해 요구 데이터의 양)off
- 배열의 선두로부터의 좌표, 바이트 단위
IllegalArgumentException
- 요구된 바이트수가
샘플 frame size의 배수가 아닌 경우,
또는 len
가 0 보다 작은 값의 경우
ArrayIndexOutOfBoundsException
- off
가 0 보다 작은 값의 경우,
또는 off+len
가 배열 b
의 길이보다 큰 경우TargetDataLine.read(byte[], int, int)
,
DataLine.available()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.