【记录一个问题】linux+opencv+cuvid解码1080P视频,当使用CUDA核函数的时候,必然崩溃
2024-08-29 05:01:29
崩溃的信息如下:
1 OpenCV(4.1.0-dev) Error: Gpu API call (invalid configuration argument) in videoDecPostProcessFrame, file /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuda/nv12_to_rgb.cu, line 203
2 terminate called after throwing an instance of 'cv::Exception'
3 what(): OpenCV(4.1.0-dev) /home/admin/opencv/opencv_contrib-master/modules/cudacodec/src/cuda/nv12_to_rgb.cu:203: error: (-217:Gpu API call) invalid configuration argument in function 'videoDecPostProcessFrame'
4
5 Aborted (core dumped)
比较奇怪的点如下:
1. 同样的程序,解码720P视频/480P视频,并调用CUDA核函数做进一步处理,正常;
但是换1080P视频就出现以上错误。
2.1080P视频解码第一帧,并计算,正常;
但是第二帧的时候就发生以上错误。
3.写一个空的核函数,什么也不错,1080P视频在解码第二帧的时候仍然发生错误。
如果完全不调用核函数,一切正常。
看起来不是我自己的代码的锅,要提交给OPENCV团队才能解决。
==================================
2019-05-16 15:00 补充,问题已解决
关键问题是核函数中线程开太多了。我把代码修改成了如下:
1 if (rows>500){
2 _hsv_cacl_hist<<<1, rows/2>>>(data, cols, rows/2, step, channels, (uint32_t*)out->hist);
3 _hsv_cacl_hist<<<1, rows/2>>>(data+step*(rows/2), cols, rows/2, step, channels, (uint32_t*)out->hist);
4 } else {
5 _hsv_cacl_hist<<<1, rows>>>(data, cols, rows, step, channels, (uint32_t*)out->hist);
6 }
(虽然很丑陋)以上代码解决了崩溃的问题。
但是奇怪的是,为什么不在这个函数里崩溃,而要在视频解码里崩溃?
最新文章
- 欢迎进入MyKTV前后台点歌系统展示
- Swift - 初始化Initialization
- MyBatis知多少(1)
- [CH#58解题报告]
- Crashing Robots 分类: POJ 2015-06-29 11:44 10人阅读 评论(0) 收藏
- C#指针操作Marshal实例
- Lua Script
- Codevs 3990 中国余数定理 2
- 零基础学redis
- android 滚动条
- 基于.net开发chrome核心浏览器【二】
- GPRS DTU概念及DTU的工作原理(转)
- 【Egret】Native版本 视频播放器(android)
- C#之IComparable用法,实现List<;T>;.sort()排序
- kickstart文件制作与光盘镜像制作
- 唐平中讲座笔记 Reinforcement mechanism design 20171107
- 01springboot快速入门
- h5游戏引擎有哪些
- Office 2010 安装程序包的语言不受系统支持
- windows10删除开始菜单中的xbox、人脉、邮件等应用
热门文章
- IPV4和IPV6 特殊地址块
- JAVA结合WebSocket实现简单客服聊天功能
- UDP&;串口调试助手用法(2)
- git 命令之暂存相关指令。
- 【LeetCode】1399. 统计最大组的数目 Count Largest Group
- FilesCodingConvert--批量文件编码格式转换工具
- 【LeetCode】430. Flatten a Multilevel Doubly Linked List 解题报告(Python)
- 【LeetCode】392. Is Subsequence 解题报告(Python)
- 教学日志:javaSE-java中的数据类型和运算符
- 『学了就忘』vim编辑器基础 — 95、命令模式中的相关命令