yuanjc

yuanjc

0个粉丝

3

问答

0

专栏

0

资料

yuanjc  发布于  2017-05-16 09:16:48
采纳率 0%
3个问答
8067

hi3516A VGS模块启动异常

 
我调用VGS划线模块测试。
代码如下:
        HI_S32        s32Ret;
        VGS_HANDLE vgsHandle;
        VGS_TASK_ATTR_S        vgsTaskAttr;
        VGS_DRAW_LINE_S        vgsDrawLine[8];
        HI_U32        u32ArraySize;
        HI_U32        u32BackHeight;
                s32Ret = HI_MPI_VGS_BeginJob(&vgsHandle);
                printf("HI_MPI_VGS_BeginJob ok\n");
                if (s32Ret == HI_SUCCESS )
                {
                        memset(&vgsTaskAttr,0,sizeof(VGS_TASK_ATTR_S));
                        memcpy(&vgsTaskAttr.stImgIn,&pAlgSrc->frameIn.frame,sizeof(VIDEO_FRAME_INFO_S));
                        memcpy(&vgsTaskAttr.stImgOut,&pMergeDst->frameIn.frame,sizeof(VIDEO_FRAME_INFO_S));
                        vgsTaskAttr.stImgOut.stVFrame.u32Height = vgsTaskAttr.stImgIn.stVFrame.u32Height;
                        printf(" ImgIn:Addr 0x%x 0x%x 0x%x phy 0x%x 0x%x 0x%x poolId %d\n",vgsTaskAttr.stImgIn.stVFrame.pVirAddr[0],\
                                vgsTaskAttr.stImgIn.stVFrame.pVirAddr[1],vgsTaskAttr.stImgIn.stVFrame.pVirAddr[2],\
                                vgsTaskAttr.stImgIn.stVFrame.u32PhyAddr[0],vgsTaskAttr.stImgIn.stVFrame.u32PhyAddr[1],\
                                vgsTaskAttr.stImgIn.stVFrame.u32PhyAddr[2],vgsTaskAttr.stImgIn.u32PoolId);
                        printf(" ImgIn:W %d H %d Stride %d %d %d Field %d Compress %d Pixel %d Video %d \n",vgsTaskAttr.stImgIn.stVFrame.u32Width,\
                                vgsTaskAttr.stImgIn.stVFrame.u32Height,vgsTaskAttr.stImgIn.stVFrame.u32Stride[0],\
                                vgsTaskAttr.stImgIn.stVFrame.u32Stride[1],vgsTaskAttr.stImgIn.stVFrame.u32Stride[2],\
                                vgsTaskAttr.stImgIn.stVFrame.u32Field,vgsTaskAttr.stImgIn.stVFrame.enCompressMode,\
                                vgsTaskAttr.stImgIn.stVFrame.enPixelFormat,vgsTaskAttr.stImgIn.stVFrame.enVideoFormat);                       
                        printf("ImgOut:Addr 0x%x 0x%x 0x%x phy 0x%x 0x%x 0x%x poolId %d\n",vgsTaskAttr.stImgOut.stVFrame.pVirAddr[0],\
                                vgsTaskAttr.stImgOut.stVFrame.pVirAddr[1],vgsTaskAttr.stImgOut.stVFrame.pVirAddr[2],\
                                vgsTaskAttr.stImgOut.stVFrame.u32PhyAddr[0],vgsTaskAttr.stImgOut.stVFrame.u32PhyAddr[1],\
                                vgsTaskAttr.stImgOut.stVFrame.u32PhyAddr[2],vgsTaskAttr.stImgOut.u32PoolId);                       
                        printf("ImgOut:W %d H %d Stride %d %d %d Field %d Compress %d Pixel %d Video %d \n",vgsTaskAttr.stImgOut.stVFrame.u32Width,\
                                vgsTaskAttr.stImgOut.stVFrame.u32Height,vgsTaskAttr.stImgOut.stVFrame.u32Stride[0],\
                                vgsTaskAttr.stImgOut.stVFrame.u32Stride[1],vgsTaskAttr.stImgOut.stVFrame.u32Stride[2],\
                                vgsTaskAttr.stImgOut.stVFrame.u32Field,vgsTaskAttr.stImgOut.stVFrame.enCompressMode,\
                                vgsTaskAttr.stImgOut.stVFrame.enPixelFormat,vgsTaskAttr.stImgOut.stVFrame.enVideoFormat);                       
                       
                        vgsDrawLine[0].u32Thick = 4;
                        vgsDrawLine[0].u32Color = 0x0000CD;
                        vgsDrawLine[0].stStartPoint.s32X = pAlgSrc->result.plateDetectArea.x0&0xFFF0;
                        vgsDrawLine[0].stStartPoint.s32Y = pAlgSrc->result.plateDetectArea.y0&0xFFF0;
                        vgsDrawLine[0].stEndPoint.s32X = pAlgSrc->result.plateDetectArea.x1&0xFFF0;
                        vgsDrawLine[0].stEndPoint.s32Y = pAlgSrc->result.plateDetectArea.y0&0xFFF0;

                        vgsDrawLine[1].u32Thick = 4;
                        vgsDrawLine[1].u32Color = 0x0000CD;
                        vgsDrawLine[1].stStartPoint.s32X = pAlgSrc->result.plateDetectArea.x1&0xFFF0;
                        vgsDrawLine[1].stStartPoint.s32Y = pAlgSrc->result.plateDetectArea.y0&0xFFF0;
                        vgsDrawLine[1].stEndPoint.s32X = pAlgSrc->result.plateDetectArea.x1&0xFFF0;
                        vgsDrawLine[1].stEndPoint.s32Y = pAlgSrc->result.plateDetectArea.y1&0xFFF0;
                        u32ArraySize = 1;
                        vgsDrawLine[2].u32Thick = 4;
                        vgsDrawLine[2].u32Color = 0x0000CD;
                        vgsDrawLine[2].stStartPoint.s32X = pAlgSrc->result.plateDetectArea.x1&0xFFF0;
                        vgsDrawLine[2].stStartPoint.s32Y = pAlgSrc->result.plateDetectArea.y1&0xFFF0;
                        vgsDrawLine[2].stEndPoint.s32X = pAlgSrc->result.plateDetectArea.x0&0xFFF0;
                        vgsDrawLine[2].stEndPoint.s32Y = pAlgSrc->result.plateDetectArea.y1&0xFFF0;

                        vgsDrawLine[3].u32Thick = 4;
                        vgsDrawLine[3].u32Color = 0x0000CD;
                        vgsDrawLine[3].stStartPoint.s32X = pAlgSrc->result.plateDetectArea.x0&0xFFF0;
                        vgsDrawLine[3].stStartPoint.s32Y = pAlgSrc->result.plateDetectArea.y1&0xFFF0;
                        vgsDrawLine[3].stEndPoint.s32X = pAlgSrc->result.plateDetectArea.x0&0xFFF0;
                        vgsDrawLine[3].stEndPoint.s32Y = pAlgSrc->result.plateDetectArea.y0&0xFFF0;                       

                        if (0)//pAlgSrc->result.u32PlateNum > 0 )
                        {

                                vgsDrawLine[4].u32Thick = 4;
                                vgsDrawLine[4].u32Color = 0xFF0000;
                                vgsDrawLine[4].stStartPoint.s32X =  pAlgSrc->result.plate[0].x0&0xFFFE;
                                vgsDrawLine[4].stStartPoint.s32Y = pAlgSrc->result.plate[0].y0&0xFFFE;
                                vgsDrawLine[4].stEndPoint.s32X = pAlgSrc->result.plate[0].x1&0xFFFE;
                                vgsDrawLine[4].stEndPoint.s32Y = pAlgSrc->result.plate[0].y0&0xFFFE;

                                vgsDrawLine[5].u32Thick = 4;
                                vgsDrawLine[5].u32Color = 0xFF0000;
                                vgsDrawLine[5].stStartPoint.s32X = pAlgSrc->result.plate[0].x1&0xFFFE;
                                vgsDrawLine[5].stStartPoint.s32Y = pAlgSrc->result.plate[0].y0&0xFFFE;
                                vgsDrawLine[5].stEndPoint.s32X = pAlgSrc->result.plate[0].x1&0xFFFE;
                                vgsDrawLine[5].stEndPoint.s32Y = pAlgSrc->result.plate[0].y1&0xFFFE;

                                vgsDrawLine[6].u32Thick = 4;
                                vgsDrawLine[6].u32Color = 0xFF0000;
                                vgsDrawLine[6].stStartPoint.s32X = pAlgSrc->result.plate[0].x1&0xFFFE;
                                vgsDrawLine[6].stStartPoint.s32Y = pAlgSrc->result.plate[0].y1&0xFFFE;
                                vgsDrawLine[6].stEndPoint.s32X = pAlgSrc->result.plate[0].x0&0xFFFE;
                                vgsDrawLine[6].stEndPoint.s32Y = pAlgSrc->result.plate[0].y1&0xFFFE;

                                vgsDrawLine[7].u32Thick = 4;
                                vgsDrawLine[7].u32Color = 0xFF0000;
                                vgsDrawLine[7].stStartPoint.s32X = pAlgSrc->result.plate[0].x0&0xFFFE;
                                vgsDrawLine[7].stStartPoint.s32Y = pAlgSrc->result.plate[0].y1&0xFFFE;
                                vgsDrawLine[7].stEndPoint.s32X = pAlgSrc->result.plate[0].x0&0xFFFE;
                                vgsDrawLine[7].stEndPoint.s32Y = pAlgSrc->result.plate[0].y0&0xFFFE;       
                                u32ArraySize = 8 ;
                        }
                        s32Ret = HI_MPI_VGS_AddDrawLineTaskArray(vgsHandle,&vgsTaskAttr,vgsDrawLine,u32ArraySize);
                        if (s32Ret == HI_SUCCESS )
                        {
                                printf("HI_MPI_VGS_AddDrawLineTaskArray ok\n");
                                s32Ret = HI_MPI_VGS_EndJob(vgsHandle);
                                if(s32Ret != HI_SUCCESS)
                                {
                                        printf("HI_MPI_VGS_EndJob failed ret = 0x%x\n",s32Ret);
                                        HI_MPI_VGS_CancelJob(vgsHandle);
                               
                                }
                                else
                                {
                                        printf("HI_MPI_VGS_AddDrawLineTaskArray ok\n");       
                                }
                        }
                        else
                        {
                                printf("HI_MPI_VGS_AddDrawLineTaskArray failed ret = 0x%x\n",s32Ret);
                        }
                }
                else
                {
                        printf("HI_MPI_VGS_BeginJob failed ret = 0x%x\n",s32Ret);
                }               

输出如下:

ImgIn:Addr 0xaae1e000 0xab018400 0xab018400 phy 0x8a200000 0x8a3fa400 0x8a3fa400 poolId 0
ImgIn:W 1920 H 1080 Stride 1920 1920 1920 Field 4 Compress 0 Pixel 23 Video 0
ImgOut:Addr 0xaa401740 0xaa655b40 0xaa655b40 phy 0x8bda6740 0x8bffab40 0x8bffab40 poolId 1
ImgOut:W 1920 H 1080 Stride 1920 1920 1920 Field 4 Compress 0 Pixel 23 Video 0
HI_MPI_VGS_AddDrawLineTaskArray failed ret = 0xa02d8003

不知道是输入参数不对还是某些模式不支持,向高人请教
我来回答
回答3个
时间排序
认可量排序

yuanjc

0个粉丝

3

问答

0

专栏

0

资料

yuanjc 2017-05-16 09:28:58
认可0
划线的坐标 Line (624 288) (1264 288)--(1264 288) (1264 768)--(1264 768) (624 768)--(624 768) (624 288) 四根线

ck2952

0个粉丝

14

问答

0

专栏

0

资料

ck2952 2017-09-04 15:25:30
认可0
您好,这个画线功能相关API函数使用例程在哪能找到呢,我也正在学习这个:)

ever_

0个粉丝

0

问答

0

专栏

0

资料

ever_ 2020-07-30 11:10:45
认可0

做画线任务时,输入输出图像需使用同一块buffer
memcpy(&vgsTaskAttr.stImgIn,&pAlgSrc->frameIn.frame,sizeof(VIDEO_FRAME_INFO_S));
memcpy(&vgsTaskAttr.stImgOut,&pMergeDst->frameIn.frame,sizeof(VIDEO_FRAME_INFO_S));
楼主stImgIn和stImgOut拷贝了不同的buffer

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

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区