专栏底层软件PYM + GDC 图像去畸变&resize操作问题

PYM + GDC 图像去畸变&resize操作问题

张飞飞962023-09-14
161
1

用户您好,请详细描述您所遇到的问题。

1.硬件获取渠道:

2.当前系统镜像版本:

3.当前天工开物版本:

4.问题定位:

5.开发的demo/案例:

问题描述:

J5平台上使用GDC和PYM进行去畸变和resize操作,目前采取的顺序是先去畸变再做resize。但在实车平台测试时hb_vio_get_data 操作报错,排查发现因为实车上的pym_mode设置为2,hb_vio_get_data(pipe_id, HB_VIO_PYM_FEEDBACK_SRC_DATA, &src_pym_buf) 这一步操作会报错,而在回灌模式时候是没有问题的。所以请问gdc+pym使用的时候只能是先resize再做去畸变?pym到gdc的数据传输有特殊方式吗,能不能用HB_VIO_GDC_FEEDBACK_SRC_DATA拷贝回灌?先做resize再做去畸变,去畸变参数的重新计算有没有可参考的例子?

代码实现和配置文件如下:
hb_vio_buffer_t src_gdc_buf;
hb_vio_buffer_t dst_gdc_buf;
hb_vio_buffer_t src_pym_buf;

int ret = hb_vio_get_data(pipe_id, HB_VIO_GDC_FEEDBACK_SRC_DATA, &src_gdc_buf);

int y_size = src_gdc_buf.img_addr.stride_size * src_gdc_buf.img_addr.height;
memcpy(src_gdc_buf.img_addr.addr[0], buffer_y, y_size);
memcpy(src_gdc_buf.img_addr.addr[1], buffer_uv, y_size/2);
ret = hb_vio_run_gdc(pipe_id, &src_gdc_buf, &dst_gdc_buf, need_gdc_process);

ret = hb_vio_get_data(pipe_id, HB_VIO_PYM_FEEDBACK_SRC_DATA, &src_pym_buf);

y_size = src_pym_buf.img_addr.stride_size * src_pym_buf.img_addr.height;
memcpy(src_pym_buf.img_addr.addr[0], dst_gdc_buf.img_addr.addr[0], y_size);
memcpy(src_pym_buf.img_addr.addr[1], dst_gdc_buf.img_addr.addr[1], y_size/2);

ret = hb_vio_run_pym(pipe_id, &src_pym_buf);

配置文件:

{

"pipeline0": {

"pym": {

"pym_config": {

"pym_hw_id":2,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 1920,

"src_in_height": 1080,

"src_in_stride_y": 1920,

"src_in_stride_uv": 1920,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 1920,

"src_region_height": 1080,

"src_out_stride_y": 1920,

"src_out_stride_uv": 1920,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 1,

"gs_en": 1,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 960,

"gs_region_height": 540,

"gs_stride_y": 960,

"gs_stride_uv": 960

}

],

"bl_max_layer_en": 1,

"bl_en": 0,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 0,

"ds_roi_sel": 2,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":1920,

"input_height":1080,

"output_width":1920,

"output_height":1080,

"buf_num": 8,

"fb_buf_num": 8

}

},

"pipeline1": {

"pym": {

"pym_config": {

"pym_hw_id":1,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 3840,

"src_in_height": 2160,

"src_in_stride_y": 3840,

"src_in_stride_uv": 3840,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 3840,

"src_region_height": 2160,

"src_out_stride_y": 3840,

"src_out_stride_uv": 3840,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 5,

"gs_en": 0,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 20,

"gs_start_left": 50,

"gs_region_width": 480,

"gs_region_height": 300,

"gs_stride_y": 480,

"gs_stride_uv": 480

},

{

"gs_start_top": 10,

"gs_start_left": 40,

"gs_region_width": 240,

"gs_region_height": 130,

"gs_stride_y": 240,

"gs_stride_uv": 240

},

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 130,

"gs_region_height": 70,

"gs_stride_y": 130,

"gs_stride_uv": 130

},

{

"gs_start_top": 10,

"gs_start_left": 0,

"gs_region_width": 64,

"gs_region_height": 32,

"gs_stride_y": 64,

"gs_stride_uv": 64

},

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 0,

"gs_region_height": 0,

"gs_stride_y": 0,

"gs_stride_uv": 0

}

],

"bl_max_layer_en": 2,

"bl_en": 1,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 1920,

"bl_region_height": 1080,

"bl_stride_y": 1920,

"bl_stride_uv": 1920

},

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 1,

"ds_roi_sel": 1,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":3840,

"input_height":2160,

"output_width":3840,

"output_height":2160,

"buf_num": 8,

"fb_buf_num": 8

}

},

"pipeline2": {

"pym": {

"pym_config": {

"pym_hw_id":2,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 1920,

"src_in_height": 1080,

"src_in_stride_y": 1920,

"src_in_stride_uv": 1920,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 1920,

"src_region_height": 1080,

"src_out_stride_y": 1920,

"src_out_stride_uv": 1920,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 1,

"gs_en": 1,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 960,

"gs_region_height": 540,

"gs_stride_y": 960,

"gs_stride_uv": 960

}

],

"bl_max_layer_en": 1,

"bl_en": 0,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 0,

"ds_roi_sel": 2,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":1920,

"input_height":1080,

"output_width":1920,

"output_height":1080,

"buf_num": 8,

"fb_buf_num": 8

}

},

"pipeline3": {

"pym": {

"pym_config": {

"pym_hw_id":2,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 1920,

"src_in_height": 1080,

"src_in_stride_y": 1920,

"src_in_stride_uv": 1920,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 1920,

"src_region_height": 1080,

"src_out_stride_y": 1920,

"src_out_stride_uv": 1920,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 1,

"gs_en": 1,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 960,

"gs_region_height": 540,

"gs_stride_y": 960,

"gs_stride_uv": 960

}

],

"bl_max_layer_en": 1,

"bl_en": 0,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 0,

"ds_roi_sel": 2,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":1920,

"input_height":1080,

"output_width":1920,

"output_height":1080,

"buf_num": 8,

"fb_buf_num": 8

}

},

"pipeline4": {

"pym": {

"pym_config": {

"pym_hw_id":2,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 1920,

"src_in_height": 1080,

"src_in_stride_y": 1920,

"src_in_stride_uv": 1920,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 1920,

"src_region_height": 1080,

"src_out_stride_y": 1920,

"src_out_stride_uv": 1920,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 1,

"gs_en": 1,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 960,

"gs_region_height": 540,

"gs_stride_y": 960,

"gs_stride_uv": 960

}

],

"bl_max_layer_en": 1,

"bl_en": 0,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 0,

"ds_roi_sel": 2,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":1920,

"input_height":1080,

"output_width":1920,

"output_height":1080,

"buf_num": 8,

"fb_buf_num": 8

}

},

"pipeline5": {

"pym": {

"pym_config": {

"pym_hw_id":2,

"pym_mode": 0,

"output_buf_num": 6,

"time_out": 6000,

"y_hor_coeff4": 0,

"y_hor_coeff3": 1,

"y_hor_coeff2": 1,

"y_hor_coeff1": 0,

"y_hor_coeff0": 0,

"y_ver_coeff4": 0,

"y_ver_coeff3": 1,

"y_ver_coeff2": 1,

"y_ver_coeff1": 0,

"y_ver_coeff0": 0,

"c_hor_coeff4": 0,

"c_hor_coeff3": 1,

"c_hor_coeff2": 1,

"c_hor_coeff1": 0,

"c_hor_coeff0": 0,

"c_ver_coeff4": 0,

"c_ver_coeff3": 1,

"c_ver_coeff2": 1,

"c_ver_coeff1": 0,

"c_ver_coeff0": 0,

"y_right_shift": 2,

"c_right_shift": 2

},

"pym_ctrl": {

"source_en": 1,

"src_uv_bypass": 0,

"src_in_width": 1920,

"src_in_height": 1080,

"src_in_stride_y": 1920,

"src_in_stride_uv": 1920,

"src_start_top": 0,

"src_start_left": 0,

"src_region_width": 1920,

"src_region_height": 1080,

"src_out_stride_y": 1920,

"src_out_stride_uv": 1920,

"suffix_hb_val": 68,

"prefix_hb_val": 2,

"suffix_vb_val": 20,

"prefix_vb_val": 2,

"pixel_num_before_sol": 16,

"gs_max_layer_en": 1,

"gs_en": 1,

"gs_uv_bypass": 0,

"gauss_info": [

{

"gs_start_top": 0,

"gs_start_left": 0,

"gs_region_width": 960,

"gs_region_height": 540,

"gs_stride_y": 960,

"gs_stride_uv": 960

}

],

"bl_max_layer_en": 1,

"bl_en": 0,

"bl_uv_bypass": 0,

"bilinear_info": [

{

"bl_start_top": 0,

"bl_start_left": 0,

"bl_region_width": 960,

"bl_region_height": 540,

"bl_stride_y": 960,

"bl_stride_uv": 960

}

],

"upscale_roi_en": 1,

"us_roi_uv_bypass": 0,

"us_roi_start_left": 0,

"us_roi_start_top": 0,

"us_roi_region_width": 450,

"us_roi_region_height": 240,

"us_roi_stride_y": 640,

"us_roi_stride_uv": 640,

"us_roi_out_width": 640,

"us_roi_out_height": 480,

"ds_roi_en": 1,

"ds_roi_uv_bypass": 0,

"ds_roi": [

{

"ds_roi_layer": 0,

"ds_roi_sel": 2,

"ds_roi_start_top": 190,

"ds_roi_start_left": 0,

"ds_roi_region_width": 960,

"ds_roi_region_height": 350,

"ds_roi_stride_y": 704,

"ds_roi_stride_uv": 704,

"ds_roi_out_width": 704,

"ds_roi_out_height": 256

}

],

"pre_line_int_0_set": 0,

"pre_line_int_1_set": 0,

"pre_line_int_2_set": 0,

"pre_line_int_3_set": 0,

"pre_line_int_4_set": 0,

"pre_line_int_5_set": 0,

"pre_line_int_6_set": 0,

"pre_line_int_7_set": 0

}

},

"gdc": {

"input_width":1920,

"input_height":1080,

"output_width":1920,

"output_height":1080,

"buf_num": 8,

"fb_buf_num": 8

}

}

}

底层软件
评论1
0/1000
  • zd123456
    Lv.1

    您好,你这边 buffer_y buffer_uv是如何拿到的?

    2023-09-18
    0
    0