Files
BPI-CM9-Linux/aml-comp/hardware/amlogic/libgdc/dewarp/dewarp_api.h
T
2026-08-24 10:03:24 +08:00

149 lines
3.4 KiB
C

/*
* Copyright (c) 2014 Amlogic, Inc. All rights reserved.
*
* This source code is subject to the terms and conditions defined in the
* file 'LICENSE' which is part of this source code package.
*
* Description:
*/
#ifndef DEWARP_API_H_
#define DEWARP_API_H_
#if defined (__cplusplus)
extern "C" {
#endif
#define WIN_MAX 4
struct input_param {
int width;
int height;
int offset_x;
int offset_y;
int fov;
};
struct output_param {
int width;
int height;
};
struct proj_param {
int projection_mode;
int pan;
int tilt;
int rotation;
float zoom;
float strength_hor;
float strength_ver;
int mirror;
};
struct win_param {
int win_start_x;
int win_end_x;
int win_start_y;
int win_end_y;
int img_start_x;
int img_end_x;
int img_start_y;
int img_end_y;
int mesh_x_len;
int mesh_y_len;
};
struct clb_param {
double fx;
double fy;
double cx;
double cy;
double k1;
double k2;
double k3;
double p1;
double p2;
double k4;
double k5;
double k6;
};
struct meshin_param {
int x_start;
int y_start;
int x_len;
int y_len;
int x_step;
int y_step;
float *meshin_data_table;
};
struct dptz_param {
int src_u, src_v; /* Dewarped. Includes zoom factor */
int out_ww, out_hh; /* Dewarped. Includes zoom factor */
int srB_uW, srB_vW; /* Warped. Includes borders */
int srB_ww, srB_hh; /* Warped. Includes borders. pre-zoom */
int sc_ww, sc_hh; /* Warped. Includes borders. post-zoom (actual outputimage buffer) */
float zoom_p, zoom_q; /* zoom factor. src_width/out_width src_height/out_height */
float pixel_aspect_ratio_x, pixel_aspect_ratio_y;
/* these are static calibration parameters: */
float fx,fy; /* sensor GDC parameters (intrinsic focal length in pixels) */
float uC,vC; /* sensor GDC parameters (intrinsic image center in pixels) */
float k1,k2,k3,k4,k5,k6,p1,p2; /* sensor GDC parameters; */
};
struct proc_param {
int intrp_mode;
int replace_0;
int replace_1;
int replace_2;
int edge_0;
int edge_1;
int edge_2;
};
struct dewarp_params {
int win_num;
struct input_param input_param;
int color_mode;
struct output_param output_param;
struct proj_param proj_param[WIN_MAX];
struct clb_param clb_param[WIN_MAX];
struct meshin_param meshin_param[WIN_MAX];
struct dptz_param dptz_param;
struct win_param win_param[WIN_MAX];
int prm_mode; /* 0. use proj_param, 1.use clb_param, 2. meshin mode 3. use dptz_param */
int tile_x_step;
int tile_y_step;
struct proc_param proc_param;
};
typedef enum _dw_proj_mode_ {
PROJ_MODE_EQUISOLID = 0,
PROJ_MODE_EQUIDISTANCE,
PROJ_MODE_STEREOGRAPHIC,
PROJ_MODE_ORTHOGONAL,
PROJ_MODE_LINEAR
} dw_proj_mode_t;
typedef enum _data_mode_ {
YUV420_PLANAR = 0,
YUV420_SEMIPLANAR,
YONLY,
DEWARP_COLOR_MODE_MAX
} data_mode_t;
/* Description : generate FW data to fw_buffer
* Params : dewarp_params and fw_buffer vaddr
* Returen : success -- total bytes of FW
* fail -- minus
*/
int dewarp_gen_config(struct dewarp_params *dewarp_params, int *fw_buffer);
#if defined (__cplusplus)
}
#endif
#endif