#ifndef _IVIDEOPLAYER_H_
#define _IVIDEOPLAYER_H_

#include <QObject>

class IVideoPlayer : public QObject
{
    Q_OBJECT
public:

    explicit IVideoPlayer() {}
    virtual ~IVideoPlayer() {}

    /* 打开播放视频 */
    virtual bool openPlayVedio(const QString& fileName) = 0;
    /* 播放视频 */
    virtual bool play() = 0;
    /* 暂停播放 */
    virtual void pause() = 0;
    /* 停止播放 */
    virtual void stop() = 0;
    /* 后退，单位ms */
    virtual void backward(qint64 ms) = 0;
    /* 前进，单位ms */
    virtual void forward(qint64 ms) = 0;

    /* 获取播放状态 */
    virtual bool getPlayStatus() = 0;
    /* 获取视频时长 */
    virtual qint64 getDuration() = 0;
    /* 获取当前播放位置 */
    virtual qint64 getCurrentPos() = 0;
    /* 设置当前播放位置 */
    virtual void setCurrentPos(qint64 pos) = 0;

    /* 设置播放视频窗口的大小 */
    virtual void setPlayWidgetSize(int width,int height) = 0;
    /* 设置播放窗口 */
    virtual void setWidgetParent(QWidget* widget, bool isFull = false) = 0;
    /* 获取播放窗口的指针 */
    virtual QWidget* getPlayWidget() const = 0;
    /* 设置预览图片数目，在暂停时跳转，可能会有花屏或者黑帧，可以设置跳转图片个数跳过黑帧 */
    virtual void setPreviewImage(int num = 2) = 0;
    /* 设置播放速度 */
    virtual void setPlaySpeed(float speed) = 0;

signals:
    void signal_playCompleted();                    /* 播放完成信号 */
    // void signal_refreshImage();                     /* 刷新图片信号 */

};


#endif /* _IVIDEOPLAYER_H_ */
