76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#ifndef DISPLAYWIND_H
|
||
#define DISPLAYWIND_H
|
||
|
||
#include <QWidget>
|
||
#include <QMutex>
|
||
#include "ijkmediaplayer.h"
|
||
#include "imagescaler.h"
|
||
#include <QKeyEvent>
|
||
#include <QBoxLayout>
|
||
#include <QMouseEvent>
|
||
|
||
namespace Ui {
|
||
class DisplayWind;
|
||
}
|
||
|
||
class DisplayWind : public QWidget
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
explicit DisplayWind(QWidget *parent = 0);
|
||
~DisplayWind();
|
||
int Draw(const Frame *frame);
|
||
void DeInit();
|
||
void StartPlay();
|
||
void StopPlay();
|
||
|
||
signals:
|
||
void signalFullScreenChanged();
|
||
|
||
public slots:
|
||
void onToggleFullScreen(bool full);
|
||
protected:
|
||
// 这里不要重载event事件,会导致paintEvent不被触发
|
||
void paintEvent(QPaintEvent *) override;
|
||
void resizeEvent(QResizeEvent *event) override;
|
||
void keyPressEvent(QKeyEvent* event) override;
|
||
|
||
private:
|
||
void enterFullScreen();
|
||
void exitFullScreen();
|
||
private:
|
||
Ui::DisplayWind *ui;
|
||
|
||
int m_nLastFrameWidth; ///< 记录视频宽高
|
||
int m_nLastFrameHeight;
|
||
bool is_display_size_change_ = false;
|
||
|
||
int x_ = 0; // 起始位置
|
||
int y_ = 0;
|
||
int video_width = 0;
|
||
int video_height = 0;
|
||
int img_width = 0;
|
||
int img_height = 0;
|
||
int win_width_ = 0;
|
||
int win_height_ = 0;
|
||
bool req_resize_ = false;
|
||
QImage img;
|
||
VideoFrame dst_video_frame_;
|
||
QMutex m_mutex;
|
||
ImageScaler *img_scaler_ = NULL;
|
||
|
||
// 全屏
|
||
bool bIsFull_ = false;
|
||
QWidget* stParentWidget_ = nullptr;
|
||
QBoxLayout* stParentLayout_ = nullptr;
|
||
int nParentLayoutIndex_ = 0;
|
||
QRect stOriginalGeometry_;
|
||
int nWinWidthBack_ = 0;
|
||
int nWinHeightBack_ = 0;
|
||
|
||
int play_state_ = 0; // 0 初始化状态; 1 播放状态; 2 停止状态
|
||
};
|
||
|
||
#endif // DISPLAYWIND_H
|