Files
OpenTXW81X/sdk/include/lib/video/dvp/jpeg/jpg.h
T
2025-08-27 09:51:58 +01:00

78 lines
1.5 KiB
C

#ifndef _JPG_MODE_DEFINE_
#define _JPG_MODE_DEFINE_
#define DQT_DEF 6
#define DQT_MAX_INDEX 11
#define TARGET_JPG_LEN 15000
#define QUALITY_CTRL_P 131
#define QUALITY_CTRL_I 8
#define QUALITY_CTRL_D 0
#define LIMITING(x,x1,x2) (x>x1)?x1:(x<x2?x2:x)
typedef struct
{
struct list_head list; //jpeg_frame的节点头
uint32 frame_len; //帧长度
uint8 usable; //判断是否可用 0:空闲
// 1:节点补充中或正在使用中
// 2:可用
uint8 jpg_num;
}jpeg_frame;
typedef struct
{
struct list_head list;
uint8* buf_addr;
}mjpeg_node;
enum JPG_SRC_FROM {
VPP_DATA0,
VPP_DATA1,
PRC_DATA,
SCALER_DATA,
SOFT_DATA,
};
void jpg_start(uint8 jpgid);
void jpeg_user();
//void jpg_open(struct hgjpg_hw *p_jpg,uint8 mode);
//void hgjpg_attach(uint32 dev_id, struct hgjpg *jpg);
#ifdef TXW81X
void jpg_cfg(uint8 jpgid,enum JPG_SRC_FROM src_from);
#endif
#ifdef TXW80X
void jpg_cfg();
#endif
bool put_node(volatile struct list_head *head,volatile struct list_head *del);
void del_frame(uint8 jpg_num,volatile struct list_head* frame_list);
struct list_head* get_frame(uint8 jpgid);
void mjpeg_sema_init();
void mjpeg_sema_down(int32 tmo_ms);
void mjpeg_sema_up();
void mjpeg_avi_thread(void *d);
extern const uint16 htable[384];
extern const uint8 dhtable[412];
extern char quality_tab[6][128];
#if SCEN_EN
#define IMAGE_W_J IMAGE_W/2
#define IMAGE_H_J IMAGE_H/2
#else
#define IMAGE_W_J IMAGE_W
#define IMAGE_H_J IMAGE_H
#endif
#endif