#. 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)); //현재 창의 영역으로 설정한다.
}
'■ 프로그래밍, 개발' 카테고리의 다른 글
BSD(Berkeley Software Distribution) - 버클리 소프트웨어 배포 (0) | 2014.02.03 |
---|---|
알고리즘을 재미있게.. (0) | 2014.02.02 |
vlc (Video Lan Client) 란 (0) | 2014.01.31 |
운영체제 - 디스크 스케쥴링 (0) | 2014.01.31 |
# 자동으로 빌드 버젼 읽어 오기 (0) | 2014.01.31 |
댓글