2 #ifndef IPTV_TUNING_DATA_H
3 #define IPTV_TUNING_DATA_H
8 #include <QApplication>
10 #if QT_VERSION >= QT_VERSION_CHECK(6,0,0)
11 #include <QStringConverter>
58 m_dataUrl(data_url), m_protocol(protocol)
65 const QString &fec_url0,
uint fec_bitrate0,
66 const QString &fec_url1,
uint fec_bitrate1) :
68 m_fecType(fec_type), m_fecUrl0(fec_url0), m_fecUrl1(fec_url1)
71 m_bitrate[0] = data_bitrate;
72 m_bitrate[1] = fec_bitrate0;
73 m_bitrate[2] = fec_bitrate1;
77 const QString &fec_type,
78 const QString &fec_url0,
uint fec_bitrate0,
79 const QString &fec_url1,
uint fec_bitrate1,
82 m_fecUrl0(fec_url0), m_fecUrl1(fec_url1),
85 m_bitrate[0] = data_bitrate;
86 m_bitrate[1] = fec_bitrate0;
87 m_bitrate[2] = fec_bitrate1;
88 if (fec_type.toLower() ==
"rfc2733")
90 else if (fec_type.toLower() ==
"rfc5109")
92 else if (fec_type.toLower() ==
"smpte2022")
93 m_fecType = kSMPTE2022;
103 const QUrl u = GetDataURL();
105 return QString(
"%1(%2)").arg(u.toString()).arg(GetBitrate(0));
106 if (IsHTTPTS() || IsRTSP())
107 return QString(
"%1").arg(u.toString());
108 return QString(
"%1:%2:%3")
109 .arg(u.host(),u.userInfo(),QString::number(u.port())).toLower();
114 return QString(
"[data]%1[fectype]%2[fec0]%3[fec1]%4%5")
119 GetBitrate(0) ? QString(
"-%1").arg(GetBitrate(0)) :
"");
161 case kNone:
return {};
162 case kRFC2733:
return QString(
"rfc2733-%1").arg(i);
163 case kRFC5109:
return QString(
"rfc5109-%1").arg(i);
164 case kSMPTE2022:
return QString(
"smpte2022-%1").arg(i);
171 bool IsValid(
void)
const;
175 return (m_protocol == udp);
180 return (m_protocol == rtp);
185 return (m_protocol == rtsp);
190 return (m_protocol == http_hls);
195 return (m_protocol == http_ts);
201 if (!m_dataUrl.isValid())
203 else if (m_dataUrl.scheme() ==
"udp")
205 else if (m_dataUrl.scheme() ==
"rtp")
207 else if (m_dataUrl.scheme() ==
"rtsp")
209 else if ((m_dataUrl.scheme() ==
"http") || (m_dataUrl.scheme() ==
"https"))
212 if (CanReadHTTP(buffer))
214 if (IsHLSPlaylist(buffer))
242 bool CanReadHTTP(QByteArray &buffer)
const;
246 QTextStream text(&buffer);
247 #if QT_VERSION < QT_VERSION_CHECK(6,0,0)
248 text.setCodec(
"UTF-8");
250 text.setEncoding(QStringConverter::Utf8);
260 std::array<uint,3> m_bitrate {};
264 #endif // IPTV_TUNING_DATA_H