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 #ifndef _AP4_FILE_H_
00030 #define _AP4_FILE_H_
00031
00032
00033
00034
00035 #include "Ap4Types.h"
00036 #include "Ap4List.h"
00037 #include "Ap4AtomFactory.h"
00038
00039
00040
00041
00042 class AP4_ByteStream;
00043 class AP4_Movie;
00044 class AP4_FtypAtom;
00045
00046
00047
00048
00049 const AP4_UI32 AP4_FILE_BRAND_QT__ = AP4_ATOM_TYPE('q','t',' ',' ');
00050 const AP4_UI32 AP4_FILE_BRAND_ISOM = AP4_ATOM_TYPE('i','s','o','m');
00051 const AP4_UI32 AP4_FILE_BRAND_MP41 = AP4_ATOM_TYPE('m','p','4','1');
00052 const AP4_UI32 AP4_FILE_BRAND_MP42 = AP4_ATOM_TYPE('m','p','4','2');
00053 const AP4_UI32 AP4_FILE_BRAND_3GP1 = AP4_ATOM_TYPE('3','g','p','1');
00054 const AP4_UI32 AP4_FILE_BRAND_3GP2 = AP4_ATOM_TYPE('3','g','p','2');
00055 const AP4_UI32 AP4_FILE_BRAND_3GP3 = AP4_ATOM_TYPE('3','g','p','3');
00056 const AP4_UI32 AP4_FILE_BRAND_3GP4 = AP4_ATOM_TYPE('3','g','p','4');
00057 const AP4_UI32 AP4_FILE_BRAND_3GP5 = AP4_ATOM_TYPE('3','g','p','5');
00058 const AP4_UI32 AP4_FILE_BRAND_3G2A = AP4_ATOM_TYPE('3','g','2','a');
00059 const AP4_UI32 AP4_FILE_BRAND_MMP4 = AP4_ATOM_TYPE('m','m','p','4');
00060 const AP4_UI32 AP4_FILE_BRAND_M4A_ = AP4_ATOM_TYPE('M','4','A',' ');
00061 const AP4_UI32 AP4_FILE_BRAND_M4P_ = AP4_ATOM_TYPE('M','4','P',' ');
00062 const AP4_UI32 AP4_FILE_BRAND_MJP2 = AP4_ATOM_TYPE('m','j','p','2');
00063
00064
00065
00066
00067 class AP4_File {
00068 public:
00069
00070 AP4_File(AP4_Movie* movie);
00071 AP4_File(AP4_ByteStream& stream,
00072 AP4_AtomFactory& atom_factory = AP4_DefaultAtomFactory::Instance);
00073 virtual ~AP4_File();
00074
00075
00076 AP4_List<AP4_Atom>& GetOtherAtoms() { return m_OtherAtoms;}
00077 AP4_Movie* GetMovie() { return m_Movie; }
00078 AP4_FtypAtom* GetFileType() { return m_FileType; }
00079 AP4_Result SetFileType(AP4_UI32 major_brand,
00080 AP4_UI32 minor_version,
00081 AP4_UI32* compatible_brands = NULL,
00082 AP4_Cardinal compatible_brand_count = 0);
00083 virtual AP4_Result Inspect(AP4_AtomInspector& inspector);
00084
00085 private:
00086
00087 AP4_Movie* m_Movie;
00088 AP4_FtypAtom* m_FileType;
00089 AP4_List<AP4_Atom> m_OtherAtoms;
00090 };
00091
00092 #endif // _AP4_FILE_H_