- fixed bogus channel sharing
authorFelix Domke <tmbinc@elitedvb.net>
Sat, 30 Apr 2005 17:56:56 +0000 (17:56 +0000)
committerFelix Domke <tmbinc@elitedvb.net>
Sat, 30 Apr 2005 17:56:56 +0000 (17:56 +0000)
lib/dvb/dvb.cpp
lib/dvb/idvb.h

index 9a35561530629e40f497ca4c7ad59ca0cc9e94dc..d4cc462cac43f5b5ddc213cc518c0616fab669f7 100644 (file)
@@ -232,10 +232,13 @@ RESULT eDVBResourceManager::allocateChannel(const eDVBChannelID &channelid, ePtr
 {
                /* first, check if a channel is already existing. */
        
 {
                /* first, check if a channel is already existing. */
        
-       for (std::list<active_channel>::iterator i(m_active_channels.begin()); i != m_active_channels.end();)
+//     eDebug("allocate channel.. %04x:%04x", channelid.transport_stream_id.get(), channelid.original_network_id.get());
+       for (std::list<active_channel>::iterator i(m_active_channels.begin()); i != m_active_channels.end(); ++i)
        {
        {
+//             eDebug("available channel.. %04x:%04x", i->m_channel_id.transport_stream_id.get(), i->m_channel_id.original_network_id.get());
                if (i->m_channel_id == channelid)
                {
                if (i->m_channel_id == channelid)
                {
+//                     eDebug("found shared channel..");
                        channel = i->m_channel;
                        return 0;
                }
                        channel = i->m_channel;
                        return 0;
                }
index 1ee9283782f14ac9547775678dc9f93f3454cddb..0dc5ce5766e5ed0655ce3abb6679dac1ea881fab 100644 (file)
@@ -77,6 +77,14 @@ struct eDVBChannelID
        eDVBNamespace dvbnamespace;
        eTransportStreamID transport_stream_id;
        eOriginalNetworkID original_network_id;
        eDVBNamespace dvbnamespace;
        eTransportStreamID transport_stream_id;
        eOriginalNetworkID original_network_id;
+       
+       bool operator==(const eDVBChannelID &c) const
+       {
+               return dvbnamespace == c.dvbnamespace &&
+                       transport_stream_id == c.transport_stream_id &&
+                       original_network_id == c.original_network_id;
+       }
+       
        bool operator<(const eDVBChannelID &c) const
        {
                if (dvbnamespace < c.dvbnamespace)
        bool operator<(const eDVBChannelID &c) const
        {
                if (dvbnamespace < c.dvbnamespace)
@@ -417,12 +425,14 @@ public:
 };
 
 class iDVBSectionReader;
 };
 
 class iDVBSectionReader;
+class iDVBTSRecorder;
 class iTSMPEGDecoder;
 
 class iDVBDemux: public iObject
 {
 public:
        virtual RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader)=0;
 class iTSMPEGDecoder;
 
 class iDVBDemux: public iObject
 {
 public:
        virtual RESULT createSectionReader(eMainloop *context, ePtr<iDVBSectionReader> &reader)=0;
+       virtual RESULT createTSRecorder(ePtr<iDVBTSRecorder> &recorder)=0;
        virtual RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader)=0;
 };
 
        virtual RESULT getMPEGDecoder(ePtr<iTSMPEGDecoder> &reader)=0;
 };