查看: 237|回复: 1

[讨论] hi3556v200的dashcam的osd问题

[复制链接]
发表于 2021-1-27 16:00:35 | 显示全部楼层 |阅读模式
本帖最后由 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可以显示。
 楼主| 发表于 2021-2-3 10:35:09 | 显示全部楼层
已经解决,
用汉字库hzk16,将utf8转gb2312,再转为大端模式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2008-2017 当前位置 易百纳技术社区论坛 返回 易百纳技术社区 ( 苏ICP备14036084 )   Powered by Discuz! X3.1
快速回复 返回顶部 返回列表