org.kwis.msp.media
Class Clip

java.lang.Object
  |
  +--org.kwis.msp.media.Clip

public class Clip
extends Object

이 클래스는 Player에 의해 재생되는 클립을 구현한다.


Field Summary
protected  byte[] buf
           
protected  int bufLength
           
protected  int[] duration
           
protected  int eventParm
           
protected  int front
           
protected  int[] hiFreq
           
protected  boolean isNotifyWM
           
protected  int left
           
protected  int[] lowFreq
           
protected  int magicID
           
protected  int playerID
           
protected  int prgID
           
protected  int rear
           
protected  int[] tone
           
protected  int waterMarkLength
           
 
Constructor Summary
Clip(String type)
          특정 타입의 클립을 생성한다.
Clip(String type, byte[] buf)
          이미 데이타가 저장되어 있는 매개변수를 받아들여 클립을 생성한다.
Clip(String type, int bufSize)
          특정 타입의 CLIP을 생성한다.
Clip(String type, String resourceName)
           
 
Method Summary
protected  void atomicGetUpdate(int getSize)
           
protected  void atomicPutUpdate(int putSize)
           
 int availableDataSize()
          클립에서 이용가능한 데이타 크기(클립 내부버퍼 크기가 아님)
 void clearData()
          클립내의 이용가능한 데이타를 모두 버린다.
protected static int control(int playerID, int cmd, Object buf1, Object buf2)
          HAL단의 MH_mdaControl()에 연결되는 함수이다.
 int getData(byte[] buf, int off, int len)
          클립에서 buf로 미디어 데이타를 복사한다.
protected  int getPlayerID(String type)
           
 String getType()
          클립의 Type을 구한다.
 int getVolume()
          클립 재생기의 볼륨을 읽어온다.
protected  int mediaFreeze()
           
protected  int mediaReadData()
           
protected  int mediaWriteData()
           
protected  boolean playStart(boolean repeat)
          Player.play(Clip clip, boolean repeat)메쏘드안에서 실제 재생함수를 부르기전 repeat값을 매개변수로 불러준다.
 boolean playUpdate(int event, int parm)
          클립 재생시 상태변화를 알린다.
 int putData(byte[] buf, int off, int len)
          클립에 미디어 데이타를 복사한다.
protected  boolean recordStart()
          Player.record(Clip clip)메쏘드안에서 실제 record함수를 부르기전 불러준다.
 boolean setBuffer(byte[] buf, int dataSize)
          클립의 내부버퍼을 설정한다.
 void setListener(PlayListener listener)
          클립 재생시 상태변화를 알려줄 listener를 등록한다.
 boolean setPosition(int ms)
          재생을 시작할 위치를 설정한다.
 boolean setVolume(int level)
          클립 재생기의 볼륨을 설정한다.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

prgID

protected int prgID

playerID

protected int playerID

buf

protected byte[] buf

tone

protected int[] tone

hiFreq

protected int[] hiFreq

lowFreq

protected int[] lowFreq

duration

protected int[] duration

bufLength

protected int bufLength

left

protected int left

front

protected int front

rear

protected int rear

waterMarkLength

protected int waterMarkLength

isNotifyWM

protected boolean isNotifyWM

magicID

protected int magicID

eventParm

protected int eventParm
Constructor Detail

Clip

public Clip(String type,
            int bufSize)
특정 타입의 CLIP을 생성한다. 지원되는 타입은 HandsetProperty.getSystemProperty()의 "MEDIADEVICES"에 의해 구해진 타입중 오디오를 지원하는 타입이다. 타입은 MIME에서 지원하는 타입일 경우 "audio/xxx", "video/xxx"와 같이 MIME타입을 따른다. 데이타 입력은 putData(byte[] buf, int off, int len)를 통하여 CLIP버퍼에 재생할 데이타를 입력한다. 매체재생기의 성능은 디바이스마다 다를 수 있으므로, CLIP 내부 버퍼크기는 재생중 소리가 끊기지 않을 정도로 생성해야 한다. 이 생성자에 의해 생성되는 CLIP의 내부 버퍼크기는 CLIP이 생성될때 만들어져 고정된다. 이벤트 listener함수가 설정되지 않으면 클립재생/녹음시의 상태변화가 전달되지 않는다. 지원되지 않는 타입의 CLIP object를 생성할려고 하면 IllegalArgumentException이 발생한다.
Parameters:
type - 리소스 타입
bufSize - 클립내부에 생성될 버퍼의 크기(바이트 단위)

Clip

public Clip(String type)
특정 타입의 클립을 생성한다. Clip(String type, int bufSize)와 같으나, 내부버퍼을 생성하지 않고 클립을 생성하는 것이 다른다. 이 생성자는 클립 생성시 내부버퍼크기를 모르고, 나중에 버퍼가 설정될 경우에 사용한다. 클립생성후 버퍼를 설정할 경우에는 setBuffer()을 사용한다.
Parameters:
type - 리소스 타입

Clip

public Clip(String type,
            byte[] buf)
이미 데이타가 저장되어 있는 매개변수를 받아들여 클립을 생성한다. 그외는 Clip(String type, int bufSize)과 같다
Parameters:
type - 리소스 타입
buf - 데이타가 들어 있는 버퍼

Clip

public Clip(String type,
            String resourceName)
Method Detail

getPlayerID

protected int getPlayerID(String type)

atomicPutUpdate

protected void atomicPutUpdate(int putSize)

mediaWriteData

protected int mediaWriteData()

atomicGetUpdate

protected void atomicGetUpdate(int getSize)

mediaReadData

protected int mediaReadData()

mediaFreeze

protected int mediaFreeze()

control

protected static int control(int playerID,
                             int cmd,
                             Object buf1,
                             Object buf2)
HAL단의 MH_mdaControl()에 연결되는 함수이다. 함수의 의미는 이통사나 제조사에 따른다.

setBuffer

public boolean setBuffer(byte[] buf,
                         int dataSize)
클립의 내부버퍼을 설정한다. 패러미터로 전달되는 buf가 Clip내부버퍼로 사용되게 된다. 이 함수는 Clip생성시 버퍼를 생성하지 않았을때 Clip object생성후 내부버퍼를 설정하기 위하여 사용된다.
Parameters:
buf - 버퍼
dataSize - 버퍼안에 들어있는 데이타 크기
Returns:
true : 버퍼 설정 성공
false : 이미 버퍼가 설정되어 있음

putData

public int putData(byte[] buf,
                   int off,
                   int len)
클립에 미디어 데이타를 복사한다. 미디어 데이타는 클립생성당시 설정한 타입의 데이타이어야 한다. 클립내의 데이타는 매체재생기에서 재생되면 줄어들고, putData(byte[] buf, int off, int len)로 늘어나게 된다. 복사할 데이타가 크기가 클립내부버퍼가 수용할 데이타보다 크면 수용할 수 있는 만큼만 복사된다
Parameters:
buf - 데이타 버퍼
off - 버퍼 offset
len - 복사할 크기
Returns:
복사된 크기

getData

public int getData(byte[] buf,
                   int off,
                   int len)
클립에서 buf로 미디어 데이타를 복사한다. 클립내의 데이타는 매체재생기에서 녹음되면 늘어나고, getData(byte[] buf, int off, int len)로 줄어들게 된다. 클립내부의 데이타가 전달한 버퍼보다 크면 버퍼크기만큼만 복사된다.
Parameters:
buf - 클립내부의 데이타가 복사될 버퍼
off - 복사될 시작위치
len - 복사될 크기
Returns:
복사된 크기

availableDataSize

public int availableDataSize()
클립에서 이용가능한 데이타 크기(클립 내부버퍼 크기가 아님)
Returns:
이용가능한 데이타 크기

clearData

public void clearData()
클립내의 이용가능한 데이타를 모두 버린다.

getType

public String getType()
클립의 Type을 구한다.
Returns:
Type 문자열

setPosition

public boolean setPosition(int ms)
재생을 시작할 위치를 설정한다. 재생위치 설정기능을 지원하지 않는 타입으로 생성된 클립에 이 함수를 호출할 경우, MediaUnsupportedException이 발생한다.
Parameters:
ms - 클립 재생을 시작할 시작 시점(milli second)
Returns:
ture : 성공
false : 설정 실패

getVolume

public final int getVolume()
클립 재생기의 볼륨을 읽어온다. 클립 재생기의 독립적인 볼륨 설정을 지원할 경우, 이 함수는 클립 재생기의 볼륨을 읽어온다. 지원하지 않을 경우는, 클립생성 타입이 달라도 같은 볼륨소스를 가리킬 수 있다. 볼륨의 최소값은 0 이고, 최대값은 100이다.
Returns:
성공 : 볼륨 값(0-100사이의 볼륨값)

setVolume

public final boolean setVolume(int level)
클립 재생기의 볼륨을 설정한다. 클립 재생기의 독립적인 볼륨 설정을 지원할 경우, 이 함수는 클립 재생기의 볼륨을 설정한다. 지원하지 않을 경우는, 클립생성 타입이 달라도 같은 볼륨소스를 가리킬 수 있다. 설정할 볼륨의 최소값은 0 이고, 최대값은 100이다.
Parameters:
level - 볼륨값

setListener

public void setListener(PlayListener listener)
클립 재생시 상태변화를 알려줄 listener를 등록한다.
Parameters:
listener - 새로운 listener, 만일 null 이면 기존 것을 제거함

playStart

protected boolean playStart(boolean repeat)
Player.play(Clip clip, boolean repeat)메쏘드안에서 실제 재생함수를 부르기전 repeat값을 매개변수로 불러준다.
Parameters:
repeat - Player.play()에 전달된 repeat값

recordStart

protected boolean recordStart()
Player.record(Clip clip)메쏘드안에서 실제 record함수를 부르기전 불러준다. 실제 미디어 record가 읽어나기 전에 해야할 일이 있으면 여기서 설정한다.
Returns:
true : Player.record()함수 수행이 정상적으로 수행됨
false : Player.record()함수가 더이상 수행되지 않고 false로 반환됨

playUpdate

public boolean playUpdate(int event,
                          int parm)
클립 재생시 상태변화를 알린다. 전달되는 이벤트는 PlayListener.playUpdate()와 같다.
Parameters:
event - 상태값
parm - 각 event에 추가 전달값이 있을 경우 사용


AromaSoft Corp. Proprietary and Confidential

(C)opyright 2003 AromaSoft Corp. All right reserved.
Contact : contact@aromasoft.com