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

IMediaObject::ProcessInput

지정된 입력 스트림에 버퍼를 배포한다.

구문

HRESULT ProcessInput(
    DWORD dwInputStreamIndex,
    IMediaBuffer* pBuffer,
    DWORD dwFlags, 
    REFERENCE_TIME rtTimestamp, 
    REFERENCE_TIME rtTimelength 
);

파라미터

dwInputStreamIndex

DMO 의 입력 스트림의 제로로부터 시작되는 인덱스값.

pBuffer

버퍼의 IMediaBuffer 인터페이스를 가리키는 포인터.

dwFlags

DMO_INPUT_DATA_BUFFER_FLAGS 열거형의 0 개 이상의 플래그의 비트 단위의 논리합.

rtTimestamp

버퍼내의 데이터의 시작 타임을 지정하는 타임 스탬프. 버퍼가 유효한 타임 스탬프를 가지고 있는 경우는,dwFlags 파라미터로 DMO_INPUT_DATA_BUFFERF_TIME 플래그를 설정한다. 그 이외의 경우, DMO 는 이 값을 무시한다.

rtTimelength

버퍼내의 데이터의 시간폭을 지정하는 기준 타임. 이 값이 유효한 경우는,dwFlags 파라미터로 DMO_INPUT_DATA_BUFFERF_TIMELENGTH 플래그를 설정한다. 그 이외의 경우, DMO 는 이 값을 무시한다.

반환값

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

반환 코드 설명
DMO_E_INVALIDSTREAMINDEX 무효인 스트림 인덱스.
DMO_E_NOTACCEPTING 데이터를 받아들여지지 않는다.
S_FALSE 처리하는 출력이 없다
S_OK 성공.

주의

pBuffer 파라미터로 지정되는 입력 버퍼는, 읽기 전용이다. DMO 는, 이 버퍼의 데이터를 변경하지 않는다. 모든 쓰기 조작은 출력 버퍼로 행해져 출력 버퍼는,IMediaObject::ProcessOutput 메서드의 호출로 별도로 지정된다.

DMO 가 버퍼내의 모든 데이터를 처리하지 않는 경우, 그 DMO 는 버퍼의 참조 카운트를 보관 유지한다. DMO 는, 데이터에 대해서룩 어해드 를 실행할 필요가 있는 경우를 제외해, 모든 출력을 생성한 후, 버퍼를 릴리즈 한다. DMO 가 룩 어해드를 실행할지 어떨지를 조사하려면 ,IMediaObject::GetInputStreamInfo 메서드를 호출한다.

이 메서드가 DMO_E_NOTACCEPTING 를 돌려주었을 경우는, 입력 스트림이 데이터를 더 이상 받아들이게 될 때까지,ProcessOutput 를 호출한다. 스트림이 데이터를 더 이상 받아들여질지 어떨지를 조사하려면 ,IMediaObject::GetInputStatus 메서드를 호출한다.

메서드가 S_FALSE 를 돌려주었을 경우, 이 입력으로부터 출력은 생성되지 않다. 그 경우, 애플리케이션은 ProcessOutput 를 호출할 필요는 없다. 다만, 이 경우, DMO 는 S_FALSE 를 돌려줄 필요는 없다. DMO 는 S_OK 를 돌려주는 일이 있다.

참조

↑TOP