DirectShow DirectShow 레퍼런스 인터페이스 IAMStreamConfig SetFormat   [목차열람] [주소복사] [슬롯비우기]
IAMStreamConfig::SetFormat
 
Microsoft DirectX 9.0

IAMStreamConfig::SetFormat

SetFormat 메서드는, 핀상에서 출력 포맷을 설정한다.

구문

HRESULT SetFormat(
  AM_MEDIA_TYPE *pmt
);

파라미터

pmt

[in] 새로운 포맷을 지정하는 AM_MEDIA_TYPE 구조체의 포인터.

반환값

HRESULT 값을 돌려준다. 가능한 값은 다음과 같다.

반환 코드 설명
S_OK 성공.
E_OUTOFMEMORY 메모리 부족.
E_POINTER NULL 포인터값.
VFW_E_INVALIDMEDIATYPE 미디어 타입이 무효이다.
VFW_E_NOT_CONNECTED 입력 핀이 접속되지 않다.
VFW_E_NOT_STOPPED 타입을 설정할 수 없다. 필터는 정지되지 않다.
VFW_E_WRONG_STATE 타입을 설정할 수 없다. 필터는 정지되지 않다.

주의

이 메서드는 출력 핀용의 포맷을 지정한다. 핀이 접속되지 않은 경우는, 다음의 접속에 이 포맷을 사용한다. 핀이 이미 접속되고 있는 경우는, 이 포맷에 재접속을 시도한다. 이제 1 개의 핀이 새로운 타입을 거부 하면, 메서드는 실패하는 일이 있다.

이 메서드가 성공했을 경우는,IPin::EnumMediaTypes 메서드에의 이후의 호출은 새로운 타입을 돌려주어, 다른 것은 돌려주지 않는다.

대부분의 필터로, 필터가 포즈나 실행중이라면, 이 메서드는 실패한다. 몇개의 압축 필터에서는, 필터의 입력 핀이 접속되지 않은 경우, 이 메서드는 실패한다.

몇개의 필터에서는, 값 NULL 를 사용해 이 메서드를 호출해, 핀을 기정의 포맷에 리셋 할 수 있다.

필터 개발자의 주의점 : 이하에, 이 메서드의 처리 방법의 주의점을 말한다.

출력 핀이 접속되지 않고, 지정된 미디어 타입을 핀이 지원 하고 있는 경우는, S_OK 를 돌려준다. 미디어 타입을 저장 해,CBasePin::GetMediaType 메서드내에서 포맷 번호 제로로서 제공한다. 다른 포맷을 제공하지 않고,CBasePin::CheckMediaType 메서드내의 다른 포맷은 거부한다.

핀이 이미 접속되고 있어, 지정된 미디어 타입을 핀이 지원 하고 있는 경우는, 핀을 그 타입에 재접속한다. 다른 핀이 새로운 타입을 거부했을 경우는, VFW_E_INVALIDMEDIATYPE 를 돌려주어, 원의 접속을 복원한다.

참조

↑TOP