Hello All,
I need to rotate YUV422 data..I have applied roation using Following code. My input image size is 1024*768 and it is non interleaved YUV 422 data.
I am applying roation on this buffer. I am not getting correct output...IPU gives output with corruption. I am attaching both input and output YUV422 images for reference.
// PP task.
rot_chnl_in = MEM_TO_IC_PP_ROT_CH47;
rot_chnl_out = IC_PP_ROT_TO_MEM_CH50
memset(&rot_info, 0x00, sizeof(ipu_rot_info_t));
rot_info.width_in = panel->width;
rot_info.height_in = panel->height;
rot_info.width_out = rot_info.height_in;
rot_info.height_out = rot_info.width_in;
rot_info.strideline_in = rot_info.width_in * 2;
rot_info.strideline_out = rot_info.width_out * 2;
rot_info.pixel_format_in = NON_INTERLEAVED_YUV422;
rot_info.pixel_format_out = NON_INTERLEAVED_YUV422;
rot_info.rot = 1;
rot_info.hf = 0;
rot_info.vf = 0;
rot_info.addr0_in =rot_in_mem;
rot_info.addr0_out = rot_out_mem;
ipu_rotate_idmac_config(ipu_index, rot_chnl_in, rot_chnl_out, rot_info);
ipu_ic_rotation_config(ipu_index, taskType, 1, 0, 0);
//enable ic task
ipu_ic_task_enable(ipu_index, taskType, IC_PP, 1);
ipu_ic_task_enable(ipu_index, taskType, IC_ROT, 1);
ipu_ic_enable(ipu_index, 1, 1);
//enable rotate idma channel
ipu_channel_buf_ready(ipu_index, rot_chnl_out, 0);
ipu_channel_buf_ready(ipu_index, rot_chnl_in, 0);
while (ipu_idmac_channel_busy(1, rot_chnl_in)) ;
while (ipu_idmac_channel_busy(1, rot_chnl_out))