caiji伦

caiji伦

0个粉丝

3

问答

0

专栏

0

资料

caiji伦  发布于  2025-10-14 16:55:34
采纳率 0%
3个问答
152

[hisi3559板子问题] 为什么调用HI_MPI_RGN_SetDisplayAttr会造成黑屏

   

void Hi3559VideoPipeline::UpdateCovers(const std::vector& boxes, HIU32 argb) {
printf(“UpdateCovers=======\n”);
if (!covers_inited) {
printf(“covers not inite\n”);
if (!InitCovers()) return;
}
const int N = coversmax;
const int k = std::min(boxes.size(), N);
printf(“N : %d , k: %d\n”, N, k);

    MPP_CHN_S mpp{};
    mpp.enModId = HI_ID_VO;
    mpp.s32DevId = 0;
    mpp.s32ChnId = 0;


    RGN_CHN_ATTR_S chn_attr{};
    chn_attr.bShow = HI_TRUE;
    chn_attr.enType = COVEREX_RGN;
    chn_attr.unChnAttr.stCoverExChn.u32Layer = 0;
    chn_attr.unChnAttr.stCoverExChn.enCoverType = AREA_QUAD_RANGLE;
    cs_detect_bbox_t r = boxes[0];
    evenize_and_clip_(3840, 2160, r);
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.stPoint[0] = {r.x, r.y};
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.stPoint[1] = {r.x + r.w - 2, r.y};
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.stPoint[2] = {r.x + r.w - 2, r.y + r.h - 2};
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.stPoint[3] = {r.x, r.y + r.h - 2}; 
    chn_attr.unChnAttr.stCoverExChn.u32Color = argb;
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.bSolid = HI_FALSE;
    chn_attr.unChnAttr.stCoverExChn.stQuadRangle.u32Thick = 4;

    HI_S32 ret = HI_MPI_RGN_SetDisplayAttr(0, &mpp, &chn_attr);
    if (ret != HI_SUCCESS) printf("[COVER] fail[%d] ret=%#x\n", 0, ret);
    else{
        printf("[COVER] success[%d] ret=%#x\n", 0, ret);
    }

void Hi3559VideoPipeline::HideAllCovers() {
//std::lockguard lk(cover_mtx);
if (!coversinited) return;
for (sizet i = 0; i < cover_handles.size(); ++i) {
RGNCHN_ATTR_S c{};
if (HI_MPI_RGN_GetDisplayAttr(cover_handles[i], &covermpp, &c) != HISUCCESS) continue;
if (c.bShow == HI_FALSE) continue;
c.bShow = HI_FALSE;
HI_MPI_RGN_SetDisplayAttr(cover_handles[i], &covermpp, &c);
}
}调用方式为取视频帧做检测,有框就调用UpdateCovers,没就调用HideAllCovers

我来回答
回答10个
时间排序
认可量排序

UncleRoderick

59个粉丝

16

问答

4

专栏

20

资料

UncleRoderick 2025-10-14 17:20:37
认可1

PROC信息发下

caiji伦
caiji伦   回复   UncleRoderick  2025-10-15 09:32:21
1

抱歉大佬,我刚接触这个,不太知道proc是啥,这个怎么看呀

caiji伦
caiji伦   回复   UncleRoderick  2025-10-15 09:50:50
1

看哪一个模块状态呢

UncleRoderick
UncleRoderick   回复   caiji伦  2025-10-15 10:45:20
1

先看rgn的

caiji伦
caiji伦   回复   UncleRoderick  2025-10-15 13:58:29
1

我发现这个bshow 从true -> false 或者从false -> true都会导致短暂黑屏。不知道该怎么解决

caiji伦
caiji伦   回复   UncleRoderick  2025-10-15 14:03:21
1

[RGN] version: [Hi3559AV100_MPP_V2.0.4.0 B030 Release], Build Time[Feb 4 2021, 22:22:52]

——-REGION STATUS OF COVEREX———————————————————————————————
hdl type used
0 2 N

——-REGION CHN STATUS OF RECT COVEREX—————————————————————————-
Hdl Type Mod Dev Chn bShow X Y W H Field Color Layer

——-REGION CHN STATUS OF QUAD_RANGLE COVEREX——————————————————————
Hdl Type Mod Dev Chn bShow X0 Y0 X1 Y1 X2 Y2 X3 Y3 Solid Thick Shape Field Color Layer
0 2 VO 0 0 N 866 228 2894 228 2894 1330 866 1330 N 4 1 frame ff0000 0 这是我/proc/rgn,看着也没什么没问题呀

caiji伦

0个粉丝

3

问答

0

专栏

0

资料

caiji伦 2025-10-15 10:31:02
认可1

我发现设置bshow 为true 就会导致黑屏,无论是HI_MPI_RGN_SetDisplayAttr 还是 HI_MPI_RGN_AttachToChn,这个问题如何解决呢

UncleRoderick
UncleRoderick   回复   caiji伦  2025-10-15 10:43:25
0

有可能你把整个RGN设置为全屏了,然后背景色是黑色,又不开启背景透明,然后显示RGN的时候就直接黑屏了

Sefur

0个粉丝

1

问答

0

专栏

0

资料

Sefur 2025-10-15 10:43:53
认可1

我记得COVER刷新是画面对应坐标整块覆盖,你如果只是画框可以用GDC模块,有专门的接口,效率也会高很多

Sefur

0个粉丝

1

问答

0

专栏

0

资料

Sefur 2025-10-15 10:56:06
认可1

引用 @Sefur “我记得COVER刷新是画面对应坐标整块覆”

噢,说错了,专门画框的用VGS,详见mpp开发文档

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区