mirror of
https://github.com/tuxbox-fork-migrations/recycled-ni-neutrino.git
synced 2025-09-03 10:51:05 +02:00
zapit/src/zapit.cpp: add support to use PiP on any transponder in file play mode -
only if no record running;
do not send capmt for PLAY mode, if playback is stopped and its not pmt update
Origin commit data
------------------
Branch: ni/coolstream
Commit: 11d77c3030
Author: [CST] Focus <focus.cst@gmail.com>
Date: 2013-10-17 (Thu, 17 Oct 2013)
------------------
This commit was generated by Migit
This commit is contained in:
@@ -134,6 +134,7 @@ class CZapit : public OpenThreads::Thread
|
|||||||
CZapitChannel * current_channel;
|
CZapitChannel * current_channel;
|
||||||
t_channel_id live_channel_id;
|
t_channel_id live_channel_id;
|
||||||
t_channel_id pip_channel_id;
|
t_channel_id pip_channel_id;
|
||||||
|
t_channel_id lock_channel_id;
|
||||||
/* scan params */
|
/* scan params */
|
||||||
TP_params TP;
|
TP_params TP;
|
||||||
fast_scan_type_t scant;
|
fast_scan_type_t scant;
|
||||||
|
@@ -130,6 +130,7 @@ CZapit::CZapit()
|
|||||||
current_volume = 100;
|
current_volume = 100;
|
||||||
volume_percent = 0;
|
volume_percent = 0;
|
||||||
pip_channel_id = 0;
|
pip_channel_id = 0;
|
||||||
|
lock_channel_id = 0;
|
||||||
pip_fe = NULL;
|
pip_fe = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -350,7 +351,7 @@ void CZapit::ConfigFrontend()
|
|||||||
|
|
||||||
void CZapit::SendPMT(bool forupdate)
|
void CZapit::SendPMT(bool forupdate)
|
||||||
{
|
{
|
||||||
if(!current_channel)
|
if(!current_channel || (!forupdate && playbackStopForced))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CCamManager::getInstance()->Start(current_channel->getChannelID(), CCamManager::PLAY, forupdate);
|
CCamManager::getInstance()->Start(current_channel->getChannelID(), CCamManager::PLAY, forupdate);
|
||||||
@@ -525,6 +526,7 @@ bool CZapit::ZapIt(const t_channel_id channel_id, bool forupdate, bool startplay
|
|||||||
current_channel = newchannel;
|
current_channel = newchannel;
|
||||||
|
|
||||||
live_channel_id = current_channel->getChannelID();
|
live_channel_id = current_channel->getChannelID();
|
||||||
|
lock_channel_id = live_channel_id;
|
||||||
SaveSettings(false);
|
SaveSettings(false);
|
||||||
|
|
||||||
if(!TuneChannel(live_fe, newchannel, transponder_change)) {
|
if(!TuneChannel(live_fe, newchannel, transponder_change)) {
|
||||||
@@ -534,7 +536,7 @@ bool CZapit::ZapIt(const t_channel_id channel_id, bool forupdate, bool startplay
|
|||||||
}
|
}
|
||||||
SendEvent(CZapitClient::EVT_TUNE_COMPLETE, &live_channel_id, sizeof(t_channel_id));
|
SendEvent(CZapitClient::EVT_TUNE_COMPLETE, &live_channel_id, sizeof(t_channel_id));
|
||||||
|
|
||||||
#if 0 // def ENABLE_PIP
|
#ifdef ENABLE_PIP
|
||||||
if (transponder_change && (live_fe == pip_fe))
|
if (transponder_change && (live_fe == pip_fe))
|
||||||
StopPip();
|
StopPip();
|
||||||
#endif
|
#endif
|
||||||
@@ -598,7 +600,9 @@ bool CZapit::StartPip(const t_channel_id channel_id)
|
|||||||
{
|
{
|
||||||
CZapitChannel* newchannel;
|
CZapitChannel* newchannel;
|
||||||
bool transponder_change;
|
bool transponder_change;
|
||||||
|
/* do lock if live is running, or in record mode -
|
||||||
|
this is for the case temporary timeshift is running, it do not lock its frontend */
|
||||||
|
bool need_lock = !playbackStopForced || (currentMode & RECORD_MODE);
|
||||||
|
|
||||||
if((newchannel = CServiceManager::getInstance()->FindChannel(channel_id)) == NULL) {
|
if((newchannel = CServiceManager::getInstance()->FindChannel(channel_id)) == NULL) {
|
||||||
INFO("channel_id " PRINTF_CHANNEL_ID_TYPE " not found", channel_id);
|
INFO("channel_id " PRINTF_CHANNEL_ID_TYPE " not found", channel_id);
|
||||||
@@ -606,14 +610,22 @@ bool CZapit::StartPip(const t_channel_id channel_id)
|
|||||||
}
|
}
|
||||||
INFO("[pip] zap to %s (%llx tp %llx)", newchannel->getName().c_str(), newchannel->getChannelID(), newchannel->getTransponderId());
|
INFO("[pip] zap to %s (%llx tp %llx)", newchannel->getName().c_str(), newchannel->getChannelID(), newchannel->getTransponderId());
|
||||||
|
|
||||||
CFEManager::getInstance()->lockFrontend(live_fe);
|
if (need_lock)
|
||||||
|
CFEManager::getInstance()->lockFrontend(live_fe);
|
||||||
|
|
||||||
CFrontend * frontend = CFEManager::getInstance()->allocateFE(newchannel);
|
CFrontend * frontend = CFEManager::getInstance()->allocateFE(newchannel);
|
||||||
CFEManager::getInstance()->unlockFrontend(live_fe);
|
|
||||||
|
if (need_lock)
|
||||||
|
CFEManager::getInstance()->unlockFrontend(live_fe);
|
||||||
|
|
||||||
if(frontend == NULL) {
|
if(frontend == NULL) {
|
||||||
ERROR("Cannot get frontend\n");
|
ERROR("Cannot get frontend\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
StopPip();
|
StopPip();
|
||||||
|
if (!need_lock && !SAME_TRANSPONDER(newchannel->getChannelID(), live_channel_id))
|
||||||
|
live_channel_id = newchannel->getChannelID();
|
||||||
|
|
||||||
if(!TuneChannel(frontend, newchannel, transponder_change))
|
if(!TuneChannel(frontend, newchannel, transponder_change))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -1605,12 +1617,20 @@ bool CZapit::ParseCommand(CBasicMessage::Header &rmsg, int connfd)
|
|||||||
StopPlayBack(true);
|
StopPlayBack(true);
|
||||||
standby = false;
|
standby = false;
|
||||||
playbackStopForced = true;
|
playbackStopForced = true;
|
||||||
|
lock_channel_id = live_channel_id;
|
||||||
SendCmdReady(connfd);
|
SendCmdReady(connfd);
|
||||||
break;
|
break;
|
||||||
case CZapitMessages::CMD_SB_UNLOCK_PLAYBACK:
|
case CZapitMessages::CMD_SB_UNLOCK_PLAYBACK:
|
||||||
playbackStopForced = false;
|
playbackStopForced = false;
|
||||||
StartPlayBack(current_channel);
|
if (lock_channel_id == live_channel_id) {
|
||||||
SendPMT();
|
StartPlayBack(current_channel);
|
||||||
|
SendPMT();
|
||||||
|
} else {
|
||||||
|
live_fe->setTsidOnid(0);
|
||||||
|
ZapIt(lock_channel_id);
|
||||||
|
lock_channel_id = 0;
|
||||||
|
}
|
||||||
|
|
||||||
SendCmdReady(connfd);
|
SendCmdReady(connfd);
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
|
Reference in New Issue
Block a user