这段程序是通过按键调用,截取视频图像保存为bmp格式,然后存入SD卡,求大神帮忙分析一下
void fnPrintScreen(void)
{
unsigned int i, j, n = 0;
FRESULT ret;
FIL fbmpout;
unsigned char *psrc = (unsigned char *)((int)&gRGBBuf[iRGBRdyBufNo][0+640*3*479]);
unsigned char *pdst = (unsigned char *)(0x01C00000);
for ( j = 0; j < 480; j++)
{
for ( i = 0; i < 640; i++ )
{
pdst[2] = *psrc++;
pdst[1] = *psrc++;
pdst[0] = *psrc++;
pdst += 3;
}
psrc -= 3840;
}
char sFileName[20];
char str[10];
strcpy(sFileName, tUvStatus.sAviName);
sprintf(str, "%d.bmp", tUvStatus.iAviCnt);
strcat(sFileName, str);
LOG_INFO("enc:filename=%s.\r\n", sFileName);
ret = f_open(&fbmpout, sFileName, FA_CREATE_ALWAYS | FA_WRITE);
if(FR_OK != ret)
{
LOG_DEBUG("Error: Output file err... exiting\n");
return (-1);
}
ret = f_write (&fbmpout, (const void *)sBmpVgaRgb24Hdr, sizeof(sBmpVgaRgb24Hdr), &n);
ret = f_write(&fbmpout, (const void *)(0x01C00000), RES_VGA_SIZE_RGB24, &n);
if(FR_OK != ret)
{
LOG_DEBUG("Error: Fwrite Output err... exiting\n");
return (-1);
}
tUvStatus.iAviCnt++;
Sys_SaveIniFile();
LOG_INFO("enc:save ini ok.\r\n");
f_close(&fbmpout);
}
「该帖子被 OpenADSP 在 2014-07-18 08:27:14 编辑过」