下载
中文
注册
使用Atlas 200/300/500 推理产品或Atlas 训练系列产品时,视频帧解码失败不触发回调函数

使用Atlas 200/300/500 推理产品或Atlas 训练系列产品时,视频帧解码失败不触发回调函数

2024/12/18

36

暂无评分
我要评分

问题信息

问题来源产品大类关键字
官方模型推理VDEC、解码、视频、帧、回调函数

问题现象描述

用户输入码流给VDEC解码,某些帧或所有帧都没有触发回调函数,用户收不到解码结果。

原因分析

码流中某些帧是坏帧,导致语法解析不出这些帧的含义,或者解码这些帧失败,从而不调用回调函数。

解决措施

针对分析的可能原因,请参考以下步骤进行处理:

1. 查看日志中是否存在视频解码丢帧/丢包情况的日志报错信息,若有,则是因为异常帧解码失败导致没有回调。

2. 若没有视频解码丢帧/丢包情况的日志报错信息,则调整DVPP模块或全局日志级别为info,查看下述三条日志打印的总次数是否和输入的帧数相等。

(1)"The queue is empty, so call the non-intelligent pointer callback interface."

(2)"The queue is not empty, so call the smart pointer callback interface."

(3)"The queue is not empty, but hiai_data_sp is nullptr."

生成上述3种日志信息的场景如下:

  • 未使用hiai_data_sp,成功解码返回,打印(1)日志,然后调用用户注册的回调函数。
  • 每一帧对应设置一个hiai_data_sp,成功解码返回,打印(2)日志,然后调用用户注册的回调函数。
  • N帧对应设置一个hiai_data_sp,第1帧成功解码返回,打印(2)日志,然后调用用户注册的回调函数;其他N-1帧,成功解码后打印(3)日志信息,并调用用户注册的回调函数。

不论上述场景中哪一种,均会调用用户注册的回调函数,即只要调用一次用户回调函数就说明解码返回一帧。所以上述三条日志出现的次数总和与用户输入总帧数相等,则说明无解码丢帧,用户需排查自身接收解码结果的统计是否有误。

本页内容