stfctl_isp_dnyuv.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /**
  2. ******************************************************************************
  3. * @file stfctl_isp_dnyuv.h
  4. * @author StarFive Isp Team
  5. * @version V1.0
  6. * @date 12/23/2020
  7. * @brief
  8. ******************************************************************************
  9. * @copy
  10. *
  11. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  12. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  13. * TIME. AS A RESULT, STARFIVE SHALL NOT BE HELD LIABLE FOR ANY
  14. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  15. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  16. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  17. *
  18. * Copyright (C) 2019 - 2022 StarFive Technology Co., Ltd.
  19. */
  20. #ifndef __STFCTL_ISP_DNYUV_H__
  21. #define __STFCTL_ISP_DNYUV_H__
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #include "Modules/stfmod_isp_dnyuv.h"
  26. /* 2D denoise DNYUV control parameters structure */
  27. //-----------------------------------------------------------------------------
  28. // Define initial values
  29. #pragma pack(push, 1)
  30. typedef struct _ST_CTL_DNYUV_SETTING {
  31. //-------------------------------------------------------------------------
  32. // This section parameters value is assign from setting file.
  33. STF_BOOL8 bEnable; /** Enable/Disable Y curve control. */
  34. ST_DNYUV_CRV stDnYuvCurveTbl[ISO_LEVEL_MAX]; /** DnYuv curve table for adaptive 2d de-noise. */
  35. } ST_CTL_DNYUV_SETTING, *PST_CTL_DNYUV_SETTING;
  36. typedef struct _ST_CTL_DNYUV_PARAM {
  37. ST_CTL_DNYUV_SETTING stSetting; /** Control DNYUV setting file parameters. */
  38. //-------------------------------------------------------------------------
  39. // This section parameters is internal using.
  40. STF_U8 u8IsoLevel; /** Store the ISO level value. */
  41. STF_DOUBLE dIsoFactor; /** Store the ISO factor value. */
  42. } ST_CTL_DNYUV_PARAM, *PST_CTL_DNYUV_PARAM;
  43. #define ST_CTL_DNYUV_SETTING_LEN (sizeof(ST_CTL_DNYUV_SETTING))
  44. #define ST_CTL_DNYUV_GET_PARAM_LEN (ST_CTL_DNYUV_SETTING_LEN)
  45. #define ST_CTL_DNYUV_SET_PARAM_LEN (ST_CTL_DNYUV_SETTING_LEN)
  46. #define ST_CTL_DNYUV_PARAM_SIZE (sizeof(ST_CTL_DNYUV_PARAM))
  47. #define ST_CTL_DNYUV_PARAM_LEN (ST_CTL_DNYUV_PARAM_SIZE)
  48. typedef struct _ST_ISP_CTL_DNYUV {
  49. #if defined(VIRTUAL_IO_MAPPING)
  50. STF_VOID *pPipeline; /** Pointer to Pipeline. */
  51. #endif //VIRTUAL_IO_MAPPING
  52. STF_VOID *pIspCtx; /** Pointer to ISP context. */
  53. STF_U32 u32Id; /** Control ID. */
  54. STF_CHAR szName[16]; /** Control Name. */
  55. //STF_VOID *pstCtlDnYuvRdma; /** DNYUV's RDMA structure pointer. */
  56. ST_CTL_DNYUV_PARAM *pstCtlDnYuvParam; /** DNYUV's control parameters structure pointer. */
  57. STF_BOOL8 bRegistered; /** Control register in pipeline. */
  58. STF_S32 (*Init)(STF_VOID *pIspCtx);
  59. STF_S32 (*LoadBinParam)(STF_VOID *pIspCtx, STF_U8 *pu8ParamBuf, STF_U16 u16ParamSize);
  60. STF_S32 (*Enable)(STF_VOID *pIspCtx, STF_BOOL8 bEnable);
  61. STF_BOOL8 (*IsEnable)(STF_VOID *pIspCtx);
  62. STF_S32 (*Registered)(STF_VOID *pIspCtx, STF_BOOL8 bRegistered);
  63. STF_BOOL8 (*IsRegistered)(STF_VOID *pIspCtx);
  64. STF_S32 (*Calculate)(STF_VOID *pIspCtx);
  65. STF_S32 (*FreeResource)(STF_VOID *pIspCtx);
  66. STF_S32 (*GetIqParam)(STF_VOID *pIspCtx, STF_VOID *pParamBuf, STF_U16 *pu16ParamSize);
  67. STF_S32 (*SetIqParam)(STF_VOID *pIspCtx, STF_VOID *pParamBuf, STF_U16 u16ParamSize);
  68. } ST_ISP_CTL_DNYUV, *PST_ISP_CTL_DNYUV;
  69. #pragma pack(pop)
  70. /* 2D denoise DNYUV control parameters interface */
  71. //-----------------------------------------------------------------------------
  72. extern
  73. STF_S32 STFCTL_ISP_DNYUV_SetEnable(
  74. ST_ISP_CTL_DNYUV *pstCtlDnYuv,
  75. STF_BOOL8 bEnable
  76. );
  77. extern
  78. STF_S32 STFCTL_ISP_DNYUV_SetIsoInfo(
  79. ST_ISP_CTL_DNYUV *pstCtlDnYuv,
  80. STF_U8 u8IsoLevel,
  81. STF_DOUBLE dIsoFactor
  82. );
  83. extern
  84. STF_S32 STFCTL_ISP_DNYUV_InterpolateDnYuvCurve(
  85. ST_ISP_CTL_DNYUV *pstCtlDnYuv,
  86. STF_U8 u8IsoLevel,
  87. STF_DOUBLE dIsoFactor,
  88. ST_DNYUV_CRV *pstDnYuvCurveTable,
  89. ST_DNYUV_CRV *pstDnYuvCurve
  90. );
  91. extern
  92. STF_U32 STFCTL_ISP_DNYUV_SetDnYuvCurveTable(
  93. ST_ISP_CTL_DNYUV *pstCtlDnYuv,
  94. ST_DNYUV_CRV pstDnYuvCurveTbl[ISO_LEVEL_MAX]
  95. );
  96. extern
  97. STF_U32 STFCTL_ISP_DNYUV_GetDnYuvCurveTable(
  98. ST_ISP_CTL_DNYUV *pstCtlDnYuv,
  99. ST_DNYUV_CRV *ppstDnYuvCurveTbl[ISO_LEVEL_MAX]
  100. );
  101. //-----------------------------------------------------------------------------
  102. extern
  103. STF_S32 STFCTL_ISP_DNYUV_Init(
  104. STF_VOID *pIspCtx
  105. );
  106. extern
  107. STF_S32 STFCTL_ISP_DNYUV_LoadBinParam(
  108. STF_VOID *pIspCtx,
  109. STF_U8 *pu8ParamBuf,
  110. STF_U16 u16ParamSize
  111. );
  112. extern
  113. STF_S32 STFCTL_ISP_DNYUV_Enable(
  114. STF_VOID *pIspCtx,
  115. STF_BOOL8 bEnable
  116. );
  117. extern
  118. STF_BOOL8 STFCTL_ISP_DNYUV_IsEnable(
  119. STF_VOID *pIspCtx
  120. );
  121. extern
  122. STF_S32 STFCTL_ISP_DNYUV_Registered(
  123. STF_VOID *pIspCtx,
  124. STF_BOOL8 bRegistered
  125. );
  126. extern
  127. STF_BOOL8 STFCTL_ISP_DNYUV_IsRegistered(
  128. STF_VOID *pIspCtx
  129. );
  130. extern
  131. STF_S32 STFCTL_ISP_DNYUV_Calculate(
  132. STF_VOID *pIspCtx
  133. );
  134. extern
  135. STF_S32 STFCTL_ISP_DNYUV_FreeResource(
  136. STF_VOID *pIspCtx
  137. );
  138. extern
  139. STF_S32 STFCTL_ISP_DNYUV_GetIqParam(
  140. STF_VOID *pIspCtx,
  141. STF_VOID *pParamBuf,
  142. STF_U16 *pu16ParamSize
  143. );
  144. extern
  145. STF_S32 STFCTL_ISP_DNYUV_SetIqParam(
  146. STF_VOID *pIspCtx,
  147. STF_VOID *pParamBuf,
  148. STF_U16 u16ParamSize
  149. );
  150. //-----------------------------------------------------------------------------
  151. extern
  152. STF_S32 STFCTL_ISP_DNYUV_Create(
  153. STF_VOID *pPipeline
  154. );
  155. extern
  156. STF_S32 STFCTL_ISP_DNYUV_Destroy(
  157. STF_VOID *pPipeline
  158. );
  159. //-----------------------------------------------------------------------------
  160. #ifdef __cplusplus
  161. }
  162. #endif
  163. #endif //__STFCTL_ISP_DNYUV_H__