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_STSC_ATOM_H_
00030 #define _AP4_STSC_ATOM_H_
00031
00032
00033
00034
00035 #include "Ap4Types.h"
00036 #include "Ap4Atom.h"
00037 #include "Ap4Array.h"
00038
00039
00040
00041
00042 class AP4_StscTableEntry {
00043 public:
00044 AP4_StscTableEntry() :
00045 m_FirstChunk(0),
00046 m_FirstSample(0),
00047 m_ChunkCount(0),
00048 m_SamplesPerChunk(0),
00049 m_SampleDescriptionIndex(0) {}
00050 AP4_StscTableEntry(AP4_Ordinal first_chunk,
00051 AP4_Ordinal first_sample,
00052 AP4_Cardinal samples_per_chunk,
00053 AP4_Ordinal sample_description_index) :
00054 m_FirstChunk(first_chunk),
00055 m_FirstSample(first_sample),
00056 m_ChunkCount(0),
00057 m_SamplesPerChunk(samples_per_chunk),
00058 m_SampleDescriptionIndex(sample_description_index) {}
00059 AP4_StscTableEntry(AP4_Ordinal first_chunk,
00060 AP4_Ordinal first_sample,
00061 AP4_Cardinal chunk_count,
00062 AP4_Cardinal samples_per_chunk,
00063 AP4_Ordinal sample_description_index) :
00064 m_FirstChunk(first_chunk),
00065 m_FirstSample(first_sample),
00066 m_ChunkCount(chunk_count),
00067 m_SamplesPerChunk(samples_per_chunk),
00068 m_SampleDescriptionIndex(sample_description_index) {}
00069 AP4_Ordinal m_FirstChunk;
00070 AP4_Ordinal m_FirstSample;
00071 AP4_Cardinal m_ChunkCount;
00072 AP4_Cardinal m_SamplesPerChunk;
00073 AP4_Ordinal m_SampleDescriptionIndex;
00074 };
00075
00076
00077
00078
00079 class AP4_StscAtom : public AP4_Atom
00080 {
00081 public:
00082
00083 static AP4_StscAtom* Create(AP4_Size size, AP4_ByteStream& stream);
00084
00085
00086 AP4_StscAtom();
00087 virtual AP4_Result InspectFields(AP4_AtomInspector& inspector);
00088 virtual AP4_Result GetChunkForSample(AP4_Ordinal sample,
00089 AP4_Ordinal& chunk,
00090 AP4_Ordinal& skip,
00091 AP4_Ordinal& sample_description);
00092 virtual AP4_Result AddEntry(AP4_Cardinal chunk_count,
00093 AP4_Cardinal samples_per_chunk,
00094 AP4_Ordinal sample_description_index);
00095 virtual AP4_Result WriteFields(AP4_ByteStream& stream);
00096
00097 private:
00098
00099 AP4_StscAtom(AP4_UI32 size,
00100 AP4_UI32 version,
00101 AP4_UI32 flags,
00102 AP4_ByteStream& stream);
00103
00104
00105 AP4_Array<AP4_StscTableEntry> m_Entries;
00106 AP4_Ordinal m_CachedChunkGroup;
00107 };
00108
00109 #endif // _AP4_STSC_ATOM_H_