annotate Input/aac/libmp4v2/mp4descriptor.h @ 38:4e0397865a31 trunk

[svn] Regenerate a bunch of stuff :)
author nenolod
date Wed, 26 Oct 2005 10:57:27 -0700
parents 6efb9e514224
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
1 /*
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
2 * The contents of this file are subject to the Mozilla Public
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
3 * License Version 1.1 (the "License"); you may not use this file
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
4 * except in compliance with the License. You may obtain a copy of
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
5 * the License at http://www.mozilla.org/MPL/
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
6 *
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
7 * Software distributed under the License is distributed on an "AS
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
9 * implied. See the License for the specific language governing
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
10 * rights and limitations under the License.
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
11 *
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
12 * The Original Code is MPEG4IP.
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
13 *
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
14 * The Initial Developer of the Original Code is Cisco Systems Inc.
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
15 * Portions created by Cisco Systems Inc. are
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
16 * Copyright (C) Cisco Systems Inc. 2001. All Rights Reserved.
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
17 *
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
18 * Contributor(s):
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
19 * Dave Mackie dmackie@cisco.com
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
20 */
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
21
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
22 #ifndef __MP4_DESCRIPTOR_INCLUDED__
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
23 #define __MP4_DESCRIPTOR_INCLUDED__
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
24
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
25 class MP4Descriptor {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
26 public:
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
27 MP4Descriptor(u_int8_t tag = 0);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
28
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
29 virtual ~MP4Descriptor();
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
30
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
31 u_int8_t GetTag() {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
32 return m_tag;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
33 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
34 void SetTag(u_int8_t tag) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
35 m_tag = tag;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
36 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
37
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
38 void SetParentAtom(MP4Atom* pParentAtom) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
39 m_pParentAtom = pParentAtom;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
40 for (u_int32_t i = 0; i < m_pProperties.Size(); i++) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
41 m_pProperties[i]->SetParentAtom(pParentAtom);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
42 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
43 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
44
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
45 void AddProperty(MP4Property* pProperty);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
46
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
47 virtual void Generate();
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
48 virtual void Read(MP4File* pFile);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
49 virtual void Write(MP4File* pFile);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
50 virtual void Dump(FILE* pFile, u_int8_t indent, bool dumpImplicits);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
51
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
52 MP4Property* GetProperty(u_int32_t index) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
53 return m_pProperties[index];
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
54 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
55
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
56 // use with extreme caution
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
57 void SetProperty(u_int32_t index, MP4Property* pProperty) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
58 m_pProperties[index] = pProperty;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
59 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
60
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
61 bool FindProperty(const char* name,
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
62 MP4Property** ppProperty, u_int32_t* pIndex = NULL) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
63 return FindContainedProperty(name, ppProperty, pIndex);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
64 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
65
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
66 void WriteToMemory(MP4File* pFile,
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
67 u_int8_t** ppBytes, u_int64_t* pNumBytes);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
68
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
69 protected:
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
70 void SetReadMutate(u_int32_t propIndex) {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
71 m_readMutatePoint = propIndex;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
72 }
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
73
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
74 void ReadHeader(MP4File* pFile);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
75 void ReadProperties(MP4File* pFile,
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
76 u_int32_t startIndex = 0, u_int32_t count = 0xFFFFFFFF);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
77
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
78 virtual void Mutate() {
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
79 // default is a no-op
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
80 };
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
81
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
82 bool FindContainedProperty(const char* name,
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
83 MP4Property** ppProperty, u_int32_t* pIndex);
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
84
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
85 u_int8_t GetDepth();
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
86
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
87 protected:
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
88 MP4Atom* m_pParentAtom;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
89 u_int8_t m_tag;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
90 u_int64_t m_start;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
91 u_int32_t m_size;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
92 MP4PropertyArray m_pProperties;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
93 u_int32_t m_readMutatePoint;
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
94 };
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
95
6efb9e514224 [svn] Import AAC stuff.
nenolod
parents:
diff changeset
96 #endif /* __MP4_DESCRIPTOR_INCLUDED__ */