From 87e0691ca2db1f87c7766bc4669655837dfe7d4c Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Fri, 28 Mar 2014 14:48:02 +0400 Subject: [PATCH] zapit/src/femanager.cpp: change free demux for PiP detection --- src/zapit/src/femanager.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/zapit/src/femanager.cpp b/src/zapit/src/femanager.cpp index c1ba1cfd6..5c969f9a8 100644 --- a/src/zapit/src/femanager.cpp +++ b/src/zapit/src/femanager.cpp @@ -393,6 +393,10 @@ void CFEManager::linkFrontends(bool init) OpenThreads::ScopedLock m_lock(mutex); enabled_count = 0; unused_demux = 0; + int demuxes[MAX_DMX_UNITS]; + for(int i = 0; i < MAX_DMX_UNITS; i++) + demuxes[i] = 0; + demuxes[0] = 1; for(fe_map_iterator_t it = femap.begin(); it != femap.end(); it++) { CFrontend * fe = it->second; int femode = fe->getMode(); @@ -442,8 +446,15 @@ void CFEManager::linkFrontends(bool init) fe->Init(); if (femode != CFrontend::FE_MODE_UNUSED) { enabled_count++; - } else if (!unused_demux) { - unused_demux = fe->fenumber + 1; + if ((fe->fenumber + 1) < MAX_DMX_UNITS) + demuxes[fe->fenumber + 1] = 1; + } + } + for(int i = 0; i < MAX_DMX_UNITS; i++) { + if (demuxes[i] == 0) { + unused_demux = i; + INFO("pip demux: %d\n", unused_demux); + break; } } } @@ -643,10 +654,8 @@ CFrontend * CFEManager::allocateFE(CZapitChannel * channel, bool forrecord) cDemux::SetSource(frontend->fenumber+1, frontend->fenumber); #ifdef ENABLE_PIP /* FIXME until proper demux management */ - if (enabled_count < 4) { - channel->setPipDemux(unused_demux ? unused_demux : PIP_DEMUX); - //cDemux::SetSource(PIP_DEMUX, frontend->fenumber); - } + if (unused_demux) + channel->setPipDemux(unused_demux); INFO("pip demux: %d", channel->getPipDemux()); #endif #endif