Go to the documentation of this file.
11 #include <QMutexLocker>
23 #define LOC QString("SatIPSH[%1]: ").arg(m_inputId)
34 QMap<QString, SatIPStreamHandler*>::iterator it =
s_handlers.find(devname);
43 LOG(VB_RECORD, LOG_INFO,
44 QString(
"SatIPSH[%1]: Creating new stream handler for %2")
45 .
arg(inputid).
arg(devname));
51 (*it)->m_inputId = inputid;
53 LOG(VB_RECORD, LOG_INFO,
54 QString(
"SatIPSH[%1]: Using existing stream handler for %2").
arg(inputid).
arg(devname) +
55 QString(
" (%1 users)").
arg(rcount));
70 LOG(VB_RECORD, LOG_ERR, QString(
"SatIPSH[%1]: Return(%2) not found")
71 .
arg(inputid).
arg(devname));
75 LOG(VB_RECORD, LOG_INFO, QString(
"SatIPSH[%1]: Return stream handler for %2 (%3 users)")
85 QMap<QString, SatIPStreamHandler*>::iterator it =
s_handlers.find(devname);
88 LOG(VB_RECORD, LOG_INFO, QString(
"SatIPSH[%1]: Closing handler for %2")
89 .
arg(inputid).
arg(devname));
97 LOG(VB_GENERAL, LOG_ERR,
98 QString(
"SatIPSH[%1] Error: Couldn't find handler for %2")
99 .
arg(inputid).
arg(devname));
114 LOG(VB_RECORD, LOG_DEBUG,
LOC +
115 QString(
"ctor for %2").
arg(device));
120 #ifdef DEBUG_PID_FILTERS
121 LOG(VB_RECORD, LOG_DEBUG,
LOC +
"UpdateFilters()");
122 #endif // DEBUG_PID_FILTERS
134 pids.append(QString(
"%1").
arg(it.key()));
136 #ifdef DEBUG_PID_FILTERS
137 QString msg = QString(
"PIDS: '%1'").arg(pids.join(
","));
138 LOG(VB_RECORD, LOG_DEBUG,
LOC + msg);
139 #endif // DEBUG_PID_FILTERS
157 LOG(VB_RECORD, LOG_INFO,
LOC +
"RunTS(): begin");
159 QElapsedTimer last_update;
178 last_update.restart();
183 int elapsed = !last_update.isValid() ? -1 : last_update.elapsed();
184 elapsed = (elapsed < 0) ? 1000 : elapsed;
189 last_update.restart();
193 std::this_thread::sleep_for(std::chrono::milliseconds(20));
196 LOG(VB_RECORD, LOG_INFO,
LOC +
"RunTS(): " +
"shutdown");
209 LOG(VB_RECORD, LOG_INFO,
LOC +
"RunTS(): end");
228 qry.append(
"msys=dvbc");
252 qry.append(QString(
"plts=auto"));
261 url.setQuery(qry.join(
"&"));
265 LOG(VB_RECORD, LOG_INFO,
LOC + QString(
"Tune url:%1").
arg(url.toString()));
269 LOG(VB_RECORD, LOG_INFO,
LOC + QString(
"Skip tuning, already tuned to this url"));
308 url.setScheme(
"rtsp");
313 QStringList devinfo =
m_device.split(
":");
314 if (devinfo.value(0).toUpper() ==
"UUID")
316 QString deviceId = QString(
"uuid:%1").arg(devinfo.value(1));
322 LOG(VB_RECORD, LOG_INFO,
LOC + QString(
"Discovered device %1 at %2").
arg(deviceId).
arg(ip));
326 LOG(VB_RECORD, LOG_ERR,
LOC + QString(
"Failed to discover device %1, no IP found").
arg(deviceId));
bool Setup(const QUrl &url)
static const int kTunerTypeDVBC
bool RemoveAllPIDFilters(void)
bool Play(QStringList &pids)
void SetRunning(bool running, bool using_buffering, bool using_section_reader)
static QString ro(DTVRollOff ro)
static const int kTunerTypeDVBS1
static QString bw(DTVBandwidth bw)
void setObjectName(const QString &name)
arg(title).arg(filename).arg(doDelete))
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
void RunProlog(void)
Sets up a thread, call this if you reimplement run().
static QString tmode(DTVTransmitMode tmode)
static QMap< QString, uint > s_handlersRefCnt
static QString findDeviceIP(const QString &deviceuuid)
static void Return(SatIPStreamHandler *&ref, int inputid)
DTVGuardInterval m_guardInterval
static int toTunerType(const QString &deviceid)
bool UpdateFiltersFromStreamData(void)
void RunEpilog(void)
Cleans up a thread's resources, call this if you reimplement run().
static QString freq(uint64_t freq)
DTVModulationSystem m_modSys
static QString gi(DTVGuardInterval gi)
SatIPStreamHandler(const QString &device, int inputid)
static QString pol(DTVPolarity pol)
static const int kTunerTypeDVBS2
bool UpdateFilters() override
volatile bool m_runningDesired
static QMutex s_handlersLock
void run(void) override
Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.
static SatIPStreamHandler * Get(const QString &devname, int inputid)
static QString fec(DTVCodeRate fec)
DTVModulation m_modulation
static const int kTunerTypeDVBT
static QString msys(DTVModulationSystem msys)
static const int kTunerTypeDVBT2
bool Tune(const DTVMultiplex &tuning)
static QMap< QString, SatIPStreamHandler * > s_handlers
static QString mtype(DTVModulation mtype)
DTVTransmitMode m_transMode