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_TRAK_ATOM_H_
00030 #define _AP4_TRAK_ATOM_H_
00031
00032
00033
00034
00035 #include "Ap4ContainerAtom.h"
00036 #include "Ap4TkhdAtom.h"
00037
00038
00039
00040
00041 class AP4_HdlrAtom;
00042 class AP4_SampleTable;
00043
00044
00045
00046
00047 class AP4_TrakAtom : public AP4_ContainerAtom
00048 {
00049 public:
00050
00051 static AP4_TrakAtom* Create(AP4_Size size,
00052 AP4_ByteStream& stream,
00053 AP4_AtomFactory& atom_factory) {
00054 return new AP4_TrakAtom(size, stream, atom_factory);
00055 }
00056
00057
00058 AP4_TrakAtom(AP4_SampleTable* sample_table,
00059 AP4_Atom::Type hdlr_type,
00060 const char* hdlr_name,
00061 AP4_UI32 track_id,
00062 AP4_UI32 creation_time,
00063 AP4_UI32 modification_time,
00064 AP4_UI32 track_duration,
00065 AP4_UI32 media_time_scale,
00066 AP4_UI32 media_duration,
00067 AP4_UI16 volume,
00068 const char* language,
00069 AP4_UI32 width,
00070 AP4_UI32 heigh);
00071 AP4_Result AdjustChunkOffsets(AP4_SI64 delta);
00072 AP4_UI32 GetId() {
00073 return m_TkhdAtom->GetTrackId();
00074 }
00075 AP4_Result SetId(AP4_UI32 track_id) {
00076 return m_TkhdAtom->SetTrackId(track_id);
00077 }
00078 AP4_UI32 GetDuration();
00079 AP4_Result SetDuration(AP4_UI32 duration);
00080 AP4_TkhdAtom* GetTkhdAtom() { return m_TkhdAtom; }
00081
00082 private:
00083
00084 AP4_TrakAtom(AP4_UI32 size,
00085 AP4_ByteStream& stream,
00086 AP4_AtomFactory& atom_factory);
00087
00088
00089 AP4_TkhdAtom* m_TkhdAtom;
00090 };
00091
00092 #endif // _AP4_TRAK_ATOM_H_