1 /*
2  * The contents of this file are subject to the Mozilla Public
3  * License Version 1.1 (the "License"); you may not use this file
4  * except in compliance with the License. You may obtain a copy of
5  * the License at http://www.mozilla.org/MPL/
6  *
7  * Software distributed under the License is distributed on an "AS
8  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9  * implied. See the License for the specific language governing
10  * rights and limitations under the License.
11  *
12  * The Original Code is MPEG4IP.
13  *
14  * The Initial Developer of the Original Code is Cisco Systems Inc.
15  * Portions created by Cisco Systems Inc. are
16  * Copyright (C) Cisco Systems Inc. 2001.  All Rights Reserved.
17  *
18  * Contributor(s):
19  *      Dave Mackie     dmackie@cisco.com
20  */
21 
22 #ifndef MP4V2_IMPL_OCIDESCRIPTORS_H
23 #define MP4V2_IMPL_OCIDESCRIPTORS_H
24 
25 namespace mp4v2 {
26 namespace impl {
27 
28 ///////////////////////////////////////////////////////////////////////////////
29 
30 const uint8_t MP4OCIDescrTagsStart          = 0x40;
31 const uint8_t MP4ContentClassDescrTag       = 0x40;
32 const uint8_t MP4KeywordDescrTag            = 0x41;
33 const uint8_t MP4RatingDescrTag             = 0x42;
34 const uint8_t MP4LanguageDescrTag           = 0x43;
35 const uint8_t MP4ShortTextDescrTag          = 0x44;
36 const uint8_t MP4ExpandedTextDescrTag       = 0x45;
37 const uint8_t MP4ContentCreatorDescrTag = 0x46;
38 const uint8_t MP4ContentCreationDescrTag    = 0x47;
39 const uint8_t MP4OCICreatorDescrTag     = 0x48;
40 const uint8_t MP4OCICreationDescrTag        = 0x49;
41 const uint8_t MP4SmpteCameraDescrTag        = 0x4A;
42 const uint8_t MP4OCIDescrTagsEnd            = 0x5F;
43 
44 class MP4ContentClassDescriptor : public MP4Descriptor {
45 public:
46     MP4ContentClassDescriptor(MP4Atom& parentAtom);
47     void Read(MP4File& file);
48 private:
49     MP4ContentClassDescriptor();
50     MP4ContentClassDescriptor ( const MP4ContentClassDescriptor &src );
51     MP4ContentClassDescriptor &operator= ( const MP4ContentClassDescriptor &src );
52 };
53 
54 class MP4KeywordDescriptor : public MP4Descriptor {
55 public:
56     MP4KeywordDescriptor(MP4Atom& parentAtom);
57 protected:
58     void Mutate();
59 private:
60     MP4KeywordDescriptor();
61     MP4KeywordDescriptor ( const MP4KeywordDescriptor &src );
62     MP4KeywordDescriptor &operator= ( const MP4KeywordDescriptor &src );
63 };
64 
65 class MP4RatingDescriptor : public MP4Descriptor {
66 public:
67     MP4RatingDescriptor(MP4Atom& parentAtom);
68     void Read(MP4File& file);
69 private:
70     MP4RatingDescriptor();
71     MP4RatingDescriptor ( const MP4RatingDescriptor &src );
72     MP4RatingDescriptor &operator= ( const MP4RatingDescriptor &src );
73 };
74 
75 class MP4LanguageDescriptor : public MP4Descriptor {
76 public:
77     MP4LanguageDescriptor(MP4Atom& parentAtom);
78 private:
79     MP4LanguageDescriptor();
80     MP4LanguageDescriptor ( const MP4LanguageDescriptor &src );
81     MP4LanguageDescriptor &operator= ( const MP4LanguageDescriptor &src );
82 };
83 
84 class MP4ShortTextDescriptor : public MP4Descriptor {
85 public:
86     MP4ShortTextDescriptor(MP4Atom& parentAtom);
87 protected:
88     void Mutate();
89 private:
90     MP4ShortTextDescriptor();
91     MP4ShortTextDescriptor ( const MP4ShortTextDescriptor &src );
92     MP4ShortTextDescriptor &operator= ( const MP4ShortTextDescriptor &src );
93 };
94 
95 class MP4ExpandedTextDescriptor : public MP4Descriptor {
96 public:
97     MP4ExpandedTextDescriptor(MP4Atom& parentAtom);
98 protected:
99     void Mutate();
100 private:
101     MP4ExpandedTextDescriptor();
102     MP4ExpandedTextDescriptor ( const MP4ExpandedTextDescriptor &src );
103     MP4ExpandedTextDescriptor &operator= ( const MP4ExpandedTextDescriptor &src );
104 };
105 
106 class MP4CreatorDescriptor : public MP4Descriptor {
107 public:
108     MP4CreatorDescriptor(MP4Atom& parentAtom, uint8_t tag);
109 private:
110     MP4CreatorDescriptor();
111     MP4CreatorDescriptor ( const MP4CreatorDescriptor &src );
112     MP4CreatorDescriptor &operator= ( const MP4CreatorDescriptor &src );
113 };
114 
115 class MP4CreationDescriptor : public MP4Descriptor {
116 public:
117     MP4CreationDescriptor(MP4Atom& parentAtom, uint8_t tag);
118 private:
119     MP4CreationDescriptor();
120     MP4CreationDescriptor ( const MP4CreationDescriptor &src );
121     MP4CreationDescriptor &operator= ( const MP4CreationDescriptor &src );
122 };
123 
124 class MP4SmpteCameraDescriptor : public MP4Descriptor {
125 public:
126     MP4SmpteCameraDescriptor(MP4Atom& parentAtom);
127 private:
128     MP4SmpteCameraDescriptor();
129     MP4SmpteCameraDescriptor ( const MP4SmpteCameraDescriptor &src );
130     MP4SmpteCameraDescriptor &operator= ( const MP4SmpteCameraDescriptor &src );
131 };
132 
133 class MP4UnknownOCIDescriptor : public MP4Descriptor {
134 public:
135     MP4UnknownOCIDescriptor(MP4Atom& parentAtom);
136     void Read(MP4File& file);
137 private:
138     MP4UnknownOCIDescriptor();
139     MP4UnknownOCIDescriptor ( const MP4UnknownOCIDescriptor &src );
140     MP4UnknownOCIDescriptor &operator= ( const MP4UnknownOCIDescriptor &src );
141 };
142 
143 
144 extern MP4Descriptor *CreateOCIDescriptor(MP4Atom& parentAtom, uint8_t tag);
145 
146 ///////////////////////////////////////////////////////////////////////////////
147 
148 }
149 } // namespace mp4v2::impl
150 
151 #endif // MP4V2_IMPL_OCIDESCRIPTORS_H
152