comparison DOCS/tech/mpcf.txt @ 13308:8ff17d153414

info packet is now file global, while meta pakcet is stream specific, as discussed with Rich
author alex
date Sat, 11 Sep 2004 09:18:07 +0000
parents 4e613c87c2f5
children 6cdd5669e930
comparison
equal deleted inserted replaced
13307:b94f228dfed6 13308:8ff17d153414
1 NUT Open Container Format DRAFT 20040409 1 NUT Open Container Format DRAFT 20040911
2 ---------------------------------------- 2 ----------------------------------------
3 3
4 4
5 5
6 Intro: 6 Intro:
125 packet_header 125 packet_header
126 stream_id v 126 stream_id v
127 stream_class v 127 stream_class v
128 fourcc vb 128 fourcc vb
129 average_bitrate v 129 average_bitrate v
130 language_code vb
131 time_base_nom v 130 time_base_nom v
132 time_base_denom v 131 time_base_denom v
133 msb_timestamp_shift v 132 msb_timestamp_shift v
134 decode_delay v 133 decode_delay v
135 fixed_fps u(1) 134 fixed_fps u(1)
183 index_position v 182 index_position v
184 } 183 }
185 reserved_bytes 184 reserved_bytes
186 checksum u(32) 185 checksum u(32)
187 186
188 info_packet: (optional) 187 info_packet: (optional) (file global)
189 info_startcode f(64) 188 info_startcode f(64)
190 packet header 189 packet header
191 for(;;){ 190 for(;;){
192 id v 191 id v
193 if(id==0) break 192 if(id==0) break
194 name= info_table[id][0] 193 name= info_table[id][0]
195 type= info_table[id][1] 194 type= info_table[id][1]
195 if(type==NULL)
196 type vb
197 if(name==NULL)
198 name vb
199 if(type=="v")
200 value v
201 else
202 value vb
203 }
204 reserved_bytes
205 checksum u(32)
206
207 meta_packet: (optional) (stream specific)
208 meta_startcode f(64)
209 packet header
210 stream_id v
211 for(;;){
212 id v
213 if(id==0) break
214 name= meta_table[id][0]
215 type= meta_table[id][1]
196 if(type==NULL) 216 if(type==NULL)
197 type vb 217 type vb
198 if(name==NULL) 218 if(name==NULL)
199 name vb 219 name vb
200 if(type=="v") 220 if(type=="v")
255 275
256 index_startcode 276 index_startcode
257 0xDD672F23E64EULL + (((uint64_t)('N'<<8) + 'X')<<48) 277 0xDD672F23E64EULL + (((uint64_t)('N'<<8) + 'X')<<48)
258 info_startcode 278 info_startcode
259 0xAB68B596BA78ULL + (((uint64_t)('N'<<8) + 'I')<<48) 279 0xAB68B596BA78ULL + (((uint64_t)('N'<<8) + 'I')<<48)
280 meta_startcode
281 FIXME
260 282
261 version 283 version
262 2 for now 284 2 for now
263 285
264 max_distance 286 max_distance
365 1 native 387 1 native
366 2 bitmapinfoheader 388 2 bitmapinfoheader
367 3 waveformatex 389 3 waveformatex
368 4 imagedesc 390 4 imagedesc
369 5 sounddesc 391 5 sounddesc
370 "native", means a simple api & container independanet storage form, 392 "native", means a simple api & container independent storage form,
371 for example some mpeg4-es headers 393 for example some mpeg4-es headers
372 394
373 codec_specific_data 395 codec_specific_data
374 private global data for a codec (could be huffman tables or ...) 396 private global data for a codec (could be huffman tables or ...)
375 397
478 type 500 type
479 for example: "UTF8" -> String or "JPEG" -> jpeg image 501 for example: "UTF8" -> String or "JPEG" -> jpeg image
480 Note: nonstandard fields should be prefixed by "X-" 502 Note: nonstandard fields should be prefixed by "X-"
481 Note: MUST be less than 6 byte long (might be increased to 64 later) 503 Note: MUST be less than 6 byte long (might be increased to 64 later)
482 504
483 name 505 info packet types
484 the name of the info entry, valid names are 506 the name of the info entry, valid names are
485 "TotalTime" total length of the stream in msecs 507
486 "StreamId" the stream(s) to which the info packet applies
487 "StartTimestamp"
488 "EndTimestamp" the time range in msecs to which the info applies
489 "SegmentId" a unique id for the streams + time specified
490 "Author" 508 "Author"
491 "Description" 509 "Description"
492 "Copyright" 510 "Copyright"
493 "Encoder" the name & version of the software used for encoding 511 "Encoder" the name & version of the software used for encoding
494 "Title" 512 "Title"
498 Optional: appended PAL,NTSC,SECAM, ... in parentheses 516 Optional: appended PAL,NTSC,SECAM, ... in parentheses
499 "CaptureDevice" "BT878", "BT848", "webcam", ... (more exact names are fine too) 517 "CaptureDevice" "BT878", "BT848", "webcam", ... (more exact names are fine too)
500 "CreationTime" "2003-01-20 20:13:15Z", ... 518 "CreationTime" "2003-01-20 20:13:15Z", ...
501 (ISO 8601 format, see http://www.cl.cam.ac.uk/~mgk25/iso-time.html) 519 (ISO 8601 format, see http://www.cl.cam.ac.uk/~mgk25/iso-time.html)
502 Note: dont forget the timezone 520 Note: dont forget the timezone
521 "Keywords"
522 "TotalTime" total length of the stream in msecs
523
524 meta packet types
503 "ReplayGain" 525 "ReplayGain"
504 "Keywords" 526 "Language" the language code
505 "Disposition" "original", "dub" (translated), "comment", "lyrics", "karaoke" 527 "Disposition" "original", "dub" (translated), "comment", "lyrics", "karaoke"
506 Note: if someone needs some others, please tell us about them, so we can 528 Note: if someone needs some others, please tell us about them, so we can
507 add them to the official standard (if they are sane) 529 add them to the official standard (if they are sane)
508 Note: nonstandard fields should be prefixed by "X-" 530 Note: nonstandard fields should be prefixed by "X-"
509 Note: MUST be less than 64 bytes long 531 Note: MUST be less than 64 bytes long
519 {NULL , NULL }, // end 541 {NULL , NULL }, // end
520 {NULL , NULL }, 542 {NULL , NULL },
521 {NULL , "UTF8"}, 543 {NULL , "UTF8"},
522 {NULL , "v"}, 544 {NULL , "v"},
523 {NULL , "s"}, 545 {NULL , "s"},
524 {"StreamId" , "v"},
525 {"SegmentId" , "v"},
526 {"StartTimestamp" , "v"},
527 {"EndTimestamp" , "v"},
528 {"Author" , "UTF8"}, 546 {"Author" , "UTF8"},
529 {"Titel" , "UTF8"}, 547 {"Titel" , "UTF8"},
530 {"Description" , "UTF8"}, 548 {"Description" , "UTF8"},
531 {"Copyright" , "UTF8"}, 549 {"Copyright" , "UTF8"},
532 {"Encoder" , "UTF8"}, 550 {"Encoder" , "UTF8"},
533 {"Keyword" , "UTF8"}, 551 {"Keyword" , "UTF8"},
534 {"Cover" , "JPEG"}, 552 {"Cover" , "JPEG"},
535 {"Cover" , "PNG"}, 553 {"Cover" , "PNG"},
536 {"Disposition" , "UTF8"}, 554 };
555
556 meta_table[][2]={
557 {NULL , NULL }, // end
558 {NULL , NULL },
559 {NULL , "UTF8"},
560 {NULL , "v"},
561 {NULL , "s"},
562 {"Language" , to be decided},
563 {"Disposition" , to be decided},
564 {"ReplayGain" , to be decided},
537 }; 565 };
538 566
539 Structure: 567 Structure:
540 568
541 the headers MUST be in exactly the following order (to simplify demuxer design) 569 the headers MUST be in exactly the following order (to simplify demuxer design)