77范文网 - 专业文章范例文档资料分享平台

MTK android Camera FAQ

来源:网络收集 时间:2018-10-27 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

4. 所以说如果客户在提交试验数据之前能够先检查一下数据正确性,可以有效提高效率.

[FAQ09058] [Camera Tuning]flash_tuning_custom_cct.cpp中engTab[]值的意义 Download2013-09-04

Platform:MT6582MT6589 Branch:JB2JB5

FAQ Content

[DESCRIPTION]

1. 客户使用外挂GPIO或者I2C的flashlight IC通常会遇到:打闪拍照, 抓到的图片会很暗. 客户通常描述为: 预闪与主闪不同步,或者打闪时序有问题.

2. 然后我司工程师会结合flashlight IC spec查看和修改leds_strobe.c以及flash_tuning_custom.cpp 文档(想要了解具体操作,请登录MTKOnline-->Ecourse

专区-->标签\flashlight\Flashlight Driver&Tuning 解析\视频).然后做实验, 通过试验数据flash_nvdata.bin解析出engTab[]中的数据.

3. 更新过engTab[]以后,拍照就不会出现\不同步\问题, 那为什么会这样呢?这些值又是干嘛的?

[SOLUTION]

1. flash_tuning_custom_cct.cpp中有个值为:

p->tuningPara[0/1/2/3].yTar=188;

该值是使用flashlight以后AE收敛的Target(目标值).

2. 从上图可知duty=0(预闪),1(主闪)时候对应的闪光灯亮度值为:1171 8768.

所以预闪和主闪亮度比为eng=8768/1171.

假设预闪和主闪闪光时间内,场景对AE和flash的感光度分别为A和B.

3. 那么yTar=AE*(A+eng*B),从而可以推出:

AE=yTar/(A+eng*B)

所以AE的正确与否,直接受eng的影响.

eng过大capture的图片就偏暗, eng过小capture的图片就过曝.

4. 所以客户使用外挂的flashlight,需要对engTab[]进行客制化.

[FAQ11128] [Camera Drv]RAW Sensor开启闪光灯拍照,闪光灯只闪光一次问题分析

Platform:MT6592MT6589MT6582 Branch:JB9JB5JB2

DownloadFAQ Content

[DESCRIPTION]

1. 我司各平台默认在capture时候会打两次闪:预闪+主闪.

2. 如果只闪一次,有两种可能:流程问题,或者闪光灯驱动问题.

3. 那如何区分这两个问题,实现问题定位?

[SOLUTION]

1. 抓取log,操作过程: 闪光灯选择on模式-->capture-->退出camera.

2. open main_log 搜索关键字\flashlight\

3. RAW Sensor可以看到拍照打闪流程log(YUV sensor流程不同):

08:26:42.684 FlashlightDrv: setTimeOutTime(ms=2000) <--预闪标志行,下预闪duty,step 08:26:42.684 FlashlightDrv: setDuty() duty = 0 08:26:42.684 FlashlightDrv: 08:26:42.684 FlashlightDrv: setStep() step = 0 08:26:42.684 FlashlightDrv:

08:26:42.684 FlashlightDrv: setOnOff() isOn = 1 <--预闪开 08:26:42.684 FlashlightDrv:

08:26:42.899 FlashlightDrv: getInstance line=140

08:26:42.899 FlashlightDrv: setOnOff() isOn = 0 <--预闪关,持续时间215ms 08:26:42.899 FlashlightDrv:

08:26:42.899 FlashlightDrv: setTimeOutTime(ms=1000) 08:26:43.248 FlashlightDrv: getInstance line=140

08:26:43.248 FlashlightDrv: setTimeOutTime(ms=500) <--主闪标志行,下主闪duty,step 08:26:43.248 FlashlightDrv: setDuty() duty = 1 08:26:43.248 FlashlightDrv: 08:26:43.248 FlashlightDrv: setStep() step = 0 08:26:43.248 FlashlightDrv:

08:26:43.249 FlashlightDrv: setOnOff() isOn = 0 08:26:43.249 FlashlightDrv:

08:26:43.249 FlashlightDrv: setOnOff() isOn = 1 <--主闪开 08:26:43.249 FlashlightDrv:

08:26:43.466 FlashlightDrv: getInstance line=140

08:26:43.466 FlashlightDrv: setOnOff() isOn = 0 <--主闪关,持续时间217ms 08:26:43.466 FlashlightDrv:

08:26:43.467 FlashlightDrv: setTimeOutTime(ms=1000)

3. 如果按照2.显示,流程有下预闪和主闪命令,但是闪光灯只亮一次,说明:闪光灯驱动问题.(几乎所有 此类问题都是驱动问题)

如果log中缺少下预闪或者主闪的命令,导致闪光灯只亮一次,说明:流程问题.(微乎其微)

4. 如果通过3. 判定为驱动问题,请仔细阅读flashlight IC spec文档,按照要求控制GPIO或者写相应的寄存器.

5. 如果通过3. 判定为流程问题,只需要提交log给我司即可.

6. 如何正确的书写flashlight driver,可以参考视频:

登录MTKOnline-->Ecourse 专区-->标签\flashlight\\Flashlight Driver&Tuning 解析\视频.

[FAQ11121] [Camera Drv]前置camera没有搭配闪光灯,如何关闭闪光灯图标

2014-03-06

Platform:MT6592MT6589MT6582 Branch:JB5JB2JB9

DownloadFAQ Content

[DESCRIPTION]

前置camera没有搭配闪光灯,但是进入sub camera界面,仍然会show出闪光灯图标,该如何关闭呢?

[SOLUTION]

1.

1.1 如果89 chip,请确认:

alps\\mediatek\\config\\[project]\\projectconfig.mk

中是否有配置:

MTK_SUB_STROBE_SUPPORT=yes

如果有请修改为: MTK_SUB_STROBE_SUPPORT=no

1.2 如果82/92平台,请把

82: alps/mediatek/custom/mt6582/hal/inc/aaa/flash_tuning_custom2.h 92: alps/mediatek/custom/mt6592/hal/inc/aaa/flash_tuning_custom2.h 中的

#define SUB_FLASH_SUPPORT 1 修改为:

#define SUB_FLASH_SUPPORT 0 2.

如果按照1修改后仍然无效,请修改:

alps/mediatek/custom/[project]/hal/flashlight/src/config.ftbl.flashlight.h

#ifdef SUB_FLASH_SUPPORT

为: #if SUB_FLASH_SUPPORT

或者直接修改为: #if 0

[FAQ10511] 如何正确配置Camera中的device Info

Platform:MT6575MT6577MT6582MT6588MT6589MT6592Branch:GB2ICSICS2JBJB2JB3JB9JB5

Download

FAQ Content

[DESCRIPTION]

当拿到Image sensor的驱动和调试参数,没有device info,如何根据驱动 或者调试参数信息自己配置正确的device info,请参照以下solution [SOLUTION]

LensPartNum :lens 的名称,例如 fm50af

u4LensFno :光圈值,如果是2.8的光圈,填入2.8,换算后为28 SensorPartNum :Sensor的名称,例如imx111mipiraw u4OBLevel :OB值,十进制,需要calibration

u4MinGain : CCT中的minimize saturation gain,需要用CCT calibration

u4MaxGain :Sensor使用的最大gain,建立PLine Table表时会参考这个值来限制Sensor gain的最大值

u4MiniISOGain :用来衡量sensor的感光度,需要通过CCT Calibration

u4GainStepUnitInTotalRange: Gain Step,1024为1倍,当sensor的Gain为线性的时候,可以使用这些线性gain,例如Gain step为8,在可填入区域填8,那么每一次跳跃的gain就为1024/8=128

u4PreviewExposureLineUnit:preview模式下曝光一行的时间,单位是us,通过填写可编辑栏的Period pixel numbers,Sensor Pclk (Hz)算出来,这两个值获取方式有两种: 1,从sensor driver中获得: 在****FeatureControl()函数中 case SENSOR_FEATURE_GET_PERIOD

返回的Linelength即为Period pixel numbers

case SENSOR_FEATURE_GET_PIXEL_CLOCK_FREQ:

返回的pclk即为Sensor Pclk

根据不同的模式填写,这里要填写Preview模式下的参数 2,从AEPline table中获取

在camera_AE_PLineTable_*****.h这支文件中,会保留一些debug信息,可以查到Device Info里面所需要的值,但前提是这支文件本身是正确的,一般我司一起release的是与之相匹配的,如果是从其他地方copy过来的则不能使用

可以将上面这些值填到DeviceInfo中即可,是最快的方式

u4PreviewMaxFrameRate:Preview模式下Sensor所能达到的最大帧率,可以通过填写可填写区域中的Period line numbers算出来 获取方法为 1,驱动中获取

在****FeatureControl()函数中 case SENSOR_FEATURE_GET_PERIOD

返回的Framelength即为Period pixel numbers 2,AEPline table中直接获取 参考上一条

u4VideoExposureLineUnit:与Preview获取信息方法一致 u4VideoMaxFrameRate 与Preview获取信息方法一致

u4VideoToPreviewSensitivityRatio :如果video和preview都不support binning mode,这个值就为1024

u4CaptureExposureLineUnit :与Preview获取信息方法一致 u4CaptureMaxFrameRate:与Preview获取信息方法一致

u4CaptureToPreviewSensitivityRatio:如果capture和preview都不support binning mode,这个值就为1024

FixSensorGain:如果sensor能使用的Gain不是线性的,就要将fixSensorGain设为1,然后再下面list出来sensor能使用的Gain,这样生成PLine table的时候,就会参考下面的fix gain来代替用gain step算出来的线性gain

将excel中的以上信息完善后,就可以得到正确的device info了

[FAQ09397] [camera Tuning]8x平台PCA 调整小结 2014-04-28 Platform:MT6582MT6589MT6571MT6582/92+MT6290MT6592Branch:JB5JB2JB7JB9KK1.MP1KK1.MP3KK1.MP5KK1.MP7Download FAQ Content [DESCRIPTION] 我们在使用 CCT 工具 通过 PCA 来调试 色彩的偏差,主要可以通过 Hue 和 saturation 来改善 单个颜色的 色偏和 饱和度的表现。生产的参数会保存在 camera_isp_pca_XXXX.h 文件中。

[FAQ11226] 如何把JB上的Camera driver转到KK版本?

FAQ发布时间:2014-03-20

Platform:MT6592MT6589MT6582/92+MT6290MT6582MT6572MT6571Branch:KK1

DownFAQ Content

【同平台】(指Chip型号一样)

[Driver]

JB版本的Camera Sensor Driver做下面一点确认修改后,可以直接移植到KK上使用

如果存在文件alps\\mediatek\\custom\\mt65XX(projectname or common)\\hal\\imgsensor\\sensornamexxx

,则需要修改函数 \\camera_calibration_cam_cal_xxx.cpp(或camera_calibration_cam_cal.cpp)

XXX_CAM_CALGetCalData(或 CAM_CALGetCalData)中的代码行 char value[32] = {'\\0'}; 改成

char value[PROPERTY_VALUE_MAX] = {'\\0'}; 例如

整个移植步骤:

1:projectConfig.mk 和 imgsensor 相关的配置项按照JB版本的修改

2:检查文件alps\\mediatek\\custom\\common\\kernel\\imgsensor\\inc\\kd_imgsensor.h 中是否存在对应的 Sensor ID 和 Sensor Name的宏定义,如果存在且和JB版本定义相同就不需要修改

3:alps\\mediatek\\custom\\common\\hal\\imgsensor\\src\\sensorlist.cpp 中是否存在相应的配置,没有就需要添加 4:Copy文件夹alps\\mediatek\\custom\\common(project or mt65XX)\\kernel\\imgsensor\\xxx,原Codebase 中如存在这个文件夹需要对比确认正确性

5:文件夹alps\\mediatek\\custom\\mt65XX(project or common)\\hal\\imgsensor\\xxx 拷贝,并按照前面的方案 修改camera_calibration_cam_cal_xxx.cpp(或camera_calibration_cam_cal.cpp)

6:上电文件 alps\\mediatek\\custom\\project\\kernel\\camera\\camera\\ kd_camera_hw.c,这个部分需要确认 硬件layout 和Camera 模组是否和JB版本相同,不同的话需要确认及修改上电时序

[Tuning File]

参数不需要做任何修改 可以直接使用

【跨平台】

[Driver]

首先参考相应的文档,做Chip间的Sensor Driver修改,再按照同平台下JB版本转KK的解决方案做修改

相应的FAQ及eCourse如下:

A. FAQ04498 [Camera Drv]如何将MT6577平台使用的sensorDriver转porting到MT6589/MT6572平台 B. FAQ07669 [Camera Drv]MT6573/MT6575/MT6577/MT6589 转porting到 MT6572 C. e-Course SensorDriver_PortingGuide_MT6577ToMT6589

[Tuning File]

1:mt6589@JB ? mt6582@KK

A:使用mt6589转mt6582的ISP参数工具转tuning参数(如果没工具,提交eService申请) B:参考[FAQ08083]了解mt6582和mt6589的参数差异

C:mt6589是没有tsf(解决Color shading)功能的,转后如果还需要添加tsf功能,请提交导入tsf 功能的eService,并把下面文件及文件夹打包附上 mediatek\\custom\\[$platform,$project]\\hal\\imgsensor\\sensorName

mediatek\\custom\\[$platform,$project]\\hal\\Camera\\Camera\\ae_tunning.cpp

mediatek\\custom\\[$platform,$project]\\hal\\Camera\\Camera\\af_tuning_custom.cpp mediatek\\custom\\[$platform,$project]\\hal\\Camera\\Camera\\isp_tuning_custom.cpp mediatek\\custom\\[$platform,$project]\\hal\\Camera\\Camera\\tsf_tuning_custom.cpp 2:mt6589@JB ? mt6592@KK

A:先做mt6589@JB ? mt6582@KK 转换过程

B:再参考FAQ10051了解mt6592和mt6582的参数差异说明,进行修改 3:mt6582@JB ? mt6592@KK 参考FAQ10051了解mt6592和mt6582的参数差异说明,进行修改 PS:上面涉及到的文件可能同时存在于不同目录,需要注意优先级 目录优先级为:project folder > platform folder > common folder [FAQ04498] [Camera Drv]如何将mt6577平台使用的sensorDriver转porting到mt6589/mt6572平台 Platform:MT6589MT6572 Branch:JB2 DownloadFAQ Content 注意事项: 1:对于量产IC,不再要求在MIPI Packets中包含发送Lane_Start/Lane_End ; 2:开始porting时,请先确认贵司使用的driver在mt6577 平台是可以正常使用的。 由于篇幅限制,请您到DCC上搜索“SensorDriver PortingGuide From MT6577 TO Subsequent platform_V1.1.pdf” 这篇文档,按照介绍逐步完成在MT6589/MT6572平台的转porting 工作。 //added by cheguosheng DCC上这篇文档名称为 CameraSensor_PortingGuide_OnMt6589.pdf [FAQ07669] [Camera Drv]Mt6573/Mt6575/Mt6577/Mt6589上的Driver转prting到Mt6572上 Platform:MT6572 Branch:JB3GB3 DownloadFAQ Content [DESCRIPTION] 从Mt6573/Mt6575/Mt6577上可以使用的driver在Mt6572上会有build error,且有一些feature没有 实现,需要按照SOP来转porting [SOLUTION] 1,请先确保在之前的平台上是可以正常使用的driver 2,参照转porting Guide来进行 由于篇幅限制,请您到DCC上搜索“75_77_89转porting到72.pdf” 这篇文档,按照介绍逐步完成在 MT6572平台的转porting 工作。 [FAQ03008] [Camera Drv]Lens Driver如何兼容 Platform:MT6573MT6575MT6577MT6589MT6572MT6582Branch:GB2ICSICS2JBGB3JB2JB3Download FAQ Content 当ProjectConfig.mk 配置文件中同时配置二颗Lens Driver(皆非sensordrive)的时候,会出现 其中一颗的driver无法注册的情况 log:<3>[ 0.746620] Error: Driver 'lens_actuator' is already registered, aborting... <4>[ 0.747487] failed to register OV5640AF driver

这个情况下需要解决这二颗Lens Driver兼容的问题 MT6573、MT6575、MT6577解决方案

以 ov5640af 和 fm50af 兼容为例 mt6573_devs.c

static struct platform_device actuator_dev = { .name = \ .id = -1, };

static struct platform_device actuator_dev0 = { .name = \ .id = -1, };

__init int mt657X_board_init(void) { ...

#if 1 //defined(CONFIG_ACTUATOR)

retval = platform_device_register(&actuator_dev); if (retval != 0){ return retval; } #endif

#if 1 //defined(CONFIG_ACTUATOR)

retval = platform_device_register(&actuator_dev0); if (retval != 0){ return retval; } #endif ... }

ov5640af.c

inline static int Register_OV5640AF_CharDrv(void) { ....

actuator_class = class_create(THIS_MODULE, \.... }

static struct platform_driver g_stOV5640AF_Driver = { .probe = OV5640AF_probe, .remove = OV5640AF_remove, .suspend = OV5640AF_suspend, .resume = OV5640AF_resume, .driver = {

.name = \ .owner = THIS_MODULE, } };

同时需要保证两颗AF的I2C注册时的write ID不同,否则会造成第二颗lens的I2C probe不会跑到

Eg: FM50af的write id是0x18, OV5640AF是由sensor 控制lens, 所以write id其实就是ov5640的sensor id,这边OV5640AF probe时add的I2C driver只要和FM50AF的write id不一样,就不会有问题。因为实际ov5640af读写register时都是调用的OV5640_read_cmos_sensor和OV5640_write_cmos_sensor.

如果两颗lens的write id确实相同,那么注册时请将一颗lens的write id修改,而在实际读写register使用时再使用真正的write id

MT6589、MT6582平台解决方案

以 ov8825af 和 fm50af 兼容为例,兼容时保持 fm50af driver不变,修改ov8825af lens driver 1:需要修改文件 alps\\mediatek\\platform\\$platform$\\kernel\\core\\mt_dev.c 修改后如下

//添加了一部分代码,注意字符串变化 //

/*=======================================================================*/

/* Lens actuator */

/*=======================================================================*/

static struct platform_device actuator_dev = { .name = \lens_actuator\ .id = -1, };

static struct platform_device actuator_dev1 = { .name = \lens_actuator1\ .id = -1, };

//

//======================================================================= // Lens motor

//=======================================================================

#if 1 //defined(CONFIG_ACTUATOR)

retval = platform_device_register(&actuator_dev); if (retval != 0){ return retval; }

retval = platform_device_register(&actuator_dev1); if (retval != 0){ return retval; } #endif

2:修改文件 alps\\mediatek\\custom\\common\\kernel\\lens\\ov8825af\\ov8825af.c 修改以下几点

a):static struct i2c_board_info __initdata kd_lens_dev={ I2C_BOARD_INFO(\0x19)}; //0x18 --> 0x19

b):#define OV8825AF_VCM_WRITE_ID 0x6c // 改成正确的i2c write id,如果是内置的vcm ic,写成ov8825 sensor的write id,如果是外置的 vcm ic,按VCM ic的DataSheet 写 c):修改函数 Register_OV8825AF_CharDrv

actuator_class = class_create(THIS_MODULE, \actuatordrv1\actuatordrv --> actuatordrv1 d):修改函数 OV8825AF_i2c_probe /* Kirby: add new-style driver { */ g_pstOV8825AF_I2Cclient = client;

g_pstOV8825AF_I2Cclient->addr = OV8825AF_VCM_WRITE_ID; // add

g_pstOV8825AF_I2Cclient->addr = g_pstOV8825AF_I2Cclient->addr >> 1; //打开代码 //Register char driver

i4RetValue = Register_OV8825AF_CharDrv(); e):g_stOV8825AF_Driver 变量的修改 // platform structure

static struct platform_driver g_stOV8825AF_Driver = { .probe = OV8825AF_probe, .remove = OV8825AF_remove, .suspend = OV8825AF_suspend, .resume = OV8825AF_resume, .driver = {

.name = \这儿把 “lens_actuator” 改成 “lens_actuator1”,这里需要保持和文件mt_devs.c增加的 name一致 .owner = THIS_MODULE, } };

详细内容可以参考文档 Lens Driver Compatibility.pdf (请在DMS上搜这篇文档看)

[FAQ08721] [Camera Drv] AR0883 使用内置 AF DriverIC, 几率性失焦问题 2013-08-15 Platform:MT6573MT6575MT6577MT6582MT6589Branch:ICSICS2JBJB2JB3Download FAQ Content [DESCRIPTION] AR0883 内置VCM Driver IC 。即可以用 sensor 去控制 VCM 。如果出现 不对焦 及 几率性失焦的话,请做如下排查 。 [SOLUTION] 1:首先确认 AF 是否可以正常做动? 即确认 0x30F0 是否有 Enable 起来。 //AR0833_write_cmos_sensor(0x30F0, 0x0000); // Disable AF AR0833_write_cmos_sensor(0x30F0, 0x8000); // enable AF 2:DataSheet 中 关于 0X30F0 寄存器中 的 第4个bit 位 描述是:1: VCM is not disabled in standby state. 因此在做 AF 的时候,需要将 第 4个bit 位 设定为1 .即0x30F0 写入 0x8008 . AR0833_write_cmos_sensor(0x30F0, 0x8008 ); // enable AF 需要确认 AR0833mipi_Sensor.c 文件中的 所有0x30F0 都要写成 0x8008 。而不能再出现被写成 0x8000。 3: 4: 确认 ProjectConfig.mk 中 配置的 XXXXAF.C 中有无再对 0x30F0 这个寄存器重新设定成 0x8000 。如有,请 mark 掉。 [FAQ08720] [Camera Drv] A5141(ARO542) 使用内置DriverIC, 几率性失焦问题 2013-08-15 Platform:MT6573MT6575MT6577MT6582MT6589Branch:ICSICS2JBJB2JB3Download FAQ Content [DESCRIPTION] A5141(ARO542) 如果不用 外挂 AF Driver IC,直接使用 sensor 去控制 VCM 时,无法对焦 或者 几率性失焦问题排查。 [SOLUTION] 1:首先确认 AF 是否可以正常做动?

(3)所以判断是kernel space到user space出了问题, 导致u4TrigFlashOn=4, 任何场景都打闪. (4)问题原因是: 82 code少了6句flashlight的case(copy_from_user / copy_to_user),导致传上去的 u4TrigFlashOn是错误的.

只要在kd_sensorlist.c文档中添加闪光灯case, 就可以修改该问题:

问题2:

(1) RAW sensor和YUV sensor闪光灯控制流程不同.

(2) RAW sensor duty值是从flash_tuning_custom.cpp中获取的, 并在驱动leds_strobe.c中作为闪光灯 mode(电流)切换的判断条件.(如果不了解,请登录MTKOnline-->Ecourse 专区-->标签\flashlight\

收看\Flashlight Driver&Tuning 解析\视频)

(3) YUV sensor duty值是从camera_custom_if.cpp中获取,并且所有mode都会 下duty=12(YUV 默认采用假闪):

(4) 那就会存在以下问题(以两段式为例):

如果驱动是搭配RAW sensor采用两段式,可能存在的写法:

以上写法替换为YUV sensor duty会变为12, 一直进入else语句(高电流).手电筒或者video,连拍持续常亮 的情况就会烧掉IC或者自动灭掉.

以上写法替换为YUV sensor duty会变为12, 两个if语句都不满足,导致闪光灯不亮.

(5) 同理,如果是多段控制(多于12段)的flashlight IC, 对于duty=12都应该是高电流,也是有问题. (6) 修改方法:

如果是两段式,将camera_custom_if.cpp中的custom_GetYuvFlashlightDuty修改为0(低电流). 如果是多段式,将camera_custom_if.cpp中的custom_GetYuvFlashlightDuty修改为可以持续常亮 所对应的duty值. [FAQ10429] YUV senor如何打开辅助对焦闪光灯 2013-12-18 Platform:MT6592MT6572MT6582 Branch:JB3JB5JB9 DownloadFAQ Content [DESCRIPTION] YUV sensor 在touch AF的时候,如何打开辅助对焦闪光灯? [SOLUTION] 1.72 chip在touch AF的时候,打开辅助对焦闪光灯请申请patch:alps00804994;82/92平台 不需要申请patch 2. 请将alps\\mediatek\\custom\\platform(实际使用的平台如: mt6572)\\hal\\camera\\camera\\Camera_custom_if.cpp文件中: #define FLASHLIGHT_YUV_AF_LAMP 0 修改为:#define FLASHLIGHT_YUV_AF_LAMP 1 [FAQ04671] [Camera Drv]YUV sensor实现auto flash 功能的软件配置 2013-08-26 Platform:MT6575MT6577 Branch:ICSICS2JB DownloadFAQ Content YUV sensor实现auto flash 功能的软件配置 1.需要打patch来修改mhal文件,patch ID:ALPS00342917。 2.修改alps\\mediatek\\custom\\$projectname$ \\kernel\\imgsensor\\inc路径下的kd_imgsensor_define.h文件: typedef enum { … SENSOR_FEATURE_GET_EXIF_INFO, SENSOR_FEATURE_CHECK_ALIVE, SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO, //此处添加FLASHLIGHT_INFO SENSOR_FEATURE_SET_ESHUTTER_GAIN, SENSOR_FEATURE_MAX

} ACDK_SENSOR_FEATURE_ENUM;

并在#define GPIO_CAMERA_INVALID 0xFF前添加结构体SENSOR_FLASHLIGHT_AE_INFO_STRUCT typedef struct {

MUINT32 u4Fno;

MUINT32 Exposuretime;//< 200ms MUINT32 Gain;

MUINT32 GAIN_BASE;

}SENSOR_FLASHLIGHT_AE_INFO_STRUCT, *PSENSOR_FLASHLIGHT_AE_INFO_STRUCT; 3.修改alps\\mediatek\\custom\\$projectname$ \\kernel\\imgsensor\\src\\kd_sensorlist.c 在CAMERA_HW_FeatureControl内添加case语句SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO inline static int adopt_CAMERA_HW_FeatureControl(void *pBuf) { …

case SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN: case SENSOR_FEATURE_SET_AE_WINDOW: case SENSOR_FEATURE_GET_EXIF_INFO:

case SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO: //添加FLASHLIGHT_INFO 4.以ov2659_yuv为例:

修改alps\\mediatek\\custom\\$projectname$ \\kernel\\imgsensor\\ov2659_yuv\\ ov2659yuv_Sensor.c 在OV2659FeatureControl前添加函数OV2659GetCurAeInfo

static void OV2659GetCurAeInfo(UINT32 pSensorAECurStruct) {

PSENSOR_FLASHLIGHT_AE_INFO_STRUCT Info = (PSENSOR_FLASHLIGHT_AE_INFO_STRUCT)pSensorAECurStruct;

Info->Exposuretime = OV2659ReadShutter(); Info->Gain=OV2659ReadSensorGain() * 2;

OV2659SENSORDB(\n); }

并在OV2659FeatureControl函数中添加case语句SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO UINT32 OV2659FeatureControl(MSDK_SENSOR_FEATURE_ENUM FeatureId, UINT8 *pFeaturePara,UINT32 *pFeatureParaLen) { …

case SENSOR_FEATURE_GET_SHUTTER_GAIN_AWB_GAIN: OV2659GetCurAeAwbInfo(*pFeatureData32); break;

case SENSOR_FEATURE_GET_AE_FLASHLIGHT_INFO: OV2659GetCurAeInfo(*pFeatureData32); break; #endif default:

OV2659SENSORDB(\\\n\ }

[FAQ06309] [Camera Drv]6589平台闪光灯FAQ汇总 2013-08-26 Platform:MT6589 Branch:JBJB2 DownloadFAQ Content 1. 闪光灯处于\状态,进入video,flashlight会闪几下,或者video过程中进行ZOOM in/out操作,flashlight会闪烁。 解决方案:请申请patch ALPS00477654 2.开机后,直接使用第3方apk无法点亮手电筒,需要进入camera打开闪光灯再退出后才可以正常使用第3方apk手电筒. 解决方案:请申请patch ALPS00507478 3.将闪光灯设为自动时,在较暗的地方进入video,闪光灯不亮。 解决方案:请申请patch ALPS00497611 4. 曝光设为+3,看不出曝光效果

解决方案:申请patch ALPS00640600 5. 实现前置闪光灯功能

解决方案:申请patch ALPS00500615

[FAQ09055] [Camera Tuning]如何快速有效的对flashlight进行tuning操作

FAQ发布时间:2014-05-08 Platform:MT6589MT6582 Branch:JB5JB2

DownloadFAQ Content

[DESCRIPTION]

1. 从mt6589开始,flashlight采用了smart flash, 会根据当前的环境下不同的duty值,那就注定主闪电流 2. 在不同环境下呈现不同的值.

2. 所以闪光灯tuning文档就需要记录下不同duty(即不同的电流)所对应的亮度值,从而根据预闪和主闪的亮度 关系比,匹配对应的AE参数.

3. 那在闪光灯驱动leds_strobe.c和flash_tuning_custom.cpp按照flashlight IC spec文档修改过后 (如果不知道怎样修改该两支文档,请登录MTKOnline-->Ecourse 专区-->标签\flashlight\收看\Flashlight Driver&Tuning 解析\视频),如何能够快速获取不同duty(即不同的电流)所 对应的亮度值呢?

[SOLUTION]

1. 我司工程师通常会让客户按照下面的方法进行试验,并提供试验数据:

假设flash_tuning_custom.cpp中dutyNum=2. stepNum=1. 1. adb shell

2. setprop z.flash_ratio 1

3. 全黑环境下,请将手机固定,对着白墙10cm,固定.

4. 点击拍照,然后手机会自动打闪2(Duty)次(其中不要任何人员靠近,避免影响光源). 5. 手机停止拍照以后,将sd内的flash_nvdata.bin和eng_all.txt文件上传.

2. 通常客户会很快将试验数据提交. 如果实验数据不正确,需要打回,这样反反复复会很费时. 那客户怎么确认提交的实验数据是正确的呢?

试验数据包括两支文件:bin和txt文档. bin文档无法打开,但eng_all.txt文档却可以打开:

0 0 14.468 9.602 16.664 11.363 0 0 17.868 11.769 20.356 14.005 0 0 19.815 11.766 20.375 14.016 0 0 19.787 11.750 20.363 13.981 0 0 19.803 11.762 20.350 13.993 0 0 19.780 11.780 20.350 13.979 0 0 19.766 11.752 20.331 14.002 0 0 19.762 11.757 20.333 13.998 0 0 19.727 11.729 20.312 13.984

1 0 19.681 11.701 20.245 13.961 1 0 14.595 8.750 15.190 10.447 1 0 19.697 11.704 20.271 13.984 1 0 19.708 11.715 20.259 13.979 1 0 19.664 11.683 20.248 13.970 1 0 19.690 11.694 20.264 13.975 1 0 19.655 11.692 20.227 13.961 1 0 19.690 11.713 20.264 13.979 1 0 19.685 11.688 20.264 13.988 1 0 19.657 11.685 20.243 13.956 数据的涵义为:

第一列显示为duty.第二列为step值. 第三列为亮度值Y. 每一行代表每一帧的信息. 所以可知:

duty=0和1时候闪光灯打出的亮度值基本全部相同,这说明预闪和主闪的电流相同,驱动有问题请检查为什么 duty=0和1的时候 PMIC输出相同的电流.

3. 正常情况下duty=1时候Y值是duty=0时候Y值2倍以上:

0 0 0.000 0.000 0.000 0.000 0 0 10.137 6.600 11.812 8.829 0 0 16.463 10.477 18.736 13.912 0 0 18.359 10.472 18.745 13.914 0 0 18.326 10.481 18.734 13.951 0 0 18.306 10.484 18.711 13.887 0 0 18.292 10.486 18.736 13.914 0 0 18.292 10.477 18.708 13.910 0 0 18.278 10.477 18.701 13.910 0 0 18.257 10.456 18.701 13.896 1 0 18.150 10.400 18.602 13.822 1 0 93.215 53.461 91.359 73.738 1 0 146.384 84.153 142.856 116.181 1 0 140.146 83.123 141.083 115.157 1 0 138.352 82.197 139.583 114.273 1 0 137.009 81.400 138.243 113.479 1 0 135.738 80.664 137.088 112.759 1 0 134.701 79.988 136.065 112.127 1 0 133.762 79.391 135.113 111.576 1 0 132.917 78.866 134.257 111.049

3. eng_code.txt涵义:

static short engTab[]=

{ 1171,8768,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,2, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,4, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,5, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,6, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,7, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,8, };

第一行的前两个值为实验最终结果,即

flash_tuning_custom_cct.cpp中engTab[]中第一行前2个值为:

(如果不明白engTab中值的涵义,以及这些不对为什么会造成画面暗或者过曝的问题,请参考FAQ:FAQ09058)

#对应子sensor的型号

CMOS_SENSOR_SUB = (子sensor型号)

CMOS_SENSOR_SUB_BAK1 # Description: #子sensor的备用型号 NONE:不支持

(OTHER: sensor型号):备用子sensor的型号

SENSOR_SUB_ROTATE # Description: #子sensor的旋转角度

SENSOR_ROTATE_0:子sensor不作旋转

SENSOR_ROTATE_180:子sensor对应的画面旋转180度

SENSOR_TYPE_SUB #子sensor的类型

YUV: 子sensor类型为YUV SENSOR

RAW: 子sensor类型为RAW SENSOR NONE:不支持子camera

CAPTURE_SCENARIO [DESCRIPTION]

#决定Capture的时候是走On the fly还是Off line的方式。

Off Line概念:即Sensor 输出的数据会先Dump到Memory里面再进行处理,以提高拍照帧率。 On the Fly概念:Sensor输出的数据直接以Pipe line的方式给BB进行处理。 [Option Values]

# OFFLINE: 因为Digital Zoom的时候,Resizer需要更多的时间来处理,若以Pipe line(On the fly) 的方式,则需要降低Sensor输出的帧率,为了提高Capture的帧率(可以减小Shutter Delay) 从而引入了这种拍照模式。

# STANDARD: 没有Digital Zoom(即1X)的时候走On the fly的流程(用以提高Capture帧率), 当Zoom倍数不为0的时候走Off Line的流程(从而Capture不需要降你帧率)。

# ON_THE_FLY: YUV Sensor只可以使用On the fly的流程,Raw Sensor,这种拍照流程都可以设置。

FLASHLIGHT_TYPE [DESCRIPTION]

# 设置flashlight的类型。根据有无Flash LED以及Flash LED的操作模式可以分为LED_ONOFF_SUPPORT、 LED_FLASHLIGHT_SUPPORT和NONE三种。 [Option Values]

# LED_ONOFF_SUPPORT: 如果Flash LED的操作模式为Torch mode, 则FLASHLIGHT_TYPE宏设为LED_ONOFF_SUPPORT。在Torch mode下, 不支持峰值电流或峰值电流的时间较短,补光效果较差,常应用于手电筒。并且该模式下, 用UI上的LED菜单来控制LED,当设置为on时,LED会一直保持开的状态直至设置为off。 # LED_FLASHLIGHT_SUPPORT: 如果Flash LED的操作模式为Flash mode, 则FLASHLIGHT_TYPE宏设为LED_FLASHLIGHT_SUPPORT。在Flash mode下, 支持峰值电流并且峰值电流的时间较长,补光效果较好,常应用于闪光灯。并且该模式下, 用UI和算法共同控制LED的开关,可以实现先预闪再主闪的功能(类似相机的做法),闪两次。 # NONE: 不支持FLASHLIGHT。

HORIZONTAL_CAMERA [DESCRIPTION]

#决定是否打开horizontal camera功能,若设置为TRUE,定义它为全局编译宏。 [Option Values]

# TRUE: Camera或者 Camcorder 用水平的UI界面。当设置为TRUE时,

11A(含)之后该宏只控制UI的部分,需要与SensorRotate配合才能将 preview画面旋转。 10A(含)之前的版本打开横拍的功能只需要设置该宏为TRUE即可。 # FALSE: camera 或者camcorder用竖直的 UI界面。

LENS_MODULE [DESCRIPTION]

#设定主camera的lens module。它的值要么为NA,即特定的lens module,要么为NONE。 如果它的值从NA变为NONE,则AF_SUPPORT必须设置为FALSE;若它的值从NONE变为NA, 则AF_SUPPORT必须设置为TRUE。 [Option Values]

# NA: 特定的lens module。对于RAW sensor,外挂lens module,需要正确设置。

# NONE: 不支持LENS_MODULE。对于YUV sensor,集成了AF功能,不需要lens module.

LENS_MODULE_BAK1 [DESCRIPTION]

# 设置主备用camera的lens module。它的值要么为NA,即特定的lens module,要么为NONE。 如果它的值从NA变为NONE,则AF_SUPPORT必须设置为FALSE;若它的值从NONE变为NA, 则AF_SUPPORT必须设置为TRUE。 [Option Values]

# NA: 特定的lens module。对于RAW sensor,外挂lens module,需要正确设置。 # NONE: 不支持LENS_MODULE。对于YUV sensor,集成了AF功能,不需要lens module

WEBCAM_SUPPORT [DESCRIPTION]

#决定是否打开webcam(网络摄像头)这个功能,会使用Motion JPEG的方式,

即BB端会将Sensor过来的每帧数据都Encode成JPEG,再将些JPEG数据透过USB Cable 传到PC端进行Decode,若设置为TRUE,定义它为全局编译宏 [Option Values]

# TRUE: 打开webcam功能。 # FALSE: 不打开webcam功能。

YUVCAM_ENCODE_DIRECT_WRITE_FILE [DESCRIPTION]

#决定YUVCAM编码时,是边编码边写到文件中,还是编码完成以后再写到文件中去。 [Option Values]

# TRUE: YUVCAM编码时,边编码边写到文件中,可以节省memory,但缺点是速度慢。 # FALSE: YUVCAM编码时,编码完成以后再写到文件中。一般都将 YUVCAM_ENCODE_DIRECT_WRITE_FILE设置为FALSE。

[FAQ08585] [Camera Drv]MT6589闪光灯驱动转MT6582点不亮 2013-08-26 Platform:MT6582 Branch:JB5 DownloadFAQ Content [DESCRIPTION] 89闪光灯驱动直接转到82闪光灯点不亮,log有显示: [SOLUTION] 1. 82 codebase 中aaa_hal_yuv.cpp文件初始化函数init()有getflashlightType. ?2.但是89和82 codebase中的闪光灯驱动与77的驱动相比, leds_strobe.c中的ioctl case: FLASHTYPE都被拿掉. 所以导致获取不到strobe的type,m_pStrobeDrvObj被destroy掉,导致闪光灯不亮.为了避免这个问题,需要修复flashlight_drv.cpp中的getFlashlightType()为: [FAQ11180] [Camera Drv]YUV sensor 搭配flashlight,菜单选项没有auto mode解决方法 FAQ发布时间:2014-03-13 Platform:MT6572MT6582MT6589MT6592 Branch:JB2JB3JB5JB9 DownloadFAQ Content [DESCRIPTION] YUV sensor 搭配闪光灯, 闪光灯模式选项只有ON/OFF,没有AUTO. [SOLUTION] 1. 修改闪光灯菜单配置文件:config.ftbl.flashlight.h 路径为:alps\\mediatek\\custom\\[project]\\hal\\flashlight\\src\\config.ftbl.flashlight.h 2. YUV sensor 闪光灯auto mode是被屏蔽掉的: 请把该句打开,编译android, auto mode就会show出来.

[FAQ03032] [Camera Drv]如何打开或者关闭闪光灯

FAQ发布时间:2012-11-30

Platform:MT6573MT6575MT6577 Branch:GB2ICSICS2JB

DownloadFAQ Content

[DESCRIPTION]

SP上如何打开和关闭闪光灯功能

[SOLUTION]

SP上可以通过配置projectconfig文件和feature table来打开或关闭闪光灯功能,如果后置摄像头使用 RAW sensor,闪光灯的模式支持on、off、auto,如果使用YUV sensor,则flash mode仅支持on、off 两种模式,即目前的solution还yuv sensor 还无法支持自动打闪的功能 打开闪光灯可以通过如下配置

1. 在alps/mediatek/config/pjt/ProjectConfig.mk 文件中,按照如下配置 CUSTOM_HAL_FLASHLIGHT = constant_flashlight CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight 2. 在feature table中把flash相关的feature 打开 RAW sensor 涉及的文件

1) alps\\mediatek\\custom\\project name\\hal\\camera\\camera 目录下cfg_ftbl_custom_raw_main.h 2) alps\\mediatek\\custom\\common\\hal\\camera\\camera 目录下cfg_ftbl_custom_raw_main.h 3) alps\\mediatek\\source\\external\\mhal\\src\\core\\drv\\6575\\isp目录下cfg_ftbl_raw_sceneindep.h YUV sensor 涉及的文件

1) alps\\mediatek\\custom\\project name\\hal\\camera\\camera 目录下cfg_ftbl_custom_yuv_main.h 2) alps\\mediatek\\custom\\common\\hal\\camera\\camera 目录下cfg_ftbl_custom_yuv_main.h 3) alps\\mediatek\\custom\\common\\hal\\imgsensor\\xxx_yuv目录下cfg_ftbl_xxx_yuv.h 规则:优先级,1) > 2) > 3),即如果project name下相应的的文件,则只需要在相应的文件中打开flash 相关的feature,如果没有,则在2)中的文件打开 打开的方式如下,把 #if 0

// Flash Light

CONFIG_FEATURE(FID_AE_STROBE, BY_DEFAULT(FLASHLIGHT_FORCE_OFF),

FLASHLIGHT_AUTO, FLASHLIGHT_FORCE_ON, FLASHLIGHT_FORCE_OFF ) #endif

改为 #if 1

// Flash Light

CONFIG_FEATURE(FID_AE_STROBE, BY_DEFAULT(FLASHLIGHT_FORCE_OFF),

FLASHLIGHT_AUTO, FLASHLIGHT_FORCE_ON, FLASHLIGHT_FORCE_OFF ) #endif

关闭闪光灯可以通过如下配置

1. 在alps/mediatek/config/pjt/ProjectConfig.mk 文件中,按照如下配置 CUSTOM_HAL_FLASHLIGHT = dummy_flashlight CUSTOM_KERNEL_FLASHLIGHT = dummy_flashlight 2. 在feature table中把flash相关的feature 关闭 即,1)、2)、3)三只文件中搜寻Flash Light,把 #if 1

// Flash Light

CONFIG_FEATURE(FID_AE_STROBE, BY_DEFAULT(FLASHLIGHT_FORCE_OFF),

FLASHLIGHT_AUTO, FLASHLIGHT_FORCE_ON, FLASHLIGHT_FORCE_OFF ) #endif 改为 #if 0

// Flash Light

CONFIG_FEATURE(FID_AE_STROBE, BY_DEFAULT(FLASHLIGHT_FORCE_OFF),

FLASHLIGHT_AUTO, FLASHLIGHT_FORCE_ON, FLASHLIGHT_FORCE_OFF ) #endif

[FAQ04240] [Camera Tuning]如何设定Auto flash, 打闪的阀值. FAQ发布时间:2014-04-29 Platform:MT6589MT6571MT6582MT6582/92+MT6290MT6592Branch:JB2JB5JB7JB9KK1.MP1KK1.MP3KK1.MP5KK1.MP7Download FAQ Content 如果想修改Auto flash 在外界亮度为BV2或BV1时,自动开启闪光灯,如何修改? 修改位置: ..\\mediatek\\custom\\common\\hal\\imgsensor\\xxx(sensor name)\\camera_AE_PLineTable_xxx.h 修改对应Mode下的AE Plinetable ,%u4StrobeTrigerBV\值. 例如:非ZSD 的,auto mode 修改: static strAETable g_AE_CaptureTable = { AETABLE_CAPTURE_AUTO, //eAETableID 134, //u4TotalIndex 20, //u4StrobeTrigerBV 98, //i4MaxBV -35, //i4MinBV LIB3A_AE_ISO_SPEED_AUTO, //ISO SPEED sCapturePLineTable_60Hz, sCapturePLineTable_50Hz, NULL, };

可以修改 u4StrobeTrigerBV 即可调整auto flash 阀值. 1. 既为当外界亮度低于BV 2时, 激发闪光灯(10为Base 2*10=20)

2. 此参数为,当环境亮度低于u4StrobeTrigerBV时,Flash 设定为Auto Mode 就会开启.(此值为BV值)

? Flash 阀值在各个模式下的设定位置.

补充说明:

1.调整EV,对闪光灯开启条件的影响.

mediatek/custom/common/hal/inc/aaa/mt6575/tuning_custom/ae_tuning_custom_mt6575.h Code Base: ICS2 ? 參數

? ?

bEV0TriggerStrobe = TRUE

o +-EV 不影响打闪

bEV0TriggerStrobe = FALSE

o EV0 时,如果不打闪, +EV 有可能开启打閃.

2.以下对 BV 与 LV 换算做一下补充说明:

通常将曝光参数方程式表示为以2为底的指数形式,即 A2/T=2EV=BS/K

令log2A2=AV,log2(1/T)=TV,log2(B/0.3K)=BV,log2(0.3S)=SV, 则

AV+TV=EV=BV+SV

其中EV为曝光量,AV为孔径值,TV为时间值,SV为感光材料的感光度值。这个公式称为加法系统。

其物理意义是:为了使感光材料得到合适的曝光量,可以有多种光圈和快门的组合。只要选定了所用的底片,便能确定SV值, 再根据被摄景物的亮度BV,即可求出需要的曝光量EV,从而选择合适的光圈和快门的组合。 举例:使用ISO100的底片,被摄景物亮度B=250Cd/cm2,则 SV=log2(0.3*100)=5 BV= log2{250/(0.3*12.5)}=6 EV=SV+BV=11

根据加法系统可得:BV=LV-5。

[FAQ07623] [Camera Drv]YUV Sensor闪光灯设为自动状态时,打闪异常 2014-04-25 Platform:MT6572MT6582MT6589MT6592 Branch:JB3JB5JB9JB2 DownloadFAQ Content [DESCRIPTION]

YUV Sensor 闪光灯设为自动状态时,在光线亮处拍照仍会开启闪光灯,或者暗环境下不会打闪等异常现象.

[SOLUTION]

YUV sensor + flashlight,而YUV sensor自带有ISP, 所以auto模式下打闪与不打闪是由sensor根据 当前的亮度来判决的.

为了实现auto功能需要在使用的sensor driver添加打闪的判断条件.

以4EC sensor 为例:

1. 需要添加函数:S5K4ECGX_MIPI_FlashTriggerCheck() **************************************************************** #define FLASH_BV_THRESHOLD 0x25 //打闪阈值

static void S5K4ECGX_MIPI_FlashTriggerCheck(unsigned int *pFeatureReturnPara32) {

unsigned int NormBr;

//S5K4ECGX_write_cmos_sensor(0xFCFC,0xD000); S5K4ECGX_write_cmos_sensor(0x002C,0x7000); S5K4ECGX_write_cmos_sensor(0x002E,0x29A4); NormBr = S5K4ECGX_read_cmos_sensor(0x0F12); if (NormBr > FLASH_BV_THRESHOLD) {

*pFeatureReturnPara32 = FALSE; return; }

*pFeatureReturnPara32 = TRUE; return; }

*****************************************************************

2. 在featurecontrol()函数中添加对应的case:

******************************************************************

case SENSOR_FEATURE_GET_TRIGGER_FLASHLIGHT_INFO: S5K4ECGX_MIPI_FlashTriggerCheck(pFeatureData32);

SENSORDB(\F_GET_TRIGGER_FLASHLIGHT_INFO: %d\\n\pFeatureData32); break;

********************************************************************

所以如果auto模式出现异常,请先检测sensor driver中是否有该判断. 若没有,请找您使用的sensor FAE 提供支持,帮助实现该函数的功能.thanks

//added by cheguosheng 在

alps\\mediatek\\custom\\common\\kernel\\imgsensor\\s5k4ecgx_mipi_yuv\\s5k4ecgxmipi_yuv_Sensor.c

static kal_bool S5K4ECGX_MIPI_FlashTriggerCheck(void) {

kal_bool NeedTrigger = KAL_FALSE; kal_uint32 Shutter = 0; kal_uint32 Gain = 0; kal_uint32 Yaverage = 0; kal_uint32 Yup=0; kal_uint32 Ydown=0;

///TODO: check the average Y and threshhold to determine if need to trigger flashlight //1: read shutter //2: read gain

//3: determine if trigger flash

Shutter = S5K4ECGX_MIPI_ReadShutter(); Gain = S5K4ECGX_MIPI_ReadGain();

//Yaverage = CamReadCmosSensor(0x56A1); //Yup = CamReadCmosSensor(0x3A1B); //Ydown = CamReadCmosSensor(0x3A1E);

if (Shutter > 6250)

{

NeedTrigger = KAL_TRUE; }

if (Gain > 5 * 64) /* 5x */ {

NeedTrigger = KAL_TRUE; }

if (Gain * Shutter > 3 * 64 * 6250) /* 3x */ {

NeedTrigger = KAL_TRUE; }

return NeedTrigger; }

//added by cheguosheng

[FAQ07779] [Camera Drv]YUV Sensor auto flashlight 阈值设定方法(auto 打闪不准确)

FAQ发布时间:2014-04-25

Platform:MT6572MT6582MT6589MT6592 Branch:JB3JB5JB9JB2

DownloadFAQ Content

[DESCRIPTION]

按照FAQ07623在sensor driver中添加了

case SENSOR_FEATURE_GET_TRIGGER_FLASHLIGHT_INFO: S5K4ECGX_MIPI_FlashTriggerCheck(pFeatureData32);

SENSORDB(\F_GET_TRIGGER_FLASHLIGHT_INFO: %d\\n\pFeatureData32); break;

以后,发现打闪自动检测不是很准确(需要亮的不亮,或者不需要亮的却亮).

[SOLUTION]

打闪阈值是来判断当前环境是否打闪的判决条件:

假如 打闪阈值定义为:

#define FLASH_BV_THRESHOLD 0x25 //打闪阈值 如果sensor 检测当前的BV值为BV_NOW.

那么当BV_NOW > FLASH_BV_THRESHOLD ,此时不打闪. 当BV_NOW < FLASH_BV_THRESHOLD , 此时打闪.

1. 那怎么通过log,检测出当前的BV值?

可以在mainlog中搜索aaa_hal_yuv关键字:

那么当前的BV值为8.936638.

2. 那如何通过实验确定FLASH_BV_THRESHOLD ?

找个临界环境,你感觉应该打闪的临界环境.拍照,通过查看log读出当前BV值. 然后把阈值调到读到的BV以上,那么比当期环境暗就打闪,比当前环境亮就不闪.

//added by cheguosheng

在文件

alps\\mediatek\\platform\\mt6592\\hardware\\mtkcam\\core\\featureio\\pipe\\aaa\\aaa_hal_yuv.cpp中如下函数: double Hal3AYuv::calcBV() {

DOUBLE AV=0, TV=0, SV=0, BV=0; MINT32 ISO =0;

MINT32 u4MiniISOGain = 50;

queryAEFlashlightInfoFromSensor();

AV=AEFlashlightLog2((double)m_AEFlashlightInfo.u4Fno/10)*2;

TV=AEFlashlightLog2(1000000/((double)m_AEFlashlightInfo.Exposuretime)); ISO=m_AEFlashlightInfo.Gain * u4MiniISOGain/ m_AEFlashlightInfo.GAIN_BASE; SV=AEFlashlightLog2(((double)ISO)/3.125);

BV = AV + TV - SV ;

MY_LOG(\

return (BV); }

//added by cheguosheng [FAQ11677] [Camera Drv]项目更换摄像头,闪光灯不会打闪 2014-05-16 Platform:MT6572MT6582MT6589MT6592 Branch:JB2JB5JB9JB3 DownloadFAQ Content [DESCRIPTION] 更换camera sensor以前,闪光灯能够正常打闪.但是更换模组后,闪光灯在on/auto mode下都无法打闪. [SOLUTION] 1. 该BUG存在于RAW sensor被替换为YUV sensor的项目中. 2. 搜索mian_log会出现以下log: D/FlashlightDrv( 157): getFlashlightType line=480 D/FlashlightDrv( 157): [getFlashlightType] m_flashType=0 D/FlashlightDrv( 157): D/FlashlightDrv( 157): Err: 493:, FLASHLIGHTIOC_G_FLASHTYPE error:0 D/FlashlightDrv( 157): destroyInstance line=153 3. 说明无法获取flashlight type 导致闪光灯节点直接被destroy掉. 4. YUV sensor闪光灯控制流程与RAW sensor不同, 需要首先获取flashlight type成功才能控制闪光灯. root case: 驱动中缺少flashlight type case:FLASHLIGHTIOC_G_FLASHTYPE. 5. 修改如下, 只需要在驱动leds_strobe.c的constant_flashlight_ioctl ( )函数中添加一个变量和一个case即可: [FAQ11596] YUV Sensor 闪光灯打闪异常分析 2014-05-08 Platform:MT6592MT6589MT6582 Branch:JB9JB5JB2 DownloadFAQ Content [DESCRIPTION] 问题1. YUV sensor 闪光灯选项为”auto”, 任何场景闪光灯都打闪. 问题2. 闪光灯搭配Raw sensor打闪正常, 但是更换为YUV sensor闪光灯异常. [SOLUTION] 问题1: (1). 该问题存在于82 平台的所有branch. (2). 在mainlog中搜索会发现以下log: aaa_hal_yuv:m_aeFlashlightType=0x2,m_aeStrobeMode=0x0; BV_THRESHOLD=3.000000,m_strobeTrigerBV=8.936638,u4TrigFlashOn=4. 该值是从sensor driver中的triggercheck中获取,用来判断是否打闪: 0为不打闪, ≠0为打闪. Driver中的接口如下,只会返回0或者1.

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库MTK android Camera FAQ在线全文阅读。

MTK android Camera FAQ.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/236422.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: