pdaf添加实例(2p7,type2)[通俗易懂]

pdaf添加实例(2p7,type2)[通俗易懂]/***s5k2p7_pdaf.h**Copyright(c)2015QualcommTechnologies,Inc.*AllRightsReserved.*ConfidentialandProprietary-QualcommTechnologies,Inc.*/.vendor_id=QTI,.stats_dt=0x30

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

/**
* s5k2p7_pdaf.h
*
* Copyright (c) 2015 Qualcomm Technologies, Inc.
* All Rights Reserved.
* Confidential and Proprietary – Qualcomm Technologies, Inc.
*/
.vendor_id = QTI,
.stats_dt = 0x30,
//尾巴模式里的data type,此处的VC通道应在对应sensor驱动的h文件里配置
pdaf添加实例(2p7,type2)[通俗易懂]

.orientation= PDAF_ORIENTATION_DEFAULT,
.sensor_native_pattern_info =
//有几组res支持pdaf就需要添加对应的res组,因为2p7是全尺寸和预览的半尺寸支持pdaf,所以此处配置res0和res1.
{
/* Res 0 */
{
.block_pattern = {
.pd_offset_horizontal = 16,
.pd_offset_vertical = 16,
//pd的横坐标纵坐标的偏移量
pdaf添加实例(2p7,type2)[通俗易懂]

.pix_count = 32,
//一块中有多少个像素点
pdaf添加实例(2p7,type2)[通俗易懂]

.block_dim = {
.width = 64,
//横块数
.height = 64,
//纵块数
},
pdaf添加实例(2p7,type2)[通俗易懂]

.pix_coords =
{
//像素的坐标,A1是左点,A2是右点
pdaf添加实例(2p7,type2)[通俗易懂]

{20, 23, PDAF_LEFT_PIXEL,},
{20, 27, PDAF_RIGHT_PIXEL,},
{36, 27, PDAF_LEFT_PIXEL,},
{36, 31, PDAF_RIGHT_PIXEL,},
{56, 27, PDAF_LEFT_PIXEL,},
{56, 31, PDAF_RIGHT_PIXEL,},
{72, 23, PDAF_LEFT_PIXEL,},
{72, 27, PDAF_RIGHT_PIXEL,},
{24, 43, PDAF_LEFT_PIXEL,},
{24, 39, PDAF_RIGHT_PIXEL,},
{40, 47, PDAF_LEFT_PIXEL,},
{40, 43, PDAF_RIGHT_PIXEL,},
{52, 47, PDAF_LEFT_PIXEL,},
{52, 43, PDAF_RIGHT_PIXEL,},
{68, 43, PDAF_LEFT_PIXEL,},
{68, 39, PDAF_RIGHT_PIXEL,},
{24, 59, PDAF_LEFT_PIXEL,},
{24, 63, PDAF_RIGHT_PIXEL,},
{40, 55, PDAF_LEFT_PIXEL,},
{40, 59, PDAF_RIGHT_PIXEL,},
{52, 55, PDAF_LEFT_PIXEL,},
{52, 59, PDAF_RIGHT_PIXEL,},
{68, 59, PDAF_LEFT_PIXEL,},
{68, 63, PDAF_RIGHT_PIXEL,},
{20, 79, PDAF_LEFT_PIXEL,},
{20, 75, PDAF_RIGHT_PIXEL,},
{36, 75, PDAF_LEFT_PIXEL,},
{36, 71, PDAF_RIGHT_PIXEL,},
{56, 75, PDAF_LEFT_PIXEL,},
{56, 71, PDAF_RIGHT_PIXEL,},
{72, 79, PDAF_LEFT_PIXEL,},
{72, 75, PDAF_RIGHT_PIXEL,},
},
},
.block_count_horizontal = 72,
//pd的像素范围的width/横块数
.block_count_vertical = 54,
//pd的像素范围的height/纵块数
},
/* res 1 */
{//半尺寸的配置
.block_pattern = {
.pd_offset_horizontal = 8,
.pd_offset_vertical = 8,
//这儿有写全尺寸和半尺寸的起始坐标
pdaf添加实例(2p7,type2)[通俗易懂]

.pix_count = 32,
//半尺寸的像素数目和全尺寸的是一致的
.block_dim = {
//全尺寸的一半
.width = 32,
.height = 32,
},
.pix_coords =
{
//半尺寸的像素坐标
pdaf添加实例(2p7,type2)[通俗易懂]

{10, 11, PDAF_LEFT_PIXEL,},
{10, 13, PDAF_RIGHT_PIXEL,},
{18, 13, PDAF_LEFT_PIXEL,},
{18, 15, PDAF_RIGHT_PIXEL,},
{28, 13, PDAF_LEFT_PIXEL,},
{28, 15, PDAF_RIGHT_PIXEL,},
{36, 11, PDAF_LEFT_PIXEL,},
{36, 13, PDAF_RIGHT_PIXEL,},
{12, 21, PDAF_LEFT_PIXEL,},
{12, 19, PDAF_RIGHT_PIXEL,},
{20, 23, PDAF_LEFT_PIXEL,},
{20, 21, PDAF_RIGHT_PIXEL,},
{26, 23, PDAF_LEFT_PIXEL,},
{26, 21, PDAF_RIGHT_PIXEL,},
{34, 21, PDAF_LEFT_PIXEL,},
{34, 19, PDAF_RIGHT_PIXEL,},
{12, 29, PDAF_LEFT_PIXEL,},
{12, 31, PDAF_RIGHT_PIXEL,},
{20, 27, PDAF_LEFT_PIXEL,},
{20, 29, PDAF_RIGHT_PIXEL,},
{26, 27, PDAF_LEFT_PIXEL,},
{26, 29, PDAF_RIGHT_PIXEL,},
{34, 29, PDAF_LEFT_PIXEL,},
{34, 31, PDAF_RIGHT_PIXEL,},
{10, 39, PDAF_LEFT_PIXEL,},
{10, 37, PDAF_RIGHT_PIXEL,},
{18, 37, PDAF_LEFT_PIXEL,},
{18, 35, PDAF_RIGHT_PIXEL,},
{28, 37, PDAF_LEFT_PIXEL,},
{28, 35, PDAF_RIGHT_PIXEL,},
{36, 39, PDAF_LEFT_PIXEL,},
{36, 37, PDAF_RIGHT_PIXEL,},
},
},
/* use estimate blk level instead of ref to chromatix */
.block_count_horizontal = 72,
//半尺寸pd有效范围的width/横块数
.block_count_vertical = 54,
//半尺寸pd有效范围的height/纵块数
},
},
.buffer_block_pattern_info =
{
//这个部分就是将tail mode里面的像素点的坐标写进来
pdaf添加实例(2p7,type2)[通俗易懂]

/* Res 0 */
{
.block_pattern = {
.pix_count = 32,
//4*8
.pix_coords =
{
//如上图,先是两个左点,然后两个右点,两个左点,四个右点……最后四个左点
{
.x = 0,
.y = 0,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 0,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 1,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 1,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 2,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 2,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 3,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 3,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 4,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 4,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 5,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 5,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 6,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 6,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 7,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 7,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 8,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 8,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 9,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 9,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 10,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 10,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 11,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 11,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 12,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 12,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 13,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 13,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 14,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 14,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 15,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 15,
.flag = PDAF_LEFT_PIXEL,
},
},
.pd_offset_horizontal = 0,
.pd_offset_vertical = 0,
.block_dim = {
.width = 2,
.height = 16,
},
},
.stride = 184,//
64(一行的块数)*2(每一行有两个pd点)*10(每个点的数据都是10位的)/8(mipi打包是8位)
.buffer_data_type = PDAF_DATA_TYPE_RAW10_PACKED,
//数据打包格式
pdaf添加实例(2p7,type2)[通俗易懂]

.buffer_type = PDAF_BUFFER_FLAG_SEQUENTIAL_LINE,
//PDAF_BUFFER_FLAG_SPARSE(type 3),PDAF_BUFFER_FLAG_SEQUENTIAL_LINE(type 2)
},
/* res 1 */
{
.block_pattern = {
.pix_count = 32,
//4*8
.pix_coords =
{
{
.x = 0,
.y = 0,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 0,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 1,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 1,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 2,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 2,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 3,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 3,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 4,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 4,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 5,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 5,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 6,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 6,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 7,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 7,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 8,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 8,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 9,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 9,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 10,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 10,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 11,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 11,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 12,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 12,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 13,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 1,
.y = 13,
.flag = PDAF_RIGHT_PIXEL,
},
{
.x = 0,
.y = 14,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 14,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 0,
.y = 15,
.flag = PDAF_LEFT_PIXEL,
},
{
.x = 1,
.y = 15,
.flag = PDAF_LEFT_PIXEL,
},
},
.pd_offset_horizontal = 0,
.pd_offset_vertical = 0,
.block_dim = {
.width = 2,
.height = 16,
//tail mode里像素的width和height
},
},
.stride = 184,
//同上
.buffer_data_type = PDAF_DATA_TYPE_RAW10_PACKED,
//同上
.buffer_type = PDAF_BUFFER_FLAG_SEQUENTIAL_LINE,
//同上
},
},
/* use estimate blk level instead of ref to chromatix */
.black_level = 64,
.cali_version = CALIBRATION_VERSION_2D,
.window_configure = {
.pdaf_sw_window_mode = FIXED_GRID_WINDOW,
/* ingore the floating window configuration */
.fixed_grid_window_configure =
{
.af_fix_window = {
.pdaf_address_start_hori = 0.33333,
.pdaf_address_start_ver = 0.33334,
.pdaf_address_end_hori = 0.66668,
.pdaf_address_end_ver = 0.66668,
},
.window_number_hori = 1,
.window_number_ver = 1,
},
},
.defocus_confidence_th = 200,


在sensor驱动文件里需要定义如下内容:
1:配置data type
#define
S5K2P7_CSI_PD_ISTATS            0x30
/* VC = 1, DT = 0x30 */
2:需要配置传输pd数据的VC
  .sensor_stream_info_array =
  {
    .sensor_stream_info =
    {
      {
        .vc_cfg_size = 2,
        .vc_cfg =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
   {
            .cid = 4,
            .dt =
S5K2P7_CSI_PD_ISTATS,
            .decode_format = CSI_DECODE_10BIT
          },
        },
        .pix_data_fmt =
        {
          SENSOR_BAYER,
   SENSOR_META,
        },
      },
  {
        .vc_cfg_size = 1,
        .vc_cfg =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT,
          },
        },
        .pix_data_fmt =
        {
          SENSOR_BAYER,
        },
      },
    },
    .size = 2,
  },
3:支持pdaf的res需要配置相应的VC
  .csid_lut_params_array =
  {
    .lut_params =
    {
      /* Res 0 */
      {
        .num_cid = 2,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
          {
            .cid = 4,
            .dt =
S5K2P7_CSI_PD_ISTATS,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
      /* Res 1 */
      {
        .num_cid = 2,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
   {
            .cid = 4,
            .dt =
S5K2P7_CSI_PD_ISTATS,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
      /* Res 2 */
      {
        .num_cid = 1,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
      /* Res 3 */
      {
        .num_cid = 1,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
      /* Res 4 */
      {
        .num_cid = 1,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
      /* Res 5 */
      {
        .num_cid = 1,
        .vc_cfg_a =
        {
          {
            .cid = 0,
            .dt = CSI_RAW10,
            .decode_format = CSI_DECODE_10BIT
          },
        },
      },
    },
    .size = 6,
  },
4:
  .meta_data_out_info_array =
  {
    .meta_data_out_info =
    {
      {
/* tail of af size*/
        .width = 144,
        .height = 864,
        .stats_type = PD_STATS,
.dt =
S5K2P7_CSI_PD_ISTATS,
pdaf添加实例(2p7,type2)[通俗易懂]


      },
    },
    .size = 1,
  },
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196383.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 跨网段远程网络唤醒计算机,远程唤醒及跨网段远程唤醒

    跨网段远程网络唤醒计算机,远程唤醒及跨网段远程唤醒远程唤醒:1、除了在BIOS中开启远程唤醒功能外,有些主板要求开启以下功能:ACBackFunction(设置掉电重启后系统的状态)主板的来电唤醒功能比如一插电源线主机就启动看你想怎么设置了使用远程唤醒将“ACBACKFunction”设置为“Full-on”即可关机,开机,先前的状态(原来开时后来电就马上开机,原来关机后来电时还保持关机状态)2、另外,有些网卡还要在其属性中进行另外…

  • Windows常用脚本合集

    Windows常用脚本合集Windows常用脚本合集问题描述因为使用windows一些常用命令需要手动操作,比如启用ssh链接,要先使用win+r输入cmd再输入ssh,有时候甚至ssh命令容易忘记,还需要查看帮助,所以特此集合了一些常用命令软硬件描述操作系统windows10笔记本电脑使用方法创建文件xx.bat再【常用shell】中把代码复制到xx.bat中保存即可,然后双击使用常用shell禁用笔记本电脑自带的键盘,这个功能可以防止使用外接键盘时误触笔记本自带键盘。需要重启电脑后生效,慎重%1m

  • 手机wifiap频段_wifi信道频率

    手机wifiap频段_wifi信道频率WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);//注意用getApplicationContext可以避免android内存泄漏.WifiInfoconnectInfo= wifiManager.getConnectionInfo();根…

    2022年10月20日
  • 电驴不能下载的办法是什么_电驴是什么

    电驴不能下载的办法是什么_电驴是什么原检索地址:http://www.verycd.com/topics/2897692/点开显示“该内容尚未提供权利证明,无法提供下载”添加后地址:http://www.verycd.gdajie.com/topics/2897692/点开看效果,神奇吧!  即:把前面部分改成:http://www.verycd.gdajie.com

  • 阿里巴巴中间件团队_阿里的中间件和库

    阿里巴巴中间件团队_阿里的中间件和库实践出真知,阿里中间件博客入口

  • 无锁编程 汇总

    无锁编程 汇总无锁编程主要是通过一系列原子操作实现。原子操作:1.  Read-Modify-Write(RMW)操作Win32上的_InterlockedIncrementandInterlockedDecrement,iOS上的OSAtomicAdd32以及C++11中的std::atomic::fetch_add。需要注意的是,C++11的原子标准不保证其在每个平台上的实现都是无

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号