Mercurial > mplayer.hg
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' . |