00001 00006 #ifndef __GOP_hpp__ 00007 #define __GOP_hpp__ 00008 00009 #include "global.hpp" 00010 #include "Frame.hpp" 00011 #include "Stream.hpp" 00012 #ifdef WIN32 00013 #include <qvector.h> 00014 #else 00015 #include <qptrvector.h> 00016 #endif 00017 #include "FrameVector.hpp" 00018 00019 class Stream; 00020 00021 class GOP { 00022 00023 public: 00024 00028 uint getGOPNo(); 00029 00033 uint calcByteSize(); 00034 00038 bool isMaster(); 00039 00043 Stream *getStream(); 00044 00049 void addFrame(Frame* f); 00050 00054 uint getFrameCount(); 00055 00059 Frame *getFrame(uint frNo); 00060 00061 Frame *getFrameInStream(uint frNo); 00062 00063 virtual ~GOP(); 00064 00065 uint smallestByteSize(); 00066 00067 protected: 00068 00074 GOP(Stream* s, uint pat_i); 00075 00082 GOP(Stream* s, uint mod_i, uint pat_i); 00083 00084 QPtrList <Frame> frameList; 00085 QPtrList <GOP> modFlatList; 00086 QPtrList <GOP> bestModList; 00087 QPtrList <GOP> fathers; 00088 00089 bool isSubopt; 00090 00091 QPtrList <GOP> worstPSNRModList; 00092 QPtrList <GOP> bestPSNRModList; 00093 QPtrList <GOP> bestFittingModList; 00094 QPtrList <GOP> randomModList; 00095 00096 //which sibling level of the modTree? 00097 int modTreeLevel; 00098 int slice; 00099 QPtrList <GOP> modList; 00100 00101 00102 // some fields 00103 uint patNo; 00104 uint patFrameOffset; 00105 uint modNo; 00106 uint modBits; 00107 QString description; 00108 bool master; 00109 uint byteSize; 00110 uint refCount; 00111 uint timestamp; 00112 00113 // the stream where the pattern belongs to 00114 Stream *stream; 00115 00116 FrameVector frameVector; 00117 00118 }; 00119 00120 #endif // __GOP_hpp__