00001 00007 #ifndef _FIREWIRERECORDER_H_ 00008 #define _FIREWIRERECORDER_H_ 00009 00010 // MythTV headers 00011 #include "dtvrecorder.h" 00012 #include "tspacket.h" 00013 #include "streamlisteners.h" 00014 00015 class TVRec; 00016 class FirewireChannel; 00017 00024 class FirewireRecorder : public DTVRecorder, 00025 public MPEGSingleProgramStreamListener, 00026 public TSDataListener 00027 { 00028 friend class MPEGStreamData; 00029 friend class TSPacketProcessor; 00030 00031 public: 00032 FirewireRecorder(TVRec *rec, FirewireChannel *chan); 00033 virtual ~FirewireRecorder(); 00034 00035 // Commands 00036 bool Open(void); 00037 void Close(void); 00038 00039 void StartStreaming(void); 00040 void StopStreaming(void); 00041 00042 void StartRecording(void); 00043 bool PauseAndWait(int timeout = 100); 00044 00045 void AddData(const unsigned char *data, uint dataSize); 00046 void ProcessTSPacket(const TSPacket &tspacket); 00047 00048 // Sets 00049 void SetOptionsFromProfile(RecordingProfile *profile, 00050 const QString &videodev, 00051 const QString &audiodev, 00052 const QString &vbidev); 00053 void SetStreamData(MPEGStreamData*); 00054 00055 // Gets 00056 MPEGStreamData *GetStreamData(void) { return _mpeg_stream_data; } 00057 00058 // MPEG Single Program 00059 void HandleSingleProgramPAT(ProgramAssociationTable*); 00060 void HandleSingleProgramPMT(ProgramMapTable*); 00061 00062 protected: 00063 FirewireRecorder(TVRec *rec); 00064 00065 private: 00066 MPEGStreamData *_mpeg_stream_data; 00067 FirewireChannel *channel; 00068 bool isopen; 00069 vector<unsigned char> buffer; 00070 }; 00071 00072 #endif // _FIREWIRERECORDER_H_
1.5.5