2,542
社区成员
发帖
与我相关
我的任务
分享
// Preferred capture size
const long Preferred_Width = 160;
const long Preferred_Height = 120;
void CCaptureDevice::AdjustOutput(void)
{
HRESULT hr = S_OK;
AM_MEDIA_TYPE * pmt = NULL;
LONGLONG avgTimePerFrame = 2000000; // 20fps
pmt = SelectMediaType();
if (pmt)
{
if (pmt->formattype == FORMAT_VideoInfo)
{
VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *) pmt->pbFormat;
pvi->AvgTimePerFrame = avgTimePerFrame;
pvi->bmiHeader.biWidth = Preferred_Width;
pvi->bmiHeader.biHeight = Preferred_Height;
pvi->bmiHeader.biSizeImage = Preferred_Width * Preferred_Height * pvi->bmiHeader.biBitCount / 8;
IAMStreamConfig * pCfg = GetStreamConfig();
hr = pCfg->SetFormat(pmt);
}
DeleteMediaType(pmt);
}
}
void CVideoWindow::OutVideo( char* pData, int len )
{
HDC hdc = GetDC( m_hWnd );
DrawDibDraw( m_HDrawDib,
hdc,
0, //左偏移
0, //顶偏移
-1, //缩放x
-1, //缩放y
&m_BmpInfo->bmiHeader, //图象头
pData, //图象数据
//图象大小
0, // src :left
0, // src :top
IMAGE_WIDTH, // src : width
IMAGE_HEIGHT, // src : height
//画出模式
0 // use prev params....
);
DeleteDC( hdc );
}