完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
环境:
芯片:cv1812h 步骤: s32Ret = CVI_VENC_CreateChn(vencChn, pstVencChnAttr); if (s32Ret != CVI_SUCCESS) { ERR_COUT << "CVI_VENC_CreateChn failed: " << s32Ret << END_COUT; assert("encoder init CVI_VENC_CreateChn() failed" false); } ........ 配置h264信息步骤省略 ........... s32Ret = CVI_VENC_SetChnParam(vencChn, pstChnParam); if (s32Ret != CVI_SUCCESS) { ERR_COUT << "CVI_VENC_SetH264Dblk failed: " << s32Ret << END_COUT; } stRecvParam.s32RecvPicNum = -1; std::cout << "CVI_VENC_StartRecvFramen"; s32Ret = CVI_VENC_StartRecvFrame(vencChn, stRecvParam); if (s32Ret != CVI_SUCCESS) { ERR_COUT << "CVI_VENC_StartRecvFrame failed: " << s32Ret << END_COUT; assert("encoder init CVI_VENC_StartRecvFrame() failed" false); } 问题: 调用CVI_VENC_StartRecvFrame 返回错误码 输出结果 [12439.247775] ion allocated len=0x3b9aca00 failed [12439.266376] CVI_VENC_StartRecvFrame with -1 |
|
相关推荐
2个回答
|
|
vencChn = 0;
PAYLOAD_TYPE_E enType = PT_H264; SAMPLE_RC_E enRcMode = SAMPLE_RC_CBR; VB_SOURCE_E source = VB_SOURCE_COMMON; VENC_GOP_MODE_E gopMode = CVI_H26X_GOP_MODE_DEFAULT; CVI_S32 s32Ret; VB_CONFIG_S stVbConf; VENC_GOP_ATTR_S stGopAttr, *pstGopAttr = stGopAttr; VENC_CHN_ATTR_S stVencChnAttr, *pstVencChnAttr = stVencChnAttr; VENC_RC_PARAM_S stRcParam, *pstRcParam = stRcParam; VENC_REF_PARAM_S stRefParam, *pstRefParam = stRefParam; VENC_CU_PREDICTION_S stCuPrediction, *pstCuPrediction = stCuPrediction; VENC_FRAMELOST_S stFL, *pstFL = stFL; VENC_SUPERFRAME_CFG_S stsf, *pstsf = stsf; VENC_CHN_PARAM_S stChnParam, *pstChnParam = stChnParam; VENC_RECV_PIC_PARAM_S stRecvParam; memset( stVbConf, 0, sizeof(VB_CONFIG_S)); stVbConf.u32MaxPoolCnt = 0; if (initSystemAndVb( stVbConf, _Width, _Height) != CVI_SUCCESS) assert("encoder init initSystemAndVb() failed" false); if (setModParam(source) != CVI_SUCCESS) assert("encoder init setModParam() failed" false); if (setGopAttr(pstGopAttr, gopMode) != CVI_SUCCESS) assert("encoder init setGopAttr() failed" false); if (setChnAttr(pstVencChnAttr, pstGopAttr, _Width, _Height, _Fps, enType, enRcMode) != CVI_SUCCESS) assert("encoder init setChnAttr() failed" false); s32Ret = CVI_VENC_CreateChn(vencChn, pstVencChnAttr); if (s32Ret != CVI_SUCCESS) { ERR_COUT << "CVI_VENC_CreateChn failed: " << s32Ret << END_COUT; assert("encoder init CVI_VENC_CreateChn() failed" false); } if (enType != PT_JPEG) { if (setRcParam(pstRcParam, enType, enRcMode) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setRcParam() failed" false); } if (setRefParam(pstRefParam) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setRefParam() failed" false); } if (setCuPrediction(pstCuPrediction) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setCuPrediction() failed" false); } if (setFrameLost(pstFL) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setFrameLost() failed" false); } if (setSuperFrame(pstsf) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setSuperFrame() failed" false); } if (enType != PT_MJPEG) { if (attachVbPoolIfSourceUser(enType) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init attachVbPoolIfSourceUser() failed" false); } } } if (enType == PT_H264) { if (setH264Entropy() != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setH264Entropy() failed" false); } if (setH264Trans() != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setH264Trans() failed" false); } if (setH264Vui() != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setH264Vui() failed" false); } if (setH264SliceSplit(_Height) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setH264SliceSplit() failed" false); } // if (setH264Dblk() != CVI_SUCCESS) { // CVI_VENC_DestroyChn(vencChn); // assert("encoder init setH264Dblk() failed" false); // } // if (setH264IntraPred() != CVI_SUCCESS) { // CVI_VENC_DestroyChn(vencChn); // assert("encoder init setH264IntraPred() failed" false); // } } if (setChnParam(pstChnParam, _Width, _Height, _Fps) != CVI_SUCCESS) { CVI_VENC_DestroyChn(vencChn); assert("encoder init setChnParam() failed" false); } /* * 编码通道连续接收并编码的帧数。 * 范围:[-1,0)∪(0 ∞] */ stRecvParam.s32RecvPicNum = -1; s32Ret = CVI_VENC_StartRecvFrame(vencChn, stRecvParam); if (s32Ret != CVI_SUCCESS) { ERR_COUT << "CVI_VENC_StartRecvFrame failed: " << s32Ret << END_COUT; assert("encoder init CVI_VENC_StartRecvFrame() failed" false); } |
|
|
|
在调用CVI_VENC_CreateChn函数创建编码通道之后,调用CVI_VENC_StartRecvFrame函数开始接收视频帧编码时,出现了错误。这种错误通常有多种原因,可能是参数配置有误、芯片硬件不支持该功能或者其他原因。
要解决这个问题,可以采取以下步骤: 1. 确保参数配置正确:检查CVI_VENC_CreateChn函数的输入参数pstVencChnAttr是否正确配置,包括编码分辨率、编码码率、编码格式等。可以参考编码器的配置手册进行正确设置。 2. 确保芯片硬件支持该功能:查阅芯片的技术文档和开发手册,确认芯片是否支持H264硬编码功能,并检查是否存在其他硬件设置相关的限制或要求。 3. 检查其他错误:在调用CVI_VENC_StartRecvFrame函数之前,可以添加一些错误检查的代码,例如检查CVI_VENC_CreateChn函数返回值是否为CVI_SUCCESS,以及CVI_VENC_StartRecvFrame函数调用之后的返回值等。 4. 联系芯片厂商支持:如果以上步骤均无法解决问题,建议联系芯片厂商的技术支持团队,提供错误日志和相关调用代码,以便他们能够更好地分析和解决问题。 总之,解决H264硬编码CVI_VENC_StartRecvFrame报错的关键是正确配置参数、确认硬件支持、检查其他错误以及与芯片厂商技术支持团队进行沟通和协助。 |
|
|
|
只有小组成员才能发言,加入小组>>
H264硬编码CVI_VENC_StartRecvFrame报错的原因?怎么解决?
511浏览 2评论
使用bm-smi查看信息时发现没有程序运行但是设备内存被占用是怎么回事?
297浏览 1评论
308浏览 1评论
SE5盒子如何修改IP?执行bm_set_ip提示没有该命令?
294浏览 1评论
545浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 00:23 , Processed in 0.705787 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号