当前位置: 首页 >  网站大师 >  昇腾实战丨DVPP媒体数据处理图片解码问题案例

昇腾实战丨DVPP媒体数据处理图片解码问题案例

导读:摘要: 本期就分享几个关于DVPP图片解码问题的典型案例,并给出原因分析及解决方法。.本文分享自华为云社区《DVPP媒体数据处理图片解码问题案例》,作者:昇腾CANN 。.DVPP(Digital Vision Pre-.Processing)是昇腾AI处理器内置的图像处理单元,

摘要: 本期就分享几个关于DVPP图片解码问题的典型案例,并给出原因分析及解决方法。

本文分享自华为云社区《DVPP媒体数据处理图片解码问题案例》,作者:昇腾CANN 。

DVPP(Digital Vision Pre- Processing)是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括图像编解码、视频编解码、图像抠图缩放等。

本期就分享几个关于DVPP图片解码问题的典型案例,并给出原因分析及解决方法:

  1. 图片格式不支持或图片数据不完整,图片解码失败
  2. 图像解码进程超时退出

01图片格式不支持或图片数据不完整,图片解码失败

问题现象信息

图片解码失败,查看日志有类似如下报错信息:

日志片段举例1:

Unsupported subsample format, just support jpeg with YUV 444 440 422 420 400
do not support progressive mode
do not support arithmetic code, support huffman code only

日志片段举例2:

EOI segment of the stream is invalid

原因分析

分析上面日志信息,可能存在以下可能原因:

  • 数据格式不支持
  • 图片数据不完整

解决措施

针对上述可能原因,请按以下方式处理:

1、目前不支持的超规格图像格式,建议用户自行使用第三方软件解码。

解码JPEG图片,只支持JPEG图片为huffman编码(colorspace: yuv, subsample: 444/440/422/420/400 ),不支持算术编码,不支持渐进编码,不支持jpeg2000格式。

2、图片数据不完整,根据报错提示,通过第三方软件查看原图像二进制进行确认。

图像缺失最后的EOI结束符,对应图像二进制类似下图所示。正常JPEG图片最后应该由标记码FF D9结束,该数据最后缺失FF D9标记码。

如果确认原图数据不完整,报错属于正常现象,需更换图片。

3、原图像数据完整,可能数据在传输过程中存在损坏,需要在调用图片解码接口前,通过fwrite函数将送入解码接口的的图片码流保存下来,与原JPEG图进行二进制比较。如果不一致,传输过程出现数据缺失,需进一步定位传输过程数据缺失问题后,再重新解码图片。

02图像解码进程超时退出

问题现象信息

用户进程退出。

查看应用类日志,发现类似ERROR日志“task timeout, userData= …, timeout=30, duration=…”和WARNING日志“frames statistic: ACL receive(n), send(n -1)”, n 表示处理任务数量,需根据实际情况确定。

日志片段举例如下:

[ERROR] AICPU(pid,pName):DateTimeMS [dvpp_timeout_manager.cc:33][OnPulse][tid:2581][DVPP_KERNELS] WaitId[10] task timeout, userData=0xe7ffe0001280, timeout=30, duration=30.930062.
[INFO] AICPU(pid,pName):DateTimeMS [dvpp_kernel_base.cc:222][SendTaskCompleteToTs][tid:2581][DVPP_KERNELS] Send task complete to ts success, taskId=2, streamId=44, errorCode=1.
[WARNING] DVPP(pid,pName):DateTimeMS [JpegdAsyncManager.cpp:405][API] [PrintFrameCount:405] [T208] DFX [JPEGD]: frames statistic: ACL receive(16), send(15)

原因分析

多路并发解码JPEG图片场景下,如果每一路解码的JPEG图片中,都包含带旋转信息的大分辨率图片,例如3840*2160分辨率及以上的图片,则可能导致图片解码时间过长,从而导致用户进程超时退出。

解决措施

1、确定大分辨率的图片是否包含旋转信息。

使用JPEG码流分析工具(例如JPEGsnoop)解析大分辨率的图片,查看其是否包含旋转信息,若Orientation信息为1,则表示不旋转;否则,都带有一定角度的旋转,例如下图解析出来的Orientation信息为8,表示顺时针旋转270°。

2、如果无法更换图片,确定这些图片是带旋转的大分辨率图片,则建议用户先调用第三方库(例如OpenCV)进行解码。

03更多介绍

[1]昇腾文档中心:https://www.hiascend.com/zh/document

[2]昇腾社区在线课程:https://www.hiascend.com/zh/edu/courses

[3]昇腾论坛:https://www.hiascend.com/forum

点击关注,第一时间了解华为云新鲜技术~

内容
  • Qt-FFmpeg开发-打开本地摄像头录制视频(7)
    Qt-FFmpeg开发-打开本地
    2023-12-05
    音视频/FFmpeg #Qt.Qt-FFmpeg开发-打开本地摄像头录制视频【软解码+ OpenGL显示YUV】.目录.
  • 一种新的告警收敛方式“先知预警”,为您的系统健康护航
    一种新的告警收敛方式“先知预警”
    2023-12-08
    前言.简介.买基金,上京东.基金交易系统是用户使用京东金融APP进行基金交易的核心支撑系统,每天有数十亿元的交易额。.在
  • 4.10 x64dbg 反汇编功能的封装
    4.10 x64dbg 反汇编功
    2023-12-06
    LyScript.插件提供的反汇编系列函数虽然能够实现基本的反汇编功能,但在实际使用中,可能会遇到一些更为复杂的需求,此
  • 如何在unity中手写一个四叉树地形lod系统(二)
    如何在unity中手写一个四叉树
    2023-12-07
    在根据四叉树节点创建了1365个地形分块网格并保存到本地后,我们接下来要在游戏运行的过程中动态地显示所需的网格,这是最关
  • windows 网络模拟工具分享
    windows 网络模拟工具分享
    2023-12-02
    【下载地址】.Releases · jagt/clumsy · GitHub.【介绍】.无需安装.无需篡改和代理.系统级
  • 常用的 http 状态码有哪些?
    常用的 http 状态码有哪些?
    2023-12-08
    在我们进行网页,网址的访问过程中,http,https.都是我们主要使用到的协议,在使用这协议的时候,对于他的协助状态,