annotate Plugins/Input/aac/libmp4v2/descriptors.cpp @ 553:82346a6312c2 trunk

[svn] make WMA plugin strings translatable
author nenolod
date Wed, 01 Feb 2006 13:09:00 -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. 2001. 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 * Dave Mackie dmackie@cisco.com
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
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
24 MP4IODescriptor::MP4IODescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 : MP4Descriptor(MP4FileIODescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 /* N.B. other member functions depend on the property indicies */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 new MP4BitfieldProperty("objectDescriptorId", 10));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31 new MP4BitfieldProperty("URLFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 new MP4BitfieldProperty("includeInlineProfileLevelFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 new MP4BitfieldProperty("reserved", 4));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
36 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
37 new MP4StringProperty("URL", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
38 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 new MP4Integer8Property("ODProfileLevelId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 new MP4Integer8Property("sceneProfileLevelId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 new MP4Integer8Property("audioProfileLevelId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 AddProperty( /* 8 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45 new MP4Integer8Property("visualProfileLevelId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 AddProperty( /* 9 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 new MP4Integer8Property("graphicsProfileLevelId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 AddProperty( /* 10 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 new MP4DescriptorProperty("esIds",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50 MP4ESIDIncDescrTag, 0, Required, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 AddProperty( /* 11 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 new MP4DescriptorProperty("ociDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 MP4OCIDescrTagsStart, MP4OCIDescrTagsEnd, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 AddProperty( /* 12 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 new MP4DescriptorProperty("ipmpDescrPtr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 MP4IPMPPtrDescrTag, 0, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 AddProperty( /* 13 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58 new MP4DescriptorProperty("extDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59 MP4ExtDescrTagsStart, MP4ExtDescrTagsEnd, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 SetReadMutate(2);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 void MP4IODescriptor::Generate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66 ((MP4BitfieldProperty*)m_pProperties[0])->SetValue(1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 ((MP4BitfieldProperty*)m_pProperties[3])->SetValue(0xF);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 for (u_int32_t i = 5; i <= 9; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 ((MP4Integer8Property*)m_pProperties[i])->SetValue(0xFF);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 void MP4IODescriptor::Mutate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 bool urlFlag = ((MP4BitfieldProperty*)m_pProperties[1])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 m_pProperties[4]->SetImplicit(!urlFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 for (u_int32_t i = 5; i <= 12; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 m_pProperties[i]->SetImplicit(urlFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 MP4ODescriptor::MP4ODescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
84 : MP4Descriptor(MP4FileODescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86 /* N.B. other member functions depend on the property indicies */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 new MP4BitfieldProperty("objectDescriptorId", 10));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 new MP4BitfieldProperty("URLFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 new MP4BitfieldProperty("reserved", 5));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 new MP4StringProperty("URL", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96 new MP4DescriptorProperty("esIds",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 MP4ESIDRefDescrTag, 0, Required, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 new MP4DescriptorProperty("ociDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 MP4OCIDescrTagsStart, MP4OCIDescrTagsEnd, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 new MP4DescriptorProperty("ipmpDescrPtr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 MP4IPMPPtrDescrTag, 0, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 new MP4DescriptorProperty("extDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 MP4ExtDescrTagsStart, MP4ExtDescrTagsEnd, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 SetReadMutate(2);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 void MP4ODescriptor::Generate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 ((MP4BitfieldProperty*)m_pProperties[2])->SetValue(0x1F);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 void MP4ODescriptor::Mutate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 bool urlFlag = ((MP4BitfieldProperty*)m_pProperties[1])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 m_pProperties[3]->SetImplicit(!urlFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 for (u_int32_t i = 4; i <= 6; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 m_pProperties[i]->SetImplicit(urlFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 MP4ESIDIncDescriptor::MP4ESIDIncDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 : MP4Descriptor(MP4ESIDIncDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 new MP4Integer32Property("id"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 MP4ESIDRefDescriptor::MP4ESIDRefDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 : MP4Descriptor(MP4ESIDRefDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 {
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 MP4Integer16Property("refIndex"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 MP4ESDescriptor::MP4ESDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 : MP4Descriptor(MP4ESDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143 /* N.B. other class functions depend on the property indicies */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 new MP4Integer16Property("ESID"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 new MP4BitfieldProperty("streamDependenceFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 new MP4BitfieldProperty("URLFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 new MP4BitfieldProperty("OCRstreamFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 new MP4BitfieldProperty("streamPriority", 5));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155 new MP4Integer16Property("dependsOnESID"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 new MP4StringProperty("URL", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 new MP4Integer16Property("OCRESID"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 AddProperty( /* 8 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161 new MP4DescriptorProperty("decConfigDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 MP4DecConfigDescrTag, 0, Required, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 AddProperty( /* 9 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164 new MP4DescriptorProperty("slConfigDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165 MP4SLConfigDescrTag, 0, Required, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 AddProperty( /* 10 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 new MP4DescriptorProperty("ipiPtr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168 MP4IPIPtrDescrTag, 0, Optional, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 AddProperty( /* 11 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 new MP4DescriptorProperty("ipIds",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 MP4ContentIdDescrTag, MP4SupplContentIdDescrTag, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 AddProperty( /* 12 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 new MP4DescriptorProperty("ipmpDescrPtr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 MP4IPMPPtrDescrTag, 0, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175 AddProperty( /* 13 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 new MP4DescriptorProperty("langDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 MP4LanguageDescrTag, 0, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 AddProperty( /* 14 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 new MP4DescriptorProperty("qosDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 MP4QosDescrTag, 0, Optional, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181 AddProperty( /* 15 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 new MP4DescriptorProperty("regDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183 MP4RegistrationDescrTag, 0, Optional, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 AddProperty( /* 16 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185 new MP4DescriptorProperty("extDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 MP4ExtDescrTagsStart, MP4ExtDescrTagsEnd, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188 SetReadMutate(5);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 void MP4ESDescriptor::Mutate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193 bool streamDependFlag =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 ((MP4BitfieldProperty*)m_pProperties[1])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195 m_pProperties[5]->SetImplicit(!streamDependFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 bool urlFlag =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198 ((MP4BitfieldProperty*)m_pProperties[2])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 m_pProperties[6]->SetImplicit(!urlFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 bool ocrFlag =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 ((MP4BitfieldProperty*)m_pProperties[3])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 m_pProperties[7]->SetImplicit(!ocrFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 MP4DecConfigDescriptor::MP4DecConfigDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 : MP4Descriptor(MP4DecConfigDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 new MP4Integer8Property("objectTypeId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
212 new MP4BitfieldProperty("streamType", 6));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
213 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
214 new MP4BitfieldProperty("upStream", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
215 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
216 new MP4BitfieldProperty("reserved", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
217 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
218 new MP4BitfieldProperty("bufferSizeDB", 24));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
219 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
220 new MP4Integer32Property("maxBitrate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
221 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
222 new MP4Integer32Property("avgBitrate"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
223 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
224 new MP4DescriptorProperty("decSpecificInfo",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
225 MP4DecSpecificDescrTag, 0, Optional, OnlyOne));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
226 AddProperty( /* 8 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
227 new MP4DescriptorProperty("profileLevelIndicationIndexDescr",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
228 MP4ExtProfileLevelDescrTag, 0, Optional, Many));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
229 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
230
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
231 void MP4DecConfigDescriptor::Generate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
232 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
233 ((MP4BitfieldProperty*)m_pProperties[3])->SetValue(1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
234 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
235
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
236 MP4DecSpecificDescriptor::MP4DecSpecificDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
237 : MP4Descriptor(MP4DecSpecificDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
238 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
239 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
240 new MP4BytesProperty("info"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
241 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
242
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
243 void MP4DecSpecificDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
244 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
245 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
246
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
247 /* byte properties need to know how long they are before reading */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
248 ((MP4BytesProperty*)m_pProperties[0])->SetValueSize(m_size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
249
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
250 ReadProperties(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
251 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
252
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
253 MP4SLConfigDescriptor::MP4SLConfigDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
254 : MP4Descriptor(MP4SLConfigDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
255 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
256 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
257 new MP4Integer8Property("predefined"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
258 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
259 new MP4BitfieldProperty("useAccessUnitStartFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
260 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
261 new MP4BitfieldProperty("useAccessUnitEndFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
262 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
263 new MP4BitfieldProperty("useRandomAccessPointFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
264 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
265 new MP4BitfieldProperty("hasRandomAccessUnitsOnlyFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
266 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
267 new MP4BitfieldProperty("usePaddingFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
268 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
269 new MP4BitfieldProperty("useTimeStampsFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
270 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
271 new MP4BitfieldProperty("useIdleFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
272 AddProperty( /* 8 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
273 new MP4BitfieldProperty("durationFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
274 AddProperty( /* 9 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
275 new MP4Integer32Property("timeStampResolution"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
276 AddProperty( /* 10 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
277 new MP4Integer32Property("OCRResolution"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
278 AddProperty( /* 11 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
279 new MP4Integer8Property("timeStampLength"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
280 AddProperty( /* 12 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
281 new MP4Integer8Property("OCRLength"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
282 AddProperty( /* 13 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
283 new MP4Integer8Property("AULength"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
284 AddProperty( /* 14 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
285 new MP4Integer8Property("instantBitrateLength"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
286 AddProperty( /* 15 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
287 new MP4BitfieldProperty("degradationPriortyLength", 4));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
288 AddProperty( /* 16 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
289 new MP4BitfieldProperty("AUSeqNumLength", 5));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
290 AddProperty( /* 17 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
291 new MP4BitfieldProperty("packetSeqNumLength", 5));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
292 AddProperty( /* 18 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
293 new MP4BitfieldProperty("reserved", 2));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
294
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
295 // if durationFlag
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
296 AddProperty( /* 19 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
297 new MP4Integer32Property("timeScale"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
298 AddProperty( /* 20 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
299 new MP4Integer16Property("accessUnitDuration"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
300 AddProperty( /* 21 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
301 new MP4Integer16Property("compositionUnitDuration"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
302
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
303 // if !useTimeStampsFlag
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
304 AddProperty( /* 22 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
305 new MP4BitfieldProperty("startDecodingTimeStamp", 64));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
306 AddProperty( /* 23 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
307 new MP4BitfieldProperty("startCompositionTimeStamp", 64));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
308 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
309
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
310 void MP4SLConfigDescriptor::Generate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
311 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
312 // by default all tracks in an mp4 file
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
313 // use predefined SLConfig descriptor == 2
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
314 ((MP4Integer8Property*)m_pProperties[0])->SetValue(2);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
315
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
316 // which implies UseTimestampsFlag = 1
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
317 ((MP4BitfieldProperty*)m_pProperties[6])->SetValue(1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
318
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
319 // reserved = 3
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
320 ((MP4BitfieldProperty*)m_pProperties[18])->SetValue(3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
321 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
322
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
323 void MP4SLConfigDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
324 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
325 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
326
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
327 // read the first property, 'predefined'
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
328 ReadProperties(pFile, 0, 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
329
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
330 // if predefined == 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
331 if (((MP4Integer8Property*)m_pProperties[0])->GetValue() == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
332
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
333 /* read the next 18 properties */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
334 ReadProperties(pFile, 1, 18);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
335 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
336
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
337 // now mutate
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
338 Mutate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
339
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
340 // and read the remaining properties
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
341 ReadProperties(pFile, 19);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
342 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
343
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
344 void MP4SLConfigDescriptor::Mutate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
345 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
346 u_int32_t i;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
347 u_int8_t predefined =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
348 ((MP4Integer8Property*)m_pProperties[0])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
349
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
350 if (predefined) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
351 // properties 1-18 are implicit
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
352 for (i = 1; i < m_pProperties.Size(); i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
353 m_pProperties[i]->SetImplicit(true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
354 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
355
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
356 if (predefined == 1) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
357 // UseTimestampsFlag = 0
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
358 ((MP4BitfieldProperty*)m_pProperties[6])->SetValue(0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
359
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
360 // TimestampResolution = 1000
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
361 ((MP4Integer32Property*)m_pProperties[9])->SetValue(1000);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
362
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
363 // TimeStampLength = 32
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
364 ((MP4Integer8Property*)m_pProperties[11])->SetValue(32);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
365
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
366 } else if (predefined == 2) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
367 // UseTimestampsFlag = 1
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
368 ((MP4BitfieldProperty*)m_pProperties[6])->SetValue(1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
369 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
370 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
371 #if 1
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
372 for (i = 1; i <= 18; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
373 m_pProperties[i]->SetImplicit(false);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
374 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
375 ((MP4BitfieldProperty*)m_pProperties[18])->SetValue(3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
376 #endif
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
377 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
378
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
379 bool durationFlag =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
380 ((MP4BitfieldProperty*)m_pProperties[8])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
381
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
382 for (i = 19; i <= 21; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
383 m_pProperties[i]->SetImplicit(!durationFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
384 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
385
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
386 bool useTimeStampsFlag =
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
387 ((MP4BitfieldProperty*)m_pProperties[6])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
388
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
389 for (i = 22; i <= 23; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
390 m_pProperties[i]->SetImplicit(useTimeStampsFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
391
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
392 u_int8_t timeStampLength = MIN(64,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
393 ((MP4Integer8Property*)m_pProperties[11])->GetValue());
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
394
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
395 ((MP4BitfieldProperty*)m_pProperties[i])->SetNumBits(timeStampLength);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
396
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
397 // handle a nonsensical situation gracefully
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
398 if (timeStampLength == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
399 m_pProperties[i]->SetImplicit(true);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
400 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
401 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
402 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
403
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
404 MP4IPIPtrDescriptor::MP4IPIPtrDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
405 : MP4Descriptor(MP4IPIPtrDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
406 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
407 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
408 new MP4Integer16Property("IPIESId"));
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 MP4ContentIdDescriptor::MP4ContentIdDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
412 : MP4Descriptor(MP4ContentIdDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
413 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
414 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
415 new MP4BitfieldProperty("compatibility", 2));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
416 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
417 new MP4BitfieldProperty("contentTypeFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
418 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
419 new MP4BitfieldProperty("contentIdFlag", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
420 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
421 new MP4BitfieldProperty("protectedContent", 1));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
422 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
423 new MP4BitfieldProperty("reserved", 3));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
424 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
425 new MP4Integer8Property("contentType"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
426 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
427 new MP4Integer8Property("contentIdType"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
428 AddProperty( /* 7 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
429 new MP4BytesProperty("contentId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
430 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
431
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
432 void MP4ContentIdDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
433 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
434 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
435
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
436 /* read the first property, 'compatiblity' */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
437 ReadProperties(pFile, 0, 1);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
438
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
439 /* if compatiblity != 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
440 if (((MP4Integer8Property*)m_pProperties[0])->GetValue() != 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
441 /* we don't understand it */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
442 VERBOSE_READ(pFile->GetVerbosity(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
443 printf("incompatible content id descriptor\n"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
444 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
445 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
446
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
447 /* read the next four properties */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
448 ReadProperties(pFile, 1, 4);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
449
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
450 /* which allows us to reconfigure ourselves */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
451 Mutate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
452
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
453 /* read the remaining properties */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
454 ReadProperties(pFile, 5);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
455 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
456
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
457 void MP4ContentIdDescriptor::Mutate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
458 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
459 bool contentTypeFlag = ((MP4BitfieldProperty*)m_pProperties[1])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
460 m_pProperties[5]->SetImplicit(!contentTypeFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
461
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
462 bool contentIdFlag = ((MP4BitfieldProperty*)m_pProperties[2])->GetValue();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
463 m_pProperties[6]->SetImplicit(!contentIdFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
464 m_pProperties[7]->SetImplicit(!contentIdFlag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
465 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
466
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
467 MP4SupplContentIdDescriptor::MP4SupplContentIdDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
468 : MP4Descriptor(MP4SupplContentIdDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
469 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
470 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
471 new MP4BytesProperty("languageCode", 3));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
472 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
473 new MP4StringProperty("title", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
474 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
475 new MP4StringProperty("value", Counted));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
476 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
477
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
478 MP4IPMPPtrDescriptor::MP4IPMPPtrDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
479 : MP4Descriptor(MP4IPMPPtrDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
480 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
481 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
482 new MP4Integer8Property("IPMPDescriptorId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
483 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
484
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
485 MP4IPMPDescriptor::MP4IPMPDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
486 : MP4Descriptor(MP4IPMPDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
487 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
488 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
489 new MP4Integer8Property("IPMPDescriptorId"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
490 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
491 new MP4Integer16Property("IPMPSType"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
492 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
493 new MP4BytesProperty("IPMPData"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
494 /* note: if IPMPSType == 0, IPMPData is an URL */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
495 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
496
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
497 void MP4IPMPDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
498 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
499 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
500
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
501 /* byte properties need to know how long they are before reading */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
502 ((MP4BytesProperty*)m_pProperties[2])->SetValueSize(m_size - 3);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
503
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
504 ReadProperties(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
505 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
506
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
507 MP4RegistrationDescriptor::MP4RegistrationDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
508 : MP4Descriptor(MP4RegistrationDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
509 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
510 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
511 new MP4Integer32Property("formatIdentifier"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
512 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
513 new MP4BytesProperty("additionalIdentificationInfo"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
514 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
515
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
516 void MP4RegistrationDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
517 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
518 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
519
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
520 /* byte properties need to know how long they are before reading */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
521 ((MP4BytesProperty*)m_pProperties[1])->SetValueSize(m_size - 4);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
522
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
523 ReadProperties(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
524 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
525
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
526 MP4ExtProfileLevelDescriptor::MP4ExtProfileLevelDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
527 : MP4Descriptor(MP4ExtProfileLevelDescrTag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
528 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
529 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
530 new MP4Integer8Property("profileLevelIndicationIndex"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
531 AddProperty( /* 1 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
532 new MP4Integer8Property("ODProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
533 AddProperty( /* 2 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
534 new MP4Integer8Property("sceneProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
535 AddProperty( /* 3 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
536 new MP4Integer8Property("audioProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
537 AddProperty( /* 4 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
538 new MP4Integer8Property("visualProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
539 AddProperty( /* 5 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
540 new MP4Integer8Property("graphicsProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
541 AddProperty( /* 6 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
542 new MP4Integer8Property("MPEGJProfileLevelIndication"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
543 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
544
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
545 MP4ExtensionDescriptor::MP4ExtensionDescriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
546 : MP4Descriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
547 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
548 AddProperty( /* 0 */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
549 new MP4BytesProperty("data"));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
550 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
551
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
552 void MP4ExtensionDescriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
553 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
554 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
555
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
556 /* byte properties need to know how long they are before reading */
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
557 ((MP4BytesProperty*)m_pProperties[0])->SetValueSize(m_size);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
558
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
559 ReadProperties(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
560 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
561
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
562 MP4Descriptor* MP4DescriptorProperty::CreateDescriptor(u_int8_t tag)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
563 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
564 MP4Descriptor* pDescriptor = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
565
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
566 switch (tag) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
567 case MP4ESDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
568 pDescriptor = new MP4ESDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
569 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
570 case MP4DecConfigDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
571 pDescriptor = new MP4DecConfigDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
572 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
573 case MP4DecSpecificDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
574 pDescriptor = new MP4DecSpecificDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
575 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
576 case MP4SLConfigDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
577 pDescriptor = new MP4SLConfigDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
578 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
579 case MP4ContentIdDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
580 pDescriptor = new MP4ContentIdDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
581 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
582 case MP4SupplContentIdDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
583 pDescriptor = new MP4SupplContentIdDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
584 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
585 case MP4IPIPtrDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
586 pDescriptor = new MP4IPIPtrDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
587 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
588 case MP4IPMPPtrDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
589 pDescriptor = new MP4IPMPPtrDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
590 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
591 case MP4IPMPDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
592 pDescriptor = new MP4IPMPDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
593 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
594 case MP4QosDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
595 pDescriptor = new MP4QosDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
596 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
597 case MP4RegistrationDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
598 pDescriptor = new MP4RegistrationDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
599 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
600 case MP4ESIDIncDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
601 pDescriptor = new MP4ESIDIncDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
602 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
603 case MP4ESIDRefDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
604 pDescriptor = new MP4ESIDRefDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
605 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
606 case MP4IODescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
607 case MP4FileIODescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
608 pDescriptor = new MP4IODescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
609 pDescriptor->SetTag(tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
610 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
611 case MP4ODescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
612 case MP4FileODescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
613 pDescriptor = new MP4ODescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
614 pDescriptor->SetTag(tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
615 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
616 case MP4ExtProfileLevelDescrTag:
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
617 pDescriptor = new MP4ExtProfileLevelDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
618 break;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
619 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
620
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
621 if (pDescriptor == NULL) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
622 if (tag >= MP4OCIDescrTagsStart && tag <= MP4OCIDescrTagsEnd) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
623 pDescriptor = CreateOCIDescriptor(tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
624 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
625
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
626 if (tag >= MP4ExtDescrTagsStart && tag <= MP4ExtDescrTagsEnd) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
627 pDescriptor = new MP4ExtensionDescriptor();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
628 pDescriptor->SetTag(tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
629 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
630 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
631
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
632 return pDescriptor;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
633 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
634