diff options
Diffstat (limited to 'lib/dvb')
| -rw-r--r-- | lib/dvb/dvb.cpp | 17 | ||||
| -rw-r--r-- | lib/dvb/dvb.h | 7 | ||||
| -rw-r--r-- | lib/dvb/idvb.h | 5 |
3 files changed, 24 insertions, 5 deletions
diff --git a/lib/dvb/dvb.cpp b/lib/dvb/dvb.cpp index 1807b87e..21ebecf1 100644 --- a/lib/dvb/dvb.cpp +++ b/lib/dvb/dvb.cpp @@ -1761,14 +1761,20 @@ RESULT eDVBChannel::playFile(const char *file) } eRawFile *f = new eRawFile(); + ePtr<iDataSource> source = f; + if (f->open(file) < 0) { eDebug("can't open PVR file %s (%m)", file); return -ENOENT; } - ePtr<iDataSource> source = f; - m_tstools.setSource(source, file); + return playSource(source, file); +} + +RESULT eDVBChannel::playSource(ePtr<iDataSource> &source, const char *priv) +{ + m_tstools.setSource(source, priv); /* DON'T EVEN THINK ABOUT FIXING THIS. FIX THE ATI SOURCES FIRST, THEN DO A REAL FIX HERE! */ @@ -1804,7 +1810,7 @@ RESULT eDVBChannel::playFile(const char *file) return 0; } -void eDVBChannel::stopFile() +void eDVBChannel::stopSource() { if (m_pvr_thread) { @@ -1816,6 +1822,11 @@ void eDVBChannel::stopFile() ::close(m_pvr_fd_dst); } +void eDVBChannel::stopFile() +{ + stopSource(); +} + void eDVBChannel::setCueSheet(eCueSheet *cuesheet) { m_conn_cueSheetEvent = 0; diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h index fb925807..92771604 100644 --- a/lib/dvb/dvb.h +++ b/lib/dvb/dvb.h @@ -259,7 +259,10 @@ public: /* iDVBPVRChannel */ RESULT playFile(const char *file); void stopFile(); - + + RESULT playSource(ePtr<iDataSource>& source, const char *priv=NULL); + void stopSource(); + void setCueSheet(eCueSheet *cuesheet); RESULT getLength(pts_t &len); @@ -301,7 +304,7 @@ private: std::list<std::pair<off_t, off_t> > m_source_span; void getNextSourceSpan(off_t current_offset, size_t bytes_read, off_t &start, size_t &size); void flushPVR(iDVBDemux *decoding_demux=0); - + eSingleLock m_cuesheet_lock; friend class eUsePtr<eDVBChannel>; diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index f1217a6a..3996b6b6 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -15,6 +15,7 @@ #include <lib/base/object.h> #include <lib/base/ebase.h> #include <lib/base/elock.h> +#include <lib/base/idatasource.h> #include <lib/service/service.h> #include <libsig_comp.h> #include <connection.h> @@ -605,6 +606,10 @@ public: virtual RESULT playFile(const char *file) = 0; virtual void stopFile() = 0; + /* new interface */ + virtual RESULT playSource(ePtr<iDataSource> &source, const char *priv=NULL) = 0; + virtual void stopSource() = 0; + virtual void setCueSheet(eCueSheet *cuesheet) = 0; virtual RESULT getLength(pts_t &pts) = 0; |
