AutoOggChainGranuleSeekTable.h

Go to the documentation of this file.
00001 #pragma once
00002 
00003 #include <libOOOgg/libOOOgg.h>
00004 #include "OggGranuleSeekTable.h"
00005 #include "IOggDecoderSeek.h"
00006 
00007 
00008 class LIBOOOGGSEEK_API AutoOggChainGranuleSeekTable
00009         :       public IOggCallback
00010 {
00011 public:
00012         AutoOggChainGranuleSeekTable(string inFilename);
00013         virtual ~AutoOggChainGranuleSeekTable(void);
00014 
00016         virtual bool buildTable();
00017 
00018         //IOggCallback interface
00019         virtual bool acceptOggPage(OggPage* inOggPage);
00020 
00022         LOOG_INT64 fileDuration();
00023 
00024         bool enabled()                                  {                       return mIsEnabled;              }
00025 
00026         bool addStream(unsigned long inSerialNo, IOggDecoderSeek* inSeekInterface);
00027 
00028         OggGranuleSeekTable::tSeekPair seekPos(LOOG_INT64 inTime);
00029 protected:
00030 
00031         struct sStreamMapping {
00032                 unsigned long mSerialNo;
00033                 IOggDecoderSeek* mSeekInterface;
00034                 OggGranuleSeekTable* mSeekTable;
00035         };
00036 
00037         vector<sStreamMapping> mStreamMaps;
00038 
00039         bool mIsEnabled;
00040 
00041         LOOG_INT64 mDuration;
00042         sStreamMapping getMapping(unsigned long inSerialNo);
00043         fstream mFile;
00044         string mFilename;
00045         unsigned long mFilePos;
00046 
00047         unsigned long mPreviousFilePos;
00048         OggDataBuffer* mOggDemux;
00049 };

Generated on Thu Feb 16 23:48:16 2006 for oggdsf by  doxygen 1.3.9