]> git.sesse.net Git - vlc/blob - modules/demux/asf/libasf_guid.h
ASF: help stupid compiler
[vlc] / modules / demux / asf / libasf_guid.h
1 /*****************************************************************************
2  * libasf_guid.h :
3  *****************************************************************************
4  * Copyright © 2001-2004, 2011 the VideoLAN team
5  *
6  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22
23 #ifndef LIBASG_GUID_H
24 #define LIBASG_GUID_H
25
26 #include <vlc_codecs.h>
27
28 /*****************************************************************************
29  * Structure needed for decoder
30  *****************************************************************************/
31 #define GUID_FMT "0x%x-0x%x-0x%x-0x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x"
32 #define GUID_PRINT( guid )  \
33     (unsigned)(guid).Data1,              \
34     (guid).Data2,              \
35     (guid).Data3,              \
36     (guid).Data4[0],(guid).Data4[1],(guid).Data4[2],(guid).Data4[3],    \
37     (guid).Data4[4],(guid).Data4[5],(guid).Data4[6],(guid).Data4[7]
38
39 enum
40 {
41     ASF_OBJECT_NULL = 0,
42     ASF_OBJECT_ROOT,
43     ASF_OBJECT_HEADER,
44     ASF_OBJECT_DATA,
45     ASF_OBJECT_INDEX,
46     ASF_OBJECT_FILE_PROPERTIES,
47     ASF_OBJECT_STREAM_PROPERTIES,
48     ASF_OBJECT_HEADER_EXTENSION,
49     ASF_OBJECT_CODEC_LIST,
50     ASF_OBJECT_MARKER,
51     ASF_OBJECT_CONTENT_DESCRIPTION,
52     ASF_OBJECT_METADATA,
53     ASF_OBJECT_PADDING,
54     ASF_OBJECT_OTHER,
55 };
56
57 static const guid_t asf_object_null_guid =
58 {
59     0x00000000,
60     0x0000,
61     0x0000,
62     { 0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00 }
63 };
64
65 /* Top-Level object */
66 static const guid_t asf_object_header_guid =
67 {0x75B22630, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};
68
69 static const guid_t asf_object_data_guid =
70 {0x75B22636, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};
71
72 static const guid_t asf_object_simple_index_guid =
73 {0x33000890, 0xE5B1, 0x11CF, {0x89, 0xF4, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xCB}};
74
75 static const guid_t asf_object_index_guid =
76 {0xD6E229D3, 0x35DA, 0x11D1, {0x90, 0x34, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xBE}};
77
78 /* Header object */
79 static const guid_t asf_object_file_properties_guid =
80 {0x8cabdca1, 0xa947, 0x11cf, {0x8e, 0xe4, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};
81
82 static const guid_t asf_object_stream_properties_guid =
83 {0xB7DC0791, 0xA9B7, 0x11CF, {0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};
84
85 static const guid_t asf_object_header_extension_guid =
86 {0x5FBF03B5, 0xA92E, 0x11CF, {0x8E, 0xE3, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};
87
88 static const guid_t asf_object_codec_list_guid =
89 {0x86D15240, 0x311D, 0x11D0, {0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};
90
91 static const guid_t asf_object_marker_guid =
92 {0xF487CD01, 0xA951, 0x11CF, {0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65}};
93
94 static const guid_t asf_object_content_description_guid =
95 {0x75B22633, 0x668E, 0x11CF, {0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c}};
96
97 static const guid_t asf_object_extended_content_description =
98 {0xD2D0A440, 0xE307, 0x11D2, {0x97, 0xF0, 0x00, 0xA0, 0xC9, 0x5E, 0xA8, 0x50}};
99
100 /* Header Extension object */
101 static const guid_t asf_object_advanced_mutual_exclusion =
102 {0xA08649CF, 0x4775, 0x4670, {0x8A, 0x16, 0x6E, 0x35, 0x35, 0x75, 0x66, 0xCD}};
103
104 static const guid_t asf_object_stream_prioritization =
105 {0xD4FED15B, 0x88D3, 0x454F, {0x81, 0xF0, 0xED, 0x5C, 0x45, 0x99, 0x9E, 0x24}};
106
107 static const guid_t asf_object_metadata_guid =
108 {0xC5F8CBEA, 0x5BAF, 0x4877, {0x84, 0x67, 0xAA, 0x8C, 0x44, 0xFA, 0x4C, 0xCA}};
109
110 /* Stream Properties object */
111 static const guid_t asf_object_stream_type_audio =
112 {0xF8699E40, 0x5B4D, 0x11CF, {0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B}};
113
114 static const guid_t asf_object_stream_type_video =
115 {0xbc19efc0, 0x5B4D, 0x11CF, {0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B}};
116
117 static const guid_t asf_object_stream_type_command =
118 {0x59DACFC0, 0x59E6, 0x11D0, {0xA3, 0xAC, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};
119
120 /* TODO */
121 // top-level
122 static const guid_t asf_object_media_index_guid =
123 {0xFEB103F8, 0x12AD, 0x4C64, {0x84, 0x0F, 0x2A, 0x1D, 0x2F, 0x7A, 0xD4, 0x8C}};
124
125 static const guid_t asf_object_timecode_index_guid =
126 {0x3CB73FD0, 0x0C4A, 0x4803, {0x95, 0x3D, 0xED, 0xF7, 0xB6, 0x22, 0x8F, 0x0C}};
127
128 // header
129 static const guid_t asf_object_script_command_guid =
130 {0x1EFB1A30, 0x0B62, 0x11D0, {0xA3, 0x9B, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};
131
132 static const guid_t asf_object_bitrate_mutual_exclusion_guid =
133 {0xD6E229DC, 0x35DA, 0x11D1, {0x90, 0x34, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xBE}};
134
135 static const guid_t asf_object_error_correction_guid =
136 {0x75B22635, 0x668E, 0x11CF, {0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}};
137
138 static const guid_t asf_object_content_branding_guid =
139 {0x2211B3FA, 0xBD23, 0x11D2, {0xB4, 0xB7, 0x00, 0xA0, 0xC9, 0x55, 0xFC, 0x6E}};
140
141 static const guid_t asf_object_stream_bitrate_properties =
142 {0x7BF875CE, 0x468D, 0x11D1, {0x8D, 0x82, 0x00, 0x60, 0x97, 0xC9, 0xA2, 0xB2}};
143
144 static const guid_t asf_object_content_encryption_guid =
145 {0x2211B3FB, 0xBD23, 0x11D2, {0xB4, 0xB7, 0x00, 0xA0, 0xC9, 0x55, 0xFC, 0x6E}};
146
147 static const guid_t asf_object_extended_content_encryption_guid =
148 {0x298AE614, 0x2622, 0x4C17, {0xB9, 0x35, 0xDA, 0xE0, 0x7E, 0xE9, 0x28, 0x9C}};
149
150 static const guid_t asf_object_digital_signature_guid =
151 {0x2211B3FC, 0xBD23, 0x11D2, {0xB4, 0xB7, 0x00, 0xA0, 0xC9, 0x55, 0xFC, 0x6E}};
152
153 static const guid_t asf_object_padding =
154 {0x1806D474, 0xCADF, 0x4509, {0xA4, 0xBA, 0x9A, 0xAB, 0xCB, 0x96, 0xAA, 0xE8}};
155
156 // header extension
157 static const guid_t asf_object_extended_stream_properties_guid =
158 {0x14E6A5CB, 0xC672, 0x4332, {0x83, 0x99, 0xA9, 0x69, 0x52, 0x06, 0x5B, 0x5A}};
159
160 static const guid_t asf_object_group_mutual_exclusion_guid =
161 {0xD1465A40, 0x5A79, 0x4338, {0xB7, 0x1B, 0xE3, 0x6B, 0x8F, 0xD6, 0xC2, 0x49}};
162
163 static const guid_t asf_object_bandwidth_sharing_guid =
164 {0xA69609E6, 0x517B, 0x11D2, {0xB6, 0xAF, 0x00, 0xC0, 0x4F, 0xD9, 0x08, 0xE9}};
165
166 static const guid_t asf_object_language_list =
167 {0x7C4346A9, 0xEFE0, 0x4BFC, {0xB2, 0x29, 0x39, 0x3E, 0xDE, 0x41, 0x5C, 0x85}};
168
169 static const guid_t asf_object_metadata_library_guid =
170 {0x44231C94, 0x9498, 0x49D1, {0xA1, 0x41, 0x1D, 0x13, 0x4E, 0x45, 0x70, 0x54}};
171
172 static const guid_t asf_object_index_parameters_guid =
173 {0xD6E229DF, 0x35DA, 0x11D1, {0x90, 0x34, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xBE}};
174
175 static const guid_t asf_object_media_object_index_parameters_guid =
176 {0x6B203BAD, 0x3F11, 0x48E4, {0xAC, 0xA8, 0xD7, 0x61, 0x3D, 0xE2, 0xCF, 0xA7}};
177
178 static const guid_t asf_object_timecode_index_parameters_guid =
179 {0xF55E496D, 0x9797, 0x4B5D, {0x8C, 0x8B, 0x60, 0x4D, 0xFE, 0x9B, 0xFB, 0x24}};
180
181 static const guid_t asf_object_compatibility_guid =
182 {0x26F18B5D, 0x4584, 0x47EC, {0x9F, 0x5F, 0x0E, 0x65, 0x1F, 0x04, 0x52, 0xC9}};
183
184 static const guid_t asf_object_advanced_content_encryption_guid =
185 {0x43058533, 0x6981, 0x49E6, {0x9B, 0x74, 0xAD, 0x12, 0xCB, 0x86, 0xD5, 0x8C}};
186
187 //
188 static const guid_t asf_object_extended_stream_header =
189 {0x3AFB65E2, 0x47EF, 0x40F2, {0xAC, 0x2C, 0x70, 0xA9, 0x0D, 0x71, 0xD3, 0x43}};
190
191 static const guid_t asf_object_extended_stream_type_audio =
192 {0x31178C9D, 0x03E1, 0x4528, {0xB5, 0x82, 0x3D, 0xF9, 0xDB, 0x22, 0xF5, 0x03}};
193
194 static const guid_t asf_guid_reserved_1 =
195 {0xABD3D211, 0xA9BA, 0x11cf, {0x8E, 0xE6, 0x00, 0xC0, 0x0C ,0x20, 0x53, 0x65}};
196
197 static const guid_t asf_guid_reserved_2 = //object_codec_list_reserved_guid =
198 {0x86D15241, 0x311D, 0x11D0, {0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6}};
199
200 // Stream Properties Object Error Correction
201 static const guid_t asf_no_error_correction_guid =
202 {0x20FB5700, 0x5B55, 0x11CF, {0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B}};
203
204 static const guid_t asf_guid_audio_conceal_spread =
205 {0xBFC3CD50, 0x618F, 0x11CF, {0x8B, 0xB2, 0x00, 0xAA, 0x00, 0xB4, 0xE2, 0x20}};
206
207
208 #define ASF_OBJECT_COMMON          \
209     int          i_type;           \
210     guid_t       i_object_id;      \
211     uint64_t     i_object_size;    \
212     uint64_t     i_object_pos;     \
213     union asf_object_u *p_father;  \
214     union asf_object_u *p_first;   \
215     union asf_object_u *p_last;    \
216     union asf_object_u *p_next;
217
218 /****************************************************************************
219  * GUID functions
220  ****************************************************************************/
221 static inline void ASF_GetGUID( guid_t *p_guid, const uint8_t *p_data )
222 {
223     p_guid->Data1 = GetDWLE( p_data );
224     p_guid->Data2 = GetWLE( p_data + 4);
225     p_guid->Data3 = GetWLE( p_data + 6);
226     memcpy( p_guid->Data4, p_data + 8, 8 );
227 }
228
229 #endif