197 lines
3.0 KiB
C
197 lines
3.0 KiB
C
#ifndef VIDEO_DECODE_SERVER_H
|
|
#define VIDEO_DECODE_SERVER_H
|
|
|
|
|
|
#include "server/server_core.h"
|
|
#include "fs/fs.h"
|
|
|
|
|
|
#define VIDEO_DEC_EVENT_END 0x20
|
|
#define VIDEO_DEC_EVENT_CURR_TIME 0x21
|
|
#define VIDEO_DEC_EVENT_ERR 0x22
|
|
|
|
|
|
/*struct jpeg_file {
|
|
const char *name;
|
|
};
|
|
|
|
struct jpeg_data {
|
|
u8 *data;
|
|
u32 data_len;
|
|
};
|
|
|
|
enum {
|
|
JPEG_INPUT_TYPE_FILE,
|
|
JPEG_INPUT_TYPE_DATA,
|
|
};
|
|
|
|
struct jpeg_decode_req {
|
|
u8 input_type;
|
|
union {
|
|
struct jpeg_file file;
|
|
struct jpeg_data data;
|
|
} input;
|
|
u8 *buf_y;
|
|
u8 *buf_u;
|
|
u8 *buf_v;
|
|
u16 buf_width;
|
|
u16 buf_height;
|
|
u16 buf_xoffset;
|
|
u16 buf_yoffset;
|
|
u16 output_width;
|
|
u16 output_height;
|
|
u16 output_xoffset;
|
|
u16 output_yoffset;
|
|
void *priv;
|
|
void (*stream_end)(void *priv);
|
|
};
|
|
|
|
enum {
|
|
VIDEO_DECODE_REQ_START,
|
|
};
|
|
|
|
|
|
union video_decode_req {
|
|
struct jpeg_decode_req jpeg;
|
|
};*/
|
|
|
|
|
|
|
|
struct vds_video_info {
|
|
u16 width;
|
|
u16 height;
|
|
u32 total_time;
|
|
};
|
|
|
|
struct vds_audio_param {
|
|
void *buf;
|
|
int buf_len;
|
|
u32 volume;
|
|
};
|
|
|
|
struct vds_image_info {
|
|
u8 *buf;
|
|
u32 size;
|
|
u8 *aux_buf;
|
|
u32 aux_buf_size;
|
|
};
|
|
|
|
struct video_dec_param {
|
|
u16 left;
|
|
u16 top;
|
|
u16 width;
|
|
u16 height;
|
|
u16 border_left;
|
|
u16 border_top;
|
|
u16 border_right;
|
|
u16 border_bottom;
|
|
u8 preview;
|
|
u8 thm_first;
|
|
u8 volume;
|
|
FILE *file;
|
|
const char *ftype;
|
|
const char *fb;
|
|
struct vds_image_info image;
|
|
struct vds_video_info info;
|
|
struct imc_presca_ctl *pctl;
|
|
int (*get_yuv)(void *hdl, void *frame);
|
|
};
|
|
|
|
struct video_dec_preview {
|
|
u8 show_mode; // 0: 裁剪, 1: 缩放
|
|
u8 rotate;
|
|
u16 left;
|
|
u16 top;
|
|
u16 width;
|
|
u16 height;
|
|
u16 src_width;
|
|
u16 src_height;
|
|
u16 border_left;
|
|
u16 border_top;
|
|
u16 border_right;
|
|
u16 border_bottom;
|
|
u16 dst_left;
|
|
u16 dst_top;
|
|
u32 backcolor;
|
|
FILE *file;
|
|
const char *fb;
|
|
struct vds_image_info image;
|
|
struct vds_video_info info;
|
|
struct imc_presca_ctl *pctl;
|
|
};
|
|
|
|
struct video_dec_ff_fr {
|
|
u8 on;
|
|
u8 once;
|
|
u8 times;
|
|
u16 msec_step;
|
|
};
|
|
|
|
/*
|
|
* video_decoder server支持的请求列表
|
|
*/
|
|
enum {
|
|
VIDEO_REQ_DEC_STOP,
|
|
VIDEO_REQ_DEC_START,
|
|
VIDEO_REQ_DEC_PLAY_PAUSE,
|
|
VIDEO_REQ_DEC_RESUME,
|
|
VIDEO_REQ_DEC_FF,
|
|
VIDEO_REQ_DEC_FR,
|
|
VIDEO_REQ_DEC_IMAGE,
|
|
VIDEO_REQ_DEC_PREVIEW_OPEN,
|
|
VIDEO_REQ_DEC_PREVIEW,
|
|
VIDEO_REQ_DEC_PREVIEW_CLEAR,
|
|
VIDEO_REQ_DEC_PREVIEW_MOVE,
|
|
VIDEO_REQ_DEC_PREVIEW_FLUSH,
|
|
VIDEO_REQ_DEC_PREVIEW_CLOSE,
|
|
};
|
|
|
|
union video_dec_req {
|
|
struct video_dec_param dec;
|
|
struct video_dec_ff_fr f;
|
|
struct video_dec_preview preview;
|
|
};
|
|
|
|
struct dec_ram_device {
|
|
u8 enable;
|
|
const char *name;
|
|
u32 video_addr;
|
|
u32 video_size;
|
|
u32 audio_addr;
|
|
u32 audio_size;
|
|
};
|
|
|
|
struct video_dec_arg {
|
|
const char *dev_name;
|
|
int audio_buf_size;
|
|
int video_buf_size;
|
|
u8 *audio_buf;
|
|
u8 *video_buf;
|
|
struct dec_ram_device ram_dev;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|