drv_vdi.h 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /******************************************************************************/
  2. /**
  3. *
  4. * @file drv_vdi.h
  5. *
  6. * @brief This file specifies the APIs provided to control VDI(Video Detection Interface)
  7. *
  8. * @note Copyright (c) 2013 S2 Technology Co., Ltd. \n
  9. * All rights reserved.
  10. *
  11. * @author
  12. *
  13. ******************************************************************************/
  14. #ifndef __DRV_VDI_H__
  15. #define __DRV_VDI_H__
  16. /*******************************************************************************
  17. * Header include
  18. ******************************************************************************/
  19. #include "drv_types.h"
  20. typedef enum _DRV_VDI_YUVTopBot_TYPE
  21. {
  22. eVDI_Y_Top=0,
  23. eVDI_Y_Bot,
  24. eVDI_UV_Top,
  25. eVDI_UV_Bot,
  26. } DRV_VDI_YUVTopBot_TYPE;
  27. void DRV_VDI_Reset(BOOL fEnable);
  28. void DRV_VDI_MemReadEn(BOOL fEnable);
  29. void DRV_VDI_SetMem_Y_Offset(UINT32 offset);
  30. UINT32 DRV_VDI_GetMem_Y_Offset(void);
  31. void DRV_VDI_SetMem_Y_Size(UINT32 size);
  32. void DRV_VDI_SetMem_UV_Offset(UINT32 offset);
  33. UINT32 DRV_VDI_GetMem_UV_Offset(void);
  34. void DRV_VDI_SetMem_UV_Size(UINT32 size);
  35. void DRV_VDI_SetMem_Motion_Offset(UINT32 offset);
  36. void DRV_VDI_SetMem_Motion_Size(UINT32 size);
  37. void DRV_VDI_SetMem_MBW_Offset(UINT32 offset);
  38. void DRV_VDI_SetMem_MBW_Size(UINT32 size);
  39. void DRV_VDI_SetMem_Y_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  40. void DRV_VDI_SetMem_Y_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  41. void DRV_VDI_SetMem_YUV_TopBotAddress(DRV_VDI_YUVTopBot_TYPE eType, UINT32 offset, UINT32 address);
  42. UINT16 DRV_VDI_GetMem_YUV_TopBotAddress(DRV_VDI_YUVTopBot_TYPE eType, UINT32 offset);
  43. void DRV_VDI_SetMem_UV_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  44. void DRV_VDI_SetMem_UV_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  45. void DRV_VDI_SetMem_Motion_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  46. void DRV_VDI_SetMem_Motion_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  47. void DRV_VDI_SetMem_MBW_BotAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  48. void DRV_VDI_SetMem_MBW_TopAddress(UINT32 f0, UINT32 f1, UINT32 f2);
  49. void DRV_VDI_EnableReadMBW(BOOL fEnable);
  50. void DRV_VDI_SetNumMBWLinesPerField(UINT8 num);
  51. void DRV_VDI_SetHSizeofHalfField(UINT16 size);
  52. void DRV_VDI_SetNumLinesPerFieldForDeinterlace(UINT16 num);
  53. void DRV_VDI_SetMode(UINT8 mode);
  54. void DRV_VDI_EnablePause(BOOL fEnable);
  55. void DRV_VDI_EnableChromaForMotionDetection(BOOL fEnable);
  56. void DRV_VDI_SetMem_YUV888Size(UINT32 y_size, UINT32 uv_size);
  57. void DRV_VDI_SetMem_LastNum(UINT32 y_lastnum, UINT32 uv_lastnum, UINT32 mo_lastnum, UINT32 mbw_lastnum);
  58. void DRV_VDI_Enable6FieldBuffers(BOOL fEnable);
  59. void DRV_VDI_SetTemporalNoiseReductionAlphaInit(UINT8 value);
  60. UINT8 DRV_VDI_GetTemporalNoiseReductionAlphaInit(void);
  61. void DRV_VDI_SetFieldCompare_H_StartEnd(UINT16 start, UINT16 end);
  62. void DRV_VDI_SetFieldCompare_V_StartEnd(UINT16 start, UINT16 end);
  63. void DRV_VDI_GetFieldCompare_H_StartEnd(UINT16 *start, UINT16 *end);
  64. void DRV_VDI_SetMotionAdaptiveDetectionThd(UINT32 thd, UINT32 minthd, UINT32 maxthd);
  65. void DRV_VDI_GetMotionAdaptiveDetectionThd(UINT32 *thd, UINT32 *minthd, UINT32 *maxthd);
  66. void DRV_VDI_Enable3DInterleaving(BOOL fEnable);
  67. void DRV_VDI_GetNoiseEstimationThd(INT32 *fd_chg_thd, INT32 *invald_thd, INT32 *total_th);
  68. void DRV_VDI_GetSpatialNoiseReductionThd(INT32 *snr_th1, INT32 *snr_th2, INT32 *snr_th3);
  69. /**
  70. * @brief Set VDI Memory control.
  71. *
  72. * This function setup VDI sram control method, decide if release time slot for other channel
  73. *
  74. * @param uEnable : value 0 mean as previous design(occupy time slot even not access sram anymore)
  75. * , 1 for release time slot for other channel
  76. * @return : n/a
  77. */
  78. void DRV_VDI_SetMifOpt(UINT8 uEnable);
  79. /**
  80. * @brief Set VDI SNR setting
  81. *
  82. * This function setup VDI fixed SNR setting
  83. *
  84. * @param uEnable : n/a
  85. * @return : n/a
  86. */
  87. void DRV_VDI_SetSNR(void);
  88. #endif