Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: third_party/lzma_sdk/7zFormat.txt

Issue 6730044: Upgrading lzma_sdk to version 9.20. Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/lzma_sdk/7zCrc.c ('k') | third_party/lzma_sdk/7z_C.vcproj » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:executable
+ *
OLDNEW
(Empty)
1 7z Format description (2.30 Beta 25)
2 -----------------------------------
3
4 This file contains description of 7z archive format.
5 7z archive can contain files compressed with any method.
6 See "Methods.txt" for description for defined compressing methods.
7
8
9 Format structure Overview
10 -------------------------
11
12 Some fields can be optional.
13
14 Archive structure
15 ~~~~~~~~~~~~~~~~~
16 SignatureHeader
17 [PackedStreams]
18 [PackedStreamsForHeaders]
19 [
20 Header
21 or
22 {
23 Packed Header
24 HeaderInfo
25 }
26 ]
27
28
29
30 Header structure
31 ~~~~~~~~~~~~~~~~
32 {
33 ArchiveProperties
34 AdditionalStreams
35 {
36 PackInfo
37 {
38 PackPos
39 NumPackStreams
40 Sizes[NumPackStreams]
41 CRCs[NumPackStreams]
42 }
43 CodersInfo
44 {
45 NumFolders
46 Folders[NumFolders]
47 {
48 NumCoders
49 CodersInfo[NumCoders]
50 {
51 ID
52 NumInStreams;
53 NumOutStreams;
54 PropertiesSize
55 Properties[PropertiesSize]
56 }
57 NumBindPairs
58 BindPairsInfo[NumBindPairs]
59 {
60 InIndex;
61 OutIndex;
62 }
63 PackedIndices
64 }
65 UnPackSize[Folders][Folders.NumOutstreams]
66 CRCs[NumFolders]
67 }
68 SubStreamsInfo
69 {
70 NumUnPackStreamsInFolders[NumFolders];
71 UnPackSizes[]
72 CRCs[]
73 }
74 }
75 MainStreamsInfo
76 {
77 (Same as in AdditionalStreams)
78 }
79 FilesInfo
80 {
81 NumFiles
82 Properties[]
83 {
84 ID
85 Size
86 Data
87 }
88 }
89 }
90
91 HeaderInfo structure
92 ~~~~~~~~~~~~~~~~~~~~
93 {
94 (Same as in AdditionalStreams)
95 }
96
97
98
99 Notes about Notation and encoding
100 ---------------------------------
101
102 7z uses little endian encoding.
103
104 7z archive format has optional headers that are marked as
105 []
106 Header
107 []
108
109 REAL_UINT64 means real UINT64.
110
111 UINT64 means real UINT64 encoded with the following scheme:
112
113 Size of encoding sequence depends from first byte:
114 First_Byte Extra_Bytes Value
115 (binary)
116 0xxxxxxx : ( xxxxxxx )
117 10xxxxxx BYTE y[1] : ( xxxxxx << (8 * 1)) + y
118 110xxxxx BYTE y[2] : ( xxxxx << (8 * 2)) + y
119 ...
120 1111110x BYTE y[6] : ( x << (8 * 6)) + y
121 11111110 BYTE y[7] : y
122 11111111 BYTE y[8] : y
123
124
125
126 Property IDs
127 ------------
128
129 0x00 = kEnd,
130
131 0x01 = kHeader,
132
133 0x02 = kArchiveProperties,
134
135 0x03 = kAdditionalStreamsInfo,
136 0x04 = kMainStreamsInfo,
137 0x05 = kFilesInfo,
138
139 0x06 = kPackInfo,
140 0x07 = kUnPackInfo,
141 0x08 = kSubStreamsInfo,
142
143 0x09 = kSize,
144 0x0A = kCRC,
145
146 0x0B = kFolder,
147
148 0x0C = kCodersUnPackSize,
149 0x0D = kNumUnPackStream,
150
151 0x0E = kEmptyStream,
152 0x0F = kEmptyFile,
153 0x10 = kAnti,
154
155 0x11 = kName,
156 0x12 = kCreationTime,
157 0x13 = kLastAccessTime,
158 0x14 = kLastWriteTime,
159 0x15 = kWinAttributes,
160 0x16 = kComment,
161
162 0x17 = kEncodedHeader,
163
164
165 7z format headers
166 -----------------
167
168 SignatureHeader
169 ~~~~~~~~~~~~~~~
170 BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};
171
172 ArchiveVersion
173 {
174 BYTE Major; // now = 0
175 BYTE Minor; // now = 2
176 };
177
178 UINT32 StartHeaderCRC;
179
180 StartHeader
181 {
182 REAL_UINT64 NextHeaderOffset
183 REAL_UINT64 NextHeaderSize
184 UINT32 NextHeaderCRC
185 }
186
187
188 ...........................
189
190
191 ArchiveProperties
192 ~~~~~~~~~~~~~~~~~
193 BYTE NID::kArchiveProperties (0x02)
194 for (;;)
195 {
196 BYTE PropertyType;
197 if (aType == 0)
198 break;
199 UINT64 PropertySize;
200 BYTE PropertyData[PropertySize];
201 }
202
203
204 Digests (NumStreams)
205 ~~~~~~~~~~~~~~~~~~~~~
206 BYTE AllAreDefined
207 if (AllAreDefined == 0)
208 {
209 for(NumStreams)
210 BIT Defined
211 }
212 UINT32 CRCs[NumDefined]
213
214
215 PackInfo
216 ~~~~~~~~~~~~
217 BYTE NID::kPackInfo (0x06)
218 UINT64 PackPos
219 UINT64 NumPackStreams
220
221 []
222 BYTE NID::kSize (0x09)
223 UINT64 PackSizes[NumPackStreams]
224 []
225
226 []
227 BYTE NID::kCRC (0x0A)
228 PackStreamDigests[NumPackStreams]
229 []
230
231 BYTE NID::kEnd
232
233
234 Folder
235 ~~~~~~
236 UINT64 NumCoders;
237 for (NumCoders)
238 {
239 BYTE
240 {
241 0:3 DecompressionMethod.IDSize
242 4:
243 0 - IsSimple
244 1 - Is not simple
245 5:
246 0 - No Attributes
247 1 - There Are Attributes
248 7:
249 0 - Last Method in Alternative_Method_List
250 1 - There are more alternative methods
251 }
252 BYTE DecompressionMethod.ID[DecompressionMethod.IDSize]
253 if (!IsSimple)
254 {
255 UINT64 NumInStreams;
256 UINT64 NumOutStreams;
257 }
258 if (DecompressionMethod[0] != 0)
259 {
260 UINT64 PropertiesSize
261 BYTE Properties[PropertiesSize]
262 }
263 }
264
265 NumBindPairs = NumOutStreamsTotal - 1;
266
267 for (NumBindPairs)
268 {
269 UINT64 InIndex;
270 UINT64 OutIndex;
271 }
272
273 NumPackedStreams = NumInStreamsTotal - NumBindPairs;
274 if (NumPackedStreams > 1)
275 for(NumPackedStreams)
276 {
277 UINT64 Index;
278 };
279
280
281
282
283 Coders Info
284 ~~~~~~~~~~~
285
286 BYTE NID::kUnPackInfo (0x07)
287
288
289 BYTE NID::kFolder (0x0B)
290 UINT64 NumFolders
291 BYTE External
292 switch(External)
293 {
294 case 0:
295 Folders[NumFolders]
296 case 1:
297 UINT64 DataStreamIndex
298 }
299
300
301 BYTE ID::kCodersUnPackSize (0x0C)
302 for(Folders)
303 for(Folder.NumOutStreams)
304 UINT64 UnPackSize;
305
306
307 []
308 BYTE NID::kCRC (0x0A)
309 UnPackDigests[NumFolders]
310 []
311
312
313
314 BYTE NID::kEnd
315
316
317
318 SubStreams Info
319 ~~~~~~~~~~~~~~
320 BYTE NID::kSubStreamsInfo; (0x08)
321
322 []
323 BYTE NID::kNumUnPackStream; (0x0D)
324 UINT64 NumUnPackStreamsInFolders[NumFolders];
325 []
326
327
328 []
329 BYTE NID::kSize (0x09)
330 UINT64 UnPackSizes[]
331 []
332
333
334 []
335 BYTE NID::kCRC (0x0A)
336 Digests[Number of streams with unknown CRC]
337 []
338
339
340 BYTE NID::kEnd
341
342
343 Streams Info
344 ~~~~~~~~~~~~
345
346 []
347 PackInfo
348 []
349
350
351 []
352 CodersInfo
353 []
354
355
356 []
357 SubStreamsInfo
358 []
359
360 BYTE NID::kEnd
361
362
363 FilesInfo
364 ~~~~~~~~~
365 BYTE NID::kFilesInfo; (0x05)
366 UINT64 NumFiles
367
368 for (;;)
369 {
370 BYTE PropertyType;
371 if (aType == 0)
372 break;
373
374 UINT64 Size;
375
376 switch(PropertyType)
377 {
378 kEmptyStream: (0x0E)
379 for(NumFiles)
380 BIT IsEmptyStream
381
382 kEmptyFile: (0x0F)
383 for(EmptyStreams)
384 BIT IsEmptyFile
385
386 kAnti: (0x10)
387 for(EmptyStreams)
388 BIT IsAntiFile
389
390 case kCreationTime: (0x12)
391 case kLastAccessTime: (0x13)
392 case kLastWriteTime: (0x14)
393 BYTE AllAreDefined
394 if (AllAreDefined == 0)
395 {
396 for(NumFiles)
397 BIT TimeDefined
398 }
399 BYTE External;
400 if(External != 0)
401 UINT64 DataIndex
402 []
403 for(Definded Items)
404 UINT32 Time
405 []
406
407 kNames: (0x11)
408 BYTE External;
409 if(External != 0)
410 UINT64 DataIndex
411 []
412 for(Files)
413 {
414 wchar_t Names[NameSize];
415 wchar_t 0;
416 }
417 []
418
419 kAttributes: (0x15)
420 BYTE AllAreDefined
421 if (AllAreDefined == 0)
422 {
423 for(NumFiles)
424 BIT AttributesAreDefined
425 }
426 BYTE External;
427 if(External != 0)
428 UINT64 DataIndex
429 []
430 for(Definded Attributes)
431 UINT32 Attributes
432 []
433 }
434 }
435
436
437 Header
438 ~~~~~~
439 BYTE NID::kHeader (0x01)
440
441 []
442 ArchiveProperties
443 []
444
445 []
446 BYTE NID::kAdditionalStreamsInfo; (0x03)
447 StreamsInfo
448 []
449
450 []
451 BYTE NID::kMainStreamsInfo; (0x04)
452 StreamsInfo
453 []
454
455 []
456 FilesInfo
457 []
458
459 BYTE NID::kEnd
460
461
462 HeaderInfo
463 ~~~~~~~~~~
464 []
465 BYTE NID::kEncodedHeader; (0x17)
466 StreamsInfo for Encoded Header
467 []
468
469
470 ---
471 End of document
OLDNEW
« no previous file with comments | « third_party/lzma_sdk/7zCrc.c ('k') | third_party/lzma_sdk/7z_C.vcproj » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698