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 #ifndef MediaInfoH
00027 #define MediaInfoH
00028
00029
00030
00031 #include <MediaInfo/MediaInfo_Const.h>
00032
00033
00034 namespace MediaInfoLib
00035 {
00036
00037 class File__Base;
00038 class File__Analyze;
00039 class Internet__Base;
00040 class WxThread;
00041
00042
00045
00046
00047 class MediaInfo
00048 {
00049 public :
00050
00051 MediaInfo ();
00052 ~MediaInfo ();
00053
00059 size_t Open (const String &File_Name);
00069 size_t Open (const ZenLib::int8u* Begin, size_t Begin_Size, const ZenLib::int8u* End=NULL, size_t End_Size=0, ZenLib::int64u File_Size=0);
00074 size_t Open_Buffer_Init (ZenLib::int64u File_Size=(ZenLib::int64u)-1, ZenLib::int64u File_Offset=0);
00079 size_t Open_Buffer_Continue (const ZenLib::int8u* Buffer, size_t Buffer_Size);
00084 ZenLib::int64u Open_Buffer_Continue_GoTo_Get ();
00087 size_t Open_Buffer_Finalize ();
00092 size_t Save ();
00096 void Close ();
00097
00098
00102 String Inform (size_t Reserved=0);
00103
00104
00113 String Get (stream_t StreamKind, size_t StreamNumber, size_t Parameter, info_t InfoKind=Info_Text);
00124 String Get (stream_t StreamKind, size_t StreamNumber, const String &Parameter, info_t InfoKind=Info_Text, info_t SearchKind=Info_Name);
00125
00126
00136 size_t Set (const String &ToSet, stream_t StreamKind, size_t StreamNumber, size_t Parameter, const String &OldValue=_T(""));
00146 size_t Set (const String &ToSet, stream_t StreamKind, size_t StreamNumber, const String &Parameter, const String &OldValue=_T(""));
00147
00148
00155 size_t Output_Buffer_Get (const String &Value, unsigned char** Output_Buffer=NULL);
00156
00157
00197 String Option (const String &Option, const String &Value=_T(""));
00203 static String Option_Static (const String &Option, const String &Value=_T(""));
00211 size_t State_Get ();
00215 size_t Count_Get (stream_t StreamKind, size_t StreamNumber=(size_t)-1);
00216
00217 private :
00218 friend class File_Cdxa;
00219
00220
00221 int Format_Test();
00222 int Format_Test_Buffer();
00223 int Format_Test_FillBuffer_Init();
00224 int Format_Test_FillBuffer_Continue();
00225 int Format_Test_FillBuffer_Close();
00226
00227
00228 String File_Name;
00229 void* File_Handle;
00230 ZenLib::int64u File_Size;
00231 ZenLib::int64u File_Offset;
00232 bool File_AlreadyBuffered;
00233
00234
00235 unsigned char* Buffer;
00236 size_t Buffer_Size;
00237 size_t Buffer_Size_Max;
00238 const unsigned char* BufferConst;
00239
00240
00241 File__Base* Info;
00242 Internet__Base* Internet;
00243
00244
00245 WxThread* Thread;
00246 blockmethod_t BlockMethod;
00247
00248
00249 int InternalMethod;
00250 int ApplyMethod();
00251 int ListFormats();
00252 void Buffer_Clear();
00253 void SelectFromExtension (const String &Parser);
00254 bool LibraryIsModified();
00255 void CreateDummy (const String& Value);
00256
00257 MediaInfo(const MediaInfo&);
00258
00259
00260 bool MultipleParsing_IsDetected;
00261 };
00262
00263 }
00264 #endif