comparison DOCS/tech/mpcf.txt @ 17439:f6e39517d5b6

cosmetic change, shift stuff around to more logical places
author ods15
date Fri, 20 Jan 2006 19:12:22 +0000
parents 81d2f40ce5d4
children 1bb20b4c4082
comparison
equal deleted inserted replaced
17438:81d2f40ce5d4 17439:f6e39517d5b6
318 318
319 319
320 Tag description: 320 Tag description:
321 ---------------- 321 ----------------
322 322
323 file_id_string
324 "nut/multimedia container\0"
325
326 *_startcode
327 all startcodes start with 'N'
328
329 main_startcode
330 0x7A561F5F04ADULL + (((uint64_t)('N'<<8) + 'M')<<48)
331
332 stream_starcode
333 0x11405BF2F9DBULL + (((uint64_t)('N'<<8) + 'S')<<48)
334
335 syncpoint_startcode
336 0xE4ADEECA4569ULL + (((uint64_t)('N'<<8) + 'K')<<48)
337
338 index_startcode
339 0xDD672F23E64EULL + (((uint64_t)('N'<<8) + 'X')<<48)
340
341 info_startcode
342 0xAB68B596BA78ULL + (((uint64_t)('N'<<8) + 'I')<<48)
343
344 version
345 NUT version. The current value is 2.
346
323 forward_ptr 347 forward_ptr
324 size of the packet data (exactly the distance from the first byte 348 size of the packet data (exactly the distance from the first byte
325 after the forward_ptr to the first byte of the next packet) 349 after the forward_ptr to the first byte of the next packet)
326
327 back_ptr_div8
328 back_ptr = back_ptr_div8 * 8 + 7
329 back_ptr must point to a position within 8 bytes of a syncpoint
330 startcode. This syncpoint MUST be the closest syncpoint such that at
331 least one keyframe with a pts lower or equal to the original syncpoint's
332 global_key_pts for all streams lies between it and the current syncpoint.
333
334 A stream where EOR is set is to be ignored for back_ptr.
335
336 global_key_pts
337 After a syncpoint, last_pts of each stream is to be set to:
338 last_pts[i] = convert_ts(global_key_pts, timebase[stream], timebase[i])
339
340 global_key_pts MUST be bigger or equal to dts of all past frames across
341 all streams, and smaller or equal to pts of all future frames.
342
343 file_id_string
344 "nut/multimedia container\0"
345
346 *_startcode
347 all startcodes start with 'N'
348
349 main_startcode
350 0x7A561F5F04ADULL + (((uint64_t)('N'<<8) + 'M')<<48)
351
352 stream_starcode
353 0x11405BF2F9DBULL + (((uint64_t)('N'<<8) + 'S')<<48)
354
355 syncpoint_startcode
356 0xE4ADEECA4569ULL + (((uint64_t)('N'<<8) + 'K')<<48)
357
358 syncpoint_startcodes SHOULD be placed immediately before a keyframe if the
359 previous frame of the same stream was a non-keyframe, unless such
360 non-keyframe - keyframe transitions are very frequent
361
362 index_startcode
363 0xDD672F23E64EULL + (((uint64_t)('N'<<8) + 'X')<<48)
364
365 info_startcode
366 0xAB68B596BA78ULL + (((uint64_t)('N'<<8) + 'I')<<48)
367
368 version
369 NUT version. The current value is 2.
370 350
371 max_distance 351 max_distance
372 max distance of syncpoints, the distance may only be larger if 352 max distance of syncpoints, the distance may only be larger if
373 there is no more than a single frame between the two syncpoints. This can 353 there is no more than a single frame between the two syncpoints. This can
374 be used by the demuxer to detect damaged frame headers if the damage 354 be used by the demuxer to detect damaged frame headers if the damage
375 results in too long of a chain 355 results in too long of a chain
356
357 syncpoints SHOULD be placed immediately before a keyframe if the
358 previous frame of the same stream was a non-keyframe, unless such
359 non-keyframe - keyframe transitions are very frequent
376 360
377 SHOULD be set to <=32768 or at least <=65536 unless there is a very 361 SHOULD be set to <=32768 or at least <=65536 unless there is a very
378 good reason to set it higher, otherwise reasonable error recovery will 362 good reason to set it higher, otherwise reasonable error recovery will
379 be impossible 363 be impossible
380 364
537 checksum 521 checksum
538 adler32 checksum 522 adler32 checksum
539 checksum is calculated for the area pointed to by forward_ptr not 523 checksum is calculated for the area pointed to by forward_ptr not
540 including the checksum itself (from first byte after the 524 including the checksum itself (from first byte after the
541 forward_ptr until last byte before the checksum). 525 forward_ptr until last byte before the checksum).
526
527 back_ptr_div8
528 back_ptr = back_ptr_div8 * 8 + 7
529 back_ptr must point to a position within 8 bytes of a syncpoint
530 startcode. This syncpoint MUST be the closest syncpoint such that at
531 least one keyframe with a pts lower or equal to the original syncpoint's
532 global_key_pts for all streams lies between it and the current syncpoint.
533
534 A stream where EOR is set is to be ignored for back_ptr.
535
536 global_key_pts
537 After a syncpoint, last_pts of each stream is to be set to:
538 last_pts[i] = convert_ts(global_key_pts, timebase[stream], timebase[i])
539
540 global_key_pts MUST be bigger or equal to dts of all past frames across
541 all streams, and smaller or equal to pts of all future frames.
542 542
543 max_pts 543 max_pts
544 s = max_pts % stream_count 544 s = max_pts % stream_count
545 pts = max_pts / stream_count 545 pts = max_pts / stream_count
546 The highest pts in the entire file in the timebase of stream 's' . 546 The highest pts in the entire file in the timebase of stream 's' .