fix crypted pip (thx BP)

Origin commit data
------------------
Commit: 2b7ae96a5c
Author: TangoCash <eric@loxat.de>
Date: 2021-04-04 (Sun, 04 Apr 2021)
This commit is contained in:
TangoCash
2021-04-04 09:49:51 +02:00
committed by vanhofen
parent be48454706
commit f7957ad292

View File

@@ -224,7 +224,7 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
OpenThreads::ScopedLock<OpenThreads::Mutex> m_lock(mutex);
cammap_iterator_t it = channel_map.find(channel_id);
if(it != channel_map.end()) {
if (it != channel_map.end()) {
cam = it->second;
} else if(start) {
cam = new CCam();
@@ -232,7 +232,7 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
} else {
return false;
}
if(channel == NULL) {
if (channel == NULL) {
printf("CCamManager: channel %" PRIx64 " not found\n", channel_id);
StopCam(channel_id, cam);
return false;
@@ -243,7 +243,7 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
#if ! HAVE_CST_HARDWARE && ! HAVE_GENERIC_HARDWARE
CFrontend *frontend = CFEManager::getInstance()->getFrontend(channel);
#endif
switch(mode) {
switch (mode) {
case PLAY:
#if HAVE_CST_HARDWARE
source = DEMUX_SOURCE_0;
@@ -259,9 +259,14 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
case RECORD:
#if HAVE_SPARK_HARDWARE || HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
// INFO("RECORD/STREAM(%d): fe_num %d rec_dmx %d", mode, frontend ? frontend->getNumber() : -1, channel->getRecordDemux());
if(frontend)
#ifdef DYNAMIC_DEMUX
source = channel->getRecordDemux();
demux = channel->getRecordDemux();
#else
if (frontend)
source = frontend->getNumber();
demux = source;
#endif // DYNAMIC_DEMUX
#else
source = channel->getRecordDemux();
demux = channel->getRecordDemux();
@@ -270,9 +275,17 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
break;
case PIP:
#if HAVE_SPARK_HARDWARE || HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE
if(frontend)
source = frontend->getNumber();
#ifdef DYNAMIC_DEMUX
source = channel->getPipDemux();
demux = channel->getPipDemux();
#else
if (frontend)
if (frontend->sameTsidOnid(channel->getTransponderId()))
source = frontend->getNumber();
else
source = frontend->getNumber() + 1;
demux = source;
#endif // DYNAMIC_DEMUX
#else
source = channel->getRecordDemux();
demux = channel->getPipDemux();
@@ -282,18 +295,19 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
}
oldmask = cam->getCaMask();
if(force_update)
if (force_update)
newmask = oldmask;
else
newmask = cam->makeMask(demux, start);
if(cam->getSource() > 0)
if (cam->getSource() > 0)
source = cam->getSource();
INFO("channel %" PRIx64 " [%s] mode %d %s src %d mask %d -> %d update %d rmode %d mp %d", channel_id, channel->getName().c_str(),
mode, start ? "START" : "STOP", source, oldmask, newmask, force_update, rmode, mp);
//INFO("source %d old mask %d new mask %d force update %s", source, oldmask, newmask, force_update ? "yes" : "no");
#if ! HAVE_CST_HARDWARE
/* stop decoding if record stops unless it's the live channel. TODO:PIP? */
/* all the modes: RECORD, STREAM, PIP except PLAY now stopping here !! */
@@ -306,7 +320,7 @@ bool CCamManager::SetMode(t_channel_id channel_id, enum runmode mode, bool start
}
/* clean up channel_map with stopped record/stream/pip services NOT live-tv */
it = channel_map.find(channel_id);
if(it != channel_map.end() && newmask != 0 && it->second != cam)
if (it != channel_map.end() && newmask != 0 && it->second != cam)
{
delete it->second;
channel_map.erase(channel_id);