最新要闻
- 奇瑞QQ冰淇淋的智能化驾驶 可坡道起步、动力随心
- 【环球聚看点】马斯克否认家里有矿:不是富二代而是白手起家
- 挑战千元旗舰耳机!真我Buds Air5 Pro行业首发50dB降噪
- 怎么用手机更健康?专家:正常光照下建议亮度控制在50%、距离50cm 天天亮点
- 巴菲特将AI比作原子弹:将会改变一切
- 网友的iPhone 14 Pro Max烧屏!苹果售后反馈“屏幕没问题”|动态焦点
- 客所思s10 客所思控制面板下载s10 环球最资讯
- iPhone 16 Pro将采用固态按键:还有屏下Face ID!|世界今头条
- 咋想的?一住户小区花园内放生蟑螂 专家:病菌宿主可传播疾病_天天通讯
- 即时:餐馆有机花菜无认证遭索赔500元 正当维权还是恶意索赔?
- 全国首例超长矸石充填开采工作面在山能鲁西矿业新巨龙公司“上线”
- 欧普康视:目前OK镜没有涉及到AIGC技术_今日关注
- 《小美人鱼》正片片段曝光:黑小美人鱼海底一展歌喉 天天滚动
- 全球今日讯!漫威影史最高分电影 《银河护卫队3》票房破2亿
- 俞敏洪谈为什么大量孩子失去好奇心:中国填鸭式教育、老师引导等造成 每日热点
- 浙江风彩网福彩双色球走势图_浙江风彩网 环球资讯
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
昇腾实战丨DVPP媒体数据处理视频解码问题案例
摘要:本期就分享几个关于DVPP视频解码问题的典型案例,并给出原因分析及解决方法
本文分享自华为云社区《DVPP媒体数据处理视频解码问题案例》,作者:昇腾CANN 。
DVPP(Digital Vision Pre-Processing)是昇腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括图像编解码、视频编解码、图像抠图缩放等。
【资料图】
本期就分享几个关于DVPP视频解码问题的典型案例,并给出原因分析及解决方法:
- 视频解码进程卡死,无法退出
- retCode返回值设置错误,导致视频解码异常
- 视频解码无报错,但无解码结果数据,且CPU占用率高
01 视频解码进程卡死,无法退出
现象描述
用户进程卡死,无法退出。查看应用类日志,一直重复提示信息“fault kernel_name=DvppSendVdecFrame”、“Kernel task happen error, retCode=0x28, [aicpu timeout]”,表示AI CPU异常,无法处理视频解码任务,导致任务超时。
日志片段举例如下:
[ERROR] RUNTIME(pid,pName):DateTimeMS [task.cc:878]1827 PreCheckTaskErr:[DVPP][DEFAULT]Kernel task happen error, retCode=0x28, [aicpu timeout].[ERROR] RUNTIME(pid,pName):DateTimeMS [task.cc:676]1827 PrintAicpuErrorInfo:[DVPP][DEFAULT]Aicpu kernel execute failed, device_id=0, stream_id=177, task_id=4, fault so_name=libdvpp_kernels.so, fault kernel_name=DvppSendVdecFrame, fault op_name=, extend_info=.[ERROR] RUNTIME(pid,pName):DateTimeMS [task.cc:878]1831 PreCheckTaskErr:[DVPP][DEFAULT]Kernel task happen error, retCode=0x28, [aicpu timeout].[ERROR] RUNTIME(pid,pName):DateTimeMS [task.cc:676]1831 PrintAicpuErrorInfo:[DVPP][DEFAULT]Aicpu kernel execute failed, device_id=0, stream_id=170, task_id=8, fault so_name=libdvpp_kernels.so, fault kernel_name=DvppSendVdecFrame, fault op_name=, extend_info=.[ERROR] RUNTIME(pid,pName):DateTimeMS [engine.cc:960]1766 ReportExceptProc:[DVPP][DEFAULT]Task exception! device_id=0, stream_id=107, task_id=8, type=1, retCode=0x28.[ERROR] RUNTIME(pid,pName):DateTimeMS [engine.cc:960]1773 ReportExceptProc:[DVPP][DEFAULT]Task exception! device_id=0, stream_id=130, task_id=4, type=1, retCode=0x28.
可能原因
Device内存不足,AI CPU无法处理视频解码任务,导致任务超时。
处理步骤
1.在使用媒体数据处理V1版本的视频解码功能前,可参考性能指标说明页面中的“每路VDEC解码的内存消耗计算公式”,预估需使用的Device内存,并合理规划Device上的内存。您可以在页面左上侧切换版本,查看对应版本的性能指标说明。
2.优化应用程序的代码逻辑,增加异常处理机制,获取视频解码异常信息,强制退出进程。
在调用aclinit接口初始化之后、调用aclvdecSendFrame接口解码之前,定义异常回调函数,并调用aclrtSetExceptionInfoCallback接口设置异常回调函数,用于获取任务异常信息,以便在异常分支中根据任务异常信息来判断是否退出应用进程。
- 定义异常回调函数,回调函数原型为:typedef void (*aclrtExceptionInfoCallback)(aclrtExceptionInfo *exceptionInfo)
- 实现异常回调函数,在异常回调函数fn内调用aclrtGetDeviceIdFromExceptionInfo、aclrtGetStreamIdFromExceptionInfo、aclrtGetTaskIdFromExceptionInfo接口分别获取Device ID、Stream ID、Task ID。
根据Stream ID、Task ID判断Device是否异常,若异常,则强制退出进程。
异常回调函数实现示例如下:
void dvpp_callback(aclrtExceptionInfo * exception_info){ uint32_t taskId = aclrtGetTaskIdFromExceptionInfo(exception_info); uint32_t streamId = aclrtGetStreamIdFromExceptionInfo(exception_info); uint32_t deviceId = aclrtGetDeviceIdFromExceptionInfo(exception_info); if(taskId == 0xffffffff) || (streamId == 0xffffffff) { //Device异常,强制退出进程 } else { //任务异常,如果频繁出现(例如,统计1秒内触发异常回调函数的次数),进程退出 } return;}
3.调用aclrtSetExceptionInfoCallback接口设置异常回调函数。
02 retCode返回值设置错误,导致视频解码异常
现象描述
调用aclvdecSendFrame接口发送一帧码流后,继续复用输出图片描述信息,进行后续帧码流的解码操作,结果反复出现解码不成功、解码异常的情况。
日志片段举例如下:
Channel[0]: success to aclvdecSendFrame, loop=1, count=7get frame success, totalCount=7packet.size is 26084.Channel[0]: begin to send frame, loop=1, count=8acldvppGetPicDescRetCode, retCode: 2.Vdec ERROR!!!!!!!!!!!!!!!!errCount is 3. total count is 3.!!!!!!!!!!!!!!!!!!acldvppGetPicDescRetCode, retCode: 2.right_count:0,fail_count:3,total_count:3Channel[0]: success to aclvdecSendFrame, loop=1, count=8get frame success, totalCount=8packet.size is 27927.Channel[0]: begin to send frame, loop=1, count=9acldvppGetPicDescRetCode, retCode: 2.Vdec ERROR!!!!!!!!!!!!!!!!errCount is 4. total count is 4.!!!!!!!!!!!!!!!!!!acldvppGetPicDescRetCode, retCode: 2.right_count:0,fail_count:4,total_count:4
可能原因
根据日志中的提示,通过acldvppGetPicDescRetCode接口获取到的retCode为2,retCode为非0值时,表示解码异常。
再查看代码逻辑时,发现由于前一帧码流解码失败,retCode被置为2,在复用输出图片描述信息时,retCode也继承了前一帧解码失败的状态值2,导致AscendCL在解码后续帧时,获取到retCode值为2,就一直判断解码是失败。
处理步骤
如果存在复用输出图片描述信息的场景,需先调用acldvppSetPicDescRetCode设置为0,防止前一帧解码异常的状态影响后续解码。
03 视频解码无报错,但无解码结果数据、CPU占用率高
现象描述
查看应用类日志,无ERROR报错、无解码结果数据输出,另外,在运行应用程序的Linux服务器上执行top命令,该应用进程的CPU占用率持续升高。
可能原因
1. 无ERROR、无解码结果数据输出,初步判断可能是因为解码发帧接口aclvdecSendFrame调用正常,但未触发回调函数,无法获取解码结果数据。
2. 检查触发回调函数的代码逻辑。
按照视频解码的接口调用逻辑:由用户提前创建一个单独的线程,并自定义线程函数,在线程函数内调用aclrtProcessReport接口,通过该接口配置超时时间,等待指定的超时时间后,触发回调函数,获取解码结果数据。
Channel[0]: success to aclvdecSendFrame, loop=1, count=7get frame success, totalCount=7void *ThreadFunc(aclrtContext sharedContext){ if (sharedContext == nullptr) { ERROR_LOG("sharedContext can not be nullptr"); return ((void*)(-1)); } INFO_LOG("use shared context for this thread"); aclError ret = aclrtSetCurrentContext(sharedContext); if (ret != ACL_SUCCESS) { ERROR_LOG("aclrtSetCurrentContext failed, errorCode = %d", static_cast(ret)); return ((void*)(-1)); } INFO_LOG("thread start "); while (runFlag) { // Notice: timeout 1000ms (void)aclrtProcessReport(1000); } return (void*)0;}
3. 如果触发回调函数的接口调用逻辑正确,则在aclrtProcessReport接口处增加日志打印,判断应用运行过程中线程是否成功调用了aclrtProcessReport接口,只有成功调用aclrtProcessReport接口,才会触发回调函数。
示例代码如下:
while (runFlag) { // Notice: timeout 1000ms aclError ret = aclrtProcessReport(1000); printf("aclrtProcessReport failed, ret=%d.\n", ret);}
4. 修改代码后,重新编译运行应用。
在终端屏幕重复出现以下打印信息,表示调用aclrtProcessReport接口失败:
aclrtProcessReport failed, ret = 107012
查阅该接口的返回值说明,107012表示线程未订阅或重复订阅。
5. 检查代码逻辑,检查是否调用aclvdecSetChannelDescThreadId接口绑定用户新建的线程,按照VDEC视频解码的接口调用逻辑,只有调用该接口绑定用户线程,才可以触发调用aclrtProcessReport接口,进而触发回调函数。
6. 修改代码后,重新编译运行应用,视频解码正常,正常输出解码结果数据,同时CPU占用率下降。
处理步骤
参见视频解码的接口调用流程页面或者参考VDEC功能样例开发视频解码功能。您可以在页面左上侧切换版本,查看对应版本的接口调用流程。
其中,需关注以下注意点:
- 创建新线程,并自定义线程函数,在线程函数内调用aclrtProcessReport接口,等待指定时间后,触发回调函数中的回调函数。
- 需调用aclvdecSetChannelDescThreadId接口绑定用户创建的新线程。
- 释放资源时,依次销毁通道、销毁通道描述信息后,才可以销毁中用户创建的新线程。
04 更多介绍
[1]昇腾文档中心
[2]昇腾社区在线课程
[3]昇腾论坛
点击关注,第一时间了解华为云新鲜技术~
关键词:
昇腾实战丨DVPP媒体数据处理视频解码问题案例
记一次springboot项目漏洞挖掘 全球观速讯
微资讯!科创板收盘播报:科创50指数涨0.77% 软件股显著回暖
奇瑞QQ冰淇淋的智能化驾驶 可坡道起步、动力随心
【环球聚看点】马斯克否认家里有矿:不是富二代而是白手起家
挑战千元旗舰耳机!真我Buds Air5 Pro行业首发50dB降噪
怎么用手机更健康?专家:正常光照下建议亮度控制在50%、距离50cm 天天亮点
巴菲特将AI比作原子弹:将会改变一切
网友的iPhone 14 Pro Max烧屏!苹果售后反馈“屏幕没问题”|动态焦点
客所思s10 客所思控制面板下载s10 环球最资讯
天天观点:Linux基础18 磁盘介绍, 结构, 磁盘分区Fdisk
Marked.js让您的文档编辑更加轻松自如-环球报资讯
Kerberos协议原理 全球时讯
验证码短信 API 接入指南:Java 语言示例代码 天天新消息
Tcl/Tk教程_编程入门自学教程_菜鸟教程-免费教程分享_世界观速讯
iPhone 16 Pro将采用固态按键:还有屏下Face ID!|世界今头条
咋想的?一住户小区花园内放生蟑螂 专家:病菌宿主可传播疾病_天天通讯
即时:餐馆有机花菜无认证遭索赔500元 正当维权还是恶意索赔?
全国首例超长矸石充填开采工作面在山能鲁西矿业新巨龙公司“上线”
关于Kubernetes-v1.23.6-master节点的初始化操作|全球播报
WEB中间件常见漏洞总结 当前通讯
企业短信遭疯狂盗用,可能是没配置验证码_当前报道
[webrtc 入门系列] centos搭建coturn服务器 当前播报
欧普康视:目前OK镜没有涉及到AIGC技术_今日关注
《小美人鱼》正片片段曝光:黑小美人鱼海底一展歌喉 天天滚动
全球今日讯!漫威影史最高分电影 《银河护卫队3》票房破2亿
俞敏洪谈为什么大量孩子失去好奇心:中国填鸭式教育、老师引导等造成 每日热点
世界消息!kingbase之ksql命令工具
【Issues】axios如何获取responseType为blob的请求的错误信息 环球时讯
浙江风彩网福彩双色球走势图_浙江风彩网 环球资讯
环球微速讯:一秒充一公里!华为全液冷超充架构全球首测:小鹏发去感谢信
京东20年为员工投入福利近500亿 还建4000套员工公寓 租金仅5折
别总盯着帕萨特 新一代别克君越上市定档:20万最香行政轿车来了
电动车主自驾更省钱!支付宝出行可看电价波动 一键比价
天天视讯!手机丢了三年后被启用:摄像头拍下非洲小哥
【上海成交周报】第19周新房成交2627套,涨价房源1613套 天天精选
常见的 API 大全分享_全球观点
C#高级编程--通信协议
GPS北斗卫星时间同步系统助力电力自动化网络系统_世界看热讯
世界热资讯!螣龙安科携攻击面管理和BAS再上榜!2023网安行业全景图速看
ESXI运行虚拟机,软件包0CPU耗用高 当前热门
观天下!河南董寨为野外孵化的朱鹮幼鸟佩戴“身份证”
华硕k43s什么时候上市的?华硕k43s参数
首款天玑8020平板电脑!荣耀平板V8今日发售:1899元起
环球关注:高性能大屏轻薄本华为MateBook D 16将开售 高质价比的实力之选
0月租!中兴U50 Pro 5G随身Wi-Fi首销:1699元|全球快资讯
员工拒从北京调离被开除 获赔14万+:官方支持维权 地点调整处理不当
罗永浩直播间拍卖西湖公厕充电宝 超低起拍价58元
索尼黑卡RX100M5怎么拍延时视频?索尼黑卡RX100M5参数
amd e350相当于intel的什么CPU?amd E350支持多大内存?
高分屏是什么意思?高分屏和ips屏有什么区别?
AMD OverDrive如何使用?AMD OverDrive怎么超频?
环球热门:常青科技董秘回复: “2-乙烯基萘”为公司募投项目计划产品之一,募投项目尚在建设当中
人民出版社在哪个城市?人民出版社是什么级别?
奥特曼的生日是几月几日?奥特曼名字大全
范伟出演的电视剧都有哪些?范伟个人简介
护士帽子三条杠是什么职称?护士帽子三道杠解释
仙境传说RO H5游戏详细图文架设教程
每日信息:使用UE做动画编辑-VRAnimEditor
刘基贤为什么叫67?刘基贤个人简介
世界热议:茂名恒博贸易有限公司_关于茂名恒博贸易有限公司的简介
华为夏季全场景新品发布会官宣:5月18日见-天天快看
五一高速免费结束后下高速 男子拒付费堵了出口9小时_百事通
男子摔坏主管手机被开除 法院:公司赔偿13万余元
今日快讯:保护壳“泄露天机”:三星Galaxy Z Flip5副屏神似文件夹
小牛三款电动新车本月发!号称史上最远、最快、最能装_世界微头条
鄂尔多斯市内培外引打造龙头领航强磁场
Java开发、SpringBoot开发(狂神说Java) 每日消息
全球观焦点:在JS中如何判断两个对象是否相等
把钱叠成爱心的简单方法(怎么把钱叠成爱心简介介绍)
新一代华为MateBook D 16今日开售:顶配i9-13900H 16英寸黄金屏 重点聚焦
车机软件未达预期 曝大众汽车将解雇大部分高管 天天热推荐
天天快看:造型媲美法拉利!全新丰田皇冠Sport首发:进中国敢卖40万
视点!不少车主狂喜:开车违法 刷视频就可免于扣分罚款
不易变形:220g重磅纯棉短袖19.9元新低(原价59元)
西藏学者:寄宿制教育更应以当地人视角去理解|热议
环球短讯!武汉汉派融城投资管理有限公司_关于武汉汉派融城投资管理有限公司简述
【新要闻】高并发场景下的 HttpClient 优化,QPS 大大提升!
太惨!美国人不敢把钱存银行了 苹果的“余额宝”等受益|世界报资讯
一机传三代!年轻人换机周期最高拉长到3年:华为等成首选-世界速看
孩子高铁上狂踢前排:家长无动于衷 环球简讯
当前资讯!30万新能源豪华MPV销冠!腾势D9 5月新增订单冲击1.5万台
首款IP69K认证手机发布:防水性能秒杀IP68!冲热水澡、泡温泉不怕了 环球关注
中邮证券:给予金隅集团买入评级_环球观察
爱康体检结果查询官网_爱康体检结果网上查询_全球微头条
几十元的蓝牙鼠标 延迟秒杀几百元的蓝牙耳机:原因我懂了
全球新消息丨老头乐必须封杀 危害公共安全!崔东树称新能源车下乡是战略方向:大爷们要换车
python高效处理大数据集1数据处理效率的迫切需求
读SQL进阶教程笔记15_SQL编程思维_天天最资讯
i59400f_i59400F_世界热议
世界今亮点!徐克版《射雕》官宣引热议:肖战饰演郭靖、黄蓉是她!网友直呼别毁经典
焦点速讯:86.返回类型和return语句
用CPU来加速你的Linux命令 消息
最新消息:零余额账户是什么意思_零余额帐户是什么意思啊
天天讯息:AMD:RX 7900、FSR 2真是绝配!光追游戏爽翻天
影驰PCIe 5.0 SSD温度实测:小风扇立功了
张本智和丢冠原因揭晓!超级黑马崛起,表态要在世乒赛拿男单奖牌 最新资讯
全球快资讯:格林伍德即将回归顶级联赛,尤文有望签曼联弃将,博格巴成中间人
ASP.NET Core MVC 从入门到精通之序列化
网络基础 CAS协议学习总结_天天新资讯