/******************************************************************************/ /** * * @file drv_vdi.h * * @brief This file specifies the APIs provided to control VDI(Video Detection Interface) * * @note Copyright (c) 2013 S2 Technology Co., Ltd. \n * All rights reserved. * * @author * ******************************************************************************/ #ifndef __DRV_VDI_H__ #define __DRV_VDI_H__ /******************************************************************************* * Header include ******************************************************************************/ #include "drv_types.h" typedef enum _DRV_VDI_YUVTopBot_TYPE { eVDI_Y_Top=0, eVDI_Y_Bot, eVDI_UV_Top, eVDI_UV_Bot, } DRV_VDI_YUVTopBot_TYPE; void DRV_VDI_Reset(BOOL fEnable); void DRV_VDI_MemReadEn(BOOL fEnable); void DRV_VDI_SetMem_Y_Offset(UINT32 offset); UINT32 DRV_VDI_GetMem_Y_Offset(void); void DRV_VDI_SetMem_Y_Size(UINT32 size); void DRV_VDI_SetMem_UV_Offset(UINT32 offset); UINT32 DRV_VDI_GetMem_UV_Offset(void); void DRV_VDI_SetMem_UV_Size(UINT32 size); void DRV_VDI_SetMem_Motion_Offset(UINT32 offset); void DRV_VDI_SetMem_Motion_Size(UINT32 size); void DRV_VDI_SetMem_MBW_Offset(UINT32 offset); void DRV_VDI_SetMem_MBW_Size(UINT32 size); void DRV_VDI_SetMem_Y_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_Y_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_YUV_TopBotAddress(DRV_VDI_YUVTopBot_TYPE eType, UINT32 offset, UINT32 address); UINT16 DRV_VDI_GetMem_YUV_TopBotAddress(DRV_VDI_YUVTopBot_TYPE eType, UINT32 offset); void DRV_VDI_SetMem_UV_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_UV_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_Motion_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_Motion_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_MBW_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_SetMem_MBW_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2); void DRV_VDI_EnableReadMBW(BOOL fEnable); void DRV_VDI_SetNumMBWLinesPerField(UINT8 num); void DRV_VDI_SetHSizeofHalfField(UINT16 size); void DRV_VDI_SetNumLinesPerFieldForDeinterlace(UINT16 num); void DRV_VDI_SetMode(UINT8 mode); void DRV_VDI_EnablePause(BOOL fEnable); void DRV_VDI_EnableChromaForMotionDetection(BOOL fEnable); void DRV_VDI_SetMem_YUV888Size(UINT32 y_size, UINT32 uv_size); void DRV_VDI_SetMem_LastNum(UINT32 y_lastnum, UINT32 uv_lastnum, UINT32 mo_lastnum, UINT32 mbw_lastnum); void DRV_VDI_Enable6FieldBuffers(BOOL fEnable); void DRV_VDI_SetTemporalNoiseReductionAlphaInit(UINT8 value); UINT8 DRV_VDI_GetTemporalNoiseReductionAlphaInit(void); void DRV_VDI_SetFieldCompare_H_StartEnd(UINT16 start, UINT16 end); void DRV_VDI_SetFieldCompare_V_StartEnd(UINT16 start, UINT16 end); void DRV_VDI_GetFieldCompare_H_StartEnd(UINT16 *start, UINT16 *end); void DRV_VDI_SetMotionAdaptiveDetectionThd(UINT32 thd, UINT32 minthd, UINT32 maxthd); void DRV_VDI_GetMotionAdaptiveDetectionThd(UINT32 *thd, UINT32 *minthd, UINT32 *maxthd); void DRV_VDI_Enable3DInterleaving(BOOL fEnable); void DRV_VDI_GetNoiseEstimationThd(INT32 *fd_chg_thd, INT32 *invald_thd, INT32 *total_th); void DRV_VDI_GetSpatialNoiseReductionThd(INT32 *snr_th1, INT32 *snr_th2, INT32 *snr_th3); /** * @brief Set VDI Memory control. * * This function setup VDI sram control method, decide if release time slot for other channel * * @param uEnable : value 0 mean as previous design(occupy time slot even not access sram anymore) * , 1 for release time slot for other channel * @return : n/a */ void DRV_VDI_SetMifOpt(UINT8 uEnable); /** * @brief Set VDI SNR setting * * This function setup VDI fixed SNR setting * * @param uEnable : n/a * @return : n/a */ void DRV_VDI_SetSNR(void); #endif