📄 videocodecs.h
字号:
#ifndef _VIDEO_CODECS_H_
#define _VIDEO_CODECS_H_
#define AVI_INCLUDE
#define FLV_INCLUDE
#define WMV_INCLUDE
#define MPEG12_INCLUDE
#define MOV_INCLUDE
/* application control command */
#define VIDEO_CTRL_PLAY_PAUSE 0
#define VIDEO_CTRL_FFD 1
#define VIDEO_CTRL_FFW 2
#define VIDEO_CTRL_RESUME 3
#define VIDEO_CTRL_GET_CUR_TIME 4
#define VIDEO_CTRL_GET_TOTAL_TIME 5
#define VIDEO_CTRL_GET_YUV_INFO 6
#define VIDEO_CTRL_GET_RESOLUTION 7
typedef struct subtitle_plugin_s subtitle_plugin_t;
typedef struct video_interface_s video_interface_t;
struct subtitle_plugin_s
{
int subFlag;
char(*init)(void);
void (*update)(long time);
void (*load)(void);
void (*seek)(long time);
void (*exit)(void);
};
/*
* Video Api description structure
*/
struct video_interface_s
{
char *name; //codec name.
int audio_flag;
// initialize and parse file, check if file is supported. If file is not supported, return an error code.
int (*init)(video_interface_t *self, char *path);
// initialize, load and start decoder. return 1 on success, return 0 on failure.
int (*open)(video_interface_t *self);
// get bit stream from file, return 1 on success, return 0 on eof.
int (*fill_buffer)(video_interface_t *self, void *arg);
// seek to time (ms).
int (*seek)(video_interface_t *self, long time);
// video play control.
int (*control)(video_interface_t *self, int cmd, void *arg0, void *arg1);
// close the decoder.
int (*exit)(video_interface_t *self, int force_exit);
// install subtitle plugin
int (*install_subtitle_plugin)(video_interface_t *self, subtitle_plugin_t *subtitle);
#ifdef TVOUT_PANEL
int (*tvoutchange)();
#endif
};
/*****************************************************************************
为了统一视频的应用接口,根据RK27视频模块的应用层需求设计此接口。我最初试图在DEMUX层
统一接口,但是看了REAL的视频播放控制方式后,觉得不太可行。
codec_name
解码器的名称,比如"AVI "、"REAL";
init
文件初始化及文件解析,参数 path 指定要打开的文件路径。返回文件解析的结果(文件是否支持等)。
open
解码初始化,启动解码器开始解码。成功返回 1,失败返回 0。
fill_buffer
为解码器填充比特流。成功返回 1,返回 0 表示文件结束。
control
视频控制:
VIDEO_CTRL_PLAY_PAUSE
播放/暂停控制。进入暂停状态返回 TRUE,进入播放状态返回 FALSE。
VIDEO_CTRL_FFD
快进,参数 arg 为快进的步长(单位:ms)。
VIDEO_CTRL_FFW
快退,参数 arg 为快退的步长(单位:ms)。
VIDEO_CTRL_RESUME
结束快进/快退状态,恢复正常播放。
VIDEO_CTRL_GET_CUR_TIME
获取当前时间。
VIDEO_CTRL_GET_TOTAL_TIME
获取总时间。
VIDEO_CTRL_GET_YUV_INFO
获取 YUV BUFFER 信息。
seek
定点播放,参数 time 指定要定位的时间(单位:ms)。此接口用于断点播放及选时播放。
exit
结束解码。
install_subtitle_plugin
安装字幕插件。为字幕模块预留的接口,也可以用于安装其它插件。
******************************************************************************/
extern video_interface_t* GetVideoCodecByExName(char *pathName);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -