00001 // -*- Mode: c++ -*- 00008 #ifndef _IPTV_RECORDER_H_ 00009 #define _IPTV_RECORDER_H_ 00010 00011 #include <qwaitcondition.h> 00012 00013 #include "dtvrecorder.h" 00014 #include "streamlisteners.h" 00015 00016 class IPTVChannel; 00017 00020 class IPTVRecorder : public DTVRecorder, public TSDataListener, 00021 public MPEGSingleProgramStreamListener 00022 { 00023 friend class IPTVMediaSink; 00024 00025 public: 00026 IPTVRecorder(TVRec *rec, IPTVChannel *channel); 00027 ~IPTVRecorder(); 00028 00029 bool Open(void); 00030 void Close(void); 00031 00032 virtual void Pause(bool clear = true); 00033 virtual void Unpause(void); 00034 00035 virtual void StartRecording(void); 00036 virtual void StopRecording(void); 00037 00038 virtual void SetOptionsFromProfile(RecordingProfile*, const QString&, 00039 const QString&, const QString&) {} 00040 00041 virtual void SetStreamData(MPEGStreamData*); 00042 virtual MPEGStreamData *GetStreamData(void) { return _stream_data; } 00043 00044 private: 00045 void ProcessTSPacket(const TSPacket& tspacket); 00046 00047 // implements TSDataListener 00048 void AddData(const unsigned char *data, unsigned int dataSize); 00049 00050 // implements MPEGSingleProgramStreamListener 00051 void HandleSingleProgramPAT(ProgramAssociationTable *pat); 00052 void HandleSingleProgramPMT(ProgramMapTable *pmt); 00053 00054 private: 00055 IPTVChannel *_channel; 00056 MPEGStreamData *_stream_data; 00057 QWaitCondition _cond_recording; 00058 00059 private: 00060 IPTVRecorder &operator=(const IPTVRecorder&); //< avoid default impl 00061 IPTVRecorder(const IPTVRecorder&); //< avoid default impl 00062 IPTVRecorder(); //< avoid default impl 00063 }; 00064 00065 #endif // _IPTV_RECORDER_H_ 00066 00067 /* vim: set expandtab tabstop=4 shiftwidth=4: */
1.5.5