1.闪光灯校准
使用adb命令的方式在正常开机环境下做flash 校准,步骤如下:
-1- adb shell setprop z.flash_ratio 1
-2- 全黑环境下,请将手机固定,对着白墙10cm,固定。
-3- 点击拍照,然后手机会自动打闪多次(其中不要任何人员靠近,避免影响光源)。
-4- 手机停止拍照以后,存储空间内将生成eng_all.txt,eng_code.txt,fwb_code.txt等文件。
校准数据检查没问题后,
-1- 将eng_code.txt中的engTab数据合入到flash_tuning_custom_cct.cpp中的engTab数组中;
-2- 将fwb_code.txt中的数据合入到Camera_flash_awb_para_xxxxxx.h的Flash AWB Calibration数组中。 合入后重新编译即可生效。
主要调试文件:
1.kernel-4.4\drivers\misc\mediatek\flashlight\flashlights-dummy-gpio.c
2.vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom.cpp
3.vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom_cct.cpp
一:常见闪光灯问题处理
1.开启闪光灯拍照和录像的照片跟视频偏色(我这里主要偏绿色)
修改vendor\mediatek\proprietary\custom\mt6739\hal\camera_3a\flashawb_tuning_custom.cpp中MTRUE为MFALSE(关掉白平衡)
2.明亮处拍照闪光灯会亮起
vendor/mediatek/proprietary/custom/mt6739/hal/imgsensor/gc5025_mipi_raw/camera_AE_PLineTable_gc5025mipiraw.h
适当减小u4StrobeTrigerBv值,即环境亮度低于所设 BV 门限值时才会打闪,设的越小,越需要到更暗的环境才会打闪,gc5025默认是20,可以适当调低
3.闪光灯打闪暗处和亮处拍照均会变暗
gain 值补不上来,则导致拍照变暗很多
解决办法:vendor\mediatek\proprietary\custom\mt6739\hal\flashlight\flash_tuning_custom.cpp
para.maxCapExpTimeUs默认值从80000改成100000,即闪光灯打闪时,capture shutter 最大值。默认为 80000,即 80ms,主要目的为了防止闪光灯工作时间较长会导致寿命缩短。通常建议不大于 12500
4.flashlights-dummy-gpio.c驱动拍黑暗处闪光灯起不了补光作用
kernel-4.4\drivers\misc\mediatek\flashlight\flashlights-dummy-gpio.c
解决办法:在开闪光灯拍照的时候,适当加500ms延时
dummy_enable();
mdelay(500);
5.利用SGM37891闪光灯IC编程,降低手电筒电流,防止长时间开启后打闪或者提高闪光灯亮度
控制IC的1W管脚
spin_lock_irq(&g_strobeSMPLock);
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_high)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(200);
for(i=0; i<3; i++){ //4 Pulse
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_low)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(30);
if(pinctrl_select_state(dummy_pinctrl, dummy_xxx_high)){printk("[constant_flashlight] set gpio failed!!\n");}
udelay(30);
}
spin_unlock_irq(&g_strobeSMPLock);