DirectX Media Object DMO 의 관련 정보 DMO 의 인터페이스 IMediaObjectInPlace Process [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
데이터의 블록을 처리한다. 애플리케이션은 입력 데이터의 블록을 가리키는 포인터를 건네준다. 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 또는 에러 코드를 돌려준다.
참조