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

实战,dvpp,媒体,数据处理,图片,解码,问题,案例 · 浏览次数 : 18

小编点评

**摘要** 本文分享了几个关于DVPP图片解码问题的典型案例,并提供原因分析和解决方法。 **案例分析** * **图片格式不支持或图片数据不完整**:由于DVPP仅支持JPEG图片的HUFF编码,当输入图像格式不支持或数据不完整时,解码失败。 * **图片解码失败问题**:由于视频和图像编解码都需要使用AscendCL媒体数据处理接口,因此当接口出现故障时,图片解码过程可能失败。 * **原图像数据完整,可能数据在传输过程中存在损坏**:当图像数据在传输过程中损坏或格式错误时,解码失败可能出现。 **解决方法** * **解决图片格式不支持或图片数据不完整**:使用第三方软件进行图像解码,例如JPEGsnoop。 * **解决图片解码失败问题**:检查AscendCL媒体数据处理接口的运行状态,并使用调试工具检查解码过程。 * **解决原图像数据完整,可能数据在传输过程中存在损坏**:保存输入图像码流,与原图像二进制进行比对,发现数据缺失,并重新解码图像。 **结论** DVPP图片解码问题是一个常见问题,需要根据具体情况采取相应的解决方法。通过了解上述案例和解决方法,用户可以有效地解决图像解码问题。

正文

摘要:本期就分享几个关于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

 

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

与昇腾实战丨DVPP媒体数据处理图片解码问题案例相似的内容:

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

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

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

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

昇腾实践丨ATC模型转换动态shape问题案例

本期就分享几个关于昇腾CANN中关于ATC模型转换动态shape相关问题的典型案例,并给出原因分析及解决方法。

AI推理实践丨多路极致性能目标检测最佳实践设计解密

摘要:基于CANN的多路极致性能目标检测最佳实践设计解密。 本文分享自华为云社区《基于CANN的AI推理最佳实践丨多路极致性能目标检测应用设计解密》,作者: 昇腾CANN 。 当前人工智能领域,最热门的无疑是以ChatGPT为代表的各种“新贵”大模型,它们高高在上,让你无法触及。但在人们的日常生活中

盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测、车距计算等基本功能,作为辅助驾驶入门级项目再合适不过。 本文分享自华为云社区《盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和

昇腾携手OpenMMLab,支持海量算法仓库的昇腾AI推理部署

摘要:近日,昇腾AI联合上海人工智能实验室,正式实现OpenMMLab算法仓库在昇腾的异构计算架构CANN上的推理部署,目前相关代码已推入MMDeploy 0.10.0版本,并在GitHub正式发布。 本文分享自华为云社区《昇腾携手OpenMMLab,支持海量算法仓库的昇腾AI推理部署》,作者:昇腾

理论+实践,揭秘昇腾CANN算子开发

摘要: 本文介绍了CANN自定义算子开发的几种开发方式和算子的编译运行流程。然后以开发一个DSL Add算子为例,讲解算子开发的基本流程。 本文分享自华为云社区《昇腾CANN算子开发揭秘》,作者:昇腾CANN 。 开发者在利用昇腾硬件进行神经网络模型训练或者推理的过程中,可能会遇到以下场景: 训练场

三步实现BERT模型迁移部署到昇腾

本文从镜像构建、容器部署到性能评估,完成bert模型昇腾迁移部署案例。

基于昇腾计算语言AscendCL开发AI推理应用

摘要:本文介绍了昇腾计算语言AscendCL的基本概念,并以示例代码的形式介绍了如何基于AscendCL开发AI推理应用,最后配以实际的操作演示说明如何编译运行应用。 本文分享自华为云社区《基于昇腾计算语言AscendCL开发AI推理应用》,作者:昇腾CANN。 初始AscendCL AscendC

手把手教你在昇腾平台上搭建PyTorch训练环境

摘要:在昇腾平台上运行PyTorch业务时,需要搭建异构计算架构CANN软件开发环境,并安装PyTorch 框架,从而实现训练脚本的迁移、开发和调试。 本文分享自华为云社区《手把手教你在昇腾平台上搭建PyTorch训练环境》,作者:昇腾CANN。 PyTorch是业界流行的深度学习框架,用于开发深度