MythTV master
cetonrtsp.h
Go to the documentation of this file.
1
7#ifndef CETONRTSP_H
8#define CETONRTSP_H
9
10#include <cstdint>
11
12#include <QObject>
13#include <QMap>
14#include <QString>
15#include <QMutex>
16#include <QUrl>
17#include <QTimerEvent>
18
19using namespace std::chrono_literals;
20
21class QTcpSocket;
22class QUdpSocket;
23
24using Params = QMap<QString, QString>;
25
26class CetonRTSP : public QObject
27{
28 Q_OBJECT
29
30 public:
31 explicit CetonRTSP(const QString &ip, uint tuner, ushort port);
32 explicit CetonRTSP(const QUrl &url);
33 ~CetonRTSP() override;
34
35 bool GetOptions(QStringList &options);
36 bool Describe(void);
37 bool Setup(ushort clientPort1, ushort clientPort2,
38 ushort &rtpPort, ushort &rtcpPort, uint32_t &ssrc);
39 bool Play(void);
40 bool Teardown(void);
41
42 void StartKeepAlive(void);
43 void StopKeepAlive(void);
44
45protected:
46 void timerEvent(QTimerEvent *event) override; // QObject
47 bool ProcessRequest(
48 const QString &method, const QStringList *headers = nullptr,
49 bool use_control = false, bool waitforanswer = true,
50 const QString &alternative = QString());
51
52 private:
53 QString readParameters(const QString &key, Params &parameters);
54 QUrl GetBaseUrl(void);
55
56 QTcpSocket *m_socket {nullptr};
58 QString m_sessionId {"0"};
61
66 std::chrono::seconds m_timeout {60s};
67 int m_timer {0};
68 bool m_canGetParameter {false};
69
70 static QMutex s_rtspMutex;
71
72};
73
74#endif // CETONRTSP_H
QMap< QString, QString > Params
Definition: cetonrtsp.h:24
CetonRTSP(const QString &ip, uint tuner, ushort port)
Definition: cetonrtsp.cpp:28
QUrl GetBaseUrl(void)
Return the base URL for the last DESCRIBE answer.
Definition: cetonrtsp.cpp:295
int m_timer
Definition: cetonrtsp.h:67
bool Setup(ushort clientPort1, ushort clientPort2, ushort &rtpPort, ushort &rtcpPort, uint32_t &ssrc)
Definition: cetonrtsp.cpp:383
QString m_sessionId
Definition: cetonrtsp.h:58
bool Play(void)
Definition: cetonrtsp.cpp:438
Params m_responseHeaders
Definition: cetonrtsp.h:64
bool Teardown(void)
Definition: cetonrtsp.cpp:446
static QMutex s_rtspMutex
Definition: cetonrtsp.h:70
QByteArray m_responseContent
Definition: cetonrtsp.h:65
QUrl m_controlUrl
Definition: cetonrtsp.h:60
void StopKeepAlive(void)
Definition: cetonrtsp.cpp:471
bool Describe(void)
Definition: cetonrtsp.cpp:310
QString readParameters(const QString &key, Params &parameters)
readParameters.
Definition: cetonrtsp.cpp:264
bool GetOptions(QStringList &options)
Definition: cetonrtsp.cpp:247
QUrl m_requestUrl
Definition: cetonrtsp.h:59
bool ProcessRequest(const QString &method, const QStringList *headers=nullptr, bool use_control=false, bool waitforanswer=true, const QString &alternative=QString())
Definition: cetonrtsp.cpp:51
void timerEvent(QTimerEvent *event) override
Definition: cetonrtsp.cpp:481
QTcpSocket * m_socket
Definition: cetonrtsp.h:56
~CetonRTSP() override
Definition: cetonrtsp.cpp:46
void StartKeepAlive(void)
Definition: cetonrtsp.cpp:461
uint m_sequenceNumber
Definition: cetonrtsp.h:57
std::chrono::seconds m_timeout
Definition: cetonrtsp.h:66
int m_responseCode
Definition: cetonrtsp.h:62
bool m_canGetParameter
Definition: cetonrtsp.h:68
QString m_responseMessage
Definition: cetonrtsp.h:63
unsigned int uint
Definition: compat.h:60