建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月06日 18:02:13 248 21
直达本楼层的链接
楼主
显示全部楼层
[问题求助] 【ATLAS200】【JPEGE功能】循环执行图片编码会报错

【功能模块】

  自己写的程序发现图片编码过程中,莫名其妙的报段错误之类,自己的程序是一直接rtsp流,视频解码,图片Resize ,图片crop,图片编码,加入编码功能后程序运行一会就报错(之前怎么跑都正常),所以使用sample测试,修改成循环读取图片编码

   acl_execute_model\acl_vpc_jpege_resnet50


【操作步骤&问题现象】

1、执行 

Result SampleProcess::JpegeProcess(DvppType dvpptype)  其中参数是3进来

2、

修改了部分代码让其循环执行,之前资源初始化在循环体外,也报错,后面直接放循环内了


Result SampleProcess::JpegeProcess(DvppType dvpptype)
{
    DvppProcess processDvpp(stream_);
    processDvpp.SetDvppType(dvpptype);
   
    while (1)
    {
         Result ret = processDvpp.InitResource();
        if (ret != SUCCESS) {
            ERROR_LOG("init dvpp resource failed");
            return FAILED;
        }
        ret = processDvpp.ProcessJpegE();
        if (ret != SUCCESS) {
            processDvpp.DestroyEncodeResource();
            ERROR_LOG("process jpege failed");
            return FAILED;
        }
        processDvpp.DestroyResource();
        sleep(4);
    }
    
    return SUCCESS;
}


并增加一些打印


【截图信息】

[INFO]  acl init success
[INFO]  open device 0 success
[INFO]  create context success
[INFO]  create stream success
[INFO]  get run mode success
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
[INFO]  aclrtSynchronizeStream end
[INFO]  acldvppJpegEncodeAsync size:252048
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
[INFO]  aclrtSynchronizeStream end
[INFO]  acldvppJpegEncodeAsync size:252048
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
[INFO]  aclrtSynchronizeStream end
[INFO]  acldvppJpegEncodeAsync size:252048
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
[INFO]  aclrtSynchronizeStream end
[INFO]  acldvppJpegEncodeAsync size:252048
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
[INFO]  aclrtSynchronizeStream end
[INFO]  acldvppJpegEncodeAsync size:252048
[INFO]  dvpp init resource success
[INFO]  start to process picture:./data/wood_rabbit_1024_1068_nv12.yuv
[INFO]  Call JpegE
[INFO]  ComputeEncodeInputSize w:1024,h:1068,size:1640448
[INFO]  GetPicDevBuffer4JpegE size:1640448
[INFO]  acldvppJpegPredictEncSize size:2097152
[INFO]  acldvppJpegEncodeAsync begin
[INFO]  acldvppJpegEncodeAsync end
[INFO]  aclrtSynchronizeStream begin
Segmentation fault (core dumped)

其中while循环能不固定的循环几轮,也就几轮,程序就报错


【日志信息】(可选,上传日志内容或者附件)


举报
分享

分享文章到朋友圈

分享文章到微博

wcyjy

发帖: 2粉丝: 4

级别 : 版主

发消息 + 关注

发表于2020年11月06日 18:09:59
直达本楼层的链接
沙发
显示全部楼层

可以把您的工程文件发过来,这边看下吗?


点赞 评论 引用 举报

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月06日 18:17:13
直达本楼层的链接
板凳
显示全部楼层

附件是原先acl_execute_model\acl_vpc_jpege_resnet50 例子做了少许修改,读取yuv文件的路径稍微修改为了当前目录的data目录下,

DestroyEncodeResource

加上了编码输出的buf

sample.zip 17.51 KB,下载次数:2

点赞 评论 引用 举报

wcyjy

发帖: 2粉丝: 4

级别 : 版主

发消息 + 关注

发表于2020年11月09日 08:43:03
直达本楼层的链接
地板
显示全部楼层

问题已收录,正在咨询相关专家,待回复。

点赞 评论 引用 举报

yaphets

发帖: 15粉丝: 3

级别 : 版主

发消息 + 关注

发表于2020年11月09日 10:34:20
直达本楼层的链接
5#
显示全部楼层

日志发一下

点赞 评论 引用 举报

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月10日 09:12:37
直达本楼层的链接
6#
显示全部楼层

截图就是日志打印

点赞 评论 引用 举报

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月10日 09:21:31
直达本楼层的链接
7#
显示全部楼层

有一点我也觉得奇怪

比如YUV文件数据读出来 是                1640448 大小,正常理解压缩后的数据肯定是比这个数值小的数量级,但是acldvppJpegPredictEncSize函数判断出来的要分配空间的比原数据大小还大    2097152,这不忒符合常理,

                          实际压缩后的大小只有252048


点赞 评论 引用 举报

wcyjy

发帖: 2粉丝: 4

级别 : 版主

发消息 + 关注

发表于2020年11月10日 11:06:30
直达本楼层的链接
8#
显示全部楼层

正在咨询专家,稍后回复

点赞 评论 引用 举报

yaphets

发帖: 15粉丝: 3

级别 : 版主

发消息 + 关注

发表于2020年11月10日 11:12:13
直达本楼层的链接
9#
显示全部楼层

这是我运行的结果,我尝试了对同一张图片进行了50次的encode。

图片输入3072*2048,由于16*2对齐后还是一样,所以对齐后也是这个高宽。yuv420计算图片大小3072*1024*3/2=10485760没问题。调用 接口predict encode的结构得到10485760和encodeAsync之后的输出大小都是10485760。所以你的问题出在为什么你调用Async之后图片size会改变。这个地方你需要查看日志,才能知道为什么后面Async会出错,你截图只是打印部分信息。

image.png

image.png

点赞 评论 引用 举报

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月10日 19:10:52
直达本楼层的链接
10#
显示全部楼层

你好,是否可以把你的源码和yuv文件发给我

点赞 评论 引用 举报

程序员2020

发帖: 1粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年11月10日 19:13:54
直达本楼层的链接
11#
显示全部楼层

我的邮箱bjlu@fokantech.com

谢谢!   代码和YUV文件,麻烦您发我一下

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册