Files
gdmp/displaywind.h

76 lines
1.7 KiB
C
Raw Normal View History

2025-09-25 16:56:53 +08:00
#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