MT6255 2M sensor插值到5M实现方法

MT6255 2M sensor插值到5M实现方法

[DESCRIPTION]
        在MT6255 11B W1144SP上面实现2M  sensor插值到5M 拍照
[KEYWORD]
MT6255
Interpolation
[SOLUTION]
 请修改以下代码:   

1.      在 project make file 中將YUVCAM_INTERPOLATION 設成 HW

2.      在option.mak文件中新增MT6255

YUVCAM_INTERPOLATION_SUPPORT_PLATFORM = MT6235 MT6235B MT6253 MT6253E MT6253L MT6252 MT6252H MT6255

3.      在 \custom\drv\camera_common\sensor_capability.h image sensor macro 還是按照原來的 resolution 設成__IMAGE_SENSOR_2M__

4.      在 \custom\drv\camera_common\sensor_capability.h 中將底下這一段藍色的部份改成紅色的

 

#if (defined(__YUVCAM_INTERPOLATION_SW__) || defined(__YUVCAM_INTERPOLATION_HW__))

    #if defined(__IMAGE_SENSOR_01M__)

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_03M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_03M_MAX_HEIGHT

       #elif defined(__IMAGE_SENSOR_03M__)

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_1M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_1M_MAX_HEIGHT

       #elif defined(__IMAGE_SENSOR_1M__)

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_2M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_2M_MAX_HEIGHT

       #elif defined(__IMAGE_SENSOR_2M__)

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_3M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_3M_MAX_HEIGHT

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_5M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_5M_MAX_HEIGHT

       #elif defined(__IMAGE_SENSOR_3M__)

          #define IMAGE_SENSOR_TARGET_MAX_WIDTH                          IMAGE_5M_MAX_WIDTH

          #define IMAGE_SENSOR_TARGET_MAX_HEIGHT                          IMAGE_5M_MAX_HEIGHT

 

5.      在 \interface\hal\camera\cal_mem_def.h 中將底下這一段藍色的部份改成紅色的

#if (defined(__YUVCAM_INTERPOLATION_SW__) || defined(__YUVCAM_INTERPOLATION_HW__))

    #if defined(__IMAGE_SENSOR_01M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (300*1024)    /* 300KB for 0.3M */

    #elif defined(__IMAGE_SENSOR_03M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (896*1024)    /* 896KB for 1.3M */

    #elif defined(__IMAGE_SENSOR_1M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (1536*1024)   /* 1536KB for 2M */

    #elif defined(__IMAGE_SENSOR_2M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (2048*1024)   /* 2048KB for 3M */

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (3072*1024)   /* 3072KB for 5M */

    #elif defined(__IMAGE_SENSOR_3M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (3072*1024)   /* 3072KB for 5M */

    #elif defined(__IMAGE_SENSOR_5M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (5600*1024)   /* 5600KB for 8M */

    #elif defined(__IMAGE_SENSOR_8M__)

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (5600*1024)   /* 5600KB for 8M */

    #else

        //#error "Please define max resolution of sensor in image_sensor.h"

        #define MAX_STILL_CAPTURE_JPEG_BUFF_SIZE   (1*1024)   /* a dummy buffer if no sensor is selected */

    #endif

 

    // the address offset between raw image and JPEG image buffer while overlap these two buffers

    // it is to minimize the requirement of memory while capture a picture

    #if (defined(__IMAGE_SENSOR_03M__)||defined(__IMAGE_SENSOR_01M__))

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (88320)

    #elif defined(__IMAGE_SENSOR_1M__)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (93440)

    #elif defined(__IMAGE_SENSOR_2M__)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (100608)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (109312)

    #elif defined(__IMAGE_SENSOR_3M__)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (109312)

    #elif defined(__IMAGE_SENSOR_5M__)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (109312)

    #elif defined(__IMAGE_SENSOR_8M__)

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (109312)

    #else

        #define CAL_RAW_IMAGE_JPEG_OVERLAP_OFFSET  (1024)         /* dummy buffer if no sensor is selcted */

    #endif

6.      在 \interface\hal\camera\isp_mem_def.h 中將底下這一段藍色的部份改成紅色的

   #elif defined(MT6255)

       #if defined(__JPEG_SENSOR_SUPPORT__)

          #define ISP_IMAGE_BUF_SIZE        (0)

       #else

       #define ISP_IMAGE_BUF_SIZE      (IMAGE_SENSOR_SOURCE_MAX_WIDTH * IMAGE_SENSOR_SOURCE_MAX_HEIGHT * 3/2+32)

      #define ISP_IMAGE_BUF_SIZE   (IMAGE_SENSOR_TARGET_MAX_WIDTH * IMAGE_SENSOR_TARGET_MAX_HEIGHT * 3/2+32)

       #endif

 

7.      不區分 main/sub (因為沒有定義IMAGE_SENSOR_TARGET_SUB_MAX_WIDTHHEIGHT),直接用 main TARGET WIDTHHEIGHT 配置 (注意:也是有兩個地方要改)

\hal\camera\cal\src\cal_scenario_ctrl.c 中在底下這一段中加入紅色的部份.

   if (CAL_CAMERA_SOURCE_MAIN == CurrentCameraId)

   {

      Resolution = (IMAGE_SENSOR_SOURCE_MAX_WIDTH-6)*(IMAGE_SENSOR_SOURCE_MAX_HEIGHT-6);

      Resolution = (IMAGE_SENSOR_TARGET_MAX_WIDTH-6)*(IMAGE_SENSOR_TARGET_MAX_HEIGHT-6);

   }

   else if (CAL_CAMERA_SOURCE_SUB == CurrentCameraId)

   {

      Resolution = (IMAGE_SENSOR_SOURCE_SUB_MAX_WIDTH-6)*(IMAGE_SENSOR_SOURCE_SUB_MAX_HEIGHT-6);

}

#ifdef __YUVCAM_INTERPOLATION_HW__

      Resolution = MdpStillCapturePara.fullsize_image_width * MdpStillCapturePara.fullsize_image_height;

#endif

請注意在 cal_scenario_ctrl.c 中有兩個地方有和這一段相同的 code, 兩個地方都要加.

 

8.      紅色字體代表刪除, 藍色字體代表新增

修改mcu\hal\mdp\src\mt6255\idp_scen_camera_capture_to_jpeg_mt6255.c

Idp_camera_capture_to_jpeg_read_user_config_hook()

{

   case IDP_CAMERA_CAPTURE_TO_JPEG_FULLSIZE_IMAGE_CAPTURE_WIDTH:

     config.image_capture_width = va_arg(ap, kal_uint32);

      if (IDP_CAMERA_CAPTURE_TO_JPEG_MAX_CAPTURED_WIDTH < config.image_capture_width)

      {

        return KAL_FALSE;

      }

          break;

     

    case IDP_CAMERA_CAPTURE_TO_JPEG_FULLSIZE_IMAGE_CAPTURE_HEIGHT:

      config.image_capture_height = va_arg(ap, kal_uint32);

      if (IDP_CAMERA_CAPTURE_TO_JPEG_MAX_CAPTURED_WIDTH < config.image_capture_height)

      {

        return KAL_FALSE;

      }

      break;

 

    case IDP_CAMERA_CAPTURE_TO_JPEG_CROP_WIDTH:

      config.crop_width = va_arg(ap, kal_uint32);

      if (IDP_CAMERA_CAPTURE_TO_JPEG_MAX_CAPTURED_WIDTH < config.crop_width)

      {

        return KAL_FALSE;

      }

      owner->have_config_resz_crz = KAL_FALSE;

      SET_BIT(crz_struct.mask, IDP_RESZ_CRZ_MASK__SRC_WIDTH);  

      break;   

    case IDP_CAMERA_CAPTURE_TO_JPEG_CROP_HEIGHT:

      config.crop_height = va_arg(ap, kal_uint32);     

      if (IDP_CAMERA_CAPTURE_TO_JPEG_MAX_CAPTURED_WIDTH < config.crop_height)

      {

        return KAL_FALSE;

      }

      owner->have_config_resz_crz = KAL_FALSE;

      SET_BIT(crz_struct.mask, IDP_RESZ_CRZ_MASK__SRC_HEIGHT);         

     break;

}

然后再把添加菜单就可以了。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值