00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "Ap4Types.h"
00033 #include "Ap4ByteStream.h"
00034
00035 #ifndef _AP4_FILE_BYTE_STREAM_H_
00036 #define _AP4_FILE_BYTE_STREAM_H_
00037
00038
00039
00040
00041 class AP4_FileByteStream: public AP4_ByteStream
00042 {
00043 public:
00044
00045 typedef enum {
00046 STREAM_MODE_READ,
00047 STREAM_MODE_WRITE
00048 } Mode;
00049
00050
00051 AP4_FileByteStream(const char* name, Mode mode);
00052
00053
00054 AP4_Result Read(void* buffer,
00055 AP4_Size bytesToRead,
00056 AP4_Size* bytesRead) {
00057 return m_Delegate->Read(buffer, bytesToRead, bytesRead);
00058 }
00059 AP4_Result Write(const void* buffer,
00060 AP4_Size bytesToWrite,
00061 AP4_Size* bytesWritten) {
00062 return m_Delegate->Write(buffer, bytesToWrite, bytesWritten);
00063 }
00064 AP4_Result Seek(AP4_Position position) { return m_Delegate->Seek(position); }
00065 AP4_Result Tell(AP4_Position& position) { return m_Delegate->Tell(position); }
00066 AP4_Result GetSize(AP4_LargeSize& size) { return m_Delegate->GetSize(size);}
00067
00068
00069 void AddReference() { m_Delegate->AddReference(); }
00070 void Release() { m_Delegate->Release(); }
00071
00072 protected:
00073
00074 virtual ~AP4_FileByteStream() {
00075 delete m_Delegate;
00076 }
00077
00078
00079 AP4_ByteStream* m_Delegate;
00080 };
00081
00082 #endif // _AP4_FILE_BYTE_STREAM_H_
00083
00084
00085
00086
00087
00088
00089
00090