hongwazi

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi  发布于  2016-10-26 11:55:21
采纳率 0%
14个问答
12127

[已解决]HI_MPI_VENC_SendFrame调用咨询

 

[i=s] 本帖最后由 hongwazi 于 2017-8-10 17:34 编辑 [/i]

平台Hi3519

我目前软件流程,从vi取到数据--->算法处理数据---->venc编码 目前摄像头还没有确定好,我现在先用文件做测试!直接从文件中读取yuv420sp的图像进行h265编码。貌似整个sdk中就HI_MPI_VENC_SendFrame符合我的要求。 我修改了demo里面的sample_venc.c ,在源码中select从venc获取编码数据前去调用HI_MPI_VENC_SendFrame,但是这个函数直接返回报错!

我才接触hisi平台,请给位大牛对对指点下! 我想了解: 1.我直接从文件中读取图像帧,那么HI_MPI_VENC_SendFrame函数中VIDEO_FRAME_INFO_S *pstFrame变量哪些值是该初始化呀? 2.HI_MPI_VENC_SendFrame这个函数的调用点是在HI_MPI_VB_Init,HI_MPI_SYS_Init, HI_MPI_VENC_CreateChn , HI_MPI_VENC_StartRecvPic 之后调用吗?

谢谢各位大牛指点!

----------------------------------已解决---------------------------------------- 感谢论坛中各位好心人的帮助,现在我把可以使用的源码放在附件中,供需要的人参考。

百度网盘链接地址:http://pan.baidu.com/s/1cMvihS

易百纳技术社区文件: sample_venc.zip
下载
我来回答
回答17个
时间排序
认可量排序

转角遇见miss

0个粉丝

5

问答

0

专栏

1

资料

转角遇见miss 2016-10-26 16:29:03
认可0
只做了海思解码那一块!不晓得编码怎么玩?
只能拿一下助攻了!

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-26 16:32:50
认可0
我用的hi3519,感觉demo不是很全,:'(

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2016-10-26 16:34:48
认可0
关于如何填写的问题, 建议楼主看一下SDK的sample 代码

mpp/sample/comm/sample_comm_vi.c 中的函数

HI_S32 SAMPLE_COMM_VI_GetVFrameFromYUV(FILE *pYUVFile, HI_U32 u32Width, HI_U32 u32Height,HI_U32 u32Stride, VIDEO_FRAME_INFO_S *pstVFrameInfo)

hongwazi

3个粉丝

14

问答

0

专栏

8

资料

hongwazi 2016-10-26 16:38:49
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40269&ptid=13140]zhuangweiye 发表于 2016-10-26 16:34[/url]
关于如何填写的问题, 建议楼主看一下SDK的sample 代码

mpp/sample/comm/sample_comm_vi.c 中的函数
[/quote]

谢谢你,我去好好研究下这个文件!:victory::victory::victory:

yang1372073

0个粉丝

19

问答

0

专栏

2

资料

yang1372073 2016-10-29 12:05:09
认可0
除了sample,多看看开发手册,里面有讲函数调用,各种结构体含义的

Jiarong

0个粉丝

3

问答

0

专栏

0

资料

Jiarong 2016-12-08 18:17:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=40271&ptid=13140]hongwazi 发表于 2016-10-26 16:38[/url]
谢谢你,我去好好研究下这个文件![/quote]

LZ,能解释下为什么帧的物理地址和虚拟地址要设两个么?

zjx94

0个粉丝

7

问答

0

专栏

0

资料

zjx94 2017-03-02 12:14:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42619&ptid=13140]Jiarong 发表于 2016-12-8 18:17[/url]
LZ,能解释下为什么帧的物理地址和虚拟地址要设两个么?[/quote]

物理地址,因为当帧数很大的时候,就会分为两个地址来存,否则画面会有一点错乱。但是虚拟地址我也不知道什么意思。

wodemail200

0个粉丝

3

问答

0

专栏

0

资料

wodemail200 2017-03-02 15:32:48
认可0
虚拟地址是指物理地址映射到用户空间的地址吧。应用层不能直接访问物理地址,我的理解。。。。

z_chenxin

0个粉丝

0

问答

0

专栏

0

资料

z_chenxin 2017-03-31 10:25:34
认可0
楼主,使用你的demo。在SAMPLE_COMM_VENC_Start 启动venc的时候提示错误,错误码0xA0088005 试图使用或者销毁不存在的
设备、通道或者资源。。求解

z_chenxin

0个粉丝

0

问答

0

专栏

0

资料

z_chenxin 2017-04-06 15:58:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47535&ptid=13140]z_chenxin 发表于 2017-3-31 10:25[/url]
楼主,使用你的demo。在SAMPLE_COMM_VENC_Start 启动venc的时候提示错误,错误码0xA0088005 试图使用或者销 ...[/quote]

已解决, 问题出在加载的ko模块的版本不正确。加载正确的驱动后可以使用

eken

0个粉丝

8

问答

0

专栏

0

资料

eken 2017-07-06 14:33:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=47797&ptid=13140]z_chenxin 发表于 2017-4-6 15:58[/url]
已解决, 问题出在加载的ko模块的版本不正确。加载正确的驱动后可以使用[/quote]

我也遇到这个问题,ko模块还有版本吗???求解

szjcqu

0个粉丝

1

问答

0

专栏

0

资料

szjcqu 2017-07-12 16:24:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=55034&ptid=13140]eken 发表于 2017-7-6 14:33[/url]
我也遇到这个问题,ko模块还有版本吗???求解[/quote]

你好,请问你有楼主demo里面的yuv420sp文件么?

eken

0个粉丝

8

问答

0

专栏

0

资料

eken 2017-07-13 11:45:04
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=55302&ptid=13140]szjcqu 发表于 2017-7-12 16:24[/url]
你好,请问你有楼主demo里面的yuv420sp文件么?[/quote]

没有哦。。。。。。。。。。。。。。。。。。。

qn1571044551

0个粉丝

0

问答

0

专栏

0

资料

qn1571044551 2019-10-24 11:26:05
认可0
楼主,请教下,问题解决了吗?能发一下解决后的代码么?跪谢~!!!:'(

It-is-windy

0个粉丝

1

问答

0

专栏

0

资料

It-is-windy 2019-10-31 10:47:54
认可0
我编译的时候sample_venc.c:22:1: error: unknown type name 'VIDEO_NORM_E',请问楼主这个类型名是在哪定义的呀?:)

qn1554107965

0个粉丝

3

问答

1

专栏

0

资料

qn1554107965 2019-11-20 17:25:54
认可0
自定义一帧数据 发送的时候 HI_MPI_VENC_SendFrame failed, s32Ret=0xA0088003

qn1554107965

0个粉丝

3

问答

1

专栏

0

资料

qn1554107965 2019-11-20 17:26:38
认可0
{
        HI_U32     u32LStride,u32CStride, u32LumaSize;
    HI_U32     u32ChrmSize,u32PhyAddr;
    HI_U32     u32Size;
    VB_BLK VbBlk;
    /* 图像帧结构初始化 */      
    memset(&(pstVFrameInfo->stVFrame),0x00,sizeof(VIDEO_FRAME_S));

    u32LStride  = stride;
    u32CStride  = stride;

    u32LumaSize = (u32LStride * height);
    u32ChrmSize = (u32CStride * height) >> 2;/* YUV 420 */
    u32Size = u32LumaSize + (u32ChrmSize << 1);

    /* alloc video buffer block ---------------------------------------------------------- */
    //VbBlk = HI_MPI_VB_GetBlock(1, u32Size, "ddr1");
    VbBlk = HI_MPI_VB_GetBlock(1, u32Size, HI_NULL);
    if (VB_INVALID_HANDLE == VbBlk) {
        printf("HI_MPI_VB_GetBlock err! size:%d\n",u32Size);
        return -1;
    }
    else
        {
        printf("HI_MPI_VB_GetBlock ok ok o k! size:%d   VbBlk %d\n",u32Size,VbBlk);
        }
   

    u32PhyAddr = HI_MPI_VB_Handle2PhysAddr(VbBlk);
    if (0 == u32PhyAddr) {
        return -1;
    }

    pstVFrameInfo->u32PoolId = HI_MPI_VB_Handle2PoolId(VbBlk);
    if (VB_INVALID_POOLID == pstVFrameInfo->u32PoolId) {
        return -1;
    }
    else
        {
        printf("pstVFrameInfo->u32PoolId--------%d\n",pstVFrameInfo->u32PoolId);
        }
    HI_U64 pVirYaddr;
        pVirYaddr = (HI_U64)HI_MPI_SYS_Mmap(u32PhyAddr, 1920 * 1080 * 3 / 2);

    pstVFrameInfo->stVFrame.u64PhyAddr[0] = u32PhyAddr;
    pstVFrameInfo->stVFrame.u64PhyAddr[1] = pstVFrameInfo->stVFrame.u64PhyAddr[0] + 1920*1080;
    pstVFrameInfo->stVFrame.u64PhyAddr[2] = pstVFrameInfo->stVFrame.u64PhyAddr[1] + u32ChrmSize;

    pstVFrameInfo->stVFrame.u64VirAddr[0] = pVirYaddr;               
    pstVFrameInfo->stVFrame.u64VirAddr[1] = pstVFrameInfo->stVFrame.u64VirAddr[0] + 1920 * 1080;

    pstVFrameInfo->stVFrame.u32Width  = 1920;
    pstVFrameInfo->stVFrame.u32Height = 1080;
    pstVFrameInfo->stVFrame.u32Stride[0] = u32LStride;
    pstVFrameInfo->stVFrame.u32Stride[1] = u32CStride;
    pstVFrameInfo->stVFrame.u32Stride[2] = u32CStride;
    pstVFrameInfo->stVFrame.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;

    pstVFrameInfo->stVFrame.enField     = VIDEO_FIELD_FRAME;
    pstVFrameInfo->stVFrame.enCompressMode = COMPRESS_MODE_NONE;               
    pstVFrameInfo->stVFrame.enVideoFormat  = VIDEO_FORMAT_LINEAR;               
    pstVFrameInfo->stVFrame.u64PTS     = frame * 40;      
    pstVFrameInfo->stVFrame.u32TimeRef = frame * 2;
    //pstVFrameInfo->stVFrame.enField = VIDEO_FIELD_INTERLACED; /* Intelaced D1,otherwise VIDEO_FIELD_FRAME */

   

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

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区