00001 #ifndef __MPGStream_hpp__ 00002 #define __MPGStream_hpp__ 00003 00004 #include "global.hpp" 00005 #include "Stream.hpp" 00006 #include "Frame.hpp" 00007 #include "GOP.hpp" 00008 #include "MPGGOP.hpp" 00009 #include "MPGFrame.hpp" 00010 //#include "YUVStream.hpp" 00011 00012 class Frame; 00013 class GOP; 00014 class MPGGOP; 00015 class MPGFrame; 00016 class YUVStream; 00017 00018 00019 #define VOP_START_CODE 0x1B6 00020 #define VOP_START_CODE_LENGTH 32 00021 00022 class MPGStream:public Stream { 00023 00024 public: 00034 MPGStream(const QString & fname, bool preRead = true, uint numFrames = 0); 00035 00036 00040 virtual ~MPGStream(); 00041 00042 00053 GOP* addNextGOP(uint numFrames); 00054 00055 00060 long getFileSize(); 00061 00066 long getAvgFrameSize(); 00067 00074 long getAvgGOPSize(); 00075 00076 00081 uint getHeaderSize(); 00082 00083 00088 bool fillHeaderBuffer(); 00089 00090 00095 char *getHeaderBuffer(); 00096 00097 private: 00102 void parseHeader(); 00103 00109 MPGFrame *getNextFrame(); 00110 00111 MPGFrame *lastReadFrame, *lastRefFrame; 00112 00113 QByteArray headerBuffer; 00114 00118 uint headerSize; 00119 00120 }; 00121 00122 #endif /* __MPGStream_hpp__ */