X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/9c3098c8667241d18d2551a9a37ce7fbce396b71..b2eebd0fef155a40a8a74468c4488cfb0c656a9a:/lib/dvb/demux.cpp diff --git a/lib/dvb/demux.cpp b/lib/dvb/demux.cpp index b0d9b400..b6143ddf 100644 --- a/lib/dvb/demux.cpp +++ b/lib/dvb/demux.cpp @@ -144,12 +144,15 @@ RESULT eDVBDemux::getSTC(pts_t &pts, int num) if (ioctl(fd, DMX_GET_STC, &stc) < 0) { + eDebug("DMX_GET_STC failed!"); ::close(fd); return -1; } pts = stc.stc; + eDebug("DMX_GET_STC - %lld", pts); + ::close(fd); return 0; } @@ -312,6 +315,8 @@ void eDVBPESReader::data(int) m_read(buffer, r); else eWarning("PES reader not active"); + if (r != 16384) + break; } } @@ -403,7 +408,7 @@ public: void saveTimingInformation(const std::string &filename); protected: - void filterRecordData(const unsigned char *data, int len); + int filterRecordData(const unsigned char *data, int len, size_t ¤t_span_remaining); private: eMPEGStreamParserTS m_ts_parser; eMPEGStreamInformation m_stream_info; @@ -427,11 +432,13 @@ void eDVBRecordFileThread::saveTimingInformation(const std::string &filename) m_stream_info.save(filename.c_str()); } -void eDVBRecordFileThread::filterRecordData(const unsigned char *data, int len) +int eDVBRecordFileThread::filterRecordData(const unsigned char *data, int len, size_t ¤t_span_remaining) { m_ts_parser.parseData(m_current_offset, data, len); m_current_offset += len; + + return len; } DEFINE_REF(eDVBTSRecorder); @@ -441,6 +448,7 @@ eDVBTSRecorder::eDVBTSRecorder(eDVBDemux *demux): m_demux(demux) m_running = 0; m_target_fd = -1; m_thread = new eDVBRecordFileThread(); + CONNECT(m_thread->m_event, eDVBTSRecorder::filepushEvent); #ifndef HAVE_ADD_PID m_demux->m_dvr_busy = 1; #endif @@ -646,3 +654,13 @@ void eDVBTSRecorder::stopPID(int pid) #endif m_pids[pid] = -1; } + +void eDVBTSRecorder::filepushEvent(int event) +{ + switch (event) + { + case eFilePushThread::evtWriteError: + m_event(eventWriteError); + break; + } +}