if(!bRecord )
{
return -1;
}
EnterCriticalSection(&g_cs);
int64_t i_file = 0;
if (pBmpBuf!=NULL)
{
memcpy(pBmpBuf, pDepth, file_size*4/3);
}
RGB32toRGB24(pBmpBuf,m_param.i_width,m_param.i_height,pRgbBur);
//rgb2yuv_convert(pYuvBuf,pRgbBur,392,294);
ConvertRGB2YUV(m_param.i_width,m_param.i_height,pRgbBur,pYuvBuf);
memcpy(m_pic.img.plane[0], pYuvBuf, plane0_size);
memcpy(m_pic.img.plane[1], pYuvBuf+plane0_size, plane1_size);
memcpy(m_pic.img.plane[2], pYuvBuf+plane0_size+plane1_size , plane2_size);
//
iTestNum++;
if (iTestNum==100)
{
FILE *ofp;
char* cstrPath = "yuv420.yuv";
ofp = fopen(cstrPath, "wb+");
fwrite(pYuvBuf, sizeof(char), plane0_size*3/2, ofp);
fclose(ofp);
//SaveBitmap(pRgbBur,392*294*3);
}
m_pic.i_pts = (int64_t)i_frame * m_param.i_fps_den;
i_file += Encode_frame( m_h, m_opt.hout, &m_pic ); //每帧进行编码
i_frame++;
LeaveCriticalSection(&g_cs);
return 0;
#define __WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
BOOL SaveBitmap(BYTE *pBuffer, long lBufferLen)
{
HANDLE hf = CreateFile(_T("test.bmp"), GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS, NULL, NULL);
if (hf == INVALID_HANDLE_VALUE) return 0;
// 写文件头
BITMAPFILEHEADER fileheader;
ZeroMemory(&fileheader, sizeof(BITMAPFILEHEADER));
fileheader.bfType = 'MB'
fileheader.bfSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+lBufferLen;
fileheader.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
DWORD dwWritter = 0;
WriteFile(hf, &fileheader, sizeof(BITMAPFILEHEADER), &dwWritter, NULL);
// 写文图格式
BITMAPINFOHEADER infoHeader;
ZeroMemory(&infoHeader, sizeof(BITMAPINFOHEADER));
infoHeader.biSize = sizeof(BITMAPINFOHEADER);
infoHeader.biSizeImage = lBufferLen;
infoHeader.biWidth = 392;
infoHeader.biHeight = 294;
infoHeader.biBitCount = 24;
WriteFile(hf, &infoHeader, sizeof(BITMAPINFOHEADER), &dwWritter, NULL);
// 写位图数据
WriteFile(hf, pBuffer, lBufferLen, &dwWritter, NULL);
CloseHandle(hf);
MessageBox(NULL, _T("Save bmp file succeed!"), _T("warn"), MB_OK|MB_ICONINFORMATION);
return 0;
}