eSmartPtrList<eDVBDemux> m_demux;
};
-class eDVBResourceManager: public iObject
+class eDVBResourceManager: public iObject, public Object
{
DECLARE_REF(eDVBResourceManager);
int avail, busy;
- eUsePtr<iDVBChannel> m_cached_channel;
-
eSmartPtrList<iDVBAdapter> m_adapter;
eSmartPtrList<eDVBRegisteredDemux> m_demux;
Signal1<void,eDVBChannel*> m_channelAdded;
bool canAllocateFrontend(ePtr<iDVBFrontendParameters> &feparm);
+
+ eUsePtr<iDVBChannel> m_cached_channel;
+ Connection m_cached_channel_state_changed_conn;
+ eTimer m_releaseCachedChannelTimer;
+ void DVBChannelStateChanged(iDVBChannel*);
+ void releaseCachedChannel();
public:
eDVBResourceManager();
virtual ~eDVBResourceManager();
class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object
{
DECLARE_REF(eDVBChannel);
+ friend class eDVBResourceManager;
public:
eDVBChannel(eDVBResourceManager *mgr, eDVBAllocatedFrontend *frontend);
virtual ~eDVBChannel();
RESULT setCIRouting(const eDVBCIRouting &routing);
RESULT getDemux(ePtr<iDVBDemux> &demux, int cap);
RESULT getFrontend(ePtr<iDVBFrontend> &frontend);
-
+ RESULT getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> ¶m);
+
/* iDVBPVRChannel */
RESULT playFile(const char *file);
void stopFile();
int getUseCount() { return m_use_count; }
private:
- ePtr<iDVBFrontendParameters> m_feparm; // for retune on lostlock
ePtr<eDVBAllocatedFrontend> m_frontend;
ePtr<eDVBAllocatedDemux> m_demux, m_decoder_demux;
eFilePushThread *m_pvr_thread;
void pvrEvent(int event);
- int m_pvr_fd_src, m_pvr_fd_dst;
+ int m_pvr_fd_dst;
eDVBTSTools m_tstools;
ePtr<eCueSheet> m_cue;