写点什么

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

  • 2023-06-06
    广东
  • 本文字数:1526 字

    阅读完需:约 5 分钟

昇腾实战丨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 400do not support progressive modedo 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


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

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
昇腾实战丨DVPP媒体数据处理图片解码问题案例_人工智能_华为云开发者联盟_InfoQ写作社区