android13/hardware/rockchip/libiep/include/iep2_api.h

153 lines
3.1 KiB
C
Executable File

/*
* Copyright 2020 Rockchip Electronics Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __IEP2_API_H__
#define __IEP2_API_H__
#include <stdint.h>
#include <stdbool.h>
#include "iep_common.h"
enum IEP2_FIELD_ORDER {
IEP2_FIELD_ORDER_TFF,
IEP2_FIELD_ORDER_BFF,
IEP2_FIELD_ORDER_UND
};
enum IEP2_FF_MODE {
IEP2_FF_MODE_FRAME,
IEP2_FF_MODE_FIELD
};
enum IEP2_FMT {
IEP2_FMT_YUV422 = 2,
IEP2_FMT_YUV420
};
enum IEP2_YUV_SWAP {
IEP2_YUV_SWAP_SP_UV,
IEP2_YUV_SWAP_SP_VU,
IEP2_YUV_SWAP_P0,
IEP2_YUV_SWAP_P
};
enum IEP2_DIL_MODE {
IEP2_DIL_MODE_DISABLE,
IEP2_DIL_MODE_I5O2,
IEP2_DIL_MODE_I5O1T,
IEP2_DIL_MODE_I5O1B,
IEP2_DIL_MODE_I2O2,
IEP2_DIL_MODE_I1O1T,
IEP2_DIL_MODE_I1O1B,
IEP2_DIL_MODE_PD,
IEP2_DIL_MODE_BYPASS,
IEP2_DIL_MODE_DECT
};
enum IEP2_OUT_MODE {
IEP2_OUT_MODE_LINE,
IEP2_OUT_MODE_TILE
};
enum IEP2_PARAM_TYPE {
IEP2_PARAM_TYPE_COM,
IEP2_PARAM_TYPE_MODE,
IEP2_PARAM_TYPE_MD,
IEP2_PARAM_TYPE_DECT,
IEP2_PARAM_TYPE_OSD,
IEP2_PARAM_TYPE_ME,
IEP2_PARAM_TYPE_EEDI,
IEP2_PARAM_TYPE_BLE,
IEP2_PARAM_TYPE_COMB,
IEP2_PARAM_TYPE_ROI
};
enum PD_COMP_FLAG {
PD_COMP_FLAG_CC,
PD_COMP_FLAG_CN,
PD_COMP_FLAG_NC,
PD_COMP_FLAG_NON
};
enum PD_TYPES {
PD_TYPES_3_2_3_2,
PD_TYPES_2_3_2_3,
PD_TYPES_2_3_3_2,
PD_TYPES_3_2_2_3,
PD_TYPES_UNKNOWN
};
union iep2_api_content {
struct {
enum IEP2_FMT sfmt;
enum IEP2_YUV_SWAP sswap;
enum IEP2_FMT dfmt;
enum IEP2_YUV_SWAP dswap;
int width;
int height;
int hor_stride;
} com;
struct {
enum IEP2_DIL_MODE dil_mode;
enum IEP2_OUT_MODE out_mode;
enum IEP2_FIELD_ORDER dil_order;
enum IEP2_FF_MODE ff_mode;
} mode;
struct {
uint32_t md_theta;
uint32_t md_r;
uint32_t md_lambda;
} md;
struct {
uint32_t roi_en;
} roi;
};
struct iep2_api_params {
enum IEP2_PARAM_TYPE ptype;
union iep2_api_content param;
};
struct iep2_api_info {
enum IEP2_FIELD_ORDER dil_order;
bool frm_mode;
enum PD_TYPES pd_types;
enum PD_COMP_FLAG pd_flag;
};
struct mv_list {
int mv[8];
int vld[8];
int idx;
};
#ifdef __cplusplus
extern "C" {
#endif
iep_com_ctx* rockchip_iep2_api_alloc_ctx(void);
void rockchip_iep2_api_release_ctx(iep_com_ctx *com_ctx);
#ifdef __cplusplus
}
#endif
#endif