leo0925

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925  发布于  2018-03-08 17:51:31
采纳率 0%
30个问答
5395

osd api 哪个效率更高呢

 
各位前辈,高手
HI_MPI_RGN_SetBitMap 和 HI_MPI_RGN_UpdateCanvas 哪个效率更高呢?
目前 是使用HI_MPI_RGN_SetBitMap 来实现 跟踪画框;明显的慢了5-6帧;跟踪画框的线程 延时10ms;每次执行也打印了时间:30ms 左右;
我来回答
回答13个
时间排序
认可量排序

rainice616

0个粉丝

16

问答

0

专栏

0

资料

rainice616 2018-03-09 08:44:15
认可0
SetBitMap存在一次内存拷贝,UpdateCanvas不存在内存拷贝,按照书册说法,UpdateCanvas应该比SetBitMap效果高,但我用UpdateCanvas的时候,设置频繁会出错

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-03-09 09:12:59
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85070&ptid=39053]rainice616 发表于 2018-3-9 08:44[/url]
SetBitMap存在一次内存拷贝,UpdateCanvas不存在内存拷贝,按照书册说法,UpdateCanvas应该比SetBitMap效果 ...[/quote]

手册内容:
位图填充支持两种实现方式:其一、用户通过HI_MPI_RGN_SetBitMap 接口将位
图数据拷贝至内部显示画布;其二、用户通过HI_MPI_RGN_GetCanvasInfo 获取
内部备份显示画布的地址,直接对该地址数据进行更新,然后调用
HI_MPI_RGN_UpdateCanvas 接口将备份显示画布更新为待显示画布,达到实现更
新位图数据的目的。

我先试试去,看看有什么问题

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-03-09 10:57:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85070&ptid=39053]rainice616 发表于 2018-3-9 08:44[/url]
SetBitMap存在一次内存拷贝,UpdateCanvas不存在内存拷贝,按照书册说法,UpdateCanvas应该比SetBitMap效果 ...[/quote]

你好,
我试了UpdateCanvas, 有两个需求需要改进,请帮忙看看:
1. 字体放大,不知道该修改哪个参数;
2. 画框,框的大小会变动,HI_MPI_RGN_Create 创建时 直接使用了最大值;打印
stCanvasInfo.stSize.u32Width,stCanvasInfo.stSize.u32Height 都是1920 1080;

这两个 你有遇到吗

rainice616

0个粉丝

16

问答

0

专栏

0

资料

rainice616 2018-03-09 12:03:53
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85081&ptid=39053]leo0925 发表于 2018-3-9 10:57[/url]
你好,
我试了UpdateCanvas, 有两个需求需要改进,请帮忙看看:
1. 字体放大,不知道该修改哪个参数; ...[/quote]

1. 字体放大,需要生成的OSD位图就已经是放大的了,REGION只负责叠加,所以需要OSD模块自己调整字体大小再生成位图
2. 没太看懂问题,画的框是多大的,没有改变框属性,但叠加的效果自己在变, 可以这样理解吗
另外问一下,用UpdateCanvas频繁设置的时候,会出现设置失败吗

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-03-09 13:36:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85087&ptid=39053]rainice616 发表于 2018-3-9 12:03[/url]
1. 字体放大,需要生成的OSD位图就已经是放大的了,REGION只负责叠加,所以需要OSD模块自己调整字体大小 ...[/quote]

2. 画框 是跟踪功能,框的位置、大小 会变动;我是创建region时 默认使用了个最大值;画出来的框 就是最大值了;
目前 没有看到设置失败的问题

rainice616

0个粉丝

16

问答

0

专栏

0

资料

rainice616 2018-03-09 14:05:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85088&ptid=39053]leo0925 发表于 2018-3-9 13:36[/url]
2. 画框 是跟踪功能,框的位置、大小 会变动;我是创建region时 默认使用了个最大值;画出来的框 就是最 ...[/quote]

那没看出第2个有啥问题啊

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-03-09 14:17:16
认可0
有问题;我拿数据说话:
宽 高最大值是1920,1080; 需要画框的大小是:320,120; 实际刷新时 框大小是1920 1080 了

rainice616

0个粉丝

16

问答

0

专栏

0

资料

rainice616 2018-03-09 14:45:20
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85095&ptid=39053]leo0925 发表于 2018-3-9 14:17[/url]
有问题;我拿数据说话:
宽 高最大值是1920,1080; 需要画框的大小是:320,120; 实际刷新时 框大小是19 ...[/quote]

按照sample的操作,目前没发现你这个问题

qn1529663950

0个粉丝

6

问答

0

专栏

0

资料

qn1529663950 2019-09-21 22:40:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=85087&ptid=39053]rainice616 发表于 2018-3-9 12:03[/url]
1. 字体放大,需要生成的OSD位图就已经是放大的了,REGION只负责叠加,所以需要OSD模块自己调整字体大小 ...[/quote]

你好,有个问题想请教。这边想实现区域反色,根据文档说的是先通过VPSS做区域亮度统计再通过VGS实现OSD区域反色。但是问题出在更新时间的频率是很高的,难道每次更新画布都要先把时间保存成bmp文件,再加载bmp到BitMap然后更新到画布吗?这样效率是不是很低?有什么办法可以直接通过SDL得到的bmp buff给画布吗?谢谢了

rainice616

0个粉丝

16

问答

0

专栏

0

资料

rainice616 2019-09-23 09:21:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=147900&ptid=39053]qn1529663950 发表于 2019-9-21 22:40[/url]
你好,有个问题想请教。这边想实现区域反色,根据文档说的是先通过VPSS做区域亮度统计再通过VGS实现OSD区 ...[/quote]

BitMap只是要RGB格式的数据,BMP是sample的一样示例,没必要存BMP

qn1554107965

0个粉丝

3

问答

1

专栏

0

资料

qn1554107965 2019-10-11 21:31:15
认可0
我用vgs 的 HI_MPI_VGS_AddOsdTask  执行成功后 osd没有打印上

qn1554107965

0个粉丝

3

问答

1

专栏

0

资料

qn1554107965 2019-10-11 21:32:12
认可0
char str[64]="testsetstes";        
        HI_RUNTIME_MEM_S  pstMemInfo;
        memset(&pstMemInfo,0,sizeof(HI_RUNTIME_MEM_S));
        pstMemInfo.u32Size = 5;
        s32Ret = SAMPLE_AllocMem(&pstMemInfo,HI_FALSE);
        if(0 == s32Ret){
        SAMPLE_PRT("mmz OSD creat OK -u64PirAddr%x \n",pstMemInfo.u64PhyAddr);
        }
       
        memset(pstMemInfo.u64VirAddr,0,pstMemInfo.u32Size);
        memcpy((char *)pstMemInfo.u64VirAddr,str,5);
        SAMPLE_PRT("pstMemInfo.u64VirAddr   %s\n",pstMemInfo.u64VirAddr);
        VGS_ADD_OSD_S pstVgsAddOsd;
        pstVgsAddOsd.stRect.s32X = 100;
        pstVgsAddOsd.stRect.s32Y = 100;
        pstVgsAddOsd.stRect.u32Width = 600;
        pstVgsAddOsd.stRect.u32Height = 600;
        pstVgsAddOsd.u32BgColor = 0xffff;
        pstVgsAddOsd.enPixelFmt = PIXEL_FORMAT_ARGB_1555;
        pstVgsAddOsd.u64PhyAddr = pstMemInfo.u64PhyAddr;
        pstVgsAddOsd.u32Stride = 1920*2;
        pstVgsAddOsd.u32BgAlpha = 32;
        pstVgsAddOsd.u32FgAlpha = 32;
        pstVgsAddOsd.bOsdRevert = HI_TRUE;
        pstVgsAddOsd.stOsdRevert.stSrcRect.s32X = 100;
        pstVgsAddOsd.stOsdRevert.stSrcRect.s32Y = 100;
        pstVgsAddOsd.stOsdRevert.stSrcRect.u32Width = 600;
        pstVgsAddOsd.stOsdRevert.stSrcRect.u32Height = 600;
        pstVgsAddOsd.stOsdRevert.enColorRevertMode = VGS_COLOR_REVERT_NONE;
        pstVgsAddOsd.u16ColorLUT[0] = 32;
        pstVgsAddOsd.u16ColorLUT[1] = 32;
        SAMPLE_PRT("pstVgsAddOsd.u64PhyAddr   %x \n",pstVgsAddOsd.u64PhyAddr);

是不是参数设置有问题  麻烦大佬看下

h-1_bo

0个粉丝

2

问答

0

专栏

0

资料

h-1_bo 2019-12-16 10:59:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=148500&ptid=39053]qn1554107965 发表于 2019-10-11 21:32[/url]
char str[64]="testsetstes";        
        HI_RUNTIME_MEM_S  pstMemInfo;
        memset(&pstMemInfo,0,sizeof(H ...[/quote]

请问解决了吗?我这边也是跟你类似不出图
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区