华为昇腾310B1平台 [ERROR] Send frame to vdec failed, errorno:507018

目录

1 [ERROR] Send frame to vdec failed, errorno:507018

2 bug解决尝试1

3 bug解决尝试2

4 bug解决尝试3

附录:华为视频解码基本原理

1调用aclvdecCreateChannel接口创建视频码流数据处理的通道

2 调用aclvdecSendFrame接口将视频码流解码成YUV420SP格式的图片

3 调用aclvdecDestroyChannel接口销毁视频处理的通道

4 VDEC流程图

参考文献:


1 [ERROR] Send frame to vdec failed, errorno:507018

某项目中的代码运行报错 [ERROR] Send frame to vdec failed, errorno:507018

    AclLiteError VdecHelper::Process(shared_ptr<FrameData> frameData, void* userData) {// create input descAclLiteError atlRet = CreateInputStreamDesc(frameData);if (atlRet != ACLLITE_OK) {ACLLITE_LOG_ERROR("Create stream desc failed");return atlRet;}if (!frameData->isFinished) {// create out descatlRet = CreateOutputPicDesc(outputPicSize_.load());if (atlRet != ACLLITE_OK) {ACLLITE_LOG_ERROR("Create pic desc failed");return atlRet;}}else {outputPicDesc_ = acldvppCreatePicDesc();if (outputPicDesc_ == nullptr) {ACLLITE_LOG_ERROR("Create vdec output pic desc failed");return ACLLITE_ERROR_CREATE_PIC_DESC;}}// send data to dvpp vdec to decoderet = aclvdecSendFrame(vdecChannelDesc_, inputStreamDesc_,outputPicDesc_, nullptr, userData);if (ret != ACL_SUCCESS) {ACLLITE_LOG_ERROR("Send frame to vdec failed, errorno:%d", ret);return ACLLITE_ERROR_VDEC_SEND_FRAME;}return ACLLITE_OK;}void VdecHelper::SetOutputPicSize(uint32_t picSize) {if (picSize < outputPicSize_.load()) {outputPicSize_.store(picSize);}}

用vscode调试发现

发现正常和报错时的一些变量也没什么区别,

2 bug解决尝试1

然后网上搜507018的错误码,找到如下链接昇腾社区-官网丨昇腾万里 让智能无所不及

这上面就是说每次都要重新配置描述类型,但是我看了下我的代码里面已经是每次都重新配置描述类型了,该方法行不通。

3 bug解决尝试2

不知道怎么做了,去下载华为官方的sample,然后先跑demo试试,去下载samples: CANN Samples - Gitee.com

https://gitee.com/ascend/samples/tree/master/cplusplus/level2_simple_inference/0_data_process

然后编译运行这个samples-master/cplusplus/level2_simple_inference/0_data_process/vdec

在代码中增加这一行打印

    while (restLen > 0) {//INFO_LOG("------------------------- ");// inBufferDev means the memory for input video data by Device, and inBufferSize means the memory sizeret = acldvppSetStreamDescData(streamInputDesc_, inBufferDev);ret = acldvppSetStreamDescSize(streamInputDesc_, inBufferSize);// Device memory g_picOutBufferDev is used to store output data decoded by VDECret = acldvppMalloc(&g_picOutBufferDev, dataSize);// Create output image description information, set the image description information properties// picOutputDesc_ is acldvppPicDescpicOutputDesc_ = acldvppCreatePicDesc();ret = acldvppSetPicDescData(picOutputDesc_, g_picOutBufferDev);ret = acldvppSetPicDescSize(picOutputDesc_, dataSize);ret = acldvppSetPicDescFormat(picOutputDesc_, static_cast<acldvppPixelFormat>(format_));/* Perform video stream decoding. After decoding each frame of data, the system automaticallycalls callback callback function to write the decoded data to the file, and then timely releaserelevant resources */ret = aclvdecSendFrame(vdecChannelDesc_, streamInputDesc_, picOutputDesc_, nullptr, nullptr);printf("ret  =================%d\n", ret);restLen = restLen - 1;}

运行结果如下

demo报同样的错误,那应该是这个盒子本身有问题,不是我的代码的问题。

4 bug解决尝试3

练习技术支持,他远程我电脑编译samples-master/cplusplus/level2_simple_inference/0_data_process/vdec报同样的错误,然后开始尝试编译samples-master/cplusplus/level2_simple_inference/0_data_process/vdecandvenc,结果编译就出错,他让我按照samples: CANN Samples - Gitee.com

去安装第三方库,但我觉得不能这么解决问题,现在的问题是解码的时候报错,重点是看demo里面的vdec,而不是vdecandvenc。

附录:华为视频解码基本原理

1调用aclvdecCreateChannel接口创建视频码流数据处理的通道

1)创建视频码流数据处理通道前,需先执行以下操作:

         A、调用aclvdecCreateChannelDesc接口创建通道描述信息。

        B、调用aclvdecSetChannelDesc系列接口设置通道描述信息的属性,包括解码通道号、线程、回调函数、视频编码协议等,其中:

        回调函数需由用户提前创建,用于在视频解码后,获取解码数据,并及时释放相关资源,回调函数的原型前参见aclvdecCallback。

        线程需由用户提前创建,并自定义线程函数,在线程函数内调用aclrtProcessReport接口,等待指定时间后,触发回调函数

2)aclvdecCreateChannel接口内部封装了如下接口,无需用户单独调用:

        A、aclrtCreateStream接口:显式创建Stream,VDEC内部使用。

        B、aclrtSubscribeReport接口:指定处理Stream上回调函数的线程,回调函数和线程是由用户调用aclvdecSetChannelDesc系列接口时指定的。

2 调用aclvdecSendFrame接口将视频码流解码成YUV420SP格式的图片

1视频解码前,需先执行以下操作:
调用acldvppCreateStreamDesc接口创建输入视频码流描述信息,并调用acldvppSetStreamDesc系列接口设置输入视频的内存地址、内存大小、码流格式等属性。
调用acldvppCreatePicDesc接口创建输出图片描述信息,并调用acldvppSetPicDesc系列接口设置输出图片的内存地址、内存大小、图片格式等属性。
2 aclvdecSendFrame接口内部封装了aclrtLaunchCallback接口,用于在Stream的任务队列中增加一个需要在Host上执行的回调函数。用户无需单独调用aclrtLaunchCallback接口。

3 调用aclvdecDestroyChannel接口销毁视频处理的通道

1)系统会等待已发送帧解码完成且用户的回调函数处理完成后再销毁通道。

2)aclvdecDestroyChannel接口内部封装了如下接口,无需用户单独调用:

        aclrtUnSubscribeReport接口:取消线程注册(Stream上的回调函数不再由指定线程处理)。

        aclrtDestroyStream接口:销毁Stream。

4 VDEC流程图

参考文献:

华为云论坛_云计算论坛_开发者论坛_技术论坛-华为云

samples: CANN Samples - Gitee.com

samples: CANN Samples - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687810.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络端口占用问题的综合调研与解决方案

原创 Randy 拍码场 问题背景 去年底信息安全团队进行网络权限治理&#xff0c;要求所有应用实例使用静态IP&#xff0c;公网访问策略与静态IP绑定&#xff1b;之后实例重启时偶现“端口被占用”错误。通过分析总结应用日志&#xff0c;共有以下4种错误类型&#xff0c;实质都是…

用docker 搭建 vscode for web

前言: 每当我们换机子或者是电脑内容不够的时候&#xff0c;总想着能用web方式使用某些软件&#xff0c;这样子&#xff0c;你无论何时何地都能愉快的开发了&#xff0c;今天来安排下使用容器技术去搭建vscode。 查找合适的Docker镜像 你可以使用官方的Code Server Docker镜像…

信息化系统建设运维服务方案(投标)Word原件

《信息化系统运维服务方案》&#xff08;原件可获取&#xff09; 1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任…

C#上位机1ms级高精度定时任务

precisiontimer 安装扩展包 添加引用 完整代码 using PrecisionTiming;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; us…

1013: 哈希表(开放定址法处理冲突)

解法&#xff1a; 线性探测是一种解决哈希冲突的方法&#xff0c;当发生哈希冲突时&#xff0c;它会依次往后查找空的槽位&#xff0c;直到找到一个空的槽位或者达到数组的末尾。 下面是处理哈希冲突的线性探测的步骤&#xff1a; 创建一个哈希表&#xff0c;里面包含一定数量的…

MySQL的表级锁

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 表级锁 介绍 对于表锁&#xff0c;分为两类&#xff1a; 表共享读锁表独占写锁 语法 1. 加锁&#xff1a;lock tables 表名... read/write 2.…

SpringSecurity + JWT实现登录认证

前置基础请参考&#xff1a;SpringSecurity入门-CSDN博客 配置&#xff1a; pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version></p…

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案&#xff0c;通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计&#xff0c;大大降低了工程的设计复杂度&#xff0c;缩短了开发周期&#xff0c;加快了产品的面市速度…

【数据结构】第五讲:栈和队列

个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数据结构与算法 源码获取&#xff1a;数据结构: 上传我写的关于数据结构的代码 (gitee.com) 目录 一、栈 1.栈的定义 2.栈的实现 a.栈结构的定义 b.初始化 c.扩容 d.入栈 e.出栈 f.打印 g.取栈顶元素…

对camera raw中的纹理和清晰度的内容的修正(之前的内容写错了,懒得改了重新写一篇)

之前对于环的解释&#xff0c;不太行&#xff0c;这里我给出进一步地说明。 首先对环的解释: 我这里说的环指的是频域段中的ai变化的时候对图像像素的变化的极大的影响程度的环状效果&#xff0c;会出现不规则的环状的提亮或增暗的效果。实际上是每个fj都有影响&#xff0c;但…

《数据结构与算法之美》学习笔记一

前言&#xff1a;今天开始学习极客时间的课程《数据结构与算法之美》。为撒要学习这个&#xff1f;因为做力扣题太费劲了&#xff0c;自己的基础太差了&#xff01;所以要学习学习。开一个系列记录一下学习笔记。认真学吧&#xff0c;学有所获才不负韶华&#xff01;之前就学过…

[蓝桥杯]真题讲解:AB路线(BFS+分层图)

[蓝桥杯]真题讲解&#xff1a;AB路线&#xff08;BFS分层图&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;AB路线&#xff08;BFS分层图&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #define INF …