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

IMediaControl::Run

Run 메서드는, 필터 그래프의 필터를 모두 실행한다. 그래프가 실행중, 데이터는 그래프를 다녀 이동해, 렌더링 된다.

구문

HRESULT Run(void);

반환값

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

설명
S_FALSE 그래프는 실행의 준비를 하고 있지만, 실행 상태에의 처리이 완료하고 있지 않는 필터가 있다.
S_OK 그래프의 필터가 모두 실행 상태에의 처리을 완료했다.

주의

필터 그래프가 정지 하면, 이 메서드는 그래프를 포즈 하고 나서 실행한다. 그래프가 실행중의 경우는 S_OK 가 돌려주어지지만, 아무것도 일어나지 않는다.

그래프는, 애플리케이션이 IMediaControl::Pause 메서드 또는 IMediaControl::Stop 메서드를 호출할 때까지 실행된다. 재생이 스트림의 마지막에 이르렀을 때, 필터는 그 이상 데이터를 스트림 하지 않지만, 그래프는 실행중인 채로 있다. 그 때, 애플리케이션은 그래프를 정지 혹은 포즈로 할 수 있다. 엔드 오브 스트림 (EOS) 이벤트의 더 자세한 정보는, 「IMediaControl::Pause 」와「EC_COMPLETE 」를 참조할것.

이 메서드는 스트림의 처음까지 시크 하지 않는다. 따라서, 그래프를 실행해, 그 그래프를 포즈 해, 다음에 다시 그 그래프를 실행 하면, 포즈 위치로부터 재생된다. 스트림의 마지막에 이른 다음에 그래프를 실행해도, 아무것도 렌더링 되지 않는다. 그래프를 시크 하려면 ,IMediaSeeking 인터페이스를 사용하는 것.

이 메서드가 S_FALSE 를 돌려주는 경우는,IMediaControl::GetState 메서드를 호출해, 상태의 처리이 완료할 때까지 대기할 수 있다. 메서드가 실패했을 경우, 그래프의 일부의 필터는 실행 상태로 전환할 수 있고 있을 가능성이 있다. 멀티 스트림 그래프에서는, 스트림 전체가 올바르게 재생되고 있을 가능성이 있다. 그래프를 정지할지 어떨지는 애플리케이션측에서 판단해야 한다.

참조

↑TOP