liqinghan

liqinghan

0个粉丝

16

问答

0

专栏

0

资料

liqinghan  发布于  2020-10-19 15:06:56
采纳率 0%
16个问答
2339

海思DMA内存拷贝出现闪烁,拷贝会多出一部分数据

 
        srcFrame的分辨率小于dstFrame的分辨率

        IVE_HANDLE hIveHandle;       
        IVE_SRC_DATA_S stSrcData;       
        IVE_DST_DATA_S stDstData;       
        HI_S32 s32Ret;       
        IVE_DMA_CTRL_S stCtrl = {IVE_DMA_MODE_DIRECT_COPY,0};       
        HI_BOOL bInstant = HI_TRUE;
        HI_BOOL bBlock = HI_TRUE;       
        HI_BOOL bFinish = HI_FALSE;
   
        //////////////////////////////////fill Y data////////////////////////////////
        stSrcData.u32PhyAddr = (srcFrame->stVFrame.u32PhyAddr[0]);       
        stSrcData.pu8VirAddr = (HI_U8*)(srcFrame->stVFrame.pVirAddr[0]);       
        stSrcData.u16Width         = (HI_U16)srcFrame->stVFrame.u32Width;       
        stSrcData.u16Height  = (HI_U16)srcFrame->stVFrame.u32Height;
        stSrcData.u16Stride  = (HI_U16)srcFrame->stVFrame.u32Stride[0];

        stDstData.u16Stride  = 1920;
        stDstData.pu8VirAddr = (dstFrame->stVFrame.pVirAddr[0])         + stDstData.u16Stride * y_start + x_start;
        stDstData.u32PhyAddr = (dstFrame->stVFrame.u32PhyAddr[0]) + stDstData.u16Stride * y_start + x_start;
        stDstData.u16Width          = (HI_U16)srcFrame->stVFrame.u32Width;
        stDstData.u16Height  = (HI_U16)srcFrame->stVFrame.u32Height;
       
        printf("stSrcData.u16Height :%d ,stDstData.u16Height:%d \n",stSrcData.u16Height ,stDstData.u16Height);
        s32Ret = HI_MPI_IVE_DMA(&hIveHandle,&stSrcData,&stDstData,&stCtrl,bInstant);
        if (HI_SUCCESS == s32Ret && 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);       
        }
#if 1       
          //////////////////////fill UV data /////////////////////////////////////////////       
        stSrcData.u32PhyAddr = (srcFrame->stVFrame.u32PhyAddr[1]);
        stSrcData.pu8VirAddr = (HI_U8*)(srcFrame->stVFrame.pVirAddr[1]);       
        stSrcData.u16Width         = (HI_U16)srcFrame->stVFrame.u32Width;       
        stSrcData.u16Height  = (HI_U16)srcFrame->stVFrame.u32Height;
        stSrcData.u16Stride  = (HI_U16)srcFrame->stVFrame.u32Stride[1];
       
        stDstData.u16Stride  = 1920;
        stDstData.pu8VirAddr = (dstFrame->stVFrame.pVirAddr[1]) + stDstData.u16Stride   * y_start + x_start;
        stDstData.u32PhyAddr = (dstFrame->stVFrame.u32PhyAddr[1]) + stDstData.u16Stride  * y_start + x_start;
        stDstData.u16Width         = (HI_U16)srcFrame->stVFrame.u32Width;
        stDstData.u16Height  = (HI_U16)srcFrame->stVFrame.u32Height;
       
        printf("stSrcData.u16Height :%d ,stDstData.u16Height:%d \n",stSrcData.u16Height ,stDstData.u16Height);
        s32Ret = HI_MPI_IVE_DMA ( &hIveHandle, &stSrcData, &stDstData, &stCtrl, bInstant);
        if (HI_SUCCESS == s32Ret && 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);       
        }
#endif       
我来回答
回答1个
时间排序
认可量排序

bing

5个粉丝

4

问答

0

专栏

0

资料

bing 2023-10-13 11:10:53
认可0

srcFrame->stVFrame.pVirAddr[0]是无效的,需要
ExtVirAddr_y = (HI_U8 )HI_MPI_SYS_Mmap(pstVideoFrame.stVFrame.u64PhyAddr[0], width height3/2);
ExtVirAddr_uv = (HI_U8 )HI_MPI_SYS_Mmap(pstVideoFrame.stVFrame.u64PhyAddr[1], width * height );

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

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区