|
哦了!
共享部分代码:
// for RGB
void Copy_Cam_Image_RGB(U8 *pBufOut, U32 Count)
{
U8 *pImage,*buffer_rgb;
pImage = pBufOut;
int temp;
U32 RGB_size = Count;
temp = (s2440CAM->CIPRSTATUS>>26)&3;
temp = (temp + 2) % 4;
RETAILMSG(MSG_EN_2,(_T("preview index = %d, size %d\r\n"), temp, image_size));
switch (temp)
{
case 0:
buffer_rgb = (U8 *)s2440CAM->CIPRCLRSA1;
break;
case 1:
buffer_rgb = (U8 *)s2440CAM->CIPRCLRSA2;
break;
case 2:
buffer_rgb = (U8 *)s2440CAM->CIPRCLRSA3;
break;
case 3:
buffer_rgb = (U8 *)s2440CAM->CIPRCLRSA4;
break;
default :
buffer_rgb = (U8 *)s2440CAM->CIPRCLRSA1;
break;
}
RETAILMSG(MSG_EN_1,(_T("buffer_rgb[PHY] = 0x%x\r\n"), buffer_rgb));
buffer_rgb += VIRTUAL_ADDR_OFFSET;
RETAILMSG(MSG_EN_1,(_T("buffer_rgb = 0x%x\r\n"), buffer_rgb));
memcpy(pImage, buffer_rgb, RGB_size);
}
DWORD CIS_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{
RETAILMSG(1,(TEXT("CAMERA: CIS_Read\r\n")));
if (frame_count <= 0) {
RETAILMSG(1,(TEXT("CAMERA:CAM_IOCTL_GET_LATEST_FRAME - frame not available!!!\r\n")));
return FALSE;
}
Copy_Cam_Image_RGB((U8 *)pBuffer, Count);
return TRUE;
} |
|