gk7205v200-uboot/product/osd/dec/jpegd_drv.h
2025-08-07 17:13:54 +08:00

140 lines
3.6 KiB
C
Executable File

/*
* Copyright (c) Hunan Goke,Chengdu Goke,Shandong Goke. 2021. All rights reserved.
*/
#ifndef __JPEGD_DRV_H__
#define __JPEGD_DRV_H__
#include "jpegd_reg.h"
#include "type.h"
#ifdef __cplusplus
extern "C" {
#endif /* End of #ifdef __cplusplus */
#define JPEGD_REGS_SIZE 0x6BF
#define JPEGD_IP_NUM 1
#define QUANT_TABLE_SIZE 64
#define HDC_TABLE_SIZE 12
#define HAC_MIN_TABLE_SIZE 8
#define HAC_BASE_TABLE_SIZE 8
#define HAC_SYMBOL_TABLE_SIZE 176
#define ZIGZAG_TABLE_SIZE 64
typedef struct {
gk_bool int_dec_finish;
gk_bool int_dec_err;
gk_bool int_over_time;
gk_bool int_bs_res;
} jpegd_vpu_status;
typedef enum {
PIXEL_FORMAT_RGB_444 = 0,
PIXEL_FORMAT_RGB_555,
PIXEL_FORMAT_RGB_565,
PIXEL_FORMAT_RGB_888,
PIXEL_FORMAT_BGR_444,
PIXEL_FORMAT_BGR_555,
PIXEL_FORMAT_BGR_565,
PIXEL_FORMAT_BGR_888,
PIXEL_FORMAT_ARGB_1555,
PIXEL_FORMAT_ARGB_4444,
PIXEL_FORMAT_ARGB_8565,
PIXEL_FORMAT_ARGB_8888,
PIXEL_FORMAT_ABGR_1555,
PIXEL_FORMAT_ABGR_4444,
PIXEL_FORMAT_ABGR_8565,
PIXEL_FORMAT_ABGR_8888,
PIXEL_FORMAT_RGB_BAYER_8BPP,
PIXEL_FORMAT_RGB_BAYER_10BPP,
PIXEL_FORMAT_RGB_BAYER_12BPP,
PIXEL_FORMAT_RGB_BAYER_14BPP,
PIXEL_FORMAT_RGB_BAYER_16BPP,
PIXEL_FORMAT_YUV_PLANAR_422,
PIXEL_FORMAT_YUV_PLANAR_420,
PIXEL_FORMAT_YUV_PLANAR_444,
PIXEL_FORMAT_YVU_SEMIPLANAR_422,
PIXEL_FORMAT_YVU_SEMIPLANAR_420,
PIXEL_FORMAT_YVU_SEMIPLANAR_444,
PIXEL_FORMAT_UYVY_PACKAGE_422,
PIXEL_FORMAT_YUYV_PACKAGE_422,
PIXEL_FORMAT_VYUY_PACKAGE_422,
PIXEL_FORMAT_YUV_400,
PIXEL_FORMAT_BUTT
} gk_pixel_format;
typedef enum {
PICTURE_FORMAT_YUV420 = 0,
PICTURE_FORMAT_YUV422 = 1, /* 422 2x1 */
PICTURE_FORMAT_YUV444 = 2,
PICTURE_FORMAT_YUV422V = 3, /* 422 1x2 */
PICTURE_FORMAT_YUV400 = 4,
PICTURE_FORMAT_BUTT
} picture_format;
typedef struct {
int chn_id;
picture_format pic_format;
gk_pixel_format pixel_format;
gk_bool out_yuv;
unsigned char v_fac;
unsigned char u_fac;
unsigned char y_fac;
unsigned int dri;
unsigned int width;
unsigned int height;
unsigned int width_in_mcu;
unsigned int height_in_mcu;
unsigned int y_stride;
unsigned int c_stride;
unsigned int pic_type;
unsigned int rgb_stride;
unsigned int alpha;
unsigned long long y_phy_addr;
unsigned long long c_phy_addr;
unsigned long long phy_str_buf_start;
unsigned long long phy_str_buf_end;
unsigned long long phy_str_start;
unsigned long long phy_str_end;
unsigned long long phy_emar_buffer0;
unsigned long long phy_emar_buffer1;
unsigned int quant_table[QUANT_TABLE_SIZE];
unsigned int huffman_table[HDC_TABLE_SIZE];
unsigned int huffman_min_table[HAC_MIN_TABLE_SIZE];
unsigned int huffman_base_table[HAC_BASE_TABLE_SIZE];
unsigned int huffman_symbol_table[HAC_SYMBOL_TABLE_SIZE];
} jpegd_vpu_config;
void jpegd_drv_write_regs(S_JPGD_REGS_TYPE *reg_base, jpegd_vpu_config *vpu_config);
void jpegd_drv_read_regs(S_JPGD_REGS_TYPE *reg_base, jpegd_vpu_status *vpu_status);
void jpegd_set_clock_en(int vpu_id, gk_bool is_run);
void jpegd_reset_select(int vpu_id, gk_bool is_run);
void jpegd_set_outstanding(int vpu_id, int outstanding);
void *jpegd_get_reg_addr(int vpu_id);
unsigned int jpegd_read_int(int vpu_id);
void jpegd_clear_int(int vpu_id);
void jpegd_set_int_mask(int vpu_id);
void jpegd_reset(int vpu_id);
void jpegd_start_vpu(int vpu_id);
int jpegd_set_time_out(int vpu_id, int time_out);
#ifdef __cplusplus
}
#endif /* End of #ifdef __cplusplus */
#endif /* End of __JPEGD_DRV_H__ */