블로그 이미지
대갈장군

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

Notice

2009. 3. 16. 23:39 프로그래밍/DirectShow
DirectShow에서 Null Rendering 하는 방법

1. 우선 설명서 (CLSID_)와 기능 (IID_) 정의 해주고 CoCreateInstance 실행 하면 m_pGB 멤버 변수에 포인터 리턴됨. 이로써 필터 그래프 관리자 생성됨.
JIF(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&m_pGB));

2. 미리 가지고 있는 파일 이름을 넘겨주고 RenderFile() 명령 수행.
JIF(m_pGB->RenderFile(wFileName, NULL));

참 쉽죠잉~

재생중인 스트림이 있을경우 재생 중지 하고 필터 매니저 그래프 종료하기

1. IMediaControl interface를 QueryInterface 함수를 이용해 포인터 얻어오기.
IMediaControl * pMC;
JIF(m_pGB->QueryInterface(IID_IMediaControl, (void**)&pMC);

2. 재생중인 스트림이 있으면 정지 시키고 pMC 와 필터 그래프 관리자 해제
if(pMC != NULL)
     LIF(pMC->Stop()); // 재생하고 싶은 경우는 LIF(pMC->Run());
SAFE_RELEASE(pMC);

SAFE_RELEASE(m_pGB);

posted by 대갈장군