海思IVE函数使用-1 (DMA使用 HI_MPI_IVE_DMA)

来源:互联网 发布:go高级编程书籍 编辑:程序博客网 时间:2024/06/06 12:50

海思IVE函数使用1 (DMA使用 HI_MPI_IVE_DMA)

1 结构体定义

//灰度图像定义

typedef struct{    unsigned  char  *pu8Data;  //虚拟地址    unsigned int  u32PhyAddr;   //物理地址    int   s32Width;           //图像宽度    int   s32Height;          //图像高度    int  s32Stride;         //图像step }RV_GRAY_IMAGE_S;//区域定义typedef struct{    short left ;    short top ;    short right ;    short bottom ;}RV_RECT ;2 IVE优化实现---------int RV_MEMCPY_IVE(RV_GRAY_IMAGE_S * pSrcImage, RV_GRAY_IMAGE_S * pDstImg,RV_RECT * pSrcRect,                      RV_RECT * pDstRect){    IVE_HANDLE hIveHandle = 0;    HI_BOOL bInstant = HI_TRUE;    HI_BOOL bBlock = HI_TRUE;    HI_BOOL bFinish = HI_FALSE;    HI_S32 result;    int srcw = pSrcRect->right - pSrcRect->left + 1;    int srch = pSrcRect->bottom - pSrcRect->top + 1;    int dstw = pDstRect->right - pDstRect->left + 1;    int dsth = pDstRect->bottom - pDstRect->top + 1;   if (srcw != dstw || srch != dsth)    {        return -1;    }IVE_DATA_S stSrc = {  (HI_U32)(pSrcImage->u32PhyAddr + pSrcImage->s32Stride * pSrcRect->top + pSrcRect->left),        pSrcImage->pu8Data+pSrcImage->s32Stride * pSrcRect->top + pSrcRect->left,        pSrcImage->s32Stride, srcw, srch};IVE_DATA_S stDst = { pDstImg->u32PhyAddr + pDstImg->s32Stride*pDstRect->top+pDstRect->left,         pDstImg->pu8Data + pDstImg->s32Stride*pDstRect->top+pDstRect->left, pDstImg->s32Stride, srcw,srch};    IVE_DMA_CTRL_S stDmaCtrl = { IVE_DMA_MODE_DIRECT_COPY, 0};    result = HI_MPI_IVE_DMA( &hIveHandle, &stSrc,&stDst, &stDmaCtrl,bInstant);    if( result != HI_SUCCESS )    {        printf( "hi ive dma error=%x \n" ,result);        return RV_ERROR ;    }    result = HI_MPI_IVE_Query(hIveHandle,&bFinish,bBlock);    if(result != HI_SUCCESS)    {        //  printf("hi query dma  error \n"); //windows 模拟库都返回失败。这里不打印         //  return RV_ERROR ;    //无意外情况都是成功    }    else    {        if(bFinish != HI_TRUE)        {            printf("hi dma is not finished \n");            return RV_ERROR ;        }    }    return RV_SUCESS;}
原创粉丝点击