UINT DisPlayRaw(LPVOID params)
{
CUsbhostDlg *dlg = (CUsbhostDlg *) params;
CClientDC dc(dlg->GetDlgItem(IDC_STATIC_PICTURE));
CDC *pDC;
CRect rect;
CWnd *pWnd = dlg->GetDlgItem(IDC_STATIC_PICTURE);
pWnd->GetClientRect(&rect);
pDC = pWnd->GetDC();
BITMAPINFOHEADER *bmpInfoHeader=(BITMAPINFOHEADER*)dlg->m_inforheader;
SetStretchBltMode(pDC->m_hDC,HALFTONE);
CvVideoWriter * writer;
writer=cvCreateVideoWriter("video.avi",CV_FOURCC('M', 'J', 'P', 'G'),15, cvSize(752,480));
while(dlg->bshow)
{
if(dlg->m_display)
{
criticalSection.Lock();
if(dlg->raw2rgb_flag == true)
dlg->bayer2rgb24_bingo(dlg -> m_cRGB, dlg->m_cRaw, IMG_HSIZE, IMG_VSIZE);
else
dlg->gray2rgb24_bingo(dlg -> m_cRGB, dlg->m_cRaw, IMG_HSIZE, IMG_VSIZE);
criticalSection.Unlock();
IplImage* image1 = cvCreateImageHeader(cvSize(752,480), IPL_DEPTH_8U, 3);
image1->origin = ~image1->origin;
cvSetData(image1,dlg -> m_cRGB,752*3);
n=cvWriteFrame(writer,image1);
StretchDIBits(pDC->m_hDC,rect.left, rect.top, rect.left+IMG_HSIZE, rect.top+IMG_VSIZE, 0, 0,
IMG_HSIZE, IMG_VSIZE, dlg->m_cRGB, (BITMAPINFO*)bmpInfoHeader, BI_RGB, SRCCOPY);
dlg->m_display = false;
}
}
cvReleaseVideoWriter(&writer);
return true;
}