DirectX Media Object DMO 의 관련 정보 DMO 의 인터페이스 IMediaObjectInPlace Process   [목차열람] [주소복사] [슬롯비우기]
IMediaObjectInPlace::Process
 
Microsoft DirectX 9.0

IMediaObjectInPlace::Process

데이터의 블록을 처리한다. 애플리케이션은 입력 데이터의 블록을 가리키는 포인터를 건네준다. DMO 는 지정된 장소에서 데이터를 처리한다.

구문

HRESULT Process(
    ULONG ulSize,
    BYTE *pData
    REFERENCE_TIME refTimeStart,
    DWORD dwFlags
);

파라미터

ulSize

[in] 데이터의 사이즈 (바이트 단위).

pData

[in, out] 사이즈가 ulSize 의 버퍼를 가리키는 포인터. 입력시에는 버퍼에 입력 데이터가 저장 된다. 메서드가 정상적으로 종료 하면, 버퍼에는 출력 데이터가 저장 된다.

refTimeStart

[in] 데이터의 시작 타임.

dwFlags

[in] DMO_INPLACE_NORMAL 또는 DMO_INPLACE_ZERO 중 하나. 더 자세한 정보는 「주의」를 참조할것.

반환값

HRESULT 값을 돌려준다. 돌아갈 가능성이 있는 값은 다음의 일람대로이다.

반환 코드 설명
E_FAIL 실패.
S_FALSE 성공. 처리하는 데이터가 아직 있다.
S_OK 성공. 처리하는 데이터가 남지 않았다.

주의

메서드가 실패 하면, 버퍼에 불요 데이터가 남는 일이 있다. 애플리케이션은 버퍼의 내용을 이용해서는 안된다.

DMO 는, 입력 데이터의 길이를 넘는 출력 데이터를 생성하는 일이 있다. 이 현상은 "이펙트 테일"이라고 부른다. 예를 들어, 리버브 이펙트는, 입력이 무음이 된 후도 계속한다. DMO 로 이펙트 테일이 발생 하면, 이 메서드는 S_FALSE 를 돌려준다.

애플리케이션에 처리하는 입력 데이터가 있는 동안은,dwFlags 파라미터에 DMO_INPLACE_NORMAL 를 설정해 Process 메서드를 호출한다. 이 호출이 S_FALSE 를 돌려주면 입력 버퍼를 제로로 해, DMO_INPLACE_ZERO 플래그를 설정해,Process 를 다시 호출한다. DMO 는 제로 된 버퍼에 이펙트 테일을 저장 한다. 반환값이, DMO 가 이펙트 테일의 처리를 종료한 것을 나타내는 S_OK 가 될 때까지, 이 방법으로 Process 의 호출을 반복한다.

DMO 로 이펙트 테일이 발생하지 않으면, 이 메서드는 S_TRUE 또는 에러 코드를 돌려준다.

참조

↑TOP