📄 image_effect.c
字号:
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_sepiagreen(void)
{
IMGPROC_PIXEL_EFFECT_STURCT pixel_effect_para;
/* config Image Processor */
pixel_effect_para.hsa=IMGPROC_HSA_COLORIZE;
pixel_effect_para.cba=0;
pixel_effect_para.inv=0;
pixel_effect_para.clr=0;
pixel_effect_para.gma=0;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
/* config Image DMA */
IMGDMA_Init();
IMGDMA_Open(SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetPixelEffect( &pixel_effect_para, SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_COLORIZEU, -30);
DRV_WriteReg32(IMGPROC_COLORIZEV, -30);
/* start Image Processor */
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
/* start Image DMA */
IMGDMA_IBW1Config( &ibw1_para, 1, SCENARIO_IMG_EFFECT_ID);
IMGDMA_IBR1Config( &ibr1_para, 1, SCENARIO_IMG_EFFECT_ID);
/* wait Image DMA */
imgdma_wait_done();
/* close Image DMA */
IMGDMA_Close(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.pixel_effect_para=pixel_effect_para;
DRV_WriteReg32(IMGPROC_COLORIZEU, -30);
DRV_WriteReg32(IMGPROC_COLORIZEV, -30);
config_pixel_effect_data_path(&ipp_config_data);
/* wait Image DMA */
imgdma_wait_done();
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_sepiablue
*
* DESCRIPTION
* This function provides blue sepia effect in VIDEO PLAYBACK, IMAGE PLAYBACK
* and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_sepiablue(void)
{
IMGPROC_PIXEL_EFFECT_STURCT pixel_effect_para;
/* config Image Processor */
pixel_effect_para.hsa=IMGPROC_HSA_COLORIZE;
pixel_effect_para.cba=0;
pixel_effect_para.inv=0;
pixel_effect_para.clr=0;
pixel_effect_para.gma=0;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
/* config Image DMA */
IMGDMA_Init();
IMGDMA_Open(SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetPixelEffect( &pixel_effect_para, SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_COLORIZEU, 88);
DRV_WriteReg32(IMGPROC_COLORIZEV, -30);
/* start Image Processor */
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
/* start Image DMA */
IMGDMA_IBW1Config( &ibw1_para, 1, SCENARIO_IMG_EFFECT_ID);
IMGDMA_IBR1Config( &ibr1_para, 1, SCENARIO_IMG_EFFECT_ID);
/* wait Image DMA */
imgdma_wait_done();
/* close Image DMA */
IMGDMA_Close(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.pixel_effect_para=pixel_effect_para;
DRV_WriteReg32(IMGPROC_COLORIZEU, 88);
DRV_WriteReg32(IMGPROC_COLORIZEV, -30);
config_pixel_effect_data_path(&ipp_config_data);
/* wait Image DMA */
imgdma_wait_done();
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_colorinv
*
* DESCRIPTION
* This function provides color invert effect in VIDEO PLAYBACK, IMAGE PLAYBACK
* and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_colorinv(void)
{
IMGPROC_PIXEL_EFFECT_STURCT pixel_effect_para;
IMGPROC_GAMMA_STRUCT gma_para;
/* config Image Processor */
pixel_effect_para.hsa=IMGPROC_HSA_NONE;
pixel_effect_para.cba=0;
pixel_effect_para.inv=1;
pixel_effect_para.clr=0;
pixel_effect_para.gma=1;
gma_para.gamma=0;
gma_para.off0=0;
gma_para.off1=0;
gma_para.off2=0;
gma_para.off3=0;
gma_para.off4=0;
gma_para.off5=0;
gma_para.off6=0;
gma_para.off7=0;
gma_para.slp0=0x10;
gma_para.slp1=0x10;
gma_para.slp2=0x10;
gma_para.slp3=0x10;
gma_para.slp4=0x10;
gma_para.slp5=0x10;
gma_para.slp6=0x10;
gma_para.slp7=0x10;
IMGPROC_SetGamma(SCENARIO_IMG_EFFECT_ID, &gma_para);
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
/* config Image DMA */
IMGDMA_Init();
IMGDMA_Open(SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetPixelEffect( &pixel_effect_para, SCENARIO_IMG_EFFECT_ID);
/* start Image Processor */
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
/* start Image DMA */
IMGDMA_IBW1Config( &ibw1_para, 1, SCENARIO_IMG_EFFECT_ID);
IMGDMA_IBR1Config( &ibr1_para, 1, SCENARIO_IMG_EFFECT_ID);
/* wait Image DMA */
imgdma_wait_done();
/* close Image DMA */
IMGDMA_Close(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.pixel_effect_para=pixel_effect_para;
config_pixel_effect_data_path(&ipp_config_data);
/* wait Image DMA */
imgdma_wait_done();
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_grayinv
*
* DESCRIPTION
* This function provides gray color invert effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_grayinv(void)
{
IMGPROC_PIXEL_EFFECT_STURCT pixel_effect_para;
/* config Image Processor */
pixel_effect_para.hsa=IMGPROC_HSA_GRAY;
pixel_effect_para.cba=0;
pixel_effect_para.inv=1;
pixel_effect_para.clr=0;
pixel_effect_para.gma=0;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
/* config Image DMA */
IMGDMA_Init();
IMGDMA_Open(SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetPixelEffect( &pixel_effect_para, SCENARIO_IMG_EFFECT_ID);
/* start Image Processor */
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
/* start Image DMA */
IMGDMA_IBW1Config( &ibw1_para, 1, SCENARIO_IMG_EFFECT_ID);
IMGDMA_IBR1Config( &ibr1_para, 1, SCENARIO_IMG_EFFECT_ID);
/* wait Image DMA */
imgdma_wait_done();
/* close Image DMA */
IMGDMA_Close(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.pixel_effect_para=pixel_effect_para;
config_pixel_effect_data_path(&ipp_config_data);
/* wait Image DMA */
imgdma_wait_done();
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_watercolor
*
* DESCRIPTION
* This function provides watercolor effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_watercolor(void)
{
IMGPROC_MASK_STURCT filter_coef;
clean_imgprc_coefficient(SCENARIO_IMG_EFFECT_ID);
filter_coef.c11=0;
filter_coef.c12=-1;
filter_coef.c13=0;
filter_coef.c21=-1;
filter_coef.c22=5;
filter_coef.c23=-1;
filter_coef.c31=0;
filter_coef.c32=-1;
filter_coef.c33=0;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
/* 5 times median + moresharpen */
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.source_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest2_buffer_address);
DRV_WriteReg32(IMGPROC_IMGWIDTH, image_effect_dec_para.image_width);
DRV_WriteReg32(IMGPROC_IMGHEIGHT, image_effect_dec_para.image_height);
IMGPROC_SetMask(FILTER_MED, SCENARIO_IMG_EFFECT_ID);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.dest2_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.dest1_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest2_buffer_address);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.dest2_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.dest1_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest2_buffer_address);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.dest2_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
IMGPROC_SetMask(FILTER_HP, SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetMaskContent(SCENARIO_IMG_EFFECT_ID, &filter_coef);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.filter_mode=IPP_FILTER_MEDIAN_RANKING;
ipp_config_data.dest_address=image_effect_dec_para.dest2_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
ipp_config_data.src_address=image_effect_dec_para.dest2_buffer_address;
ipp_config_data.dest_address=image_effect_dec_para.dest1_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
ipp_config_data.src_address=image_effect_dec_para.dest1_buffer_address;
ipp_config_data.dest_address=image_effect_dec_para.dest2_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
ipp_config_data.src_address=image_effect_dec_para.dest2_buffer_address;
ipp_config_data.dest_address=image_effect_dec_para.dest1_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
ipp_config_data.src_address=image_effect_dec_para.dest1_buffer_address;
ipp_config_data.dest_address=image_effect_dec_para.dest2_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
ipp_config_data.src_address=image_effect_dec_para.dest2_buffer_address;
ipp_config_data.dest_address=image_effect_dec_para.dest1_buffer_address;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetMaskContent(SCENARIO_IMG_EFFECT_ID, &filter_coef);
ipp_config_data.filter_mode=IPP_FILTER_LINEAR_HP;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_lightblur
*
* DESCRIPTION
* This function provides lightblur effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_lightblur(void)
{
IMGPROC_MASK_STURCT filter_coef;
clean_imgprc_coefficient(SCENARIO_IMG_EFFECT_ID);
filter_coef.c11=1;
filter_coef.c12=1;
filter_coef.c13=1;
filter_coef.c21=1;
filter_coef.c22=1;
filter_coef.c23=1;
filter_coef.c31=1;
filter_coef.c32=1;
filter_coef.c33=1;
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.source_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
DRV_WriteReg32(IMGPROC_IMGWIDTH, image_effect_dec_para.image_width);
DRV_WriteReg32(IMGPROC_IMGHEIGHT, image_effect_dec_para.image_height);
IMGPROC_SetMask(FILTER_LP, SCENARIO_IMG_EFFECT_ID);
IMGPROC_SetMaskContent(SCENARIO_IMG_EFFECT_ID, &filter_coef);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
IMGPROC_SetMaskContent(SCENARIO_IMG_EFFECT_ID, &filter_coef);
ipp_config_data.filter_mode=IPP_FILTER_LINEAR_LP;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_blur
*
* DESCRIPTION
* This function provides blur effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_blur(void)
{
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
clean_imgprc_coefficient(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.source_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
DRV_WriteReg32(IMGPROC_IMGWIDTH, image_effect_dec_para.image_width);
DRV_WriteReg32(IMGPROC_IMGHEIGHT, image_effect_dec_para.image_height);
IMGPROC_SetMask(FILTER_BLUR, SCENARIO_IMG_EFFECT_ID);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.filter_mode=IPP_FILTER_BLUR;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_strongblur
*
* DESCRIPTION
* This function provides strong blur effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void effect_dec_strongblur(void)
{
#if (defined(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227))
clean_imgprc_coefficient(SCENARIO_IMG_EFFECT_ID);
DRV_WriteReg32(IMGPROC_START_SRC, image_effect_dec_para.source_buffer_address);
DRV_WriteReg32(IMGPROC_START_DST, image_effect_dec_para.dest1_buffer_address);
DRV_WriteReg32(IMGPROC_IMGWIDTH, image_effect_dec_para.image_width);
DRV_WriteReg32(IMGPROC_IMGHEIGHT, image_effect_dec_para.image_height);
IMGPROC_SetMask(FILTER_BLUR_MORE, SCENARIO_IMG_EFFECT_ID);
IMGPROC_Start(SCENARIO_IMG_EFFECT_ID);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
ipp_config_data.filter_mode=IPP_FILTER_MORE_BLUR;
config_filter_effect_data_path(&ipp_config_data);
IMGPROC_WaitComplete(SCENARIO_IMG_EFFECT_ID);
#endif
}
/*************************************************************************
* FUNCTION
* effect_dec_unsharp
*
* DESCRIPTION
* This function provides unsharp effect in VIDEO PLAYBACK,
* IMAGE PLAYBACK and POST-PORCESSING mode.
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
**************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -