海思的mpp框架中对非编码的数据流的传输基本上都是使用yuv数据格式,hifb也不例外,在《HiMPP V4.0 媒体处理软件开发参考.pdf》中有提到对于MIPI输出的RGB数据而言,输出的数据将会被默认转化为YUV数据格式传输到显示设备,这就导致了屏幕显示颜色异常问题。
这时就需要调用 HI_MPI_VO_SetGraphicLayerCSC 去设置矩阵转换,将RGB数据保留输出,不进行转换,这里有提到说“该接口需要在图形层使能之后调用”也就是在 open fb 节点之后去调用
f_fbDev = open("/dev/fb0", O_RDWR | O_SYNC);/*hi3516dv300默认fb图层RGB转换成YUV格式输出显示,所以lcd显示时要设置成不转换成YUV*/VO_CSC_S pstCSC;HI_MPI_VO_GetGraphicLayerCSC(0, &pstCSC);pstCSC.enCscMatrix = VO_CSC_MATRIX_IDENTITY;HI_MPI_VO_SetGraphicLayerCSC(0, &pstCSC);
打开 fb 节点设置完转换矩阵之后,剩下的就是使用 hifb 对 fb 节点的操作了。