Toybrick

楼主: jefferyzhang

RK3399Pro入门教程(5)图形加速引擎RGA的使用

 

zhanggf

新手上路

积分
26
发表于 2022-4-25 05:01:32 | 显示全部楼层
请问我想将摄像头获取的两帧数据做异或运算。执行improcess_t报错Device or resource busy,请问是什么情况?执行imstatus = imcopy(rga_pre,rga_out);也会有同样的报错。

以下是错误打印:
RgaBlit(1387) RGA_BLIT fail: Device or resource busy
RgaBlit(1388) RGA_BLIT fail: Device or resource busy
fd-vir-phy-hnd-format[10, (nil), (nil), (nil), 0]
rect[0, 0, 1920, 1080, 1920, 1080, 512, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1]
fd-vir-phy-hnd-format[17, (nil), (nil), (nil), 0]
rect[0, 0, 1920, 1080, 1920, 1080, 512, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 1]
This output the user patamaters when rga call blit fail
srect[x,y,w,h] = [0, 0, 0, 0] src[w,h,ws,hs] = [1920, 1080, 1920, 1080]

drect[x,y,w,h] = [0, 0, 0, 0] dst[w,h,ws,hs] = [1920, 1080, 1920, 1080]

usage[0x80000]

以下是代码:
            cam_frm_idx = camera_source_get_frame(pcam);
            printf("ncap:%u %d %d\n",Time_GetTickCount(),++ncap,cam_frm_idx);  
            if(cam_frm_idx_pre != -1)
            {
                if(outbuffer == NULL)
                    mpp_buffer_get(group,&outbuffer,pfmt->fmt.pix.width*pfmt->fmt.pix.height*3);

                MppBuffer prebuffer = camera_frame_to_buf(pcam, cam_frm_idx_pre);
                MppBuffer curbuffer = camera_frame_to_buf(pcam, cam_frm_idx);

                int pre_fd = mpp_buffer_get_fd(prebuffer);
                int cur_fd = mpp_buffer_get_fd(curbuffer);
                int out_fd = mpp_buffer_get_fd(outbuffer);
                rga_buffer_t rga_pre = wrapbuffer_fd(pre_fd, pfmt->fmt.pix.width,pfmt->fmt.pix.height, RK_FORMAT_RGB_888);
                rga_buffer_t rga_cur = wrapbuffer_fd(cur_fd, pfmt->fmt.pix.width,pfmt->fmt.pix.height, RK_FORMAT_RGB_888);
                rga_buffer_t rga_out = wrapbuffer_fd(out_fd, pfmt->fmt.pix.width,pfmt->fmt.pix.height, RK_FORMAT_RGB_888);


                IM_STATUS imstatus;
                {
                    im_opt_t opt;
                    int out_fence_fd;
                    im_rect srect;
                    im_rect drect;
                    im_rect prect;

                    empty_structure(NULL, NULL, NULL, &srect, &drect, &prect, &opt);
                    imstatus = improcess_t(rga_pre, rga_cur, rga_out, srect, drect, prect, -1, &out_fence_fd, &opt, IM_ALPHA_BLEND_XOR);
                }
                printf("imstatus xor:%u %d\n",Time_GetTickCount(),imstatus);

                printf("push back:%d\n",cam_frm_idx_pre);
                camera_source_put_frame(pcam, cam_frm_idx_pre);
            }
回复

使用道具 举报

ozgaga

注册会员

积分
63
发表于 2022-5-21 18:02:43 | 显示全部楼层
本帖最后由 ozgaga 于 2022-5-21 18:03 编辑

在RV1126上做图像降噪等处理(基于OpenCV,不知有没有更好的方案),但是RV1126的CPU似乎有点弱(bogomips仅100出头,四个核加起来500不到),处理起来非常慢
可以考虑使用CPU+RGA处理吗,不知道RGA能否做图像的卷积、加、减、点乘等操作,不知道RGA能接受多大的工作量
还有就是NPU能否用来做常规的图像处理
回复

使用道具 举报

848451399

新手上路

积分
22
发表于 2022-6-16 15:48:08 | 显示全部楼层
请问有rga的源码吗,我的是3399pro板子,但是使用rga库的时候会报"/lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by librga.so)
"这个错,需要用源码重新编译一个库才能使用吗?
回复

使用道具 举报

jefferyzhang

论坛元老

积分
10096
 楼主| 发表于 2022-6-17 08:46:25 | 显示全部楼层
848451399 发表于 2022-6-16 15:48
请问有rga的源码吗,我的是3399pro板子,但是使用rga库的时候会报"/lib/aarch64-linux-gnu/libm.so.6: vers ...

https://github.com/airockchip/librga
回复

使用道具 举报

848451399

新手上路

积分
22
发表于 2022-6-17 10:31:34 | 显示全部楼层
本帖最后由 848451399 于 2022-6-17 10:35 编辑

我用的就是这里面的库.开发的时候用这个库会提示librga.so: undefined reference to `log@GLIBC_2.29'
回复

使用道具 举报

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

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表