197 lines
3.8 KiB
C
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__
|