tl0000

tl0000

0个粉丝

7

问答

0

专栏

0

资料

tl0000  发布于  2019-08-02 17:08:44
采纳率 0%
7个问答
2089

3519 VO 发送自己修改过的图像,一直是蓝屏

 
HI_S32 s32Ret;
    HI_S32 s32MilliSec = -1;
    VB_BLK VbBlk;
    HI_U64 u64PhyAddr;
    HI_U8 *pVirAddr;
    //VB_POOL u32PoolId;
    HI_U32 u32Size;
    HI_U32 u32Stride;

    SAMPLE_VI_FRAME_CONFIG_S stFrmCfg;
    VIDEO_FRAME_INFO_S  stVoFrameInfo;
    stFrmCfg.u32Width = psrcFrameInfo->stVFrame.u32Width;
    stFrmCfg.u32Height = psrcFrameInfo->stVFrame.u32Height;
    stFrmCfg.u32ByteAlign = 0;
    stFrmCfg.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;
    stFrmCfg.enCompressMode = COMPRESS_MODE_NONE;
    stFrmCfg.enVideoFormat = VIDEO_FORMAT_LINEAR;
    stFrmCfg.enDynamicRange = DYNAMIC_RANGE_SDR8;
    u32Stride = psrcFrameInfo->stVFrame.u32Stride[0];

    u32Size = u32Stride * stFrmCfg.u32Height*3/2;

    printf("u32Stride is %d  %d  %d\n ",u32Size,u32Stride,stFrmCfg.u32Height);
    VbBlk = HI_MPI_VB_GetBlock(u32PoolId, u32Size, HI_NULL);
    if (VB_INVALID_HANDLE == VbBlk)
    {
        SAMPLE_PRT("HI_MPI_VB_GetBlock err! size:%d\n", u32Size);
        return HI_FAILURE;
    }

    u64PhyAddr = HI_MPI_VB_Handle2PhysAddr(VbBlk);
    if (0 == u64PhyAddr)
    {
        SAMPLE_PRT("HI_MPI_VB_Handle2PhysAddr err!\n");
        return HI_FAILURE;
    }

    pVirAddr = (HI_U8 *)HI_MPI_SYS_Mmap(u64PhyAddr, u32Size);
    if (NULL == pVirAddr)
    {
        SAMPLE_PRT("HI_MPI_SYS_Mmap err!\n");
        return HI_FAILURE;
    }

    stVoFrameInfo.u32PoolId = u32PoolId;
    stVoFrameInfo.enModId = HI_ID_VI;
    stVoFrameInfo.stVFrame.u64PhyAddr[0]   = u64PhyAddr;
    stVoFrameInfo.stVFrame.u64PhyAddr[1]   = stVoFrameInfo.stVFrame.u64PhyAddr[0] + u32Stride*1080;
    stVoFrameInfo.stVFrame.u64PhyAddr[2]   = stVoFrameInfo.stVFrame.u64PhyAddr[1] + u32Stride*1080;

    stVoFrameInfo.stVFrame.u64VirAddr[0]   = (HI_U64)(HI_UL)pVirAddr;
    stVoFrameInfo.stVFrame.u64VirAddr[1]   = stVoFrameInfo.stVFrame.u64VirAddr[0] + u32Stride*1080;
    stVoFrameInfo.stVFrame.u64VirAddr[2]   = stVoFrameInfo.stVFrame.u64VirAddr[1] + u32Stride*1080;

    stVoFrameInfo.stVFrame.u32Stride[0]    = u32Stride;
    stVoFrameInfo.stVFrame.u32Stride[1]    = u32Stride;
    stVoFrameInfo.stVFrame.u32Stride[2]    = u32Stride;

    stVoFrameInfo.stVFrame.u32Width        = stFrmCfg.u32Width;
    stVoFrameInfo.stVFrame.u32Height       = stFrmCfg.u32Height;
    stVoFrameInfo.stVFrame.enPixelFormat   = stFrmCfg.enPixelFormat;
    stVoFrameInfo.stVFrame.enVideoFormat   = stFrmCfg.enVideoFormat;
    stVoFrameInfo.stVFrame.enCompressMode  = stFrmCfg.enCompressMode;
    stVoFrameInfo.stVFrame.enField         = VIDEO_FIELD_FRAME;
    stVoFrameInfo.stVFrame.enDynamicRange  = DYNAMIC_RANGE_SDR8;
    stVoFrameInfo.stVFrame.enColorGamut    = psrcFrameInfo->stVFrame.enColorGamut;

    //HI_U8* yPtr = (HI_U8*)HI_MPI_SYS_Mmap(stVoFrameInfo.stVFrame.u64VirAddr[0], u32Size);
    printf("config ok\n");
    memcpy(pVirAddr,yuvdata,u32Size);

    printf("memcpy ok\n");
   // s32Ret = HI_MPI_VB_Handle2PoolId(VbBlk);
    printf("HI_MPI_VB_Handle2PoolId OK\n");
    //直接发送HI_MPI_VPSS_GetChnFrame视频没问题
    //s32Ret = HI_MPI_VO_SendFrame(0, 0,psrcFrameInfo,s32MilliSec);
   
    s32Ret = HI_MPI_VO_SendFrame(0, 0,&stVoFrameInfo,s32MilliSec);

    //HI_MPI_SYS_Munmap(yPtr, u32Size);
    s32Ret = HI_MPI_SYS_Munmap((HI_VOID*)(HI_UL)pVirAddr, u32Size);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("HI_MPI_SYS_Munmap failure!\n");
    }
    s32Ret = HI_MPI_VB_ReleaseBlock(VbBlk);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_PRT("HI_MPI_VB_ReleaseBlock block 0x%x failure\n", VbBlk);
    }
我来回答
回答3个
时间排序
认可量排序

tl0000

0个粉丝

7

问答

0

专栏

0

资料

tl0000 2019-08-02 17:49:37
认可0
自己顶一下,别沉啊,大神们

ecomsbz

1个粉丝

22

问答

0

专栏

36

资料

ecomsbz 2019-08-03 14:45:00
认可0
没看懂。。是VO转HDMI?

tl0000

0个粉丝

7

问答

0

专栏

0

资料

tl0000 2019-08-05 10:09:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=146161&ptid=75368]ecomsbz 发表于 2019-8-3 14:45[/url]
没看懂。。是VO转HDMI?[/quote]

对,VO转HDMI输出,我把HI_MPI_VPSS_GetChnFrame内容处理后再封装成VIDEO_FRAME_INFO_S格式HI_MPI_VO_SendFrame发送,提示无效视频帧
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区