doubao_chat/include_lib/server/vunpkg_server.h

197 lines
3.8 KiB
C

#ifndef __VUNPKG_SERVER_H__
#define __VUNPKG_SERVER_H__
#include "typedef.h"
#include "list.h"
enum {
UNPKG_AUD_TYPE_UNKNOW = 0,
UNPKG_AUD_TYPE_PCM_SOWT,
UNPKG_AUD_TYPE_PCM_TWOS,
UNPKG_AUD_TYPE_ALAW,
UNPKG_AUD_TYPE_ULAW,
UNPKG_AUD_TYPE_ADPCM_WAV,
UNPKG_AUD_TYPE_AAC,
UNPKG_AUD_TYPE_END,
};
enum VUNPKG_ISTA {
VUNPKG_ISTA_IDLE = 0,
VUNPKG_ISTA_READY,
VUNPKG_ISTA_RUN,
VUNPKG_ISTA_START,
VUNPKG_ISTA_PAUSE,
VUNPKG_ISTA_SET_STOP,
VUNPKG_ISTA_STOP,
VUNPKG_ISTA_STOPING,
VUNPKG_ISTA_ERR,
};
enum VUNPKG_ICMD {
VUNPKG_CMD_UNPKG_RUN,
VUNPKG_CMD_UNPKG_START,
VUNPKG_CMD_UNPKG_STOP,
VUNPKG_CMD_UNPKG_SET_STOP,
VUNPKG_CMD_UNPKG_STATUS,
VUNPKG_CMD_UNPKG_PAUSE,
VUNPKG_CMD_UNPKG_RESUME,
VUNPKG_CMD_UNPKG_FF_FR,
VUNPKG_CMD_UNPKG_FF_FR_END,
VUNPKG_CMD_UNPKG_NOTIFY,
VUNPKG_CMD_UNPKG_GET_MDIF,
};
enum VUNPKG_REQ_TYPE {
VUNPKG_REQ_SET_INFO,
VUNPKG_REQ_GET_INFO,
VUNPKG_REQ_CTRL,
VUNPKG_REQ_FF_FR,
VUNPKG_REQ_GET_STATUS,
VUNPKG_REQ_SET_FILE,
VUNPKG_REQ_GET_PREVIEW_PIC,
};
enum VUNPKG_STATUS {
VUNPKG_STATUS_OPEN,
VUNPKG_STATUS_START,
VUNPKG_STATUS_PAUSE,
VUNPKG_STATUS_STOP,
VUNPKG_STATUS_USER_STOP,
VUNPKG_STATUS_CLOSE,
VUNPKG_STATUS_ERROR,
};
enum VUNPKG_CMD {
VUNPKG_UNKNOW,
VUNPKG_OPEN,
VUNPKG_START,
VUNPKG_STOP,
VUNPKG_CLOSE,
VUNPKG_NOTIFY,
VUNPKG_PAUSE,
VUNPKG_RESUME,
};
struct vunpkg_sys_ops {
void *(*fopen)(const char *path, const char *mode);
int (*fread)(void *buf, u32 size, u32 count, void *file);
int (*fseek)(void *file, u32 offset, int seek_mode);
int (*ftell)(void *file);
void *(*fb_malloc)(void *hdl, u32 size);
void (*fb_free)(void *hdl, void *fb_buf);
void (*fb_put)(void *hdl, void *fb_buf);
void *(*fb_ptr)(void *fb_buf);
u32(*fb_size)(void *fb_buf);
};
struct vunpkg_ops {
char *name ;
s32(*init)();
s32(*open)(void *priv, void *arg);
s32(*close)(void *priv);
s32(*read)(void *priv, u8 *buf, u32 addr, u32 len);
s32(*write)(void *priv, u8 *buf, u32 addr, u32 len);
s32(*ioctrl)(void *priv, void *parm, u32 cmd);
};
struct vunpkg_media_info {
/** VPKG_CHG_AUD **/
u8 aud_en;//是否需要封装音频
u8 aud_type;
u8 aud_ch;//采样通道
u8 aud_bits;//采样位深
u32 aud_sr;//采样率
u32 aud_flen;
/** VPKG_CHG_VID **/
u16 vid_width;
u16 vid_heigh;
u16 fake_w;
u16 fake_h;
int i_profile_idc; //与H264编码级别相关的参数
int i_level_idc; //与H264编码级别相关的参数
u32 extra_len;
u8 *extra_data;
u32 cur_vframe;
u32 cur_aframe;
u32 vframe_sum;
u8 destroy_flag; //if is imperfect file
u8 vid_fps;//帧率
u8 IP_interval; //每隔多少P帧有一个I帧
};
struct vunpkg_info {
// const char * path;
// const char * fname;
struct vunpkg_sys_ops *sys_ops;
void *fb_vhdl;
void *fb_ahdl;
int channel;
};
struct vunpkg_file_info {
/*const char *path;
const char *fname;*/
void *file;
};
#define VUNPKG_MODE_FF 0x01 //快进
#define VUNPKG_MODE_FR 0x02 //快退
#define VUNPKG_MODE_FF_FR_END 0x03
struct vunpkg_ff_fr_info {
u8 seek_mode ; //快进快退
u32 frame_base; //需要偏移的帧号基值,从1开始
u32 frame_offset; //需要向前或者向后定位的帧偏移(以1帧为单位)
};
struct vunpkg_ctrl {
enum VUNPKG_CMD cmd;
};
struct vunpkg_preview {
struct vunpkg_info info;
struct vunpkg_file_info file_info;
};
union vunpkg_req {
struct vunpkg_info info;
struct vunpkg_file_info file_info;
struct vunpkg_ctrl ctrl;
struct vunpkg_media_info minfo;
struct vunpkg_ff_fr_info ff_fr_ctrl;
enum VUNPKG_STATUS status;
struct vunpkg_preview prev;
};
#endif // __VUNPKG_SERVER_H__