-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathseparatedwindow.hpp
More file actions
92 lines (62 loc) · 2.16 KB
/
separatedwindow.hpp
File metadata and controls
92 lines (62 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//
// Created by pengx on 2026/2/6.
//
#ifndef GB28181_SEPARATEDWINDOW_HPP
#define GB28181_SEPARATEDWINDOW_HPP
#include <QCompleter>
#include <QMainWindow>
#include <QSettings>
#include <QTcpSocket>
#include <QThread>
#include "h264_decoder.hpp"
#include "preview_worker.hpp"
#include "sip_register.hpp"
#include "stream_worker.hpp"
QT_BEGIN_NAMESPACE
namespace Ui {
class SeparatedWindow;
}
QT_END_NAMESPACE
class SeparatedWindow : public QMainWindow {
Q_OBJECT
public:
explicit SeparatedWindow(QWidget* parent = nullptr);
~SeparatedWindow() override;
signals:
void h264DataReady(const std::vector<uint8_t>& h264Data, uint32_t pts);
void streamFrameReady(const std::vector<uint8_t>& h264Data, uint32_t pts);
private slots:
void onTcpButtonClicked();
void onDataReceived();
void registerButtonClicked();
void onSipStateChanged(int code, const QString& content);
void onG711DataReceived(const QByteArray& g711);
void onPcmDataReceived(const std::vector<int16_t>& pcm);
void doRegister();
private:
Ui::SeparatedWindow* ui;
std::unique_ptr<QTcpSocket> _tcpSocketPtr = nullptr;
std::unique_ptr<QSettings> _settingsPtr = nullptr;
QStringList _ipHistory{};
QStringList _portHistory{};
std::unique_ptr<QCompleter> _ipCompleterPtr = nullptr;
std::unique_ptr<QCompleter> _portCompleterPtr = nullptr;
bool _isConnected = false;
QByteArray _receiveBuffer{};
std::unique_ptr<PreviewWorker> _previewWorkerPtr = nullptr;
std::unique_ptr<QThread> _previewThreadPtr = nullptr;
std::unique_ptr<H264Decoder> _h264DecoderPtr = nullptr;
std::unique_ptr<QThread> _decodeThreadPtr = nullptr;
std::unique_ptr<StreamWorker> _streamWorkerPtr = nullptr;
std::unique_ptr<QThread> _streamThreadPtr = nullptr;
// Sip注册
std::atomic<bool> _isRegistered{false};
std::unique_ptr<SipRegister> _registerPtr = nullptr;
// 推流
std::atomic<bool> _isStartStream{false};
void loadConnectionHistory();
void saveConnectionHistory(const QString& ip, const QString& port);
void setupAutoComplete();
void cleanupMediaProcess();
};
#endif //GB28181_SEPARATEDWINDOW_HPP