annotate Plugins/Input/aac/libmp4v2/atom_standard.cpp @ 790:8f437afc4f4a trunk

[svn] - more sanity checking
author nenolod
date Fri, 03 Mar 2006 20:09:52 -0800
parents fa848bd484d8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
1 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
2 * The contents of this file are subject to the Mozilla Public
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
3 * License Version 1.1 (the "License"); you may not use this file
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
4 * except in compliance with the License. You may obtain a copy of
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
5 * the License at http://www.mozilla.org/MPL/
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
6 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
7 * Software distributed under the License is distributed on an "AS
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
9 * implied. See the License for the specific language governing
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
10 * rights and limitations under the License.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
11 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
12 * The Original Code is MPEG4IP.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
13 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
14 * The Initial Developer of the Original Code is Cisco Systems Inc.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
15 * Portions created by Cisco Systems Inc. are
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
16 * Copyright (C) Cisco Systems Inc. 2004. All Rights Reserved.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
17 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
18 * Contributor(s):
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
19 * Bill May (from others work).
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
20 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
21
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
22 #include "mp4common.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
23 #include "atoms.h"
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 static const char name[5]={0251,'n', 'a', 'm', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 static const char art[5]={0251,'A', 'R', 'T', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 static const char wrt[5]={0251,'w', 'r', 't', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 static const char alb[5]={0251,'a', 'l', 'b', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 static const char day[5]={0251,'d', 'a', 'y', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 static const char too[5]={0251,'t', 'o', 'o', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 static const char cmt[5]={0251,'c', 'm', 't', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 static const char gen[5]={0251,'g', 'e', 'n', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 static const char grp[5]={0251,'g', 'r', 'p', '\0'};
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 MP4StandardAtom::MP4StandardAtom (const char *type) : MP4Atom(type)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 * This is a big if else loop. Make sure that you don't break it
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 * when adding new atoms, or you will set the unknown type flag
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 *
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 * Try to keep it in alphabetical order - it should only be called
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 * 1 time per atom, so it's not that urgent.
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 * b???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 if (ATOMID(type) == ATOMID("bitr")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 new MP4Integer32Property("avgBitrate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 new MP4Integer32Property("maxBitrate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 } else if (ATOMID(type) == ATOMID("btrt")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 AddProperty( new MP4Integer32Property("bufferSizeDB")); /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 AddProperty( new MP4Integer32Property("avgBitrate")); /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 AddProperty( new MP4Integer32Property("maxBitrate")); /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59 * c???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 } else if (ATOMID(type) == ATOMID("co64")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 MP4Integer32Property* pCount =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 pTable->AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72 new MP4Integer64Property("chunkOffset"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 } else if (ATOMID(type) == ATOMID("cpil") ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 ATOMID(type) == ATOMID("covr")) { /* Apple iTunes */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 } else if (ATOMID(type) == ATOMID("cprt")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 new MP4Integer16Property("language"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 new MP4StringProperty("notice"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 } else if (ATOMID(type) == ATOMID("ctts")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 MP4Integer32Property* pCount =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 pTable->AddProperty(new MP4Integer32Property("sampleCount"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 pTable->AddProperty(new MP4Integer32Property("sampleOffset"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 * d???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 } else if (ATOMID(type) == ATOMID("dinf")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 ExpectChildAtom("dref", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 } else if (ATOMID(type) == ATOMID("dimm")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 AddProperty( // bytes of immediate data
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 new MP4Integer64Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107 } else if (ATOMID(type) == ATOMID("disk")) { /* Apple iTunes */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110 } else if (ATOMID(type) == ATOMID("dmax")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 AddProperty( // max packet duration
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 new MP4Integer32Property("milliSecs"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 } else if (ATOMID(type) == ATOMID("dmed")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 AddProperty( // bytes sent from media data
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 new MP4Integer64Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 } else if (ATOMID(type) == ATOMID("drep")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 AddProperty( // bytes of repeated data
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 new MP4Integer64Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 * e???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 } else if (ATOMID(type) == ATOMID("edts")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125 ExpectChildAtom("elst", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 } else if (ATOMID(type) == ATOMID("esds")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 new MP4DescriptorProperty(NULL, MP4ESDescrTag, 0,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 Required, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 * f???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 } else if (ATOMID(type) == ATOMID("frma")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137 new MP4Integer32Property("data-format"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 * g???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 } else if (ATOMID(type) == ATOMID("gnre")) { // Apple iTunes
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 ExpectChildAtom("data", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 * h???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 } else if (ATOMID(type) == ATOMID("hmhd")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150 AddProperty(new MP4Integer16Property("maxPduSize"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 AddProperty(new MP4Integer16Property("avgPduSize"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 AddProperty(new MP4Integer32Property("maxBitRate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 AddProperty(new MP4Integer32Property("avgBitRate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 AddProperty(new MP4Integer32Property("slidingAvgBitRate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 * i???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 } else if (ATOMID(type) == ATOMID("iKMS")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 MP4StringProperty* pProp = new MP4StringProperty("kms_URI");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 AddProperty(pProp); /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 } else if (ATOMID(type) == ATOMID("iSFM")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 new MP4BitfieldProperty("selective-encryption", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 new MP4BitfieldProperty("reserved", 7));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 new MP4Integer8Property("key-indicator-length"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 new MP4Integer8Property("IV-length"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 } else if (ATOMID(type) == ATOMID("ilst")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 ExpectChildAtom("\251nam", Optional, OnlyOne); /* name */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 ExpectChildAtom("\251ART", Optional, OnlyOne); /* artist */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 ExpectChildAtom("\251wrt", Optional, OnlyOne); /* writer */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 ExpectChildAtom("\251alb", Optional, OnlyOne); /* album */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 ExpectChildAtom("\251day", Optional, OnlyOne); /* date */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 ExpectChildAtom("\251too", Optional, OnlyOne); /* tool */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181 ExpectChildAtom("\251cmt", Optional, OnlyOne); /* comment */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 ExpectChildAtom("\251gen", Optional, OnlyOne); /* custom genre */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 ExpectChildAtom("trkn", Optional, OnlyOne); /* tracknumber */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 ExpectChildAtom("disk", Optional, OnlyOne); /* disknumber */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185 ExpectChildAtom("gnre", Optional, OnlyOne); /* genre (ID3v1 index + 1) */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 ExpectChildAtom("cpil", Optional, OnlyOne); /* compilation */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187 ExpectChildAtom("tmpo", Optional, OnlyOne); /* BPM */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188 ExpectChildAtom("covr", Optional, OnlyOne); /* cover art */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 ExpectChildAtom("----", Optional, Many); /* ---- free form */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 } else if (ATOMID(type) == ATOMID("iods")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 new MP4DescriptorProperty(NULL, MP4FileIODescrTag,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 MP4FileODescrTag,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196 Required, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198 * m???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 } else if (ATOMID(type) == ATOMID("maxr")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 AddProperty(new MP4Integer32Property("granularity"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 AddProperty(new MP4Integer32Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204 } else if (ATOMID(type) == ATOMID("mdia")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 ExpectChildAtom("mdhd", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 ExpectChildAtom("hdlr", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 ExpectChildAtom("minf", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 } else if (ATOMID(type) == ATOMID("meta")) { // iTunes
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 ExpectChildAtom("hdlr", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 ExpectChildAtom("ilst", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 } else if (ATOMID(type) == ATOMID("mfhd")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 new MP4Integer32Property("sequenceNumber"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 } else if (ATOMID(type) == ATOMID("minf")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 ExpectChildAtom("vmhd", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 ExpectChildAtom("smhd", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 ExpectChildAtom("hmhd", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 ExpectChildAtom("nmhd", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 ExpectChildAtom("dinf", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 ExpectChildAtom("stbl", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 } else if (ATOMID(type) == ATOMID("moof")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 ExpectChildAtom("mfhd", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 ExpectChildAtom("traf", Optional, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 } else if (ATOMID(type) == ATOMID("moov")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 ExpectChildAtom("mvhd", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 ExpectChildAtom("iods", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 ExpectChildAtom("trak", Required, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235 ExpectChildAtom("udta", Optional, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236 ExpectChildAtom("mvex", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 } else if (ATOMID(type) == ATOMID("mvex")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239 ExpectChildAtom("trex", Required, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242 * n???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244 } else if (ATOMID(type) == ATOMID("nmhd")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 } else if (ATOMID(type) == ATOMID("nump")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 AddProperty( // packets sent
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249 new MP4Integer64Property("packets"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 * p???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 } else if (ATOMID(type) == ATOMID("payt")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 AddProperty(new MP4Integer32Property("payloadNumber"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 AddProperty(new MP4StringProperty("rtpMap", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 } else if (ATOMID(type) == ATOMID("pmax")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 AddProperty( // max packet size
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 new MP4Integer32Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 * s???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 } else if (ATOMID(type) == ATOMID("schi")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 // not sure if this is child atoms or table of boxes
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 // get clarification on spec 9.1.2.5
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 ExpectChildAtom("iKMS", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 ExpectChildAtom("iSFM", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 } else if (ATOMID(type) == ATOMID("schm")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272 new MP4Integer32Property("scheme_type"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 new MP4Integer32Property("scheme_version"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 // browser URI if flags set, TODO
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 } else if (ATOMID(type) == ATOMID("sinf")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278 ExpectChildAtom("frma", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 ExpectChildAtom("schm", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 ExpectChildAtom("schi", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 } else if (ATOMID(type) == ATOMID("smhd")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 AddReserved("reserved", 4);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 } else if (ATOMID(type) == ATOMID("snro")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 AddProperty(new MP4Integer32Property("offset"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
289 } else if (ATOMID(type) == ATOMID("stco")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292 MP4Integer32Property* pCount = new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 pTable->AddProperty(new MP4Integer32Property("chunkOffset"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 } else if (ATOMID(type) == ATOMID("stsh")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 MP4Integer32Property* pCount = new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309 pTable->AddProperty(new MP4Integer32Property("shadowedSampleNumber"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310 pTable->AddProperty(new MP4Integer32Property("syncSampleNumber"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 } else if (ATOMID(type) == ATOMID("stss")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315 MP4Integer32Property* pCount = new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 pTable->AddProperty(new MP4Integer32Property("sampleNumber"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 } else if (ATOMID(type) == ATOMID("stts")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 AddVersionAndFlags();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 MP4Integer32Property* pCount = new MP4Integer32Property("entryCount");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326 AddProperty(pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 MP4TableProperty* pTable = new MP4TableProperty("entries", pCount);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329 AddProperty(pTable);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 pTable->AddProperty(new MP4Integer32Property("sampleCount"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332 pTable->AddProperty(new MP4Integer32Property("sampleDelta"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 * t???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337 } else if (ATOMID(type) == ATOMID("tims")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339 new MP4Integer32Property("timeScale"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 } else if (ATOMID(type) == ATOMID("tmin")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342 AddProperty( // min relative xmit time
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343 new MP4Integer32Property("milliSecs"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 } else if (ATOMID(type) == ATOMID("tmax")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 AddProperty( // max relative xmit time
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347 new MP4Integer32Property("milliSecs"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349 } else if (ATOMID(type) == ATOMID("tmpo")) { // iTunes
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352 } else if (ATOMID(type) == ATOMID("traf")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353 ExpectChildAtom("tfhd", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354 ExpectChildAtom("trun", Optional, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 } else if (ATOMID(type) == ATOMID("trak")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 ExpectChildAtom("tkhd", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 ExpectChildAtom("tref", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359 ExpectChildAtom("edts", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 ExpectChildAtom("mdia", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 ExpectChildAtom("udta", Optional, Many);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 } else if (ATOMID(type) == ATOMID("tref")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 ExpectChildAtom("dpnd", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365 ExpectChildAtom("hint", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366 ExpectChildAtom("ipir", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367 ExpectChildAtom("mpod", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 ExpectChildAtom("sync", Optional, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370 } else if (ATOMID(type) == ATOMID("trex")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 AddVersionAndFlags(); /* 0, 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373 new MP4Integer32Property("trackId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
374 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375 new MP4Integer32Property("defaultSampleDesriptionIndex"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377 new MP4Integer32Property("defaultSampleDuration"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 new MP4Integer32Property("defaultSampleSize"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381 new MP4Integer32Property("defaultSampleFlags"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383 } else if (ATOMID(type) == ATOMID("trkn")) { // iTunes
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386 } else if (ATOMID(type) == ATOMID("trpy") ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387 ATOMID(type) == ATOMID("tpyl")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388 AddProperty( // bytes sent including RTP headers
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 new MP4Integer64Property("bytes"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391 } else if (ATOMID(type) == ATOMID("tsro")) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
392 AddProperty(
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
393 new MP4Integer32Property("offset"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
394
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396 * copyright???
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398 } else if (ATOMID(type) == ATOMID(name) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399 ATOMID(type) == ATOMID(art) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400 ATOMID(type) == ATOMID(wrt) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401 ATOMID(type) == ATOMID(alb) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402 ATOMID(type) == ATOMID(day) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
403 ATOMID(type) == ATOMID(too) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
404 ATOMID(type) == ATOMID(cmt) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
405 ATOMID(type) == ATOMID(gen) ||
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 ATOMID(type) == ATOMID(grp)) { /* Apple iTunes */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
409 * ----
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
410 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
411 } else if (ATOMID(type) == ATOMID("----")) { /* Apple iTunes */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 ExpectChildAtom("mean", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413 ExpectChildAtom("name", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414 ExpectChildAtom("data", Required, OnlyOne);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416 /*
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 * default - unknown type
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419 SetUnknownType(true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422 }