DirectX Media Object DMO 의 관련 정보 DMO 의 인터페이스 IMediaObject ProcessInput [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
지정된 입력 스트림에 버퍼를 배포한다.
구문
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 를 돌려주는 일이 있다.
참조