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_TKHD_ATOM_H_
00030 #define _AP4_TKHD_ATOM_H_
00031
00032
00033
00034
00035 #include "Ap4.h"
00036 #include "Ap4ByteStream.h"
00037 #include "Ap4List.h"
00038 #include "Ap4Atom.h"
00039
00040
00041
00042
00043 const int AP4_TKHD_FLAG_TRACK_ENABLED = 1;
00044 const int AP4_TKHD_FLAG_TRACK_IN_MOVIE = 2;
00045 const int AP4_TKHD_FLAG_TRACK_IN_PREVIEW = 4;
00046
00047 const int AP4_TKHD_FLAG_DEFAULTS = 7;
00048
00049
00050
00051
00052 class AP4_TkhdAtom : public AP4_Atom
00053 {
00054 public:
00055
00056 AP4_TkhdAtom(AP4_UI32 creation_time,
00057 AP4_UI32 modification_time,
00058 AP4_UI32 track_id,
00059 AP4_UI32 duration,
00060 AP4_UI16 volume,
00061 AP4_UI32 width,
00062 AP4_UI32 height);
00063 AP4_TkhdAtom(AP4_Size size, AP4_ByteStream& stream);
00064 virtual AP4_Result InspectFields(AP4_AtomInspector& inspector);
00065 virtual AP4_Result WriteFields(AP4_ByteStream& stream);
00066
00067 AP4_UI32 GetDuration() { return m_Duration; }
00068 AP4_Result SetDuration(AP4_UI32 duration) {
00069 m_Duration = duration;
00070 return AP4_SUCCESS;
00071 }
00072 AP4_UI32 GetTrackId() { return m_TrackId; }
00073 AP4_Result SetTrackId(AP4_UI32 track_id) {
00074 m_TrackId = track_id;
00075 return AP4_SUCCESS;
00076 }
00077
00078 void GetTranslation(AP4_Float& x, AP4_Float& y)
00079 {
00080 x = (AP4_Float)(*(int*)&m_Matrix[6]) / 65536;
00081 y = (AP4_Float)(*(int*)&m_Matrix[7]) / 65536;
00082 }
00083
00084 private:
00085
00086 AP4_UI32 m_CreationTime;
00087 AP4_UI32 m_ModificationTime;
00088 AP4_UI32 m_TrackId;
00089 AP4_UI32 m_Reserved1;
00090 AP4_UI32 m_Duration;
00091 AP4_UI08 m_DataVersion1[32];
00092 AP4_UI32 m_Reserved2[2];
00093 AP4_UI16 m_Layer;
00094 AP4_UI16 m_AlternateGroup;
00095 AP4_UI16 m_Volume;
00096 AP4_UI16 m_Reserved3;
00097 AP4_UI32 m_Matrix[9];
00098 AP4_UI32 m_Width;
00099 AP4_UI32 m_Height;
00100 };
00101
00102 #endif // _AP4_TKHD_ATOM_H_