qn1550385020

qn1550385020

0个粉丝

3

问答

0

专栏

0

资料

qn1550385020  发布于  2019-02-17 14:39:02
采纳率 0%
3个问答
3802

【已解决】HI_MPI_IVE_CSC报错

 
本帖最后由 qn1550385020 于 2019-2-20 10:11 编辑

最近在使用这个 HI_MPI_IVE_CSC 将YUV的图像转成BGR 的时候发现报错了,提示 A01D8003 的错误,说是参数超出合法范围,请问有遇到过么?
用GDB调试都看过输入参数了,没什么问题,哪位有经验的大佬帮忙指导下?
我来回答
回答9个
时间排序
认可量排序

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2019-02-18 10:17:22
认可0
你来源影像的size宽,高大小是多少?
宽度size必须是16的倍数

qn1550385020

0个粉丝

3

问答

0

专栏

0

资料

qn1550385020 2019-02-18 10:53:19
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=123959&ptid=57845]qn1534489079 发表于 2019-2-18 10:17[/url]
你来源影像的size宽,高大小是多少?
宽度size必须是16的倍数[/quote]

(gdb) p yuv_image
$1 = {au64PhyAddr = {3349626880, 3351700480, 548407414784}, au64VirAddr = {548484341760, 548483302400, 548495328264}, au32Stride = {1920, 1920, 3034481680}, u32Width = 1920, u32Height = 1080, enType = IVE_IMAGE_TYPE_YUV420SP}

qn1534489079

0个粉丝

12

问答

0

专栏

2

资料

qn1534489079 2019-02-18 11:28:27
认可0
开两个终端视窗

一个做
yuv_image

一个做
cat /dev/logmpp
看看logmpp有什么讯息

qn1550385020

0个粉丝

3

问答

0

专栏

0

资料

qn1550385020 2019-02-20 10:09:43
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=123967&ptid=57845]qn1534489079 发表于 2019-2-18 11:28[/url]
开两个终端视窗

一个做
[/quote]

非常感谢你的帮助,问题已经解决了。
颜色空间在做转换的时候,在 1920 * 1080的这个边缘需要做分割,判断条件有问题,导致没有直接调用HI_MPI_IVE_CSC接口,而走到了其他的逻辑里面去了。

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-11 14:00:34
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=124109&ptid=57845]qn1550385020 发表于 2019-2-20 10:09[/url]
非常感谢你的帮助,问题已经解决了。
颜色空间在做转换的时候,在 1920 * 1080的这个边缘需要做分割,判 ...[/quote]

前辈,您好,我也是在做颜色空间转换,我的相关代码如下:
s32Ret = HI_MPI_VPSS_GetChnFrame(VpssGrp, VpssChn, &stVFrame, s32MilliSec);
       
                stSrcData.u64PhyAddr = stVFrame.stVFrame.u64PhyAddr[0];
                stSrcData.u32Width   = stVFrame.stVFrame.u32Width;
                stSrcData.u32Height  = stVFrame.stVFrame.u32Height;
                stSrcData.u32Stride  = stVFrame.stVFrame.u32Stride[0];

                //fill dst
                //stDstData.u64VirAddr = pstDst->au64VirAddr[0];
                stDstData.u64PhyAddr = stVFrame.stVFrame.u64PhyAddr[0];
                stDstData.u32Width   = stVFrame.stVFrame.u32Width;
                stDstData.u32Height  = stVFrame.stVFrame.u32Height;
                stDstData.u32Stride  = stVFrame.stVFrame.u32Stride[0];
               
                s32Ret = HI_MPI_SYS_MmzAlloc_Cached(&stSrcData.u64PhyAddr, &stSrcData.u64VirAddr, "User", HI_NULL, stSrcData.u32Height * stSrcData.u32Stride);
               
                if(HI_SUCCESS != s32Ret)
                {
                        printf("HI_MPI_SYS_MmzAlloc_Cached Failed!");
                        return s32Ret;
                }
                memset(stSrcData.u64VirAddr, 1, stSrcData.u32Height * stSrcData.u32Stride);
                s32Ret = HI_MPI_SYS_MmzAlloc_Cached(&stDstData.u64PhyAddr, &stDstData.u64VirAddr, "User", HI_NULL, stDstData.u32Height * stDstData.u32Stride);
                printf("\n ------------s32Ret=%d ---------------\n", s32Ret);
                if(HI_SUCCESS != s32Ret)
                {       
                        HI_MPI_SYS_MmzFree(stSrcData.u64PhyAddr, stSrcData.u64VirAddr);
                        printf("HI_MPI_SYS_MmzAlloc_Cached Failed!");
                        return s32Ret;
                }
                printf("\n ----------------HELLO--------------\n");
                memset(stDstData.u64VirAddr, 0, stDstData.u32Height * stDstData.u32Stride);
                s32Ret = HI_MPI_SYS_MmzFlushCache(0, HI_NULL, 0);
                printf("\n ------------s32Ret=%d ---------------\n", s32Ret);  //空指针错误
                if(HI_SUCCESS != s32Ret)
                {       
                        HI_MPI_SYS_MmzFree(stSrcData.u64PhyAddr, stSrcData.u64VirAddr);
                        HI_MPI_SYS_MmzFree(stDstData.u64PhyAddr, stDstData.u64VirAddr);
                        return s32Ret;
                }
               
                s32Ret = HI_MPI_IVE_CSC(&hIveHandle,&stSrcData,&stDstData,&stCscCtrl,bInstant);
                printf("\n ------------s32Ret=%d ---------------\n", s32Ret);
                if(HI_SUCCESS != s32Ret)
                {       
                        HI_MPI_SYS_MmzFree(stSrcData.u64PhyAddr, stSrcData.u64VirAddr);
                        HI_MPI_SYS_MmzFree(stDstData.u64PhyAddr, stDstData.u64VirAddr);
                        return s32Ret;
                }
               
                if (HI_TRUE == bInstant)
                {
                    s32Ret = HI_MPI_IVE_Query(hIveHandle,&bFinish,bBlock);
                    while(HI_ERR_IVE_QUERY_TIMEOUT == s32Ret)
                    {
                        usleep(100);
                        s32Ret = HI_MPI_IVE_Query(hIveHandle,&bFinish,bBlock);
                    }
                  
                }
               
                HI_MPI_SYS_MmzFree(stSrcData.u64PhyAddr, stSrcData.u64VirAddr);
                HI_MPI_SYS_MmzFree(stDstData.u64PhyAddr, stDstData.u64VirAddr);

出现了空指针错误,您知道这是什么原因吗?十分感谢!

qn1550385020

0个粉丝

3

问答

0

专栏

0

资料

qn1550385020 2019-07-22 19:22:06
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145276&ptid=57845]qn1562136485 发表于 2019-7-11 14:00[/url]
前辈,您好,我也是在做颜色空间转换,我的相关代码如下:
s32Ret = HI_MPI_VPSS_GetChnFrame(VpssGrp,  ...[/quote]

错误信息贴下看看

qn1562136485

0个粉丝

18

问答

0

专栏

0

资料

qn1562136485 2019-07-22 20:49:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145674&ptid=57845]qn1550385020 发表于 2019-7-22 19:22[/url]
错误信息贴下看看[/quote]

感谢回复,问题已经解决!

qn1568022704

0个粉丝

0

问答

0

专栏

0

资料

qn1568022704 2019-09-11 10:55:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145675&ptid=57845]qn1562136485 发表于 2019-7-22 20:49[/url]
感谢回复,问题已经解决![/quote]

请问怎么解决的,能不能麻烦说明一下,谢谢!

qn1578374609

0个粉丝

0

问答

0

专栏

0

资料

qn1578374609 2020-01-09 17:20:04
认可0
跟楼主同样的问题,A01D8003 的错误,希望有前辈能指点一二
    IVE_HANDLE hIveHandle;
    IVE_SRC_IMAGE_S stSrc;
        IVE_DST_IMAGE_S stDst;
    IVE_CSC_CTRL_S stCscCtrl;
    stCscCtrl.enMode = IVE_CSC_MODE_VIDEO_BT601_YUV2RGB;
    HI_BOOL bInstant = HI_TRUE;
    unsigned int * pImage = NULL;
    stSrc.enType = IVE_IMAGE_TYPE_YUV420SP;

    stSrc.u16Width = stvFrame->u32Width;
    stSrc.u16Height = stvFrame->u32Height;

    stSrc.u32PhyAddr[0] = stvFrame->u32PhyAddr[0];
    // stSrc.u32PhyAddr[1] = stvFrame->u32PhyAddr[1];
    // stSrc.u32PhyAddr[2] = stvFrame->u32PhyAddr[2];
    stSrc.pu8VirAddr[0] =(HI_U8*) stvFrame->pVirAddr[0];
    // stSrc.pu8VirAddr[1] =(HI_U8*) stvFrame->pVirAddr[1];
    // stSrc.pu8VirAddr[2] =(HI_U8*) stvFrame->pVirAddr[2];
    stSrc.u16Stride[0] = (HI_U16)stvFrame->u32Stride[0];

    stDst.enType = IVE_IMAGE_TYPE_U8C3_PACKAGE;
    // stDst.enType = IVE_IMAGE_TYPE_U8C1;
    stDst.u16Width = stSrc.u16Width;
    stDst.u16Height = stSrc.u16Height;
    stDst.u16Stride[0] = (HI_U16)stvFrame->u32Stride[0];
    // stDst.u16Stride[1] = stvFrame->u32Stride[1];
    // stDst.u16Stride[2] = stvFrame->u32Stride[2];
    // stDst.u16Stride[0] = (((stvFrame->u32Width+15)>>4)<<4);
    // stDst.u16Stride[0] = stSrc.u16Stride[0];
    // stDst.u16Stride[1] = stvFrame->u32Stride[1]*3;
    printf("u16stride[0]:%d\n",stvFrame->u32Stride[0]);
    HI_U32 u32Size = stDst.u16Width * stDst.u16Height;

    int ret = HI_MPI_SYS_MmzAlloc_Cached(&stDst.u32PhyAddr[0],(HI_VOID**)&stDst.pu8VirAddr[0],"User", HI_NULL, stDst.u16Width*stDst.u16Stride[0]*3);

    if(HI_SUCCESS != ret)
    {
        HI_MPI_SYS_MmzFree(stSrc.u32PhyAddr[0],(HI_VOID**)stSrc.pu8VirAddr[0]);
        printf("HI_MPI_SYS_MmzAlloc_Cached Failed!");
        return NULL;
    }

    memset((HI_VOID**)stDst.pu8VirAddr[0],0,stDst.u16Height*stDst.u16Stride[0]);
    ret = HI_MPI_SYS_MmzFlushCache(stDst.u32PhyAddr[0],(HI_VOID**)stDst.pu8VirAddr[0],stDst.u16Height*stDst.u16Stride[0]);
    if(HI_SUCCESS !=ret)
    {
        HI_MPI_SYS_MmzFree(stDst.u32PhyAddr[0],(HI_VOID**)stDst.pu8VirAddr[0]);
        printf("HI_MPI_SYS_MmzFlushCache Failed!");
        return NULL;
    }
    ret = HI_MPI_IVE_CSC(&hIveHandle,&stSrc,&stDst,&stCscCtrl,bInstant);
    if(HI_SUCCESS !=ret)
    {
        HI_MPI_SYS_MmzFree(stDst.u32PhyAddr[0],(HI_VOID**)stDst.pu8VirAddr[0]);
        printf("csc failed!%0x\n",ret);
        return NULL;
    }
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区