AnsweredAssumed Answered

Rotation is not working for YUV422 data.

Question asked by John Turnur on May 13, 2013
Latest reply on Jun 30, 2016 by Le Tan

Hello All,


I need to rotate YUV422 data..I have applied rotation using Following code. My input image size is 1024*768 and it is non interleaved YUV 422 data.

I am applying rotation 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.


Please help me to get the correct if there are any mistake i made in DMA channel setup.


Following i s the code snap i am using for rotation...I am using Platform SDK as reference code and all my code for IPU driver is based on Platform SDK V1.1.0






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

Original Attachment has been moved to:

Original Attachment has been moved to: