📄 imgdma.c
字号:
switch(ibw1_struct->pixel_engine)
{
case PIXEL_ENGINE_IPP1:
SET_IBW1_PIXEL_SRC_IPP1;
break;
case PIXEL_ENGINE_IPP2:
SET_IBW1_PIXEL_SRC_IPP2;
break;
case PIXEL_ENGINE_CRZ:
SET_IBW1_PIXEL_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_IBW1_PIXEL_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
if(ibw1_struct->output_format==IMGDMA_OUTPUT_TYPE_RGB565)
{
SET_IBW1_OUTPUT_RGB565;
}
else
{
SET_IBW1_OUTPUT_RGB888;
}
if (ibw1_struct->auto_restart==KAL_FALSE)
{
DISABLE_IBW1_AUTO_RESTART;
}
else
{
ENABLE_IBW1_AUTO_RESTART;
}
REG_IMGDMA_IBW1_BASE_ADDR1=ibw1_struct->bs;
REG_IMGDMA_IBW1_WIDTH=ibw1_struct->width;
REG_IMGDMA_IBW1_HEIGHT=ibw1_struct->height;
START_IBW1;
}
void IMGDMA_IBW3Config(IMGDMA_IBW3_STRUCT *ibw3_struct)
{
STOP_IBW3;
REG_IMGDMA_IBW3_CTRL=0;
switch(ibw3_struct->pixel_engine)
{
case PIXEL_ENGINE_IPP1:
SET_IBW3_PIXEL_SRC_IPP1;
break;
case PIXEL_ENGINE_IPP2:
SET_IBW3_PIXEL_SRC_IPP2;
break;
case PIXEL_ENGINE_CRZ:
SET_IBW3_PIXEL_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_IBW3_PIXEL_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
if (ibw3_struct->auto_restart==KAL_FALSE)
{
DISABLE_IBW3_AUTO_RESTART;
}
else
{
ENABLE_IBW3_AUTO_RESTART;
}
if(ibw3_struct->int_en)
{
ENABLE_IBW3_INT;
}
else
{
DISABLE_IBW3_INT;
}
REG_IMGDMA_IBW3_WIDTH=ibw3_struct->width;
REG_IMGDMA_IBW3_HEIGHT=ibw3_struct->height;
START_IBW3;
}
void IMGDMA_IBW4Config(IMGDMA_IBW4_STRUCT *ibw4_struct)
{
STOP_IBW4;
REG_IMGDMA_IBW4_CTRL=0;
switch(ibw4_struct->pixel_engine)
{
case PIXEL_ENGINE_IPP1:
SET_IBW4_PIXEL_SRC_IPP1;
break;
case PIXEL_ENGINE_IPP2:
SET_IBW4_PIXEL_SRC_IPP2;
break;
case PIXEL_ENGINE_CRZ:
SET_IBW4_PIXEL_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_IBW4_PIXEL_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
if (ibw4_struct->auto_restart==KAL_FALSE)
{
DISABLE_IBW4_AUTO_RESTART;
}
else
{
ENABLE_IBW4_AUTO_RESTART;
}
if(ibw4_struct->int_en)
{
ENABLE_IBW4_INT;
}
else
{
DISABLE_IBW4_INT;
}
REG_IMGDMA_IBW4_WIDTH=ibw4_struct->width;
REG_IMGDMA_IBW4_HEIGHT=ibw4_struct->height;
START_IBW4;
}
void IMGDMA_IBR1Config(IMGDMA_IBR1_STRUCT *ibr1_struct)
{
STOP_IBR1;
if (ibr1_struct->data_type==IBR1_TYPE_RGB565)
{
SET_IMGDMA_IBR1_DATA_RGB565;
}
else if (ibr1_struct->data_type==IBR1_TYPE_RGB888)
{
SET_IMGDMA_IBR1_DATA_RGB888;
}
if (ibr1_struct->data_order==IBR1_ORDER_BGR888)
{
SET_IMGDMA_IBR1_DATA_ORDER_BGR888;
}
else if (ibr1_struct->data_order==IBR1_ORDER_RGB888)
{
SET_IMGDMA_IBR1_DATA_ORDER_RGB888;
}
if(ibr1_struct->int_en==KAL_FALSE)
{
DISABLE_IMGDMA_IBR1_INT;
}
else
{
ENABLE_IMGDMA_IBR1_INT;
}
REG_IMGDMA_IBR1_BASE_ADDR=ibr1_struct->base_addr;
REG_IMGDMA_IBR1_PIXEL_NUMBER=ibr1_struct->pixel_number;
}
void IMGDMA_IBR2Config(IMGDMA_IBR2_STRUCT *ibr2_struct)
{
STOP_IBR2;
switch(ibr2_struct->pixel_engine)
{
case PIXEL_ENGINE_CRZ:
SET_IMGDMA_IBR2_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_IMGDMA_IBR2_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
if(ibr2_struct->restart==KAL_FALSE)
{
DISABLE_IMGDMA_IBR2_AUTO_RESTART;
}
else
{
ENABLE_IMGDMA_IBR2_AUTO_RESTART;
}
if(ibr2_struct->int_en==KAL_FALSE)
{
DISABLE_IMGDMA_IBR2_INT;
}
else
{
ENABLE_IMGDMA_IBR2_INT;
}
if(ibr2_struct->overlay_frame_mode==KAL_TRUE)
{
ENABLE_IMGDMA_IBR2_PALETTE;
SET_IMGDMA_IBR2_PHOTO_FRAME_DEPTH(ibr2_struct->overlay_color_depth);
REG_IMGDMA_IBR2_BASE_ADDR=ibr2_struct->overlay_frame_buffer_address;
SET_IMGDMA_IBR2_SRC_KEY(ibr2_struct->overlay_frame_source_key);
if(((ibr2_struct->overlay_frame_target_height%ibr2_struct->overlay_frame_height)!=0)
|| ((ibr2_struct->overlay_frame_target_width%ibr2_struct->overlay_frame_width)!=0) )
ASSERT(0);
SET_IMGDMA_IBR2_V_RATIO((ibr2_struct->overlay_frame_target_height/ibr2_struct->overlay_frame_height));
SET_IMGDMA_IBR2_H_RATIO((ibr2_struct->overlay_frame_target_width/ibr2_struct->overlay_frame_width));
REG_IMGDMA_IBR2_WIDTH=ibr2_struct->overlay_frame_width;
REG_IMGDMA_IBR2_HEIGHT=ibr2_struct->overlay_frame_height;
START_IBR2;
}
else
{
DISABLE_IMGDMA_IBR2_PALETTE;
}
}
void IMGDMA_JPEGDMAConfig(IMGDMA_JPEG_DMA_STRUCT *jpeg_dma_struct)
{
STOP_IMGDMA_JPEG;
REG_IMGDMA_JPEG_CTRL=0;
switch(jpeg_dma_struct->pixel_engine)
{
case PIXEL_ENGINE_CRZ:
SET_IMGDMA_JPEG_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_IMGDMA_JPEG_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV420)
{
SET_IMGDMA_JPEG_YUV420;
}
else if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV422)
{
SET_IMGDMA_JPEG_YUV422;
}
else if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_GRAY)
{
SET_IMGDMA_JPEG_GRAY;
}
if (jpeg_dma_struct->restart==KAL_TRUE)
{
ENABLE_IMGDMA_JPEG_AUTO_RESTART;
}
else
{
DISABLE_IMGDMA_JPEG_AUTO_RESTART;
}
REG_IMGDMA_JPEG_BASE_ADDR=(kal_uint32)jpeg_dma_struct->jpeg_file_buffer_address;
if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV420)
REG_IMGDMA_JPEG_FIFO_LENGTH=JPEG_ENCODER_IDMA_LINE_BUFFER_NUMBER>>1;
else
REG_IMGDMA_JPEG_FIFO_LENGTH=JPEG_ENCODER_IDMA_LINE_BUFFER_NUMBER;
REG_IMGDMA_JPEG_WIDTH=jpeg_dma_struct->target_width-1;
REG_IMGDMA_JPEG_HEIGHT=jpeg_dma_struct->target_height-1;
START_IMGDMA_JPEG;
}
void IMGDMA_VIDEOENCODE_DMAConfig(IMGDMA_VIDEO_ENCODE_STRUCT *video_encode_dma_struct)
{
STOP_IMGDMA_VIDEO_ENCODE;
REG_IMGDMA_VIDEO_ENCODE_CTRL=0;
switch(video_encode_dma_struct->wdma_pixel_engine)
{
case PIXEL_ENGINE_CRZ:
SET_VIDEO_ENCODE_SRC_CRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_VIDEO_ENCODE_SRC_PRZ;
break;
default:
ASSERT(0);
break;
}
switch(video_encode_dma_struct->rdma_destination_engine)
{
case PIXEL_ENGINE_DRZ:
SET_VIDEO_ENCODE_R_DEST_DRZ;
break;
case PIXEL_ENGINE_PRZ:
SET_VIDEO_ENCODE_R_DEST_PRZ;
break;
default:
break;
}
if(video_encode_dma_struct->restart==KAL_TRUE)
{
ENABLE_VIDEO_ENCODE_AUTO_RESTART;
}
else
{
DISABLE_VIDEO_ENCODE_AUTO_RESTART;
}
if(video_encode_dma_struct->wrtie_done_int==KAL_TRUE)
{
ENABLE_VIDEO_ENCODE_W_INT;
}
else
{
DISABLE_VIDEO_ENCODE_W_INT
}
if(video_encode_dma_struct->read_done_int==KAL_TRUE)
{
ENABLE_VIDEO_ENCODE_R_INT;
}
else
{
DISABLE_VIDEO_ENCODE_R_INT;
}
if(video_encode_dma_struct->w_trigger_r==KAL_TRUE)
{
ENABLE_VIDEO_ENCODE_W_TRIGGER_R;
}
else
{
DISABLE_VIDEO_ENCODE_W_TRIGGER_R;
}
REG_IMGDMA_VIDEO_ENCODE_Y_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->y_base_addr1;
REG_IMGDMA_VIDEO_ENCODE_U_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->u_base_addr1;
REG_IMGDMA_VIDEO_ENCODE_V_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->v_base_addr1;
REG_IMGDMA_VIDEO_ENCODE_Y_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->y_base_addr2;
REG_IMGDMA_VIDEO_ENCODE_U_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->u_base_addr2;
REG_IMGDMA_VIDEO_ENCODE_V_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->v_base_addr2;
REG_IMGDMA_VIDEO_ENCODE_WIDTH=video_encode_dma_struct->encode_width;
REG_IMGDMA_VIDEO_ENCODE_HEIGHT=video_encode_dma_struct->encode_height;
START_IMGDMA_VIDEO_ENCODE;
}
void IMGDMA_VIDEODECODE_DMAConfig(IMGDMA_VIDEO_DECODE_STRUCT *video_decode_dma_struct)
{
if(video_decode_dma_struct->decode_done_int==KAL_TRUE)
{
ENABLE_VIDEO_DECODE_INT;
}
else
{
DISABLE_VIDEO_DECODE_INT;
}
REG_IMGDMA_VIDEO_DECODE_WIDTH=video_decode_dma_struct->width;
REG_IMGDMA_VIDEO_DECODE_HEIGHT=video_decode_dma_struct->height;
}
void IMGDMA_IBW2Config(IMGDMA_IBW2_STRUCT *ibw2_struct)
{
STOP_IBW2;
REG_IMGDMA_IBW2_BASE_ADDR1=ibw2_struct->frame1_base_addr;
REG_IMGDMA_IBW2_BASE_ADDR2=ibw2_struct->frame2_base_addr;
REG_IMGDMA_IBW2_WIDTH=ibw2_struct->width-1;
REG_IMGDMA_IBW2_HEIGHT=ibw2_struct->height-1;
if(ibw2_struct->pitch==KAL_TRUE)
{
REG_IMGDMA_IBW2_DEST_PITCH1=ibw2_struct->pitch1_bytes;
REG_IMGDMA_IBW2_DEST_PITCH2=ibw2_struct->pitch2_bytes;
ENABLE_IBW2_DEST_PITCH;
}
else
{
DISABLE_IBW2_DEST_PITCH;
}
if (ibw2_struct->dest_color_mode==IMGDMA_IBW_OUTPUT_RGB565)
{
SET_IBW2_OUTPUT_RGB565;
}
else if (ibw2_struct->dest_color_mode==IMGDMA_IBW_OUTPUT_RGB888)
{
SET_IBW2_OUTPUT_RGB888;
}
if (ibw2_struct->lcd_trigger==KAL_TRUE)
{
ENABLE_IBW2_TRIGGER_LCD;
}
else
{
DISABLE_IBW2_TRIGGER_LCD;
}
if (ibw2_struct->int_en==KAL_TRUE)
{
ENABLE_IBW2_INT;
}
else
{
DISABLE_IBW2_INT;
}
if (ibw2_struct->pan==KAL_TRUE)
{
ENABLE_IBW2_PAN;
REG_IMGDMA_IBW2_CLIP_LEFT_RIGHT=(ibw2_struct->clip_left<<16)|ibw2_struct->clip_right;
REG_IMGDMA_IBW2_CLIP_TOP_BUTTOM=(ibw2_struct->clip_top<<16)|ibw2_struct->clip_bottom;
}
else
{
DISABLE_IBW2_PAN;
}
if (ibw2_struct->direct_couple==KAL_TRUE)
{
ENABLE_IBW2_DC;
}
else
{
DISABLE_IBW2_DC;
}
if (ibw2_struct->restart==KAL_TRUE)
{
ENABLE_IBW2_AUTO_RESTART;
}
else
{
DISABLE_IBW2_AUTO_RESTART;
}
switch(ibw2_struct->pixel_engine)
{
case PIXEL_ENGINE_IPP1:
SET_IBW2_PIXEL_SRC_IPP1;
break;
case PIXEL_ENGINE_IPP2:
SET_IBW2_PIXEL_SRC_IPP2;
break;
case PIXEL_ENGINE_PRZ:
SET_IBW2_PIXEL_SRC_PRZ;
break;
case PIXEL_ENGINE_CRZ:
SET_IBW2_PIXEL_SRC_CRZ;
break;
}
ibw2_cb=ibw2_struct->cb;
if (ibw2_struct->enable_IBW2==KAL_TRUE)
{
START_IBW2;
}
}
#endif /* MT6228, MT6229 MT6230*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -