Toybrick

RK3588S RGA resize 概率性报错

jianglf

新手上路

积分
13
楼主
发表于 4 小时前    查看: 57|回复: 3 | [复制链接]    打印 | 只看该作者
您好,请帮看下jpeg resize的问题。

mpp decode 的MppBuffer 经rga resize 到 encode input mppbuffer.

报错如下:
用户层:
RgaBlit(1513) RGA_BLIT fail: Invalid argument
RgaBlit(1514) RGA_BLIT fail: Invalid argument
handl-fd-vir-phy-hnd-format[5359, 0, (nil), (nil), 0, 0]
rect[0, 0, 4000, 3008, 4000, 3008, 2560, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 0]
handl-fd-vir-phy-hnd-format[5360, 0, (nil), (nil), 0, 0]
rect[0, 0, 400, 304, 400, 304, 2560, 0]
f-blend-size-rotation-col-log-mmu[0, 0, 0, 0, 0, 0, 0]
157070 im2d_rga_impl rga_task_submit(2171): Failed to call RockChipRga interface, please use 'dmesg' command to view driver error log.
157070 im2d_rga_impl rga_dump_channel_info(1500): src_channel:
  rect[x,y,w,h] = [0, 0, 0, 0]
  image[w,h,ws,hs,f] = [4000, 3008, 4000, 3008, nv12]
  buffer[handle,fd,va,pa] = [5359, 0, 0, 0]
  color_space = 0x0, global_alpha = 0xff, rd_mode = 0x1

157070 im2d_rga_impl rga_dump_channel_info(1500): dst_channel:
  rect[x,y,w,h] = [0, 0, 0, 0]
  image[w,h,ws,hs,f] = [400, 304, 400, 304, nv12]
  buffer[handle,fd,va,pa] = [5360, 0, 0, 0]
  color_space = 0x0, global_alpha = 0xff, rd_mode = 0x1

157070 im2d_rga_impl rga_dump_opt(1550): opt version[0x10a0100]:

157070 im2d_rga_impl rga_dump_opt(1551): set_core[0x0], priority[0]

157070 im2d_rga_impl rga_task_submit(2180): acquir_fence[-1], release_fence_ptr[0x0], usage[0x80000]

imcvtcolor running failed, Fatal error: Failed to call RockChipRga interface, please use 'dmesg' command to view driver error log.




kernel :[  492.587542] rga_job: failed to get scheduler, rga_job_commit(407)
[  492.587551] rga_job: request[9192] task[0] job_commit failed.
[  492.587556] rga_job: rga request[9192] commit failed!
[  492.587559] rga: request[9192] submit failed!
[  492.670452] rga_policy: invalid function policy
[  492.670461] rga_job: job assign failed
[  492.670470] rga_job: failed to get scheduler, rga_job_commit(407)
[  492.670479] rga_job: request[9197] task[0] job_commit failed.
[  492.670484] rga_job: rga request[9197] commit failed!
[  492.670487] rga: request[9197] submit failed!
[  492.766123] rga_policy: invalid function policy
[  492.766135] rga_job: job assign failed
[  492.766145] rga_job: failed to get scheduler, rga_job_commit(407)
[  492.766158] rga_job: request[9203] task[0] job_commit failed.
[  492.766167] rga_job: rga request[9203] commit failed!
[  492.766173] rga: request[9203] submit failed!
[  492.851444] rga_policy: invalid function policy
[  492.851454] rga_job: job assign failed

resize代码:
int Scale4(int fd, int src_width, int src_height, int dst_width ,int dst_height,void *outmppbuffer)
{
    int ret = 0;
    int64_t start = 0;
    int src_buf_size, dst_buf_size ,tmp_buf_size;

    rga_buffer_t src_img, dst_img ,tmp_img;
    rga_buffer_handle_t src_handle, dst_handle,tmp_handle;
    memset(&src_img, 0, sizeof(src_img));
    memset(&dst_img, 0, sizeof(dst_img));

    memset(&tmp_img, 0, sizeof(tmp_img));


//    int dst_width = 1280;
//    int dst_height = 960;
//    int dst_width = 640;
//    int dst_height = 480;
    int src_format = RK_FORMAT_YCbCr_420_SP;
    int tmp_format =  RK_FORMAT_RGB_888;
    int dst_format = RK_FORMAT_YCbCr_420_SP;



    src_buf_size = src_width * src_height * get_bpp_from_format(src_format);
    dst_buf_size = dst_width * dst_height * get_bpp_from_format(dst_format);



    char *tmp_buf;
    int tmp_dma_fd;
//    int tmp_width = 4000;
//    int tmp_height = 3000;
//    int tmp_width = 1280;
//    int tmp_height = 960;
//    int tmp_width = 640;
//    int tmp_height = 480;



    FILE *fp_output2 = NULL;
    FILE *fp_output3 = NULL;
    unsigned char *bufaddr= NULL;

    start = get_cur_us();
    src_handle = importbuffer_fd(fd, src_buf_size);


    mpp_buffer_sync_begin(outmppbuffer);

    int fd2 = mpp_buffer_get_fd(outmppbuffer);
    int size = mpp_buffer_get_size(outmppbuffer);
    dst_handle = importbuffer_fd(fd2, dst_buf_size);


    printf("Scale4Scale4 outmppbuffer fd2 =%d size=%lld\n",fd2,size);
    if (src_handle == 0 || dst_handle == 0) {
        printf("importbuffer failed! src_handle=%d,dst_handle=%d\n",src_handle,dst_handle);
        goto release_buffer;
        // goto free_buf;
    }

    src_img = wrapbuffer_handle(src_handle, src_width, src_height, src_format);
    dst_img = wrapbuffer_handle(dst_handle, dst_width, dst_height, dst_format);




    ret = imcheck(src_img, dst_img, {}, {});
    if (IM_STATUS_NOERROR != ret) {
        printf("%d, check error! %s", __LINE__, imStrError((IM_STATUS)ret));
        return -1;
    }

//    ret = imcvtcolor(src_img, tmp_img, src_format, tmp_format);
    ret = imresize(src_img, dst_img);
    if (ret == IM_STATUS_SUCCESS) {

        printf("imcvtcolor running success!\n");
    } else {
        printf("imcvtcolor running failed, %s\n", imStrError((IM_STATUS)ret));
        goto release_buffer;
    }

    printf("resize use = %lld\n",get_cur_us()-start);



    mpp_buffer_sync_end(outmppbuffer);

    bufaddr =  (unsigned char*)mpp_buffer_get_ptr(outmppbuffer);
    mpp_buffer_get_size(outmppbuffer);

    printf("resize and color change    use = %lld\n",get_cur_us()-start);

//            fp_output2 = fopen("./out_1280_960_yuv420p.bin", "w+b");
//            if (NULL == fp_output2) {
//                printf("failed to open output file\n");
//
//            }
//            fwrite(bufaddr, 1, size, fp_output2);
//            fclose(fp_output2);


#ifdef DEBUG_TIME
    printf("RGA_Scale3   -- 33--- src fd =%d crop and resize use(%d)(us)\n", fd, get_cur_us() - start);
#endif


    release_buffer:
    if (src_handle)
        releasebuffer_handle(src_handle);
    if (dst_handle)
        releasebuffer_handle(dst_handle);




    if(ret == IM_STATUS_SUCCESS){

    }else{

    }

    return ret;
}



回复

使用道具 举报

jianglf

新手上路

积分
13
沙发
 楼主| 发表于 4 小时前 | 只看该作者
补充:
rga版本:
root@orangepi5pro:/# cat /sys/kernel/debug/rkrga/driver_version
RGA multicore Device Driver: v1.3.0

strings librga.a  | grep rga_api
rga_api version 1.10.1_[0]
回复

使用道具 举报

jianglf

新手上路

积分
13
板凳
 楼主| 发表于 3 小时前 | 只看该作者
补充:
rga版本:
root@orangepi5pro:/# cat /sys/kernel/debug/rkrga/driver_version
RGA multicore Device Driver: v1.3.0

strings librga.a  | grep rga_api
rga_api version 1.10.1_[0]
回复

使用道具 举报

jefferyzhang

版主

积分
15271
地板
发表于 半小时前 | 只看该作者
可能是缩放倍数超了,你可以看下文档有介绍如何query当前设备支持的缩放倍数
回复

使用道具 举报

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

本版积分规则

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


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