/******************************************************************************* * lib_smartfb.h * * History: * 2017/07/25 - [Hao Qian] created file * * Copyright (c) 2017 Ambarella, Inc. * * This file and its contents ( "Software" ) are protected by intellectual * property rights including, without limitation, U.S. and/or foreign * copyrights. This Software is also the confidential and proprietary * information of Ambarella, Inc. and its licensors. You may not use, reproduce, * disclose, distribute, modify, or otherwise prepare derivative works of this * Software or any portion thereof except pursuant to a signed license agreement * or nondisclosure agreement with Ambarella, Inc. or its authorized affiliates. * In the absence of such an agreement, you agree to promptly notify and return * this Software to Ambarella, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, * MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL AMBARELLA, INC. OR ITS AFFILIATES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; COMPUTER FAILURE OR MALFUNCTION; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * ******************************************************************************/ #ifndef _SMARTFB_LIB_H #define _SMARTFB_LIB_H #ifdef __cplusplus extern "C" { #endif #define MAX_TEXT_SIZE (200) #define MAX_LINE_THICKNESS (10) #define MAX_CAP_AREA_NUM (10) #define MAX_NAME_SIZE (32) #include "basetypes.h" enum smartfb_vout_id { SMARTFB_DIGITAL_VOUT = 0, SMARTFB_ANALOG_VOUT = 1, SMARTFB_VOUT_NUM, }; enum smartfb_mode_name { SMARTFB_MODE_CLUT8BPP = 0, SMARTFB_MODE_ARGB8888 = 1, SMARTFB_MODE_NUM, SMARTFB_MODE_INVALID = 0xFF, }; enum smartfb_color { SMARTFB_COLOR_RED = 0, SMARTFB_COLOR_LIME = 1, SMARTFB_COLOR_BLUE = 2, SMARTFB_COLOR_MAGENTA = 3, SMARTFB_COLOR_SPRING_GREEN = 4, SMARTFB_COLOR_MEDIUM_SLATE_BLUE = 5, SMARTFB_COLOR_YELLOW = 6, SMARTFB_COLOR_DARK_ORANGE = 7, SMARTFB_COLOR_CYAN = 8, SMARTFB_COLOR_GREEN = 9, SMARTFB_COLOR_BLUE_VIOLET = 10, SMARTFB_COLOR_VIOLET = 11, SMARTFB_COLOR_DEEP_PINK = 12, SMARTFB_COLOR_NAVY = 13, SMARTFB_COLOR_MAROON = 14, SMARTFB_COLOR_PURPLE = 15, SMARTFB_COLOR_SALMON = 16, SMARTFB_COLOR_OLIVE = 17, SMARTFB_COLOR_MOCCASIN = 18, SMARTFB_COLOR_TEAL = 19, SMARTFB_COLOR_GRAY = 20, SMARTFB_COLOR_WHITE = 21, SMARTFB_COLOR_BLACK = 22, SMARTFB_COLOR_NUM, }; enum smartfb_alpha { SMARTFB_ALPHA_LEVEL0 = 0, // alpha = 0 SMARTFB_ALPHA_LEVEL1 = 1, // alpha = 32 SMARTFB_ALPHA_LEVEL2 = 2, // alpha = 64 SMARTFB_ALPHA_LEVEL3 = 3, // alpha = 96 SMARTFB_ALPHA_LEVEL4 = 4, // alpha = 128 SMARTFB_ALPHA_LEVEL5 = 5, // alpha = 160 SMARTFB_ALPHA_LEVEL6 = 6, // alpha = 192 SMARTFB_ALPHA_LEVEL7 = 7, // alpha = 255 SMARTFB_ALPHA_NUM, }; typedef struct smartfb_init_s { enum smartfb_vout_id vout; } smartfb_init_t; typedef struct smartfb_obj_s { u16 offset_x; u16 offset_y; u8 color; u8 bg_color; u8 bg_alpha; u8 reserved; } smartfb_obj_t; typedef struct smartfb_box_s { smartfb_obj_t obj; u16 width; u16 height; u8 line_thickness; u8 reserved[3]; } smartfb_box_t; typedef struct smartfb_cap_area_s { char name[MAX_NAME_SIZE]; u16 offset_x; u16 offset_y; u16 width; u16 height; } smartfb_cap_area_t; typedef struct smartfb_textbox_s { smartfb_box_t box; u8 font_size; u8 outline; // to do u8 bold; u8 italic; u32 wrap_line : 1; u32 reserved : 31; char text[MAX_TEXT_SIZE]; } smartfb_textbox_t; typedef struct smartfb_line_s { u32 start_x; u32 start_y; u32 end_x; u32 end_y; u8 line_thickness; u8 color; u8 reserved[2]; } smartfb_line_t; typedef struct smartfb_circle_s { u16 center_x; u16 center_y; u16 radius; u8 color; u8 alpha; } smartfb_circle_t; typedef struct smartfb_iav_yuv_cap_params_s { u8 *y_vir_base_addr; /*!< y_virtual_base_address is based on YUV data resolution */ u8 *uv_vir_base_addr; /*!< uv_virtual_base_address is based on YUV data resolution */ u32 pitch; /*!< pitch size is based on YUV data resolution */ u32 width; /*!< Width is based on YUV data resolution */ u32 height; /*!< Height is based on YUV data resolution */ } smartfb_iav_yuv_cap_params_t; typedef struct smartfb_mosaic_s { smartfb_iav_yuv_cap_params_t yuv_params; u32 offset_x; /*!< mosaic_offset_x is based on frame buffer resolution */ u32 offset_y; /*!< mosaic_offset_y is based on frame buffer resolution */ u32 width; /*!< mosaic_width is based on frame buffer resolution */ u32 height; /*!< mosaic_height is based on frame buffer resolution */ u32 grid_width; /*!< mosaic_grid_width is based on frame buffer resolution */ u32 grid_height; /*!< mosaic_grid_height is based on frame buffer resolution */ } smartfb_mosaic_t; /* Basix API */ AMBA_API int smartfb_init(smartfb_init_t *fb_init); AMBA_API int smartfb_deinit(void); AMBA_API int smartfb_clear(void); //Blank VOUT and Clear fmem AMBA_API int smartfb_display(void); // Display fmem in VOUT /* Draw differe obj to fmem */ AMBA_API int smartfb_draw_box(smartfb_box_t *fb_box); AMBA_API int smartfb_draw_textbox(smartfb_textbox_t *fb_textbox); AMBA_API int smartfb_draw_line(smartfb_line_t *fb_line); AMBA_API int smartfb_draw_circle(smartfb_circle_t *fb_circle); AMBA_API int smartfb_draw_mosaic(smartfb_mosaic_t *fb_mosaic); /* All interfaces use clut8bpp by default, except for some interfaces with "argb8888" suffix like this. */ AMBA_API int smartfb_draw_mosaic_with_argb8888(smartfb_mosaic_t *fb_mosaic); AMBA_API int smartfb_set_clut(u16 *r_table, u16 *g_table, u16 *b_table, u16 *trans_table); AMBA_API u8 *smartfb_get_fb_mem(void); AMBA_API int smartfb_get_var(struct fb_var_screeninfo *fb_var); AMBA_API int smartfb_get_fix(struct fb_fix_screeninfo *fb_fix); AMBA_API u32 smartfb_get_fb_bpp(void); AMBA_API enum smartfb_mode_name smartfb_get_fb_mode_name(void); AMBA_API int smartfb_get_specific_text(smartfb_textbox_t *fb_textbox, wchar_t *pattern_addr, u8 *mem, int convert_num); AMBA_API u32 smartfb_get_fb_yoffset(void); AMBA_API int smartfb_clear_buffer(void); AMBA_API int smartfb_save_capture_area_buffer(smartfb_cap_area_t *fb_cap_area); AMBA_API int smartfb_modify_capture_area_buffer(smartfb_cap_area_t *fb_cap_area, char *area_name); AMBA_API int smartfb_delete_capture_area_buffer(char *area_name); AMBA_API int smartfb_delete_all_capture_area_buffer(void); AMBA_API int smartfb_restore_capture_area_buffer(char *area_name); AMBA_API int smartfb_restore_all_capture_area_buffer(void); #ifdef __cplusplus } #endif #endif //_SMARTFB_LIB_H