MTK Android Camera新增差值
一、 计算需要的插值
如果原有的插值列表没有我们需要的插值的时候,要通过计算算出符合需求的插值,比如2700W的插值。
具体计算方法如下:
假设像素的长宽分别为X,Y,则插值为XY。由于MTK规定各参数必须是16的倍数,所以有如下公式:
1、16:9的插值:
X = 16*16*n
Y = 16*9*n
XY = 16*16*n *16*9*n
n 为调整插值大小的参数,通过增大或者减小n的值来算出不同的插值XY,例:
15M的n为20,X = 16*16*20 = 5120 Y = 16*9*20 =2880
所以15M的插值为 5120x2880
同理 4:3的插值公式如下:
X = 16*4*n
Y = 16*3*n
XY = 16*4*n *16*3*n
n 为调整插值大小的参数,通过增大或者减小n的值来算出不同的插值XY,例:
15M的n为71,X = 16*4*71 = 4544 Y = 16*3* 71 =3408
所以15M的插值为 4544x3408
二、 增加计算出的插值
1、 在摄像头对应的插值文件中添加插值。
例如5040,修改config.ftbl.hm5040_mipi_raw.h文件
2、 在对应camera的SettingDataBase.java 、arrays.xml 、strings.xml文件中添加插值:
① packages/apps/PrizeCamera3/res/values/arrays.xml
在pref_camera_picturesize_entryvalues和pref_camera_picturesize_entries数组对应的16:9或者4:3位置按顺序加入插值,要确保两个数组的新增参数位置一致。
具体代码如下截图:
② packages/apps/PrizeCamera3/res/values/strings.xml
在这个文件加入相应的显示字段,与数组pref_camera_picturesize_entries新增的字段相对应,截图如下:
③ packages/apps/PrizeCamera3/src/com/mediatek/camera/setting/SettingDataBase.java
在此文件的String[] PICTURE_SIZE_4_3 和 String[] PICTURE_SIZE_16_9两个数组中分别加入对应的4:3和16:9的新增插值,截图如下:
还有在String[] PICTURE_SIZE中加入所有新增的4:3和16:9的插值,即刚刚在4:3和16:9分别添加的插值都要在这里加一遍。
截图如下:
④ packages/apps/PrizeCamera3/src/com/mediatek/camera/v2/setting/SettingDataBase.java
此文件的修改和第③点类似。
在此文件的String[] PICTURE_SIZE_4_3 和 String[] PICTURE_SIZE_16_9两个数组中分别加入对应的4:3和16:9的新增插值,截图如下: