Mercurial > libavformat.hg
annotate asf.h @ 1206:e60bf67d9bf8 libavformat
The reader ignores the size of the ASF data object and keeps on
reading even beyond it.
Therefore if the ASF file includes an index object at its end, the
reader will treat the index like data, but of course will fail since
it thinks that the data is corrupted.
When reading an asf file with an index object, ffmpeg will
complain at the end of the file that it read an invalid header.
Patch by Kohn Emil Dan, < emild A cs P technion P ac P il >
Original thead:
Date: Apr 18, 2006 4:11 PM
Subject: [Ffmpeg-devel] Two ASF related bugs and fixes
author | gpoirier |
---|---|
date | Sat, 29 Jul 2006 16:07:19 +0000 |
parents | 5d3dc3a6bbe7 |
children | 5b9729f5145c |
rev | line source |
---|---|
0 | 1 /* |
2 * Copyright (c) 2000, 2001 Fabrice Bellard. | |
3 * | |
4 * This library is free software; you can redistribute it and/or | |
5 * modify it under the terms of the GNU Lesser General Public | |
6 * License as published by the Free Software Foundation; either | |
7 * version 2 of the License, or (at your option) any later version. | |
8 * | |
9 * This library is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
12 * Lesser General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU Lesser General Public | |
15 * License along with this library; if not, write to the Free Software | |
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
887
diff
changeset
|
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 17 */ |
18 #define PACKET_SIZE 3200 | |
19 | |
20 typedef struct { | |
21 int num; | |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
22 unsigned char seq; |
0 | 23 /* use for reading */ |
24 AVPacket pkt; | |
25 int frag_offset; | |
26 int timestamp; | |
65 | 27 int64_t duration; |
0 | 28 |
887 | 29 int ds_span; /* descrambling */ |
0 | 30 int ds_packet_size; |
31 int ds_chunk_size; | |
32 int ds_data_size; | |
33 int ds_silence_data; | |
885 | 34 |
1206
e60bf67d9bf8
The reader ignores the size of the ASF data object and keeps on
gpoirier
parents:
904
diff
changeset
|
35 int64_t packet_pos; |
0 | 36 |
37 } ASFStream; | |
38 | |
39 typedef struct { | |
65 | 40 uint32_t v1; |
41 uint16_t v2; | |
42 uint16_t v3; | |
43 uint8_t v4[8]; | |
0 | 44 } GUID; |
45 | |
188
6c9d6422a2f6
update duration and start_time - add av_new_stream() usage
bellard
parents:
136
diff
changeset
|
46 typedef struct { |
887 | 47 GUID guid; // generated by client computer |
48 uint64_t file_size; // in bytes | |
0 | 49 // invalid if broadcasting |
887 | 50 uint64_t create_time; // time of creation, in 100-nanosecond units since 1.1.1601 |
0 | 51 // invalid if broadcasting |
887 | 52 uint64_t packets_count; // how many packets are there in the file |
0 | 53 // invalid if broadcasting |
887 | 54 uint64_t play_time; // play time, in 100-nanosecond units |
0 | 55 // invalid if broadcasting |
887 | 56 uint64_t send_time; // time to send file, in 100-nanosecond units |
0 | 57 // invalid if broadcasting (could be ignored) |
887 | 58 uint32_t preroll; // timestamp of the first packet, in milliseconds |
59 // if nonzero - substract from time | |
0 | 60 uint32_t ignore; // preroll is 64bit - but let's just ignore it |
887 | 61 uint32_t flags; // 0x01 - broadcast |
62 // 0x02 - seekable | |
0 | 63 // rest is reserved should be 0 |
887 | 64 uint32_t min_pktsize; // size of a data packet |
0 | 65 // invalid if broadcasting |
887 | 66 uint32_t max_pktsize; // shall be the same as for min_pktsize |
0 | 67 // invalid if broadcasting |
887 | 68 uint32_t max_bitrate; // bandwith of stream in bps |
69 // should be the sum of bitrates of the | |
0 | 70 // individual media streams |
71 } ASFMainHeader; | |
72 | |
73 | |
74 typedef struct { | |
716
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
75 uint32_t packet_number; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
76 uint16_t packet_count; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
77 } ASFIndex; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
78 |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
79 |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
80 typedef struct { |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
81 uint32_t seqno; |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
82 unsigned int packet_size; |
0 | 83 int is_streamed; |
84 int asfid2avid[128]; /* conversion table from asf ID 2 AVStream ID */ | |
887 | 85 ASFStream streams[128]; /* it's max number and it's not that big */ |
0 | 86 /* non streamed additonnal info */ |
65 | 87 int64_t nb_packets; |
88 int64_t duration; /* in 100ns units */ | |
0 | 89 /* packet filling */ |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
90 unsigned char multi_payloads_present; |
0 | 91 int packet_size_left; |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
92 int prev_packet_sent_time; |
0 | 93 int packet_timestamp_start; |
94 int packet_timestamp_end; | |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
95 unsigned int packet_nb_payloads; |
0 | 96 int packet_nb_frames; |
65 | 97 uint8_t packet_buf[PACKET_SIZE]; |
0 | 98 ByteIOContext pb; |
99 /* only for reading */ | |
100 uint64_t data_offset; /* begining of the first data packet */ | |
1206
e60bf67d9bf8
The reader ignores the size of the ASF data object and keeps on
gpoirier
parents:
904
diff
changeset
|
101 uint64_t data_object_offset; /* data object offset (excl. GUID & size)*/ |
e60bf67d9bf8
The reader ignores the size of the ASF data object and keeps on
gpoirier
parents:
904
diff
changeset
|
102 uint64_t data_object_size; /* size of the data object */ |
0 | 103 |
104 ASFMainHeader hdr; | |
105 | |
106 int packet_flags; | |
107 int packet_property; | |
108 int packet_timestamp; | |
109 int packet_segsizetype; | |
110 int packet_segments; | |
111 int packet_seq; | |
112 int packet_replic_size; | |
113 int packet_key_frame; | |
114 int packet_padsize; | |
115 int packet_frag_offset; | |
116 int packet_frag_size; | |
117 int packet_frag_timestamp; | |
118 int packet_multi_size; | |
119 int packet_obj_size; | |
120 int packet_time_delta; | |
121 int packet_time_start; | |
1206
e60bf67d9bf8
The reader ignores the size of the ASF data object and keeps on
gpoirier
parents:
904
diff
changeset
|
122 int64_t packet_pos; |
0 | 123 |
124 int stream_index; | |
716
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
125 |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
126 |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
127 int64_t last_indexed_pts; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
128 ASFIndex* index_ptr; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
129 uint32_t nb_index_count; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
130 uint32_t nb_index_memory_alloc; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
131 uint16_t maximum_packet; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
132 |
0 | 133 ASFStream* asf_st; /* currently decoded stream */ |
134 } ASFContext; | |
135 | |
136 static const GUID asf_header = { | |
137 0x75B22630, 0x668E, 0x11CF, { 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C }, | |
138 }; | |
139 | |
140 static const GUID file_header = { | |
141 0x8CABDCA1, 0xA947, 0x11CF, { 0x8E, 0xE4, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 }, | |
142 }; | |
143 | |
144 static const GUID stream_header = { | |
145 0xB7DC0791, 0xA9B7, 0x11CF, { 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65 }, | |
146 }; | |
147 | |
904
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
148 static const GUID ext_stream_header = { |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
149 0x14E6A5CB, 0xC672, 0x4332, { 0x83, 0x99, 0xA9, 0x69, 0x52, 0x06, 0x5B, 0x5A }, |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
150 }; |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
151 |
0 | 152 static const GUID audio_stream = { |
153 0xF8699E40, 0x5B4D, 0x11CF, { 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B }, | |
154 }; | |
155 | |
156 static const GUID audio_conceal_none = { | |
157 // 0x49f1a440, 0x4ece, 0x11d0, { 0xa3, 0xac, 0x00, 0xa0, 0xc9, 0x03, 0x48, 0xf6 }, | |
158 // New value lifted from avifile | |
159 0x20fb5700, 0x5b55, 0x11cf, { 0xa8, 0xfd, 0x00, 0x80, 0x5f, 0x5c, 0x44, 0x2b }, | |
160 }; | |
161 | |
716
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
162 static const GUID audio_conceal_spread = { |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
163 0xBFC3CD50, 0x618F, 0x11CF, { 0x8B, 0xB2, 0x00, 0xAA, 0x00, 0xB4, 0xE2, 0x20 }, |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
164 }; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
165 |
0 | 166 static const GUID video_stream = { |
167 0xBC19EFC0, 0x5B4D, 0x11CF, { 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B }, | |
168 }; | |
169 | |
170 static const GUID video_conceal_none = { | |
171 0x20FB5700, 0x5B55, 0x11CF, { 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B }, | |
172 }; | |
173 | |
831
8e1b338096a0
changes to ignore command media embedded in MS WMV files patch by ("Brown, Mike": mikeb, vibephone com)
michael
parents:
716
diff
changeset
|
174 static const GUID command_stream = { |
8e1b338096a0
changes to ignore command media embedded in MS WMV files patch by ("Brown, Mike": mikeb, vibephone com)
michael
parents:
716
diff
changeset
|
175 0x59DACFC0, 0x59E6, 0x11D0, { 0xA3, 0xAC, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6 }, |
8e1b338096a0
changes to ignore command media embedded in MS WMV files patch by ("Brown, Mike": mikeb, vibephone com)
michael
parents:
716
diff
changeset
|
176 }; |
0 | 177 |
178 static const GUID comment_header = { | |
179 0x75b22633, 0x668e, 0x11cf, { 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c }, | |
180 }; | |
181 | |
182 static const GUID codec_comment_header = { | |
183 0x86D15240, 0x311D, 0x11D0, { 0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x03, 0x48, 0xF6 }, | |
184 }; | |
185 static const GUID codec_comment1_header = { | |
186 0x86d15241, 0x311d, 0x11d0, { 0xa3, 0xa4, 0x00, 0xa0, 0xc9, 0x03, 0x48, 0xf6 }, | |
187 }; | |
188 | |
189 static const GUID data_header = { | |
190 0x75b22636, 0x668e, 0x11cf, { 0xa6, 0xd9, 0x00, 0xaa, 0x00, 0x62, 0xce, 0x6c }, | |
191 }; | |
192 | |
193 static const GUID head1_guid = { | |
194 0x5fbf03b5, 0xa92e, 0x11cf, { 0x8e, 0xe3, 0x00, 0xc0, 0x0c, 0x20, 0x53, 0x65 }, | |
195 }; | |
196 | |
197 static const GUID head2_guid = { | |
198 0xabd3d211, 0xa9ba, 0x11cf, { 0x8e, 0xe6, 0x00, 0xc0, 0x0c, 0x20, 0x53, 0x65 }, | |
199 }; | |
200 | |
341
ad2a57c5467a
ASF extended header parsing patch by ("Kevin Kuphal" <kevin dot kuphal at sitecity dot net>)
michael
parents:
312
diff
changeset
|
201 static const GUID extended_content_header = { |
ad2a57c5467a
ASF extended header parsing patch by ("Kevin Kuphal" <kevin dot kuphal at sitecity dot net>)
michael
parents:
312
diff
changeset
|
202 0xD2D0A440, 0xE307, 0x11D2, { 0x97, 0xF0, 0x00, 0xA0, 0xC9, 0x5E, 0xA8, 0x50 }, |
ad2a57c5467a
ASF extended header parsing patch by ("Kevin Kuphal" <kevin dot kuphal at sitecity dot net>)
michael
parents:
312
diff
changeset
|
203 }; |
ad2a57c5467a
ASF extended header parsing patch by ("Kevin Kuphal" <kevin dot kuphal at sitecity dot net>)
michael
parents:
312
diff
changeset
|
204 |
716
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
205 static const GUID simple_index_header = { |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
206 0x33000890, 0xE5B1, 0x11CF, { 0x89, 0xF4, 0x00, 0xA0, 0xC9, 0x03, 0x49, 0xCB }, |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
207 }; |
55081ada3aad
31_ASF_compatibility_with_WMP_and_add_index.patch by (Calcium | calcium nurs or jp)
michael
parents:
373
diff
changeset
|
208 |
904
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
209 static const GUID ext_stream_embed_stream_header = { |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
210 0x3afb65e2, 0x47ef, 0x40f2, { 0xac, 0x2c, 0x70, 0xa9, 0x0d, 0x71, 0xd3, 0x43} |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
211 }; |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
212 |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
213 static const GUID ext_stream_audio_stream = { |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
214 0x31178c9d, 0x03e1, 0x4528, { 0xb5, 0x82, 0x3d, 0xf9, 0xdb, 0x22, 0xf5, 0x03} |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
215 }; |
5d3dc3a6bbe7
audio in dvr-ms demuxing support by (John Donaghy <johnfdonaghy gmail com<)
michael
parents:
896
diff
changeset
|
216 |
0 | 217 /* I am not a number !!! This GUID is the one found on the PC used to |
218 generate the stream */ | |
219 static const GUID my_guid = { | |
220 0, 0, 0, { 0, 0, 0, 0, 0, 0, 0, 0 }, | |
221 }; | |
373
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
222 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
223 #define ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT 0x80 //1000 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
224 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
225 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
226 // ASF data packet structure |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
227 // ========================= |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
228 // |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
229 // |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
230 // ----------------------------------- |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
231 // | Error Correction Data | Optional |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
232 // ----------------------------------- |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
233 // | Payload Parsing Information (PPI) | |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
234 // ----------------------------------- |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
235 // | Payload Data | |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
236 // ----------------------------------- |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
237 // | Padding Data | |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
238 // ----------------------------------- |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
239 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
240 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
241 // PPI_FLAG - Payload parsing information flags |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
242 #define ASF_PPI_FLAG_MULTIPLE_PAYLOADS_PRESENT 1 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
243 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
244 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_BYTE 0x02 //0000 0010 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
245 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_WORD 0x04 //0000 0100 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
246 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_DWORD 0x06 //0000 0110 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
247 #define ASF_PPI_MASK_SEQUENCE_FIELD_SIZE 0x06 //0000 0110 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
248 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
249 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_BYTE 0x08 //0000 1000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
250 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_WORD 0x10 //0001 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
251 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_DWORD 0x18 //0001 1000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
252 #define ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE 0x18 //0001 1000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
253 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
254 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_BYTE 0x20 //0010 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
255 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_WORD 0x40 //0100 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
256 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_DWORD 0x60 //0110 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
257 #define ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE 0x60 //0110 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
258 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
259 // PL_FLAG - Payload flags |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
260 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE 0x01 //0000 0001 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
261 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_WORD 0x02 //0000 0010 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
262 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_DWORD 0x03 //0000 0011 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
263 #define ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE 0x03 //0000 0011 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
264 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
265 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_BYTE 0x04 //0000 0100 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
266 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_WORD 0x08 //0000 1000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
267 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD 0x0c //0000 1100 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
268 #define ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE 0x0c //0000 1100 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
269 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
270 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE 0x10 //0001 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
271 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_WORD 0x20 //0010 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
272 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_DWORD 0x30 //0011 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
273 #define ASF_PL_MASK_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_SIZE 0x30 //0011 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
274 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
275 #define ASF_PL_FLAG_STREAM_NUMBER_LENGTH_FIELD_IS_BYTE 0x40 //0100 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
276 #define ASF_PL_MASK_STREAM_NUMBER_LENGTH_FIELD_SIZE 0xc0 //1100 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
277 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
278 #define ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_BYTE 0x40 //0100 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
279 #define ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD 0x80 //1000 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
280 #define ASF_PL_MASK_PAYLOAD_LENGTH_FIELD_SIZE 0xc0 //1100 0000 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
281 |
e47d9c8e2054
asf patch by (Konstantin Andreyev <kandreyev at bcsii dot com>)
michael
parents:
372
diff
changeset
|
282 #define ASF_PL_FLAG_KEY_FRAME 0x80 //1000 0000 |