视频解码花屏

现象描述

输入码流给VDEC进行解码,得到的解码数据不正确,产生花屏现象,如图1所示。并且日志中存在类似“dvpp_vdec_vdm_process failed”“Chan 0 ErrRatio = 44”信息。

图1 视频花屏

可能原因

输入的码流中某些帧数据不完整、存在坏帧,导致硬件解码产生花屏。

处理步骤

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

  1. 检查输入的源码流是否有问题。

    使用第三方工具(如:eseye u等)对输入码流进行解码播放,查看是否存在花屏,若不花屏则进行2;若花屏则替换输入码流。

  2. 若查看的源码流结果为正常,则可能码流在传输给设备侧VDEC的过程中遭到破坏,需要在调用aclvdecSendFrame之前,通过fwrite函数将输送给VDEC的码流保存下来。

    • 使用第三方工具对保存的码流进行解码播放,查看是否存在花屏。如果存在花屏,用户需自行排查将码流从Host侧传输到Device侧的过程代码是否有导致码流异常的情况。
    • 通过对应版本的sample,使用命令行方式编译和部署,解码这段保留下来的码流,查看是否存在花屏。

      如果sample解码正常,那就是开发代码有问题,可以参考应用软件开发指南(C&C++)中的VDEC示例代码,找到对应的视频解码的代码参考优化。