본문 바로가기
■ 프로그래밍, 개발

Direct Show - VMR9 필터 활용법

by 토크맨 2014. 1. 31.
반응형

#. Direct Show - VMR9 필터 활용법

 

#include <dshow.h>

#include <D3d0.h>

#include <Vmr9.h>

 

CoCreateInstance(CLSID_VideoMixingRenderer9, NULL, CLSCTX_INPROC_SERVER,

                        IID_IBaseFilter, (void **)&m)pVMR);

 

CComQIPtr<IVMRFilterConfig9> pVMRFC9(m_pVMR);

if(pVMRFC9 != NULL)

pVMRFC9->SetRenderingMode(VMR9Mode_Windowless); //모드 설정 

CComQIPtr<IVMRWindowlessControl9> pVMRWC9(m_pVMR);

if(pVMRWC9 != NULL)

pVMRWC9->SetVideoClippingWindow(m_hWnd);  //출력할 비디오 창 지정

 

IGraphBuilder *pGB;

IFilterGraph2 *pFG2;

IPin *pOutputPin;

 

pGB->AddSourceFilter(wFileName, L"SOURCE", &pSource); //소스 필터 추가 

 

GetUnconnectedPin(pSource, PINDIR_OUTPUT, &pOutputPin); // 연결되지 않은 출력 핀 찾기

 

pFG2->RenderEx(pOutputPin, AM_RENDEREX_RENDERTOEXISTINGRENDERERS, NULL);

//VMR과 연결 

 

CComQIPtr<IVMRWindowlessControl9> pVMRWC9(m_pVMR);

if(pVMRWC9 !=NULL)

{

long xPos, yPos, cx, cy;

GetMoveiePosition(&xPos,&yPos,&cx,&cy); //현재 창의 영역을 얻는다.

RECT rc;

SetRect(&rc, xPos, yPos, xPos + cx, yPos + cy);

LIF(pVMRWC9->SetVideoPosition(NULL, &rc)); //현재 창의 영역으로 설정한다.

}

반응형

댓글