You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
5.3 KiB

/**
* Copyright (c) 2023 Rockchip Electronic Co.,Ltd
* kenvenis.chen@rock-chips.com
*/
#ifndef _RK_AVM_API_H_
#define _RK_AVM_API_H_
#include <string>
#include <fstream>
#include <iomanip>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <utils/Log.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <GLES3/gl3.h>
#include <GLES3/gl3ext.h>
#include <ui/GraphicBuffer.h>
#define USING_DMAHEAP_FOR_EVS 1
enum RK_AVM_CMD
{
rk_cmd_render_front_wide = 0x0, /* ??????? */
rk_cmd_render_front_top_fish_eye, /* ????? + ???? */
rk_cmd_render_front_top_far, /* ????? + ???? */
rk_cmd_render_front_3D, /* ???3D */
rk_cmd_render_back_wide, /* ???????? */
rk_cmd_render_back_top_fish_eye, /* ?????? + ???? */
rk_cmd_render_back_top_far, /* ?????? + ???? */
rk_cmd_render_back_3D, /* ????3D */
rk_cmd_render_left_top_2D, /* ?????? + 2D */
rk_cmd_render_left_top_3D, /* ?????? + 3D */
rk_cmd_render_right_top_2D = 0xB, /* ?????? + 2D */
rk_cmd_render_right_top_3D, /* ?????? + 2D */
rk_cmd_render_left_right_top_2D = 0xE, /* ???????? + 2D */
rk_cmd_render_left_right_top_3D,
rk_cmd_render_3d_view_adjuest, /* ?????3D */
rk_cmd_render_top_3d_view_adjuest,/* ?????3D */
rk_cmd_render_set_screen_offset,
rm_cmd_render_set_vehicle_enable,
rm_cmd_render_set_vehicle_disable,
rk_cmd_calib_init = 0x40,
rk_cmd_calib_defish,
rk_cmd_calib_search_count,
rk_cmd_calib_grid,
rk_cmd_calib_deinit,
rk_cmd_avm_control_init = 0x60,
rk_cmd_avm_control_render_fd,
rk_cmd_avm_control_render_viraddr,
rk_cmd_avm_control_single_copy,
rk_cmd_avm_control_deinit,
};
typedef struct InputBufDec
{
void *addr;
int w;
int h;
int cam_id;
int pixformat;
bool flag;
} InputBufDec_t;
int rk_avm_rev_cmd_proc(int cmd_type, void *data);
void rkavm_sync();
int rk_avm_get_surround_type();
void rk_avm_set_state_stop();
int get_rk_avm_framebuffer_fd(int index);
void rk_avm_egl_init(int egl_type, int dwidth, int dheight);
void rk_avm_set_extern_buf_enable(bool ext_enable);
void rk_avm_set_ctx(EGLContext *ctx);
void rk_avm_set_face(EGLSurface *sface);
void rk_avm_set_dis(EGLDisplay *sdis);
int rk_avm_get_share_tex(int index);
void rk_avm_set_cam_input_type_bpp(int type_bpp);
int rk_avm_init_set_output_size(int width, int height);
void rk_avm_cam_param_init(int cam_num, int width,
int height, int cam_type);
void rk_avm_set_model_scale_factor(float x, float y, float z);
void rk_avm_set_calib_data_path(std::string calib_result);
void rk_avm_set_base_data_path(std::string data_base);
int rk_avm_get_camera_id(int index);
int rk_avm_init(const char *xml_setting, bool is_using_xml_init);
void rk_avm_deinit();
void rk_avm_send_share_fd(int *fd, int camera_id);
void rk_avm_set_data_fd(int *fd, int *frame_index, unsigned char *disp_buf);
void rk_avm_set_input_buf_single(void *src_addr, int w, int h, int cam_id, int pixel_format, bool is_src_fd);
void rk_avm_render_buf_single_tran(uint32_t src_buffer_handle, int w, int h, int cam_id, int pixel_format);
void rk_avm_gl_render(void *addr, bool is_dst_fd);
int rga_simple_transfer(uint32_t src_handle,
uint32_t dst_handle,
int swidth, int sheight,
int dwidth, int dheight,
int sformat, int dformat);
int rga_crop_transfer_raw(uint32_t src_handle,
uint32_t dst_handle,
int swidth, int sheight,
int swstride, int shstride,
int dwidth, int dheight,
int dwstride, int dhstride,
int dwtop, int dhtop,
int sformat, int dformat);
void rk_avm_render_update(int *src_addr_array, long dst_addr, int buffer_num, int pixel_format, bool is_src_fd, bool is_dst_fd);
void rk_avm_render_update_test(int *src_addr_array, long dst_addr, int buffer_num, int pixel_format,
int src_w, int src_h, int dst_w, int dst_h, bool is_src_fd, bool is_dst_fd);
void rk_avm_split_transfer_input_data(void *input_daddr, int iw, int ih, int camId);
bool rkavm_get_init_state(void);
void rkavm_control_init(void);
void rkavm_control_exit(void);
void rkavm_set_evs_apk_show(bool flag);
void rk_avm_destroy_img(int camId);
bool rk_avm_render_update_android_tex(int camId, const native_handle_t *inHandle, android::GraphicBuffer::HandleWrapMethod method, uint32_t inWidth,
uint32_t inHeight, int32_t inFormat, uint32_t inLayerCount, uint64_t inUsage,
uint32_t inStride);
bool rk_avm_render_update_android_hardwarebuffer(int camId, const AHardwareBuffer* ahardwarebuffer);
void rk_avm_set_input_tex_single(int camID, unsigned int texid);
#if USING_DMAHEAP_FOR_EVS
void *render_dma_heap_buf(int *export_fd, int width, int height, int bpp);
bool rkavm_get_int_state();
uint32_t rk_avm_get_evs_handle(int index);
int rk_avm_get_evs_width();
int rk_avm_get_evs_height();
int rk_avm_get_evs_fd(int index);
void rk_avm_set_display(int dw, int dh);
void rk_avm_destroy_shader();
uint32_t rk_avm_get_fbo_handle(int index);
void render_get_avm_display(EGLDisplay *renderPlay);
void render_get_avm_context(EGLContext *renderFace);
#endif
#endif