S3C2440A WiinCE下CMOS驱动程序修改和摄像头应用程序

今日在处理Windows CE5.0下的s3c2440a摄像头相关程序,在网上找了很多资料,但是未免不全,经过这些天的总结,在驱动和应用程序处理的工程当中需要注意一下几个问题,在此列出,便于读者参考。

1、在Windows CE5.0当中,驱动和应用程序是分开的,虚拟内存的地址存在着很大的差异,因此不能直接用驱动中的RGB_ADRESS来直接获取RGB数据,驱动中CAM_IOCTL_SAMSUNG_CAM_PR命令不能用,这块就需要自己修改驱动程序,第一可以继续实现CAM_IOCTL_SAMSUNG_CAM_PR命令,第二可以实现CIS_Read函数。

2、摄像头的数据是RGB565格式的数据,如果采用RGB565转化的BMP数据进行显示,图片模糊且不清楚,因此建议将RGB565转化为RGB888数据进行显示,转化的代码如下;

#define RGB565_MASK_RED 0xF800
#define RGB565_MASK_GREEN 0x07E0
#define RGB565_MASK_BLUE 0x001F

unsigned short *pRGB16 = (unsigned short *)DDBdata;
for(int i=0; i unsigned short RGB16 = *pRGB16;
g_rgbbuf[i*3+2] = (RGB16&RGB565_MASK_RED) >> 11;
g_rgbbuf[i*3+1] = (RGB16&RGB565_MASK_GREEN) >> 5;
g_rgbbuf[i*3+0] = (RGB16&RGB565_MASK_BLUE);
g_rgbbuf[i*3+2] <<= 3;
g_rgbbuf[i*3+1] <<= 2;
g_rgbbuf[i*3+0] <<= 3;
pRGB16++;
}

3、在应用程序当中需要获取RGB数据,第一要从驱动中读取RGB数据,但是在这开始之前需要发送IOCTL_CAM_CONT,开始启动(Play)CMOS摄像头,才能获取数据。

只要注意以上三点,编写Windows CE5.0+S3C2440A下的CMOS驱动和摄像头应用程序都不存在问题。

你可能感兴趣的:(应用程序)