diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2006-02-13 17:03:56 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2006-02-13 17:03:56 +0000 |
| commit | 56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc (patch) | |
| tree | 693f7bee6543073e216f5ae26af00fcd400bc00d | |
| parent | 24dab815808d6be2758f3e63f93b7c171190059e (diff) | |
| download | enigma2-56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc.tar.gz enigma2-56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc.zip | |
save timing information after record
| -rw-r--r-- | lib/dvb/demux.cpp | 15 | ||||
| -rw-r--r-- | lib/dvb/demux.h | 2 | ||||
| -rw-r--r-- | lib/dvb/idemux.h | 2 | ||||
| -rw-r--r-- | lib/service/servicedvbrecord.cpp | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/lib/dvb/demux.cpp b/lib/dvb/demux.cpp index 73e04432..6753f2f2 100644 --- a/lib/dvb/demux.cpp +++ b/lib/dvb/demux.cpp @@ -273,6 +273,8 @@ class eDVBRecordFileThread: public eFilePushThread public: eDVBRecordFileThread(); void setTimingPID(int pid); + + void saveTimingInformation(const std::string &filename); protected: void filterRecordData(const unsigned char *data, int len); private: @@ -293,6 +295,11 @@ void eDVBRecordFileThread::setTimingPID(int pid) m_ts_parser.setPid(pid); } +void eDVBRecordFileThread::saveTimingInformation(const std::string &filename) +{ + m_stream_info.save(filename.c_str()); +} + void eDVBRecordFileThread::filterRecordData(const unsigned char *data, int len) { m_ts_parser.parseData(m_current_offset, data, len); @@ -385,6 +392,11 @@ RESULT eDVBTSRecorder::setTargetFD(int fd) return 0; } +RESULT eDVBTSRecorder::setTargetFilename(const char *filename) +{ + m_target_filename = filename; +} + RESULT eDVBTSRecorder::setBoundary(off_t max) { return -1; // not yet implemented @@ -401,6 +413,9 @@ RESULT eDVBTSRecorder::stop() close(m_source_fd); + if (m_target_filename != "") + m_thread->saveTimingInformation(m_target_filename + ".ap"); + return 0; } diff --git a/lib/dvb/demux.h b/lib/dvb/demux.h index f5390063..19ed1a1e 100644 --- a/lib/dvb/demux.h +++ b/lib/dvb/demux.h @@ -76,6 +76,7 @@ public: RESULT setTimingPID(int pid); RESULT setTargetFD(int fd); + RESULT setTargetFilename(const char *filename); RESULT setBoundary(off_t max); RESULT stop(); @@ -93,6 +94,7 @@ private: ePtr<eDVBDemux> m_demux; int m_running, m_target_fd, m_source_fd; + std::string m_target_filename; }; #endif diff --git a/lib/dvb/idemux.h b/lib/dvb/idemux.h index 6cf7b024..85119925 100644 --- a/lib/dvb/idemux.h +++ b/lib/dvb/idemux.h @@ -65,6 +65,8 @@ public: virtual RESULT setTimingPID(int pid) = 0; virtual RESULT setTargetFD(int fd) = 0; + /* for saving additional meta data. */ + virtual RESULT setTargetFilename(const char *filename) = 0; virtual RESULT setBoundary(off_t max) = 0; virtual RESULT stop() = 0; diff --git a/lib/service/servicedvbrecord.cpp b/lib/service/servicedvbrecord.cpp index 5b4f35ed..bded7cc9 100644 --- a/lib/service/servicedvbrecord.cpp +++ b/lib/service/servicedvbrecord.cpp @@ -122,6 +122,7 @@ int eDVBServiceRecord::doRecord() return -3; } m_record->setTargetFD(fd); + m_record->setTargetFilename(m_filename.c_str()); } eDebug("starting recording.."); |
