|
我想将摄像头获取的两帧数据做异或运算。执行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);
}
|
|