142
- 收藏
- 点赞
- 分享
- 举报
Hi3519DV500 RGN在VPSS Grp0的CH0和CH1上创建Mosaic失败,ss_mpi_rgn_attach_to_chn返回报错0xa0038007(参数超出合法范围)
求助:
pipeline我是这样配置的
// vi pipe0 chn0 -> vpss grp0 chn0 for main stream
// vi pipe0 chn0 -> vpss grp0 chn1 for sub stream
// vi pipe0 chn0 -> vpss grp0 chn2 for jpeg
想在主子码流上都呈现mosaic效果,使用rgn,因为mosaic只支持vpss,所以在vpss grp0 chn0/ch1/ch2上都叠加马赛克
这里debug发现当主码流ss_mpi_rgn_create,ss_mpi_rgn_attach_to_chn,ss_mpi_rgn_set_chn_display_attr都成功后,
再调用子码流的接口时ss_mpi_rgn_create成功,ss_mpi_rgn_attach_to_chn返回0xa0038007(参数超出合法范围)继而失败
这里主子码流的参数,主要是改了rgn->stChn.chn_id,由0->1。
请问如何解决这个报错的问题?
尝试过:
只在子码流上显示,是可以的
只在主码流上显示,是可以的
尝试过:
使用ss_mpi_rgn_attach_to_dev和ss_mpi_rgn_set_dev_display_attr接口,但是,主子码流的马赛克都共用了(比如主码流马赛克区域(0,0,100,100),子码流也是(0,0,100,100)没有进行缩放)
代码如下:
int ret;
int maxWidth, maxHeight;
int px, py, pw, ph;
ot_rgn_handle rgnHd;
mpp_rgn_t *rgn;
gsf_vmask_t *vmask = (gsf_vmask_t *) param;
// rgn mosaic do not support venc, but support vpss
// vi pipe0 chn0 -> vpss grp0 chn0 for main stream
// vi pipe0 chn0 -> vpss grp0 chn1 for sub stream
// vi pipe0 chn0 -> vpss grp0 chn2 for jpeg
for (int c = 0; c < VPSS_CHN_NUM; c++)
{
rgnHd = RGN_VMASK_START_INDEX + c * MAX_IPC_VMASK_NUM + vmask->idx;
rgn = &s_context.vmask[c][vmask->idx];
rgn->hd = rgnHd;
maxWidth = s_context.vpss_cfg.chn_attr[c].width;
maxHeight = s_context.vpss_cfg.chn_attr[c].height;
rgn->stRegion.type = OT_RGN_MOSAIC;
ret = ss_mpi_rgn_create(rgn->hd, &rgn->stRegion);
if (ret != TD_SUCCESS)
{
sample_print("ss_mpi_rgn_create(%d) failed %#x\n", rgn->hd, ret);
return ret;
}
rgn->stChn.mod_id = OT_ID_VPSS;
rgn->stChn.dev_id = 0;
rgn->stChn.chn_id = c;
pw = vmask->rect[2] * maxWidth;
ph = vmask->rect[3] * maxHeight;
pw = pw >= maxWidth ? maxWidth : pw;
ph = ph >= maxHeight ? maxHeight : ph;
pw = ALIGN_UP(pw, 4);
ph = ALIGN_UP(ph, 2);
px = vmask->rect[0] * maxWidth;
py = vmask->rect[1] * maxHeight;
px = px + pw >= maxWidth ? maxWidth - pw - 5 : px;
py = py + ph >= maxHeight ? maxHeight - ph - 5 : py;
px = px < 0 ? 5 : px;
py = py < 0 ? 5 : py;
px = ALIGN_UP(px, 4);
py = ALIGN_UP(py, 2);
rgn->stChnAttr.is_show = vmask->enable;
rgn->stChnAttr.type = OT_RGN_MOSAIC;
rgn->stChnAttr.attr.mosaic_chn.rect.x = px;
rgn->stChnAttr.attr.mosaic_chn.rect.y = py;
rgn->stChnAttr.attr.mosaic_chn.rect.width = pw;
rgn->stChnAttr.attr.mosaic_chn.rect.height = ph;
rgn->stChnAttr.attr.mosaic_chn.blk_size = OT_MOSAIC_BLK_SIZE_64;
rgn->stChnAttr.attr.mosaic_chn.layer = 0;
// -1610383348 = a0038007 = 参数超出合法范围
ret = ss_mpi_rgn_attach_to_chn(rgn->hd, &rgn->stChn, &rgn->stChnAttr);
if (ret != TD_SUCCESS)
{
sample_print("ss_mpi_rgn_attach_to_chn(%d) failed with %#x\n", rgn->hd, ret);
return ret;
}
ret = ss_mpi_rgn_set_chn_display_attr(rgn->hd, &rgn->stChn, &rgn->stChnAttr);
if (ret != TD_SUCCESS)
{
sample_print("ss_mpi_rgn_set_chn_display_attr failed with %#x\n", ret);
return ret;
}
}
return ret;
我来回答
回答8个
时间排序
认可量排序
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2024-12-30 11:24:22
-
2025-01-06 18:27:15
-
2019-03-01 16:57:49
-
2020-05-18 17:56:37
-
2022-12-04 11:42:07
-
2016-01-13 15:20:50
-
2020-07-23 17:45:58
-
2014-10-16 17:05:38
-
2018-10-22 10:31:09
-
2020-07-22 17:24:15
-
2020-08-13 13:01:06
-
2016-08-01 09:32:42
-
2016-01-27 15:42:38
-
2019-01-12 09:21:11
-
2019-08-30 09:57:03
-
2019-03-13 15:27:13
-
2017-03-10 11:44:32
-
2019-03-13 19:01:25
-
2019-01-12 11:27:38
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5想要咨询一下Sil9135+Sil9134形成的一个显示链路.
-
5Hi3516移植USB摄像头的SDK,如何修改Makefile?
-
5ss928从SD卡启动
-
50HI3516CV610调试raw+ahd,均使用2lane mipi
-
5HI3516DV500接收不到FPGA传过来的BT1120数据,时钟和配置都没问题VI就是检测不到数据~
-
5请教一下,Hi3516DV500 ebaina的SDK有没有实现RTSP推流?
-
5SS928的emmc有32GB,bootargs设置使用16GB,但是为啥能用的只有rootfs的大小
-
33SS928怎样烧写ubuntu系统
-
10ToolPlatform下载rootfs提示网络失败
-
10谁有GK7205V500的SDK
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认