00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _BYTE_STREAM_FILE_SOURCE_HH
00022 #define _BYTE_STREAM_FILE_SOURCE_HH
00023
00024 #ifndef _FRAMED_FILE_SOURCE_HH
00025 #include "FramedFileSource.hh"
00026 #endif
00027
00028 class ByteStreamFileSource: public FramedFileSource {
00029 public:
00030 static ByteStreamFileSource* createNew(UsageEnvironment& env,
00031 char const* fileName,
00032 unsigned preferredFrameSize = 0,
00033 unsigned playTimePerFrame = 0);
00034
00035
00036
00037 static ByteStreamFileSource* createNew(UsageEnvironment& env,
00038 FILE* fid,
00039 Boolean deleteFidOnClose = False,
00040 unsigned preferredFrameSize = 0,
00041 unsigned playTimePerFrame = 0);
00042
00043
00044
00045 u_int64_t fileSize() const { return fFileSize; }
00046
00047
00048 void seekToByteAbsolute(u_int64_t byteNumber);
00049 void seekToByteRelative(int64_t offset);
00050
00051 protected:
00052 ByteStreamFileSource(UsageEnvironment& env,
00053 FILE* fid, Boolean deleteFidOnClose,
00054 unsigned preferredFrameSize,
00055 unsigned playTimePerFrame);
00056
00057
00058 virtual ~ByteStreamFileSource();
00059
00060 static void fileReadableHandler(ByteStreamFileSource* source, int mask);
00061 void doReadFromFile();
00062
00063 private:
00064
00065 virtual void doGetNextFrame();
00066 virtual void doStopGettingFrames();
00067
00068 private:
00069 unsigned fPreferredFrameSize;
00070 unsigned fPlayTimePerFrame;
00071 unsigned fLastPlayTime;
00072 u_int64_t fFileSize;
00073 Boolean fDeleteFidOnClose;
00074 Boolean fHaveStartedReading;
00075 };
00076
00077 #endif