/** * @brief initialize the parameters of camera, should be done after reset and open camera to initialize * @author xia_wenting * @date 2010-12-01 * @return T_BOOL * @retval AK_TRUE if successed * @retval AK_FALSE if failed */ static T_BOOL cam_ov3640_init(T_VOID) { if (!camera_set_param(INIT_TAB)) { return AK_FALSE; } else { night_mode = CAMERA_DAY_MODE; return AK_TRUE; } }
/** * @brief initialize the parameters of camera, should be done after reset and open camera to initialize * @author xia_wenting * @date 2011-01-11 * @return T_BOOL * @retval AK_TRUE if success, else AK_FALSE */ static T_BOOL cam_gc0308_init(void) { if (!camera_set_param(INIT_TAB)) { return AK_FALSE; } else { night_mode = CAMERA_DAY_MODE; return AK_TRUE; } }
/** * @brief set camera window * @author xia_wenting * @date 2011-03-22 * @param[in] srcWidth window width * @param[in] srcHeight window height * @return T_S32 * @retval 0 if error mode * @retval 1 if success * @retval -1 if failed */ static T_S32 cam_gc0308_set_digital_zoom(T_U32 srcWidth, T_U32 srcHeight) { T_U16 hrefstart = 0, vrefstart = 0; T_U8 high_bit = 0, low_bit = 0; T_CAMERA_MODE Cammode = s_gc0308_CurMode; T_U8 Camera_window_table[] = { 0x46, 0, 0x47, 0, 0x48, 0, 0x49, 0, 0x4a, 0, 0x4b, 0, 0x4c, 0, END_FLAG, END_FLAG }; akprintf(C1, M_DRVSYS, "set window size %d, %d, %d\r\n", Cammode, srcWidth, srcHeight); if (((srcWidth == 640) && (srcHeight == 480)) || ((srcWidth == 352) && (srcHeight == 288)) || ((srcWidth == 320) && (srcHeight == 240)) || ((srcWidth == 176) && (srcHeight == 144))) { return 1; } switch (s_gc0308_CurMode) { case CAMERA_MODE_VGA: hrefstart = (640 - srcWidth) / 2; vrefstart = (480 - srcHeight) / 2; break; case CAMERA_MODE_CIF: hrefstart = (352 - srcWidth) / 2; vrefstart = (288 - srcHeight) / 2; break; case CAMERA_MODE_QVGA: hrefstart = (320 - srcWidth) / 2; vrefstart = (240 - srcHeight) / 2; break; case CAMERA_MODE_QCIF: hrefstart = (176 - srcWidth) / 2; vrefstart = (144 - srcHeight) / 2; break; case CAMERA_MODE_QQVGA: hrefstart = (160 - srcWidth) / 2; vrefstart = (120 - srcHeight) / 2; break; case CAMERA_MODE_PREV: hrefstart = (640 - srcWidth) / 2; vrefstart = (480 - srcHeight) / 2; break; case CAMERA_MODE_REC: hrefstart = (640 - srcWidth) / 2; vrefstart = (480 - srcHeight) / 2; break; default: akprintf(C1, M_DRVSYS, "unsupported WINDOWING in mode %d!!\n", s_gc0308_CurMode); return 0; } high_bit = hrefstart >> 8; //horizontal frame start high 3-bit low_bit = hrefstart & 0xff; //horizontal frame start low 8-bit Camera_window_table[1] = 0x80 | (high_bit & 0x07); Camera_window_table[5] = low_bit; Camera_window_table[11] = srcWidth >> 8; Camera_window_table[13] = srcWidth & 0xff; high_bit = vrefstart >> 8; //vertical frame start high 2-bit low_bit = vrefstart & 0xff; //vertical frame start low 8-bit Camera_window_table[1] = 0x80 | (high_bit & 0x30); Camera_window_table[3] = low_bit; Camera_window_table[7] = srcHeight >> 8; Camera_window_table[9] = srcHeight & 0xff; if (camera_set_param(Camera_window_table) == AK_TRUE) { return 1; } else { return -1; } }