华为昇腾310B1平台视频解码失败[ERROR] Send frame to vdec failed, errorno:507018

news2024/10/6 6:49:46

目录

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

2 bug解决尝试1

3 bug解决尝试2

4 最终解决方法

参考文献:


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 desc
        AclLiteError atlRet = CreateInputStreamDesc(frameData);
        if (atlRet != ACLLITE_OK) {
            ACLLITE_LOG_ERROR("Create stream desc failed");
            return atlRet;
        }

        if (!frameData->isFinished) {
            // create out desc
            atlRet = 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 decode
        ret = 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 size
        ret = acldvppSetStreamDescData(streamInputDesc_, inBufferDev);
        ret = acldvppSetStreamDescSize(streamInputDesc_, inBufferSize);

        // Device memory g_picOutBufferDev is used to store output data decoded by VDEC
        ret = acldvppMalloc(&g_picOutBufferDev, dataSize);

        // Create output image description information, set the image description information properties
        // picOutputDesc_ is acldvppPicDesc
        picOutputDesc_ = 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 automatically
         calls callback callback function to write the decoded data to the file, and then timely release
         relevant resources */
        ret = aclvdecSendFrame(vdecChannelDesc_, streamInputDesc_, picOutputDesc_, nullptr, nullptr);
        printf("ret  =================%d\n", ret);
        restLen = restLen - 1;
    }

运行结果如下

demo报同样的错误,但是我发现如果原视频用华为的std::string filePath =  "../data/vdec_h265_1frame_rabbit_1280x720.h265"就不报错,换成我自己的几个视频就报错。

4 最终解决方法

华为技术支持让试试:samples: CANN Samples - Gitee.com

https://gitee.com/ascend/samples/tree/master/cplusplus/level1_single_api/7_dvpp/vdec_sample

 我试了下这个,发现是可以,没报错,那么需要将我的工程中的解码代码全都替换成这个sample的这些接口,需要把解码代码重写。

另外下图是这个sample对应的解码原理

参考文献:

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

samples: CANN Samples - Gitee.com

samples: CANN Samples - Gitee.com

昇腾社区-官网丨昇腾万里 让智能无所不及

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot:异常处理

Spring Boot 前言使用自定义错误页面处理异常使用 ExceptionHandler 注解处理异常使用 ControllerAdvice 注解处理异常使用配置类处理异常使用自定义类处理异常 前言 在 Spring Boot 中&#xff0c;异常处理是一个重要的部分&#xff0c;可以允许开发者优雅地处理应用程序中可…

平地惊雷,GPT-4o 凌晨震撼发布

GPT-4o 今日凌晨&#xff0c;OpenAI 2024 年春季发布会召开&#xff0c;OpenAI 通过短短 28 分钟的发布会&#xff0c;发布了「再次震惊世界」的 GPT-4o&#xff0c;其中 o 是指 omni&#xff08;全能&#xff09;的意思。 一款「全新交互&#xff08;支持 文本/音频/视频 组合…

平安养老险深圳分公司携手福海街道开展5.12防灾减灾活动

在构建和谐社会、倡导人文关怀的当下&#xff0c;平安养老险深圳分公司以高度的社会责任感和深厚的人文情怀&#xff0c;持续关注老年人的健康与安全。在今年“5.12防灾减灾日”来临之际&#xff0c;公司积极响应倡议&#xff0c;于5月10日携手福海街道举办了一场别开生面的消防…

web学习记录--(5.14)

1.Sublime安装与汉化 直接点击windows即可下载&#xff0c;安装即可 Thank You - Sublime Text 汉化 Install Package ChineseLocalzation 2.PHPstorm下载以及激活,汉化 直接下载&#xff0c;然后找激活码激活即可 汉化 plugins&#xff08;插件&#xff09;/chinese&…

【源码】相亲交友系统全新UI/情感测试/婚庆中介/交友系统

【交友】相亲交友系统全新UI/情感测试/婚庆中介/交友系统 带商城&#xff0c;情感测试。 https://www.52codes.cc/codes/qt

YOLOv5改进 | 主干网络 | 在backbone添加Swin-Transformer层

尽管Ultralytics 推出了最新版本的 YOLOv8 模型。但YOLOv5作为一个anchor base的目标检测的算法&#xff0c;YOLOv5可能比YOLOv8的效果更好。注意力机制是提高模型性能最热门的方法之一&#xff0c;本文给大家带来的教程是添加Swin-Transformer到backbone中。文章在介绍主要的原…

C# OpenCvSharp Demo - 最大内接圆

C# OpenCvSharp Demo - 最大内接圆 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; namespace OpenCvSh…

YOLOv5独家改进:backbone改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,这就是StarNet的核心创新,在紧凑的网络结构和较低的能耗下展示了令人印象深刻的性能和低延迟 💡💡💡如何跟YOLOv5结合:替代YOLOv5的backbone 收录 YOL…

分享一个基于Qt的Ymodem的上位机(GitHub开源)

文章目录 1.项目地址2.Ymodem 协议介绍3.文件传输过程4.使用5.SecureCRT 软件也支持Ymodem6.基于PyQt5的Ymodem界面实现案例 1.项目地址 https://github.com/XinLiGH/SerialPortYmodem 基于VS2019 Qt5.15.2 编译&#xff0c;Linux下编译也可以&#xff0c;这里不做说明。 2.…

ROS2+TurtleBot3+Cartographer+Nav2实现slam建图和导航

0 引言 入门机器人最常见的应用就是slam建图和导航&#xff0c;本文将详细介绍这一流程&#xff0c; 便于初学这快速上手。 首先对需要用到的软件包就行简单介绍。 turtlebot3: 是一个小型的&#xff0c;基于ros的移动机器人。 学习机器人的很多示例程序都是基于turtlebot3。 …

51 单片机[2-1]:点亮一个LED

一、在 Keil5 中新建项目 打开 Keil5 &#xff0c;点击 Project —— new μVision Project 新建文件夹 KeilProject &#xff0c;以后的项目都在这个文件夹下&#xff0c;再建一个文件夹 2-1 点亮一个LED。在该文件夹下创建名为 Project 的文件&#xff0c;并保存。推荐起这…

金万维动态域名小助手怎么用?

金万维动态域名小助手是一个域名检测工具&#xff0c;使用此工具可以进行检测域名解析是否正确、清除DNS缓存、修改DNS服务器地址及寻找在线客服&#xff08;仅支持付费用户&#xff09;等操作。对不懂网络的用户是一个很好的检测域名的工具&#xff0c;下面我就讲解一下金万维…

TimesFM: 预训练的时间序列基础模型

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在阅读过程中有些知识点存在盲区&#xff0c;可以回到如何优雅的谈论大模型重新阅读。另外斯坦福2024人工智能报告解读为通识性读物。若对于如果…

根据Word文档用剪映批量自动生成视频发布抖音

手头有大量word文档&#xff0c;想通过剪映的AI图文成片功能批量生成视频&#xff0c;发布到抖音平台&#xff0c;简单3步即可&#xff1a; 第一步&#xff1a;把word文档或者PDF等文档转成txt文本&#xff0c;可以用一些软件&#xff0c;也可以用AI工具&#xff0c;具体常见文…

Windows下编译RTTR

虽然C11引入了RTTI、Metaprogramming 等技术&#xff0c;但C在Reflection编程方面依旧功能有限。在社区上&#xff0c;RTTR则提供了一套C编写的反射库&#xff0c;补充了C在Reflection方面的缺陷。 零、环境 操作系统Windows 11Visual StudioVisual Studio Community 2022 CMa…

Qt---Socket通信

一、TCP/IP通信 在Qt中实现TCP/IP服务器端通信的流程&#xff1a; 1. 创建套接字 2. 将套接字设置为监听模式 3. 等待并接受客户端请求 可以通过QTcpServer提供的void newConnection()信号来检测是否有连接请求&#xff0c;如果有可以在对应的槽函数中调用nextPendingCon…

【现代C++】范围库的应用

C20引入了范围库&#xff08;Ranges library&#xff09;&#xff0c;它是标准模板库&#xff08;STL&#xff09;的一个扩展&#xff0c;提供了一种新的方式来处理序列和范围。这个库允许开发者以更声明式的方式编写代码&#xff0c;使得操作序列变得更简洁、更易读。以下是C范…

【web网页开发制作】Html+Css+Js游戏主题特效及轮播效果网页作业天涯明月刀(7页面附源码)

HTMLCSSJS游戏主题轮播效果 &#x1f354;涉及知识&#x1f964;写在前面✨特效展示特效1、轮播幻灯效果特效2和3、鼠标悬浮及点击效果 &#x1f367;一、网页主题&#x1f333;二、网页效果Page1、首页Page2、游戏简介Page3、新闻中心Page4、互动专区Page5、视听盛宴Page6、用…

Kotlin协程实战指南:解锁Android开发高效能新时代

前言 在移动互联网的狂飙突进之中&#xff0c;Android开发领域如同站在风口的勇士&#xff0c;不断接受技术迭代与创新的双重洗礼。在这个快速变化的市场里&#xff0c;用户对应用性能和体验的期待水涨船高&#xff0c;开发者们面临的挑战也越来越大&#xff1a;如何在功能的丰…

Dart 3.4 发布:Wasm Native Macros(宏)

Google I/O 的结束&#xff0c;除了 Flutter 3.22 的发布 &#xff0c;Dart 3.4 也迎来了它是「史诗级」的更新&#xff0c;之所以这么说&#xff0c;就是因为 Wasm Native 的落地和 Macros 的实验性展示。 在此之前&#xff0c;其实我也提前整理过一些对应的内容&#xff0c;…