ss928_framework/ss928sdk/common/loadbmp.h

111 lines
2.6 KiB
C
Raw Normal View History

2024-12-16 13:31:45 +08:00
/*
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
*/
#ifndef __LOAD_BMP_H__
#define __LOAD_BMP_H__
#include "ot_type.h"
/* the color format OSD supported */
typedef enum {
OSD_COLOR_FORMAT_RGB444 = 0,
OSD_COLOR_FORMAT_RGB4444 = 1,
OSD_COLOR_FORMAT_RGB555 = 2,
OSD_COLOR_FORMAT_RGB565 = 3,
OSD_COLOR_FORMAT_RGB1555 = 4,
OSD_COLOR_FORMAT_RGB888 = 6,
OSD_COLOR_FORMAT_RGB8888 = 7,
OSD_COLOR_FORMAT_CLUT2 = 8,
OSD_COLOR_FORMAT_CLUT4 = 9,
OSD_COLOR_FORMAT_BUTT
} osd_color_format;
typedef struct {
td_u8 r;
td_u8 g;
td_u8 b;
td_u8 reserved;
} osd_rgb;
typedef struct {
osd_color_format color_format; /* color format */
td_u16 height; /* operation height */
td_u16 width; /* operation width */
td_u16 stride; /* surface stride */
td_u16 reserved;
td_u8 *virt_addr; /* virtual address */
} osd_surface;
typedef struct {
td_u32 width; /* out */
td_u32 height; /* out */
td_u32 stride; /* in */
td_u8 *rgb_buf; /* in/out */
} osd_logo;
typedef struct {
td_u16 bi_size;
td_u32 bi_width;
td_s32 bi_height;
td_u16 bi_planes;
td_u16 bi_bit_count;
td_u32 bi_compression;
td_u32 bi_size_image;
td_u32 bi_x_pels_per_meter;
td_u32 bi_y_pels_per_meter;
td_u32 bi_clr_used;
td_u32 bi_clr_important;
} osd_bit_map_info_header;
typedef struct {
td_u32 bf_size;
td_u16 bf_reserved1;
td_u16 bf_reserved2;
td_u32 bf_off_bits;
} osd_bit_map_file_header;
typedef struct {
td_u8 blue;
td_u8 green;
td_u8 red;
td_u8 reserved;
} osd_rgb_quad;
typedef struct {
osd_bit_map_info_header bmp_header;
osd_rgb_quad bmp_colors[1];
} osd_bit_map_info;
typedef struct {
td_u8 a_len;
td_u8 r_len;
td_u8 g_len;
td_u8 b_len;
} osd_component_info;
typedef struct {
td_u32 width;
td_u32 height;
td_u32 stride;
} canvas_size_info;
typedef canvas_size_info bmp_data_size_info;
#ifdef __cplusplus
extern "C" {
#endif
td_s32 load_image(const td_char *filename, osd_logo *video_logo);
td_s32 load_bit_map_to_surface(const td_char *file_name, const osd_surface *surface, td_u8 *virt);
td_s32 create_surface_by_bit_map(const td_char *file_name, osd_surface *surface, td_u8 *virt);
td_s32 create_surface_by_canvas(const td_char *file_name, osd_surface *surface, td_u8 *virt,
const canvas_size_info *canvas_size);
td_s32 get_bmp_info(const td_char *filename, osd_bit_map_file_header *bmp_file_header, osd_bit_map_info *bmp_info);
#ifdef __cplusplus
}
#endif
#endif /* End of #ifndef __LOAD_BMP_H__ */