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_CONTAINER_ATOM_H_
00030 #define _AP4_CONTAINER_ATOM_H_
00031
00032
00033
00034
00035 #include "Ap4Types.h"
00036 #include "Ap4List.h"
00037 #include "Ap4Atom.h"
00038
00039
00040
00041
00042 class AP4_ByteStream;
00043 class AP4_AtomFactory;
00044
00045
00046
00047
00048 class AP4_ContainerAtom : public AP4_Atom, public AP4_AtomParent
00049 {
00050 public:
00051
00052 static AP4_ContainerAtom* Create(Type type,
00053 AP4_UI64 size,
00054 bool is_full,
00055 bool force_64,
00056 AP4_ByteStream& stream,
00057 AP4_AtomFactory& atom_factory);
00058
00059
00060 explicit AP4_ContainerAtom(Type type);
00061 explicit AP4_ContainerAtom(Type type, AP4_UI32 version, AP4_UI32 flags);
00062 explicit AP4_ContainerAtom(Type type, AP4_UI64 size, bool force_64);
00063 explicit AP4_ContainerAtom(Type type, AP4_UI64 size, bool force_64, AP4_UI32 version, AP4_UI32 flags);
00064 AP4_List<AP4_Atom>& GetChildren() { return m_Children; }
00065 virtual AP4_Result InspectFields(AP4_AtomInspector& inspector);
00066 virtual AP4_Result InspectChildren(AP4_AtomInspector& inspector);
00067 virtual AP4_Result WriteFields(AP4_ByteStream& stream);
00068 virtual AP4_Atom* Clone();
00069
00070
00071 virtual void OnChildChanged(AP4_Atom* child);
00072 virtual void OnChildAdded(AP4_Atom* child);
00073 virtual void OnChildRemoved(AP4_Atom* child);
00074
00075 protected:
00076
00077 AP4_ContainerAtom(Type type,
00078 AP4_UI64 size,
00079 bool force_64,
00080 AP4_UI32 version,
00081 AP4_UI32 flags,
00082 AP4_ByteStream& stream,
00083 AP4_AtomFactory& atom_factory);
00084 AP4_ContainerAtom(Type type,
00085 AP4_UI64 size,
00086 bool force_64,
00087 AP4_ByteStream& stream,
00088 AP4_AtomFactory& atom_factory);
00089
00090
00091 void ReadChildren(AP4_AtomFactory& atom_factory,
00092 AP4_ByteStream& stream,
00093 AP4_UI64 size);
00094 };
00095
00096 #endif // _AP4_CONTAINER_ATOM_H_