查看: 600|回复: 11

[hi3516] osd创建超过8路失效

[复制链接]
发表于 2017-10-13 13:44:31 | 显示全部楼层 |阅读模式
http://www.ebaina.com/bbs/forum. ... 5&fromuid=20143
根据这里改了,没效果。
 楼主| 发表于 2017-10-13 13:45:31 | 显示全部楼层
HI_S32 j = 0;
    HI_S32 s32Ret;
    MPP_CHN_S stChn;
    RGN_ATTR_S stRgnAttrSet;
    RGN_CHN_ATTR_S stChnAttr;
    static RGN_HANDLE Pic_Handle = -1;

    if (Pic_Handle != -1) {
        osd_destroy(Pic_Handle);
    }
    /*attach the OSD to the vpss*/
    stChn.enModId = OSD_MODID;
    stChn.s32DevId = OSD_DEVID;
    stChn.s32ChnId = OSD_CHNID;
    while (j < 16) {
        if ((RgnBit >> j & 0x0001) == 0)
            break;
        j++;
    }
    if (j == 16)
        SAMPLE_PRT("Over VPSS_MAX_EXT_CHN_NUM! \n");

    stRgnAttrSet.enType = OVERLAYEX_RGN;
    stRgnAttrSet.unAttr.stOverlayEx.enPixelFmt = PIXEL_FORMAT_RGB_1555;
    stRgnAttrSet.unAttr.stOverlay.stSize.u32Width = Pic_Width;
    stRgnAttrSet.unAttr.stOverlay.stSize.u32Height = Pic_Height;
//    stRgnAttrSet.unAttr.stOverlayEx.u32BgColor = 0x000003e0;
    stRgnAttrSet.unAttr.stOverlayEx.u32BgColor = 0x00000000;


    s32Ret = HI_MPI_RGN_Create(j, &stRgnAttrSet);
    if (s32Ret != HI_SUCCESS) {
        SAMPLE_PRT("HI_MPI_RGN_Create failed! s32Ret: 0x%x.\n", s32Ret);
        return s32Ret;
    }

    stChnAttr.bShow = HI_TRUE;
    stChnAttr.enType = OVERLAYEX_RGN;
    stChnAttr.unChnAttr.stOverlayExChn.stPoint.s32X = 48;
    stChnAttr.unChnAttr.stOverlayExChn.stPoint.s32Y = 48;
    stChnAttr.unChnAttr.stOverlayExChn.u32BgAlpha = 0;
    stChnAttr.unChnAttr.stOverlayExChn.u32FgAlpha = 255;
//    stChnAttr.unChnAttr.stOverlayExChn.u32Layer = 0;
    stChnAttr.unChnAttr.stOverlayExChn.u32Layer = 0;


    s32Ret = HI_MPI_RGN_AttachToChn(j, &stChn, &stChnAttr);
    if (HI_SUCCESS != s32Ret) {
        SAMPLE_PRT("HI_MPI_RGN_AttachToChn failed! s32Ret: 0x%x.\n", s32Ret);
        return s32Ret;
    }
    RgnBit |= 0x0001 << j;
    Pic_Handle = (RGN_HANDLE) j;
    return Pic_Handle;
 楼主| 发表于 2017-10-13 13:47:06 | 显示全部楼层
#define OSD_MODID   HI_ID_VPSS
#define OSD_DEVID   0
#define OSD_CHNID   1
 楼主| 发表于 2017-10-13 13:50:43 | 显示全部楼层
区域通道的句柄单独用9试过是可以的,但是连续创建(0- 10)的话到第8个HI_MPI_RGN_AttachToChn返回0xa0038009,文档提示是-----该操作不允许,如试图修改静态配置参数。
发表于 2017-10-18 12:57:44 | 显示全部楼层
T_I_C 发表于 2017-10-13 13:50
区域通道的句柄单独用9试过是可以的,但是连续创建(0- 10)的话到第8个HI_MPI_RGN_AttachToChn返回0xa0038 ...

文档上这样说:

"将多个区域叠加到VPSS 的同一GROUP时,要求每个区域的层次值不能与叠加到该GROUP 的其他区域层次值相同,否则区域层次值相同的多个区域中,只能将最后一个叠加的区域叠加到VPSS 的GROUP 上。"

那么楼主在VPSS上设置这么多layer一样的区域是为什么呢?

vpss上面的layer只能是[0-7], 结合vpss上的区域值只能显示最后一个, 个人猜测VPSS只能创建8个区域, 至于句柄号, 应该没有限制0-7
 楼主| 发表于 2017-10-18 13:11:23 | 显示全部楼层
zhuangweiye 发表于 2017-10-18 12:57
文档上这样说:

"将多个区域叠加到VPSS 的同一GROUP时,要求每个区域的层次值不能与叠加到该GROUP 的其 ...

我试过了,同个层次值的可以叠加的,8个OSD都能显示出来。前提条件是OSD的区域不要重叠即可。
然后,我又想个办法,就是将OSD叠加到VENC,然而结果还是一样,VENC+VPSS的OSD总数还是不能超过8个,否则会报segmentation fault.
 楼主| 发表于 2017-10-18 13:15:48 | 显示全部楼层
zhuangweiye 发表于 2017-10-18 12:57
文档上这样说:

"将多个区域叠加到VPSS 的同一GROUP时,要求每个区域的层次值不能与叠加到该GROUP 的其 ...

对了,我有次成功的叠加过9个OSD,那就是不设置关键色。你能帮我分析下这其中有什么关联吗?
发表于 2017-10-18 13:17:39 | 显示全部楼层
T_I_C 发表于 2017-10-18 13:11
我试过了,同个层次值的可以叠加的,8个OSD都能显示出来。前提条件是OSD的区域不要重叠即可。
然后,我 ...



"VENC+VPSS的OSD总数还是不能超过8个"感觉不靠谱, VPSS叠加OSD输出的是图像,和有没有OSD没有关系

VENC再叠加也只是叠加到图像上, 与VPSS是否叠加OSD应该没有关系

至于"segmentation fault", 多数还是应用程序的问题, 海思出这样的问题概率很低
 楼主| 发表于 2017-10-18 13:23:22 | 显示全部楼层
zhuangweiye 发表于 2017-10-18 13:17
"VENC+VPSS的OSD总数还是不能超过8个"感觉不靠谱, VPSS叠加OSD输出的是图像,和有没有OSD没有关系

...

好的,我在排查排查,多谢。
发表于 4 天前 | 显示全部楼层
T_I_C 发表于 2017-10-18 13:15
对了,我有次成功的叠加过9个OSD,那就是不设置关键色。你能帮我分析下这其中有什么关联吗?

请问楼主,不设置关键色是指的什么?
超过8个osd可以叠加成功了吗?
发表于 4 天前 | 显示全部楼层
qn1536757095 发表于 2019-6-12 11:05
请问楼主,不设置关键色是指的什么?
超过8个osd可以叠加成功了吗?

为什么一定要叠加超过8个呢?可以适当的将多个osd拼接成一个再叠加啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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