add support/demux policy for dm7020hd
[enigma2.git] / lib / dvb / dvb.cpp
index c980ac5af99a0d7bfaee52d77261a739d93ea990..6c353c3414278ee12b6a867e0af60fcfa9e6f3ff 100644 (file)
@@ -98,6 +98,8 @@ eDVBResourceManager::eDVBResourceManager()
                m_boxtype = DM500HD;
        else if (!strncmp(tmp, "dm800se\n", rd))
                m_boxtype = DM800SE;
+       else if (!strncmp(tmp, "dm7020hd\n", rd))
+               m_boxtype = DM7020HD;
        else {
                eDebug("boxtype detection via /proc/stb/info not possible... use fallback via demux count!\n");
                if (m_demux.size() == 3)
@@ -520,7 +522,7 @@ RESULT eDVBResourceManager::allocateDemux(eDVBRegisteredFrontend *fe, ePtr<eDVBA
                        }
                }
        }
-       else if (m_boxtype == DM8000)
+       else if (m_boxtype == DM8000 || m_boxtype == DM7020HD)
        {
                cap |= capHoldDecodeReference; // this is checked in eDVBChannel::getDemux
                for (; i != m_demux.end(); ++i, ++n)
@@ -1753,7 +1755,7 @@ RESULT eDVBChannel::getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> &p
 RESULT eDVBChannel::playFile(const char *file)
 {
        eRawFile *f = new eRawFile();
-       ePtr<iDataSource> source = f;
+       ePtr<iTsSource> source = f;
 
        if (f->open(file) < 0)
        {
@@ -1764,7 +1766,7 @@ RESULT eDVBChannel::playFile(const char *file)
        return playSource(source, file);
 }
 
-RESULT eDVBChannel::playSource(ePtr<iDataSource> &source, const char *streaminfo_file)
+RESULT eDVBChannel::playSource(ePtr<iTsSource> &source, const char *streaminfo_file)
 {
        ASSERT(!m_frontend);
        if (m_pvr_thread)
@@ -1826,7 +1828,7 @@ void eDVBChannel::stopSource()
        }
        if (m_pvr_fd_dst >= 0)
                ::close(m_pvr_fd_dst);
-       ePtr<iDataSource> d;
+       ePtr<iTsSource> d;
        m_tstools.setSource(d);
 }