下载
中文
注册

VENC创建通道失败

现象描述

调用VENC创建通道的接口hi_mpi_venc_create_chn返回值非0,通道创建失败。

可能原因

导致创建通道失败可能原因有以下:

  • 用户传入的通道ID超出了规定的合法范围,VENC规定通道ID在[0,255]总共256个通道。
  • 用户传入的通道属性参数不在规定的合理范围内或设置了暂不支持的参数。
  • 用户试图创建已经存在的通道,比如开始创建了通道号为0的通道,在这个通道还没销毁的情况下,又去创建通道号为0的通道。

处理步骤

针对分析的可能原因,请参考以下方法处理:

  • 首先确定hi_mpi_venc_create_chn接口失败时返回的错误码是多少。
  • 如果是0xa0088002,则说明用户传入的通道ID超出了规定的合法范围,需要用户修改通道ID在[0,255]内。
  • 如果是0xa0088003或0xa0088008,则说明用户传入的通道属性参数不在规定的合理范围内或设置了暂不支持的参数,

    具体是哪个参数传入有问题可以进一步查看内核日志打印,如下图所示,是传入的分辨率不正确。

    [Venc]:venc_drv_check_resolution [Line]:342 max picture width (0) err! should in [128,4096]!

    常见原因:1.入参的结构体没有进行memset初始化,导致有些参数如果没有主动设置就会是一些随机值;2.头文件不匹配,导致枚举类型传入和预期不符合; 3.参数支持范围不了解,各个参数的支持范围可以详细查看DVPP对外接口文档。

  • 如果是0xa0088004,则说明用户试图创建已经存在的通道,比如开始创建了通道号为0的通道,在这个通道还没销毁的情况下,又去创建通道号为0的通道
    [Venc]:venc_create_chn [Line]:2449 device:0 chnl:0 had been created! 

    这种情况建议用户排查代码逻辑:(1)创建通道后是否销毁;(2)是否使用同一个通道ID创建通道。