00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _BYTE_STREAM_MEMORY_BUFFER_SOURCE_HH
00022 #define _BYTE_STREAM_MEMORY_BUFFER_SOURCE_HH
00023
00024 #ifndef _FRAMED_SOURCE_HH
00025 #include "FramedSource.hh"
00026 #endif
00027
00028 class ByteStreamMemoryBufferSource: public FramedSource {
00029 public:
00030 static ByteStreamMemoryBufferSource* createNew(UsageEnvironment& env,
00031 u_int8_t* buffer, u_int64_t bufferSize,
00032 Boolean deleteBufferOnClose = True,
00033 unsigned preferredFrameSize = 0,
00034 unsigned playTimePerFrame = 0);
00035
00036
00037
00038 u_int64_t bufferSize() const { return fBufferSize; }
00039
00040 void seekToByteAbsolute(u_int64_t byteNumber, u_int64_t numBytesToStream = 0);
00041
00042 void seekToByteRelative(int64_t offset);
00043
00044 protected:
00045 ByteStreamMemoryBufferSource(UsageEnvironment& env,
00046 u_int8_t* buffer, u_int64_t bufferSize,
00047 Boolean deleteBufferOnClose,
00048 unsigned preferredFrameSize,
00049 unsigned playTimePerFrame);
00050
00051
00052 virtual ~ByteStreamMemoryBufferSource();
00053
00054 private:
00055
00056 virtual void doGetNextFrame();
00057
00058 private:
00059 u_int8_t* fBuffer;
00060 u_int64_t fBufferSize;
00061 u_int64_t fCurIndex;
00062 Boolean fDeleteBufferOnClose;
00063 unsigned fPreferredFrameSize;
00064 unsigned fPlayTimePerFrame;
00065 unsigned fLastPlayTime;
00066 Boolean fLimitNumBytesToStream;
00067 u_int64_t fNumBytesToStream;
00068 };
00069
00070 #endif