JavaTM Platform
Standard Ed. 6

javax.sound.sampled
인터페이스 TargetDataLine

모든 슈퍼 인터페이스:
DataLine , Line


public interface TargetDataLine
extends DataLine

타겟 데이터 라인은, 오디오 데이터를 거기로부터 읽어들일 수 있는 타입 DataLine 입니다. 무엇보다 일반적인 예는, 데이터를 오디오 capther-디바이스로부터 취득하는 데이터 라인입니다. 디바이스는 타겟 데이터 라인에 기입하는 믹서로서 구현됩니다.

이 인터페이스의 명명 규칙은, 라인과 믹서의 관계를 반영하고 있습니다. 어플리케이션으로부터 보면(자), 타겟 데이터 라인은 오디오 데이터의 소스의 역할을 합니다.

타겟 데이터 라인을 믹서로부터 가져오려면 , 적절한 DataLine.Info 객체를 지정해 MixergetLine 메소드를 호출합니다.

TargetDataLine 인터페이스는, 타겟 데이터 라인의 버퍼로부터 취득한 데이터를 읽어들이는 메소드를 제공합니다. 오디오를 녹음하는 어플리케이션은, 버퍼가 오버플로우 하지 않게 타겟 데이터 라인으로부터 데이터를 재빠르게 읽어들입니다. 오버플로우 하면(자), 취득한 데이터에 불연속부가 생겨, 클릭소리가 들리는 일이 있습니다. 어플리케이션에서는,DataLine 인터페이스로 정의되고 있는 available 메소드를 사용해, 데이터 라인의 버퍼로 현재 큐에 들어가 있는 데이터의 양을 판별할 수가 있습니다. 버퍼가 오버플로우를 일으켰을 경우, 큐에 들어가 있는 가장 낡은 데이터가 파기되어 새로운 데이터로 옮겨집니다.

도입된 버젼:
1.3
관련 항목:
Mixer , DataLine , SourceDataLine

상자의 클래스의 개요
 
인터페이스 javax.sound.sampled. DataLine 로부터 상속된 상자의 클래스/인터페이스
DataLine.Info
 
메소드의 개요
 void open (AudioFormat  format)
          지정된 포맷으로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다.
 void open (AudioFormat  format, int bufferSize)
          지정된 포맷과 지정된 버퍼 사이즈로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다.
 int read (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
 

메소드의 상세

open

void open(AudioFormat  format,
          int bufferSize)
          throws LineUnavailableException 
지정된 포맷과 지정된 버퍼 사이즈로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다.

버퍼 사이즈는 바이트 단위로 지정합니다만, 샘플 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

open

void open(AudioFormat  format)
          throws LineUnavailableException 
지정된 포맷으로 라인을 열어, 라인이 필요한 system resource를 획득해 조작 가능하게 되도록(듯이) 합니다.

버퍼 사이즈는 구현에 의해 선택됩니다. 버퍼 사이즈는 바이트 단위입니다만, 샘플 frame size의 배수인 것이 필요합니다. 시스템이 선택한 버퍼 사이즈는, 계속되어 DataLine.getBufferSize() 를 호출하면 조회할 수 있습니다.

이 조작이 성공하면(자), 라인은 열려 있는 상태로서 마크 되어OPEN 이벤트가 라인의 청취자에게 발송 됩니다.

벌써 열려 있는 라인으로 이 메소드를 호출하는 것은 부적절하고,IllegalStateException 가 표시되는 일이 있습니다.

라인에 따라서는, 한 번 닫으면(자) 재차 열지 않는 경우가 있습니다. 이러한 라인을 재차 열려고 하면(자), 항상 LineUnavailableException 가 표시됩니다.

파라미터:
format - 바람직한 오디오 형식
예외:
LineUnavailableException - 시큐리티의 제약을 위해서(때문에) 라인을 열지 않는 경우
IllegalArgumentException - format 의 의 지정이 불완전 또는 무효인 경우
IllegalStateException - 라인이 벌써 열려 있는 경우
SecurityException - 시큐리티의 제약을 위해서(때문에) 라인을 열지 않는 경우
관련 항목:
open(AudioFormat, int) , Line.open() , Line.close() , Line.isOpen() , LineEvent

read

int read(byte[] b,
         int off,
         int len)
데이터 라인의 입력 버퍼로부터 오디오 데이터를 읽어들입니다. 요구된 바이트수가, 지정된 배열의 지정된 오프셋(offset) 위치 (바이트 단위)를 시점으로서 읽힙니다. 이 메소드는, 요구된 양의 데이터를 읽어들여 끝낼 때까지 블록 됩니다. 다만, 요구된 양이 읽히기 전에 데이터 라인이 클로즈, 정지, 배출, 또는 플래시 되면(자), 메소드의 블록이 해제되어 그때까지 읽힌 바이트수가 돌려주어집니다.

블록 되지 않고 읽어들일 수 있는 바이트수는,DataLine 인터페이스의 available 메소드를 사용해 확인할 수 있습니다. 이 바이트수는 블록 되지 않고 확실히 읽어들일 수 있습니다만, 추가 데이터를 읽어들이려고 했을 때에 블록 될지 어떨지는 확실하지는 않습니다.

읽히는 바이트수는, 다음과 같은 완전한 샘플 프레임수를 나타낼 필요가 있습니다.

[읽히는 바이트수] % [frame size의 바이트수] == 0

반환값은 항상 이 조건을 채우고 있습니다. 샘플 frame size의 배수 이외의 바이트수를 읽어들인다고 하는 요구는 실행하지 못하고, IllegalArgumentException 가 throw 되는 경우가 있습니다.

파라미터:
b - 이 메소드가 돌려줄 때의, 요구된 입력 데이터를 포함한 바이트 배열
off - 배열의 선두로부터의 좌표, 바이트 단위
len - read 요구된 바이트수
반환값:
실제로 읽히는 바이트수
예외:
IllegalArgumentException - 요구된 바이트수가 샘플 frame size의 배수가 아닌 경우, 또는 len 가 0 보다 작은 값의 경우
ArrayIndexOutOfBoundsException - off 가 0 보다 작은 값의 경우, 또는 off+len 가 배열 b 의 길이보다 큰 경우
관련 항목:
SourceDataLine.write(byte[], int, int) , DataLine.available()

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.