本帖最后由 zhwa 于 2021-1-27 16:02 编辑
hi3556v200的dashcam是liteos和linux双系统,已经裁减了一个ttf的字库,改名vector.ttf放在相应的路径下,编译成功,叠加字符osd时,demo里有初始化字体的g_stOsdFonts结构体变量:typedef struct hiMAPI_OSD_FONTS_S {
/* OSD Lib Font Size, in pixel */
HI_U32 u32FontWidth;
HI_U32 u32FontHeight;
HI_MAPI_OSD_GETFONTMOD_CALLBACK_FN_PTR pfnGetFontMod;
} HI_MAPI_OSD_FONTS_S;
HI_S32 PDT_MEDIA_InitOsd(const HI_PDT_MEDIA_OSD_CFG_S* pstOsdCfg)/* osd init and Set osd bitmap size */
{
HI_S32 ret = HI_SUCCESS;
if (g_mediaOsdCtx.init) {
MLOGI("has already init\n");
return HI_SUCCESS;
}
#if !(defined(AMP_LINUX_HUAWEILITE) && defined(__LINUX__))
/* Init OSD */
extern HI_S32 PDT_MEDIA_InitOsdFontLib(HI_VOID);
ret = PDT_MEDIA_InitOsdFontLib();
HI_APPCOMM_CHECK_RETURN(ret, HI_FAILURE);
#endif
memset(&g_mediaOsdCtx,0,sizeof(PDT_MEDIA_OSDCtx));
memcpy(&g_mediaOsdCtx.osdCfg,pstOsdCfg,sizeof(HI_PDT_MEDIA_OSD_CFG_S));
g_mediaOsdCtx.init = HI_TRUE;
return ret;
}
上面这个函数的PDT_MEDIA_InitOsdFontLib()对全局字体变量做了初始化,可是在dashcam里实际没有调用这个函数,因为双系统定义了defined(AMP_LINUX_HUAWEILITE) && defined(__LINUX__),调试就出现了pfnGetFontMod为空的错误。强制打开这个字体赋值,在程序初始化时就报错,难道dashcam不能添加时间和字符串osd吗?osdlogo.bmp的osd可以显示。 |