aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-02-13 17:03:56 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-02-13 17:03:56 +0000
commit56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc (patch)
tree693f7bee6543073e216f5ae26af00fcd400bc00d /lib
parent24dab815808d6be2758f3e63f93b7c171190059e (diff)
downloadenigma2-56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc.tar.gz
enigma2-56f5fa20371cd5a761dc37a6dd0dd730c38e0cbc.zip
save timing information after record
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/demux.cpp15
-rw-r--r--lib/dvb/demux.h2
-rw-r--r--lib/dvb/idemux.h2
-rw-r--r--lib/service/servicedvbrecord.cpp1
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..");