X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/9412183a3c484b906775b2e117b6ee33c66083f6..40d11af2de7aed77c90970ba2b61dd754a225117:/lib/dvb/demux.cpp diff --git a/lib/dvb/demux.cpp b/lib/dvb/demux.cpp index 710323a1..6753f2f2 100644 --- a/lib/dvb/demux.cpp +++ b/lib/dvb/demux.cpp @@ -273,8 +273,10 @@ class eDVBRecordFileThread: public eFilePushThread public: eDVBRecordFileThread(); void setTimingPID(int pid); + + void saveTimingInformation(const std::string &filename); protected: - void filterRecordData(const char *data, int len); + void filterRecordData(const unsigned char *data, int len); private: eMPEGStreamParserTS m_ts_parser; eMPEGStreamInformation m_stream_info; @@ -293,7 +295,12 @@ void eDVBRecordFileThread::setTimingPID(int pid) m_ts_parser.setPid(pid); } -void eDVBRecordFileThread::filterRecordData(const char *data, int len) +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; }