1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2020 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __IEP2_API_H__ 18*437bfbebSnyanmisaka #define __IEP2_API_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include <stdint.h> 21*437bfbebSnyanmisaka #include <stdbool.h> 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #include "iep_common.h" 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka enum IEP2_FIELD_ORDER { 26*437bfbebSnyanmisaka IEP2_FIELD_ORDER_TFF, 27*437bfbebSnyanmisaka IEP2_FIELD_ORDER_BFF, 28*437bfbebSnyanmisaka IEP2_FIELD_ORDER_UND 29*437bfbebSnyanmisaka }; 30*437bfbebSnyanmisaka 31*437bfbebSnyanmisaka enum IEP2_FF_MODE { 32*437bfbebSnyanmisaka IEP2_FF_MODE_FRAME, 33*437bfbebSnyanmisaka IEP2_FF_MODE_FIELD, 34*437bfbebSnyanmisaka IEP2_FF_MODE_UND 35*437bfbebSnyanmisaka }; 36*437bfbebSnyanmisaka 37*437bfbebSnyanmisaka enum IEP2_FMT { 38*437bfbebSnyanmisaka IEP2_FMT_YUV422 = 2, 39*437bfbebSnyanmisaka IEP2_FMT_YUV420 40*437bfbebSnyanmisaka }; 41*437bfbebSnyanmisaka 42*437bfbebSnyanmisaka enum IEP2_YUV_SWAP { 43*437bfbebSnyanmisaka IEP2_YUV_SWAP_SP_UV, 44*437bfbebSnyanmisaka IEP2_YUV_SWAP_SP_VU, 45*437bfbebSnyanmisaka IEP2_YUV_SWAP_P0, 46*437bfbebSnyanmisaka IEP2_YUV_SWAP_P 47*437bfbebSnyanmisaka }; 48*437bfbebSnyanmisaka 49*437bfbebSnyanmisaka enum IEP2_DIL_MODE { 50*437bfbebSnyanmisaka IEP2_DIL_MODE_DISABLE, 51*437bfbebSnyanmisaka IEP2_DIL_MODE_I5O2, 52*437bfbebSnyanmisaka IEP2_DIL_MODE_I5O1T, 53*437bfbebSnyanmisaka IEP2_DIL_MODE_I5O1B, 54*437bfbebSnyanmisaka IEP2_DIL_MODE_I2O2, 55*437bfbebSnyanmisaka IEP2_DIL_MODE_I1O1T, 56*437bfbebSnyanmisaka IEP2_DIL_MODE_I1O1B, 57*437bfbebSnyanmisaka IEP2_DIL_MODE_PD, 58*437bfbebSnyanmisaka IEP2_DIL_MODE_BYPASS, 59*437bfbebSnyanmisaka IEP2_DIL_MODE_DECT 60*437bfbebSnyanmisaka }; 61*437bfbebSnyanmisaka 62*437bfbebSnyanmisaka enum IEP2_OUT_MODE { 63*437bfbebSnyanmisaka IEP2_OUT_MODE_LINE, 64*437bfbebSnyanmisaka IEP2_OUT_MODE_TILE 65*437bfbebSnyanmisaka }; 66*437bfbebSnyanmisaka 67*437bfbebSnyanmisaka enum IEP2_PARAM_TYPE { 68*437bfbebSnyanmisaka IEP2_PARAM_TYPE_COM, 69*437bfbebSnyanmisaka IEP2_PARAM_TYPE_MODE, 70*437bfbebSnyanmisaka IEP2_PARAM_TYPE_MD, 71*437bfbebSnyanmisaka IEP2_PARAM_TYPE_DECT, 72*437bfbebSnyanmisaka IEP2_PARAM_TYPE_OSD, 73*437bfbebSnyanmisaka IEP2_PARAM_TYPE_ME, 74*437bfbebSnyanmisaka IEP2_PARAM_TYPE_EEDI, 75*437bfbebSnyanmisaka IEP2_PARAM_TYPE_BLE, 76*437bfbebSnyanmisaka IEP2_PARAM_TYPE_COMB, 77*437bfbebSnyanmisaka IEP2_PARAM_TYPE_ROI 78*437bfbebSnyanmisaka }; 79*437bfbebSnyanmisaka 80*437bfbebSnyanmisaka // Pulldown compose flag 81*437bfbebSnyanmisaka enum PD_COMP_FLAG { 82*437bfbebSnyanmisaka PD_COMP_FLAG_CC, 83*437bfbebSnyanmisaka PD_COMP_FLAG_CN, 84*437bfbebSnyanmisaka PD_COMP_FLAG_NC, 85*437bfbebSnyanmisaka PD_COMP_FLAG_NON 86*437bfbebSnyanmisaka }; 87*437bfbebSnyanmisaka 88*437bfbebSnyanmisaka enum PD_TYPES { 89*437bfbebSnyanmisaka PD_TYPES_3_2_3_2, 90*437bfbebSnyanmisaka PD_TYPES_2_3_2_3, 91*437bfbebSnyanmisaka PD_TYPES_2_3_3_2, 92*437bfbebSnyanmisaka PD_TYPES_3_2_2_3, 93*437bfbebSnyanmisaka PD_TYPES_UNKNOWN 94*437bfbebSnyanmisaka }; 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka union iep2_api_content { 97*437bfbebSnyanmisaka struct { 98*437bfbebSnyanmisaka enum IEP2_FMT sfmt; 99*437bfbebSnyanmisaka enum IEP2_YUV_SWAP sswap; 100*437bfbebSnyanmisaka enum IEP2_FMT dfmt; 101*437bfbebSnyanmisaka enum IEP2_YUV_SWAP dswap; 102*437bfbebSnyanmisaka int width; 103*437bfbebSnyanmisaka int height; 104*437bfbebSnyanmisaka int hor_stride; 105*437bfbebSnyanmisaka } com; 106*437bfbebSnyanmisaka 107*437bfbebSnyanmisaka struct { 108*437bfbebSnyanmisaka enum IEP2_DIL_MODE dil_mode; 109*437bfbebSnyanmisaka enum IEP2_OUT_MODE out_mode; 110*437bfbebSnyanmisaka enum IEP2_FIELD_ORDER dil_order; 111*437bfbebSnyanmisaka enum IEP2_FF_MODE ff_mode; 112*437bfbebSnyanmisaka } mode; 113*437bfbebSnyanmisaka 114*437bfbebSnyanmisaka struct { 115*437bfbebSnyanmisaka uint32_t md_theta; 116*437bfbebSnyanmisaka uint32_t md_r; 117*437bfbebSnyanmisaka uint32_t md_lambda; 118*437bfbebSnyanmisaka } md; 119*437bfbebSnyanmisaka 120*437bfbebSnyanmisaka struct { 121*437bfbebSnyanmisaka uint32_t roi_en; 122*437bfbebSnyanmisaka } roi; 123*437bfbebSnyanmisaka }; 124*437bfbebSnyanmisaka 125*437bfbebSnyanmisaka struct iep2_api_params { 126*437bfbebSnyanmisaka enum IEP2_PARAM_TYPE ptype; 127*437bfbebSnyanmisaka union iep2_api_content param; 128*437bfbebSnyanmisaka }; 129*437bfbebSnyanmisaka 130*437bfbebSnyanmisaka struct iep2_api_info { 131*437bfbebSnyanmisaka enum IEP2_FIELD_ORDER dil_order; 132*437bfbebSnyanmisaka enum IEP2_FF_MODE frm_mode; 133*437bfbebSnyanmisaka enum PD_TYPES pd_types; 134*437bfbebSnyanmisaka enum PD_COMP_FLAG pd_flag; 135*437bfbebSnyanmisaka RK_U32 dil_order_confidence_ratio; 136*437bfbebSnyanmisaka }; 137*437bfbebSnyanmisaka 138*437bfbebSnyanmisaka struct mv_list { 139*437bfbebSnyanmisaka int mv[8]; 140*437bfbebSnyanmisaka int vld[8]; 141*437bfbebSnyanmisaka int idx; 142*437bfbebSnyanmisaka }; 143*437bfbebSnyanmisaka 144*437bfbebSnyanmisaka #ifdef __cplusplus 145*437bfbebSnyanmisaka extern "C" { 146*437bfbebSnyanmisaka #endif 147*437bfbebSnyanmisaka 148*437bfbebSnyanmisaka iep_com_ctx* rockchip_iep2_api_alloc_ctx(void); 149*437bfbebSnyanmisaka void rockchip_iep2_api_release_ctx(iep_com_ctx *com_ctx); 150*437bfbebSnyanmisaka 151*437bfbebSnyanmisaka #ifdef __cplusplus 152*437bfbebSnyanmisaka } 153*437bfbebSnyanmisaka #endif 154*437bfbebSnyanmisaka 155*437bfbebSnyanmisaka #endif 156