⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videocodecs.h

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 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 + -