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 : 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 bool ProcessRequest(
47 const QString &method, const QStringList *headers = nullptr,
48 bool use_control = false, bool waitforanswer = true,
49 const QString &alternative = QString());
50
51 private:
52 static QStringList splitLines(const QByteArray &lines);
53 QString readParameters(const QString &key, Params &parameters);
54 QUrl GetBaseUrl(void);
55 void timerEvent(QTimerEvent *event) override; // QObject
56
57 QTcpSocket *m_socket {nullptr};
59 QString m_sessionId {"0"};
62
67 std::chrono::seconds m_timeout {60s};
68 int m_timer {0};
69 bool m_canGetParameter {false};
70
71 static QMutex s_rtspMutex;
72
73};
74
75#endif // CETONRTSP_H
QMap< QString, QString > Params
Definition: cetonrtsp.h:24
CetonRTSP(const QString &ip, uint tuner, ushort port)
Definition: cetonrtsp.cpp:24
QUrl GetBaseUrl(void)
Return the base URL for the last DESCRIBE answer.
Definition: cetonrtsp.cpp:314
int m_timer
Definition: cetonrtsp.h:68
bool Setup(ushort clientPort1, ushort clientPort2, ushort &rtpPort, ushort &rtcpPort, uint32_t &ssrc)
Definition: cetonrtsp.cpp:398
QString m_sessionId
Definition: cetonrtsp.h:59
bool Play(void)
Definition: cetonrtsp.cpp:453
Params m_responseHeaders
Definition: cetonrtsp.h:65
bool Teardown(void)
Definition: cetonrtsp.cpp:461
static QMutex s_rtspMutex
Definition: cetonrtsp.h:71
QByteArray m_responseContent
Definition: cetonrtsp.h:66
QUrl m_controlUrl
Definition: cetonrtsp.h:61
void StopKeepAlive(void)
Definition: cetonrtsp.cpp:486
bool Describe(void)
Definition: cetonrtsp.cpp:327
static QStringList splitLines(const QByteArray &lines)
splitLines.
Definition: cetonrtsp.cpp:260
QString readParameters(const QString &key, Params &parameters)
readParameters.
Definition: cetonrtsp.cpp:283
bool GetOptions(QStringList &options)
Definition: cetonrtsp.cpp:244
QUrl m_requestUrl
Definition: cetonrtsp.h:60
bool ProcessRequest(const QString &method, const QStringList *headers=nullptr, bool use_control=false, bool waitforanswer=true, const QString &alternative=QString())
Definition: cetonrtsp.cpp:47
void timerEvent(QTimerEvent *event) override
Definition: cetonrtsp.cpp:496
QTcpSocket * m_socket
Definition: cetonrtsp.h:57
~CetonRTSP() override
Definition: cetonrtsp.cpp:42
void StartKeepAlive(void)
Definition: cetonrtsp.cpp:476
uint m_sequenceNumber
Definition: cetonrtsp.h:58
std::chrono::seconds m_timeout
Definition: cetonrtsp.h:67
int m_responseCode
Definition: cetonrtsp.h:63
bool m_canGetParameter
Definition: cetonrtsp.h:69
QString m_responseMessage
Definition: cetonrtsp.h:64
unsigned int uint
Definition: freesurround.h:24