GC5035摄像头预览成像调整
platform:rk3288
os:Android7.1
问题:因硬件结构上的摆放位置问题,导致摄像头预览成像时,出现了左右镜像成像问题,拍照和录像时,还出现了最后的照片和视频被旋转了180度. 最后看起来就是倒置的
首先画面左右镜像问题,查阅GC5035的datasheet ,有控制呈现方向的寄存器,
这里设置0x17 寄存器为0x81(第0位设置成1表示在原基础上将左右成像镜像一次)
于是修改代码:hardware/rockchip/camera/SiliconImage/isi/drv/GC5035/source/GC5035_tables.c中:
{0x17,0x81,"0x0100",eReadWrite},
修改完成后,重新查看成像,发现整个成像界面变成红色的了.
在查阅资料分析后,发现是因为在修改成像为镜像后,sensor 实际输出的 bayer order 也需要对应同步修改,不然就会出现扫描的图像与实际输出的B R G 顺序不符合,就会出现呈像偏红,或者偏绿.
找到原因后,开始修改代码:
hardware/rockchip/camera/SiliconImage/isi/drv/GC5035/source/GC5035_MIPI.c中
const IsiSensorCaps_t Sensor_g_IsiSensorDefaultConfig =
{
ISI_BUSWIDTH_10BIT, // BusWidth
ISI_MODE_MIPI, // MIPI
ISI_FIELDSEL_BOTH, // FieldSel
ISI_YCSEQ_YCBYCR, // YCSeq
ISI_CONV422_NOCOSITED, // Conv422
ISI_BPAT_RGRGGBGB, // BPat
ISI_HPOL_REFPOS, // HPol
ISI_VPOL_NEG, // VPol
ISI_EDGE_RISING, // Edge
ISI_BLS_OFF, // Bls
};
将ISI_BPAT_RGRGGBGB 改成 ISI_BPAT_GRGRBGBG
至此摄像头成像镜像问题已经解决了,
第二个问题,因最后呈现的图片和视频都是倒置的,发现将图片旋转180°后变可以正常使用.则在hal层中设置拍照录像视频的参数将方向旋转180°即可
在hardware/rockchip/camera/CameraHal/AppMsgNotifier.cpp中的
int AppMsgNotifier::captureEncProcessPicture(FramInfo_s* frame){
函数中加入rotation = 180;
即可.