Rotation is not working for YUV422 data.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Rotation is not working for YUV422 data.

454 Views
johnturnur
Contributor III

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))

0 Kudos
0 Replies