annotate Plugins/Input/aac/libmp4v2/mp4descriptor.cpp @ 201:f2dc045d2327 trunk

[svn] libmp4v2 goes back to the future
author chainsaw
date Thu, 17 Nov 2005 14:01:18 -0800
parents 0a2ad94e8607
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 MP4Descriptor::MP4Descriptor(u_int8_t tag) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
25 m_tag = tag;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
26 m_pParentAtom = NULL;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
27 m_start = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
28 m_size = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
29 m_readMutatePoint = 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
30 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
31
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
32 MP4Descriptor::~MP4Descriptor()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
33 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
34 for (u_int32_t i = 0; i < m_pProperties.Size(); i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
35 delete m_pProperties[i];
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
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
39 void MP4Descriptor::AddProperty(MP4Property* pProperty)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
40 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
41 ASSERT(pProperty);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
42 m_pProperties.Add(pProperty);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
43 pProperty->SetParentAtom(m_pParentAtom);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
44 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
45
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
46 bool MP4Descriptor::FindContainedProperty(const char *name,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
47 MP4Property** ppProperty, u_int32_t* pIndex)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
48 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
49 u_int32_t numProperties = m_pProperties.Size();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
50
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
51 for (u_int32_t i = 0; i < numProperties; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
52 if (m_pProperties[i]->FindProperty(name, ppProperty, pIndex)) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
53 return true;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
54 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
55 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
56 return false;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
57 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
58
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
59 void MP4Descriptor::Generate()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
60 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
61 // generate properties
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
62 for (u_int32_t i = 0; i < m_pProperties.Size(); i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
63 m_pProperties[i]->Generate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
64 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
65 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
66
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
67 void MP4Descriptor::Read(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
68 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
69 ReadHeader(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
70
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
71 ReadProperties(pFile, 0, m_readMutatePoint);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
72
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
73 Mutate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
74
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
75 ReadProperties(pFile, m_readMutatePoint);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
76
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
77 // flush any leftover read bits
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
78 pFile->FlushReadBits();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
79 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
80
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
81 void MP4Descriptor::ReadHeader(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
82 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
83 VERBOSE_READ(pFile->GetVerbosity(),
201
f2dc045d2327 [svn] libmp4v2 goes back to the future
chainsaw
parents: 199
diff changeset
84 printf("ReadDescriptor: pos = 0x%llx\n",
61
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
85 pFile->GetPosition()));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
86
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
87 // read tag and length
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
88 u_int8_t tag = pFile->ReadUInt8();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
89 if (m_tag) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
90 ASSERT(tag == m_tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
91 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
92 m_tag = tag;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
93 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
94 m_size = pFile->ReadMpegLength();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
95 m_start = pFile->GetPosition();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
96
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
97 VERBOSE_READ(pFile->GetVerbosity(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
98 printf("ReadDescriptor: tag 0x%02x data size %u (0x%x)\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
99 m_tag, m_size, m_size));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
100 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
101
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
102 void MP4Descriptor::ReadProperties(MP4File* pFile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
103 u_int32_t propStartIndex, u_int32_t propCount)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
104 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
105 u_int32_t numProperties = MIN(propCount,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
106 m_pProperties.Size() - propStartIndex);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
107
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
108 for (u_int32_t i = propStartIndex;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
109 i < propStartIndex + numProperties; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
110
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
111 MP4Property* pProperty = m_pProperties[i];
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
112
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
113 int32_t remaining = m_size - (pFile->GetPosition() - m_start);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
114
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
115 if (pProperty->GetType() == DescriptorProperty) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
116 if (remaining > 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
117 // place a limit on how far this sub-descriptor looks
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
118 ((MP4DescriptorProperty*)pProperty)->SetSizeLimit(remaining);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
119 pProperty->Read(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
120 } // else do nothing, empty descriptor
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
121 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
122 // non-descriptor property
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
123 if (remaining >= 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
124 pProperty->Read(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
125
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
126 if (pProperty->GetType() == TableProperty) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
127 VERBOSE_READ_TABLE(pFile->GetVerbosity(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
128 printf("Read: "); pProperty->Dump(stdout, 0, true));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
129 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
130 VERBOSE_READ(pFile->GetVerbosity(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
131 printf("Read: "); pProperty->Dump(stdout, 0, true));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
132 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
133 } else {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
134 VERBOSE_ERROR(pFile->GetVerbosity(),
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
135 printf("Overran descriptor, tag %u data size %u property %u\n",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
136 m_tag, m_size, i));
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
137 throw new MP4Error("overran descriptor",
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
138 "MP4Descriptor::ReadProperties");
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
139 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
140 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
141 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
142 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
143
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
144 void MP4Descriptor::Write(MP4File* pFile)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
145 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
146 // call virtual function to adapt properties before writing
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
147 Mutate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
148
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
149 u_int32_t numProperties = m_pProperties.Size();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
150
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
151 if (numProperties == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
152 WARNING(numProperties == 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
153 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
154 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
155
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
156 // write tag and length placeholder
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
157 pFile->WriteUInt8(m_tag);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
158 u_int64_t lengthPos = pFile->GetPosition();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
159 pFile->WriteMpegLength(0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
160 u_int64_t startPos = pFile->GetPosition();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
161
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
162 for (u_int32_t i = 0; i < numProperties; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
163 m_pProperties[i]->Write(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
164 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
165
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
166 // align with byte boundary (rarely necessary)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
167 pFile->PadWriteBits();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
168
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
169 // go back and write correct length
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
170 u_int64_t endPos = pFile->GetPosition();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
171 pFile->SetPosition(lengthPos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
172 pFile->WriteMpegLength(endPos - startPos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
173 pFile->SetPosition(endPos);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
174 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
175
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
176 void MP4Descriptor::WriteToMemory(MP4File* pFile,
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
177 u_int8_t** ppBytes, u_int64_t* pNumBytes)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
178 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
179 // use memory buffer to save descriptor in memory
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
180 // instead of going directly to disk
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
181
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
182 pFile->EnableMemoryBuffer();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
183
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
184 Write(pFile);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
185
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
186 pFile->DisableMemoryBuffer(ppBytes, pNumBytes);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
187 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
188
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
189 void MP4Descriptor::Dump(FILE* pFile, u_int8_t indent, bool dumpImplicits)
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
190 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
191 // call virtual function to adapt properties before dumping
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
192 Mutate();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
193
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
194 u_int32_t numProperties = m_pProperties.Size();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
195
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
196 if (numProperties == 0) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
197 WARNING(numProperties == 0);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
198 return;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
199 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
200 for (u_int32_t i = 0; i < numProperties; i++) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
201 m_pProperties[i]->Dump(pFile, indent, dumpImplicits);
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
202 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
203 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
204
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
205 u_int8_t MP4Descriptor::GetDepth()
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
206 {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
207 if (m_pParentAtom) {
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
208 return m_pParentAtom->GetDepth();
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
209 }
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
210 return 0;
fa848bd484d8 [svn] Move plugins to Plugins/
nenolod
parents:
diff changeset
211 }