TyIsp.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**@file TyIsp.h
  2. * @breif this file Include interface declare for raw color image (bayer format)
  3. * process functions
  4. *
  5. * Copyright(C)2016-2019 Percipio All Rights Reserved
  6. *
  7. */
  8. #ifndef TY_COLOR_ISP_H_
  9. #define TY_COLOR_ISP_H_
  10. #include "TYApi.h"
  11. #define TYISP_CAPI TY_CAPI
  12. typedef void* TY_ISP_HANDLE;
  13. typedef enum{
  14. TY_ISP_FEATURE_CAM_MODEL = 0x000000,
  15. TY_ISP_FEATURE_CAM_DEV_HANDLE = 0x000001, ///<device handle for device control
  16. TY_ISP_FEATURE_CAM_DEV_COMPONENT = 0x000002, ///<the component to control
  17. TY_ISP_FEATURE_IMAGE_SIZE = 0x000100, ///<image size width&height
  18. TY_ISP_FEATURE_WHITEBALANCE_GAIN = 0x000200,
  19. TY_ISP_FEATURE_ENABLE_AUTO_WHITEBALANCE = 0x000300,
  20. TY_ISP_FEATURE_SHADING = 0x000400,
  21. TY_ISP_FEATURE_SHADING_CENTER = 0x000500,
  22. TY_ISP_FEATURE_BLACK_LEVEL = 0x000600, ///<global black level
  23. TY_ISP_FEATURE_BLACK_LEVEL_COLUMN = 0x000610, ///<to set different black level for each image column
  24. TY_ISP_FEATURE_BLACK_LEVEL_GAIN = 0x000700, ///<global pixel gain
  25. TY_ISP_FEATURE_BLACK_LEVEL_GAIN_COLUMN = 0x000710, ///<to set different gain for each image column
  26. TY_ISP_FEATURE_BAYER_PATTERN = 0x000800,
  27. TY_ISP_FEATURE_DEMOSAIC_METHOD = 0x000900,
  28. TY_ISP_FEATURE_GAMMA = 0x000A00,
  29. TY_ISP_FEATURE_DEFECT_PIXEL_LIST = 0x000B00,
  30. TY_ISP_FEATURE_CCM = 0x000C00,
  31. TY_ISP_FEATURE_CCM_ENABLE = 0x000C10, ///<ENABLE CCM
  32. TY_ISP_FEATURE_BRIGHT = 0x000D00,
  33. TY_ISP_FEATURE_CONTRAST = 0x000E00,
  34. TY_ISP_FEATURE_AUTOBRIGHT = 0x000F00,
  35. TY_ISP_FEATURE_INPUT_RESAMPLE_SCALE = 0x001000, //<set this if bayer image resampled before softisp process.
  36. TY_ISP_FEATURE_ENABLE_AUTO_EXPOSURE_GAIN = 0x001100,
  37. TY_ISP_FEATURE_AUTO_EXPOSURE_RANGE = 0x001200, ///<exposure range ,default no limit
  38. TY_ISP_FEATURE_AUTO_GAIN_RANGE = 0x001300, ///<gain range ,default no limit
  39. TY_ISP_FEATURE_AUTO_EXPOSURE_UPDATE_INTERVAL = 0x001400, ///<update device exposure interval , default 5 frame
  40. TY_ISP_FEATURE_DEBUG_LOG = 0xff000000, ///<display detail log information
  41. } TY_ISP_FEATURE_ID;
  42. typedef enum{
  43. TY_ISP_BAYER_GB = 0,
  44. TY_ISP_BAYER_BG = 1,
  45. TY_ISP_BAYER_RG = 2,
  46. TY_ISP_BAYER_GR = 3,
  47. TY_ISP_BAYER_AUTO = 0xff,
  48. }TY_ISP_BAYER_PATTERN;
  49. typedef enum{
  50. TY_DEMOSAIC_METHOD_SIMPLE = 0,
  51. TY_DEMOSAIC_METHOD_BILINEAR = 1,
  52. TY_DEMOSAIC_METHOD_HQLINEAR = 2,
  53. TY_DEMOSAIC_METHOD_EDGESENSE = 3,
  54. } TY_DEMOSAIC_METHOD;
  55. typedef struct{
  56. TY_ISP_FEATURE_ID id;
  57. int32_t size;
  58. const char * name;
  59. const char * value_type;
  60. TY_ACCESS_MODE mode;
  61. } TY_ISP_FEATURE_INFO;
  62. TYISP_CAPI TYISPCreate(TY_ISP_HANDLE *handle);
  63. TYISP_CAPI TYISPRelease(TY_ISP_HANDLE *handle);
  64. TYISP_CAPI TYISPLoadConfig(TY_ISP_HANDLE handle,const uint8_t *config, uint32_t config_size);
  65. ///@breif called by main thread to update & control device status for ISP
  66. TYISP_CAPI TYISPUpdateDevice(TY_ISP_HANDLE handle);
  67. TYISP_CAPI TYISPSetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, const uint8_t *data, int32_t size);
  68. TYISP_CAPI TYISPGetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, uint8_t *data_buff, int32_t buff_size);
  69. TYISP_CAPI TYISPGetFeatureSize(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, int32_t *size);
  70. TYISP_CAPI TYISPHasFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id);
  71. TYISP_CAPI TYISPGetFeatureInfoList(TY_ISP_HANDLE handle, TY_ISP_FEATURE_INFO *info_buffer, int buffer_size);
  72. TYISP_CAPI TYISPGetFeatureInfoListSize(TY_ISP_HANDLE handle, int32_t *buffer_size);
  73. ///@breif convert bayer raw image to rgb image,output buffer is allocated by invoker
  74. TYISP_CAPI TYISPProcessImage(TY_ISP_HANDLE handle,const TY_IMAGE_DATA *image_bayer, TY_IMAGE_DATA *image_out);
  75. #ifdef __cplusplus
  76. static inline TY_STATUS TYISPSetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, int value){
  77. return TYISPSetFeature(handle, feature_id, (uint8_t*)&(value), sizeof(int));
  78. }
  79. static inline TY_STATUS TYISPGetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, int *value){
  80. return TYISPGetFeature(handle, feature_id, (uint8_t*)value, sizeof(int));
  81. }
  82. static inline TY_STATUS TYISPSetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, float value){
  83. return TYISPSetFeature(handle, feature_id, (uint8_t*)&(value), sizeof(float));
  84. }
  85. static inline TY_STATUS TYISPGetFeature(TY_ISP_HANDLE handle, TY_ISP_FEATURE_ID feature_id, float *value){
  86. return TYISPGetFeature(handle, feature_id, (uint8_t*)value, sizeof(float));
  87. }
  88. #endif
  89. #endif