dvb.cpp: add demux policy for dm800/500hd
[enigma2.git] / lib / dvb / dvb.cpp
index f0186de70b24a84c529b8aaa6e86ad63f5f3d99a..a7428493967a6d9e79bea8911e86212adda670a9 100644 (file)
@@ -429,7 +429,25 @@ RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
 
        ePtr<eDVBRegisteredDemux> unused;
 
-       if (m_demux.size() < 5)
+       if (m_demux.size() == 3) // dm800 / 500hd
+       {
+               for (; i != m_demux.end(); ++i, ++n)
+               {
+                       if (!i->m_inuse)
+                       {
+                               if (!unused)
+                                       unused = i;
+                       }
+                       else if (i->m_adapter == fe->m_adapter &&
+                           i->m_demux->getSource() == fe->m_frontend->getDVBID())
+                       {
+                               demux = new eDVBAllocatedDemux(i);
+                               return 0;
+                       }
+               }
+       
+       }
+       else if (m_demux.size() < 5) // ATI
        {
                /* FIXME: hardware demux policy */
                if (!(cap & iDVBChannel::capDecode))
@@ -1828,7 +1846,7 @@ void eCueSheet::clear()
 
 void eCueSheet::addSourceSpan(const pts_t &begin, const pts_t &end)
 {
-       assert(begin < end);
+       ASSERT(begin < end);
        m_lock.WrLock();
        m_spans.push_back(std::pair<pts_t, pts_t>(begin, end));
        m_lock.Unlock();