⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camera_para.c

📁 原相摄像头驱动代码
💻 C
📖 第 1 页 / 共 3 页
字号:
            0x4C4C4C4C, 0x4D4D4D4D, 0x4E4E4E4E, 0x4F4F4F4F,     // CAM+1130~113C,(27)76,304~319
            0x50505050, 0x51515151, 0x52525252, 0x53535353,         // CAM+1140~114C,(27)80,320~335
            0x54545454, 0x55555555, 0x56565656, 0x57575757,         // CAM+1150~115C,(27)84,336~351
            0x58585858, 0x59595959, 0x5A5A5A5A, 0x5B5B5B5B,         // CAM+1160~116C,(27)88,352~367
            0x5C5C5C5C, 0x5D5D5D5D, 0x5E5E5E5E, 0x5F5F5F5F,         // CAM+1170~117C,(27)92,368~383
            0x60606060, 0x61616161, 0x62626262, 0x63636363,         // CAM+1180~118C,(27)96,384~399
            0x64646464, 0x65656565, 0x66666666, 0x67676767,         // CAM+1190~119C,(27)100,400~415
            0x68686868, 0x69696969, 0x6A6A6A6A, 0x6B6B6B6B,         // CAM+11A0~11AC,(27)104,416~431
            0x6C6C6C6C, 0x6D6D6D6D, 0x6E6E6E6E, 0x6F6F6F6F,         // CAM+11B0~11BC,(27)108,432~447
            0x70707070, 0x71717171, 0x72727272, 0x73737373,         // CAM+11C0~11CC,(27)112,448~463
            0x74747474, 0x75757575, 0x76767676, 0x77777777,         // CAM+11D0~11DC,(27)116,464~479
            0x78787878, 0x79797979, 0x7A7A7A7A, 0x7B7B7B7B,         // CAM+11E0~11EC,(27)120,480~495
            0x7C7C7C7C, 0x7D7D7D7D, 0x7E7E7E7E, 0x7F7F7F7F,         // CAM+11F0~11FC,(27)124,496~511
            0x80808080, 0x81818181, 0x82828282, 0x83838383,         // CAM+1200~120C,(27)128,512~527
            0x84848484, 0x85858585, 0x86868686, 0x87878787,         // CAM+1210~121C,(27)132,528~543
            0x88888888, 0x89898989, 0x8A8A8A8A, 0x8B8B8B8B,         // CAM+1220~122C,(27)136,544~559
            0x8C8C8C8C, 0x8D8D8D8D, 0x8E8E8E8E, 0x8F8F8F8F,         // CAM+1230~123C,(27)140,560~575
            0x90909090, 0x91919191, 0x92929292, 0x93939393,         // CAM+1240~124C,(27)144,576~591
            0x94949494, 0x95959595, 0x96969696, 0x97979797,         // CAM+1250~125C,(27)148,592~607
            0x98989898, 0x99999999, 0x9A9A9A9A, 0x9B9B9B9B,         // CAM+1260~126C,(27)152,608~623
            0x9C9C9C9C, 0x9D9D9D9D, 0x9E9E9E9E, 0x9F9F9F9F,         // CAM+1270~127C,(27)156,624~639
            0xA0A0A0A0, 0xA1A1A1A1, 0xA2A2A2A2, 0xA3A3A3A3,         // CAM+1280~128C,(27)160,640~655
            0xA4A4A4A4, 0xA5A5A5A5, 0xA6A6A6A6, 0xA7A7A7A7,         // CAM+1290~129C,(27)164,656~671
            0xA8A8A8A8, 0xA9A9A9A9, 0xAAAAAAAA, 0xABABABAB,         // CAM+12A0~12AC,(27)168,672~687
            0xACACACAC, 0xADADADAD, 0xAEAEAEAE, 0xAFAFAFAF,         // CAM+12B0~12BC,(27)172,688~703
            0xB0B0B0B0, 0xB1B1B1B1, 0xB2B2B2B2, 0xB3B3B3B3,         // CAM+12C0~12CC,(27)176,704~719
            0xB4B4B4B4, 0xB5B5B5B5, 0xB6B6B6B6, 0xB7B7B7B7,         // CAM+12D0~12DC,(27)180,720~735
            0xB8B8B8B8, 0xB9B9B9B9, 0xBABABABA, 0xBBBBBBBB,         // CAM+12E0~12EC,(27)184,736~751
            0xBCBCBCBC, 0xBDBDBDBD, 0xBEBEBEBE, 0xBFBFBFBF,         // CAM+12F0~12FC,(27)188,752~767
            0xC0C0C0C0, 0xC1C1C1C1, 0xC2C2C2C2, 0xC3C3C3C3,         // CAM+1300~130C,(27)192,768~783
            0xC4C4C4C4, 0xC5C5C5C5, 0xC6C6C6C6, 0xC7C7C7C7,         // CAM+1310~131C,(27)196,784~799
            0xC8C8C8C8, 0xC9C9C9C9, 0xCACACACA, 0xCBCBCBCB,         // CAM+1320~132C,(27)200,800~815
            0xCCCCCCCC, 0xCDCDCDCD, 0xCECECECE, 0xCFCFCFCF,     // CAM+1330~133C,(27)204,816~831
            0xD0D0D0D0, 0xD1D1D1D1, 0xD2D2D2D2, 0xD3D3D3D3,         // CAM+1340~134C,(27)208,832~847
            0xD4D4D4D4, 0xD5D5D5D5, 0xD6D6D6D6, 0xD7D7D7D7,         // CAM+1350~135C,(27)212,848~863
            0xD8D8D8D8, 0xD9D9D9D9, 0xDADADADA, 0xDBDBDBDB,         // CAM+1360~136C,(27)216,864~879
            0xDCDCDCDC, 0xDDDDDDDD, 0xDEDEDEDE, 0xDFDFDFDF,         // CAM+1370~137C,(27)220,880~895
            0xE0E0E0E0, 0xE1E1E1E1, 0xE2E2E2E2, 0xE3E3E3E3,         // CAM+1380~138C,(27)224,896~911
            0xE4E4E4E4, 0xE5E5E5E5, 0xE6E6E6E6, 0xE7E7E7E7,         // CAM+1390~139C,(27)228,912~927
            0xE8E8E8E8, 0xE9E9E9E9, 0xEAEAEAEA, 0xEBEBEBEB,         // CAM+13A0~13AC,(27)232,928~943
            0xECECECEC, 0xEDEDEDED, 0xEEEEEEEE, 0xEFEFEFEF,         // CAM+13B0~13BC,(27)236,944~959
            0xF0F0F0F0, 0xF1F1F1F1, 0xF2F2F2F2, 0xF3F3F3F3,         // CAM+13C0~13CC,(27)240,960~975
            0xF4F4F4F4, 0xF5F5F5F5, 0xF6F6F6F6, 0xF7F7F7F7,         // CAM+13D0~13DC,(27)244,976~991
            0xF8F8F8F8, 0xF9F9F9F9, 0xFAFAFAFA, 0xFBFBFBFB,         // CAM+13E0~13EC,(27)248,992~1007
            0xFCFCFCFC, 0xFDFDFDFD, 0xFEFEFEFE, 0xFFFFFFFF};       // CAM+13F0~13FC,(27)252,1008~1023
// _Camera_Parameter_Structure_END_

void init_camera_operation_para(camera_operation_para_struct *oper_data)
{
    oper_data->ae_mode=FRAME_RATE_PRIORITY;                 /* QUALITY_PRIORITY, FRAME_RATE_PRIORITY */
    oper_data->pregain_mode=SENSOR_ONLY;                /* ISP_ONLY, SENSOR_ONLY, ISP_SENSOR_BOTH */
    oper_data->gain_priority=SENSOR_GAIN_PRIORITY;          /* ISP_GAIN_PRIORITY, SENSOR_GAIN_PRIORITY */
    oper_data->enable_cap_shutter_compensate=KAL_TRUE;      /* KAL_TRUE, KAL_FALSE */
    oper_data->shutter_compensate_max=2*BASEGAIN;

    oper_data->isp_pregain_max=3*BASEGAIN;
    oper_data->sensor_pregain_max=2*BASEGAIN;
    oper_data->pregain_compensate_max=2*BASEGAIN;

    oper_data->preview_display_wait_frame=3;

    oper_data->ae_smooth_upper_bound=140;
    oper_data->ae_smooth_lower_bound=60;

	oper_data->ae_awb_cal_period=5;
	oper_data->ae_setting_gain_delay_frame=0;
	oper_data->ae_setting_sensor_gain_delay_frame=2;
	oper_data->ae_setting_shut_delay_frame=2;
    oper_data->ae_setting_cal_delay_frame=0;

   oper_data->capture_delay_frame=2;            /* Switch Preview to Capture */
   oper_data->preview_delay_frame=2;            /* Switch Capture to Preview */

    oper_data->ae_lowlight_threshold=10;                /* low light threshold of luminance for camera */
    oper_data->ae_lowlight_off_threshold=15;            /* low light turn off threshold of luminance for camera */
    oper_data->ae_video_lowlight_threshold=10;      /* low light threshold of luminance for video */
    oper_data->ae_video_lowlight_off_threshold=15;  /* low light turn off threshold of luminance for video */

    oper_data->ae_high_banding_target_enable = KAL_FALSE;   /* Disable banding taeget */
#if (defined(HORIZONTAL_CAMERA))
    camera_horizontal_flag=1;
#else
    camera_horizontal_flag=0;
#endif
}

void set_camera_mode_para(kal_uint8 mode)
{
    kal_uint16 sensor_width,sensor_height;
    kal_uint16 max_expo_width,max_expo_line;

 //kal_prompt_trace(MOD_MED,"===set_camera_mode_para=== %d",mode);
    image_sensor_func->get_sensor_size(&sensor_width,&sensor_height);
    image_sensor_func->get_sensor_period(&max_expo_width, &max_expo_line);
    switch(mode)
    {
        case CAMERA_PARA_PREVIEW_MODE:
            /* isp preview parameter */
            SET_PREPROCESS_PIXEL_LIMIT(0xA0);
            ENABLE_Y_LPF;
            ENABLE_C_LPF;
            DISABLE_RGB_EDGE_GAIN;
            apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_NORMAL_SET);

        break;
        case CAMERA_PARA_CAPTURE_MODE:

            SET_PREPROCESS_PIXEL_LIMIT(0xA0);
                /* Check small size capture */
            if ((exposure_window.image_target_width<=(IMAGE_SENSOR_PV_WIDTH>>1))&&
                     (exposure_window.image_target_height<=(IMAGE_SENSOR_PV_HEIGHT>>1)))
            {

                    DISABLE_RGB_EDGE_GAIN;
                    ENABLE_Y_LPF;
                    ENABLE_C_LPF;

            }
            else
            {

                    ENABLE_RGB_EDGE_GAIN;
                    DISABLE_Y_LPF;
                    DISABLE_C_LPF;
            }


        break;
        case CAMERA_PARA_NIGHT_MODE:

            SET_PREPROCESS_PIXEL_LIMIT(0xA0);
            ENABLE_Y_LPF;
            ENABLE_C_LPF;
            DISABLE_RGB_EDGE_GAIN;
            apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_LOWLIGHT_SET);


        break;
        case CAMERA_PARA_AUTO_LOWLIGHT_MODE:

        break;
        case CAMERA_PARA_VIDEO_MODE:
            /* parameter for video */

            SET_PREPROCESS_PIXEL_LIMIT(0xA0);
            ENABLE_Y_LPF;
            ENABLE_C_LPF;
            DISABLE_RGB_EDGE_GAIN;
            apply_camera_autodefect_to_reg(CAMERA_COMP_PREVIEW_NORMAL_SET);


        break;
        case CAMERA_PARA_AF_NORMAL_MODE:
            SET_PREPROCESS_PIXEL_LIMIT(0xFF);

            DISABLE_AUTO_DEFECT_ALL;

            ENABLE_RGB_EDGE_GAIN;
            DISABLE_Y_LPF;
            DISABLE_C_LPF;
        break;
        case CAMERA_PARA_AF_LOWLIGHT_MODE:
            SET_PREPROCESS_PIXEL_LIMIT(0xFF);

            DISABLE_AUTO_DEFECT_ALL;

            ENABLE_RGB_EDGE_GAIN;
            DISABLE_Y_LPF;
            DISABLE_C_LPF;
        break;
    }
}


void reduce_color_matrix(kal_uint32 sat_factor)
{
      kal_uint32 cm_table[3],m[9];
      kal_uint32 i,k,j;

      /*******************************
        change to read nvram data
      ********************************/
      cm_table[0]=camera_para.ISP.reg[39];//REG_ISP_COLOR_MATRIX1;
      cm_table[1]=camera_para.ISP.reg[40];
      cm_table[2]=camera_para.ISP.reg[41];

      for(i=0;i<9;i++){
        k=i/3;
        j=(2-(i%3))*8;
        m[i]=(cm_table[k]>>j)&0xff;
      }

      for(i=0;i<9;i++){
        if(i%4==0){
           m[i]=(m[i]-32)*sat_factor/32+32;
        }
        else{
           if(m[i]>=128){
            m[i]=(m[i]-128)*sat_factor/32+128;
           }
           else{
            m[i]=m[i]*sat_factor/32;
           }

    }
      }


    SET_COLOR_MATRIX1(m[0],m[1],m[2]);
    SET_COLOR_MATRIX2(m[3],m[4],m[5]);
    SET_COLOR_MATRIX3(m[6],m[7],m[8]);


}




void set_anti_low_light_para(kal_uint8 aeidx)
{

    if(aeidx>=20){

        reduce_color_matrix(0x20);

    }else if(aeidx >=15){
        reduce_color_matrix(0x18);

    }else if(aeidx>=10){
        reduce_color_matrix(0x10);

    }else if(aeidx>=8){
        reduce_color_matrix(0x10);

    }else{

        reduce_color_matrix(0x10);

    }

}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -