1 /* 2 * rk_aiq_algo_adrc_hw.h 3 * 4 * Copyright (c) 2019 Rockchip Corporation 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 */ 19 #include "adrc_head.h" 20 21 #ifndef _RK_AIQ_ALGO_ADRC_HW_H_ 22 #define _RK_AIQ_ALGO_ADRC_HW_H_ 23 24 #define DRC_V10_Y_NUM 17 25 #define DRC_V11_Y_NUM DRC_V10_Y_NUM 26 #define DRC_V12_Y_NUM DRC_V10_Y_NUM 27 28 typedef struct DrcProcResV10_s { 29 unsigned char sw_drc_offset_pow2; 30 unsigned short sw_drc_compres_scl; 31 unsigned short sw_drc_position; 32 unsigned short sw_drc_delta_scalein; 33 unsigned short sw_drc_hpdetail_ratio; 34 unsigned short sw_drc_lpdetail_ratio; 35 unsigned char sw_drc_weicur_pix; 36 unsigned char sw_drc_weipre_frame; 37 unsigned short sw_drc_force_sgm_inv0; 38 unsigned char sw_drc_motion_scl; 39 unsigned char sw_drc_edge_scl; 40 unsigned short sw_drc_space_sgm_inv1; 41 unsigned short sw_drc_space_sgm_inv0; 42 unsigned short sw_drc_range_sgm_inv1; 43 unsigned short sw_drc_range_sgm_inv0; 44 unsigned char sw_drc_weig_maxl; 45 unsigned char sw_drc_weig_bilat; 46 unsigned short sw_drc_gain_y[DRC_V10_Y_NUM]; 47 unsigned short sw_drc_compres_y[DRC_V10_Y_NUM]; 48 unsigned short sw_drc_scale_y[DRC_V10_Y_NUM]; 49 unsigned short sw_drc_iir_weight; 50 unsigned short sw_drc_min_ogain; 51 } DrcProcResV10_t; 52 53 typedef struct DrcProcResV11_s { 54 unsigned char bypass_en; 55 unsigned char offset_pow2; 56 unsigned short compres_scl; 57 unsigned short position; 58 unsigned short delta_scalein; 59 unsigned short hpdetail_ratio; 60 unsigned short lpdetail_ratio; 61 unsigned char weicur_pix; 62 unsigned char weipre_frame; 63 unsigned char bilat_wt_off; 64 unsigned short force_sgm_inv0; 65 unsigned char motion_scl; 66 unsigned char edge_scl; 67 unsigned short space_sgm_inv1; 68 unsigned short space_sgm_inv0; 69 unsigned short range_sgm_inv1; 70 unsigned short range_sgm_inv0; 71 unsigned char weig_maxl; 72 unsigned char weig_bilat; 73 unsigned char enable_soft_thd; 74 unsigned short bilat_soft_thd; 75 unsigned short gain_y[DRC_V11_Y_NUM]; 76 unsigned short compres_y[DRC_V11_Y_NUM]; 77 unsigned short scale_y[DRC_V11_Y_NUM]; 78 unsigned short wr_cycle; 79 unsigned short iir_weight; 80 unsigned short min_ogain; 81 } DrcProcResV11_t; 82 83 typedef struct DrcProcResV12_s { 84 unsigned char bypass_en; 85 unsigned char offset_pow2; 86 unsigned short compres_scl; 87 unsigned short position; 88 unsigned short hpdetail_ratio; 89 unsigned short lpdetail_ratio; 90 unsigned char delta_scalein; 91 unsigned char weicur_pix; 92 unsigned char weipre_frame; 93 unsigned char bilat_wt_off; 94 unsigned char edge_scl; 95 unsigned char motion_scl; 96 unsigned short force_sgm_inv0; 97 unsigned short space_sgm_inv1; 98 unsigned short space_sgm_inv0; 99 unsigned short range_sgm_inv1; 100 unsigned short range_sgm_inv0; 101 unsigned short bilat_soft_thd; 102 unsigned char weig_maxl; 103 unsigned char weig_bilat; 104 unsigned char enable_soft_thd; 105 unsigned char iir_weight; 106 unsigned short min_ogain; 107 unsigned short gas_t; 108 unsigned char gas_l0; 109 unsigned char gas_l1; 110 unsigned char gas_l2; 111 unsigned char gas_l3; 112 unsigned short gain_y[DRC_V12_Y_NUM]; 113 unsigned short compres_y[DRC_V12_Y_NUM]; 114 unsigned short scale_y[DRC_V12_Y_NUM]; 115 } DrcProcResV12_t; 116 117 typedef struct DrcProcRes_s { 118 #if RKAIQ_HAVE_DRC_V10 119 DrcProcResV10_t Drc_v10; 120 #endif 121 #if RKAIQ_HAVE_DRC_V11 122 DrcProcResV11_t Drc_v11; 123 #endif 124 #if RKAIQ_HAVE_DRC_V12 || RKAIQ_HAVE_DRC_V12_LITE 125 DrcProcResV12_t Drc_v12; 126 #endif 127 } DrcProcRes_t; 128 129 typedef struct RkAiqAdrcProcResult_s { 130 bool bDrcEn; 131 DrcProcRes_t DrcProcRes; 132 } RkAiqAdrcProcResult_t; 133 134 #endif //_RK_AIQ_ALGO_ADRC_HW_H_ 135