Index: DOCS/tech/mpcf.txt =================================================================== RCS file: /cvsroot/mplayer/main/DOCS/tech/mpcf.txt,v retrieving revision 1.105 diff -u -r1.105 mpcf.txt --- DOCS/tech/mpcf.txt 13 Feb 2006 07:29:11 -0000 1.105 +++ DOCS/tech/mpcf.txt 15 Feb 2006 10:00:12 -0000 @@ -98,6 +98,7 @@ data[i] u(8) } [Note: strings MUST be encoded in UTF-8] + [Note: strings MUST NOT be encoded with their terminating NUL] vb (variable length binary data or string) length v @@ -275,21 +276,28 @@ checksum u(32) info_frame: (optional) - for(;;){ + info_stream_id v + items v + for(i=0; i>2][0] + type= info_table[code][id>>2][1] + if(type==NULL) type vb + if(name==NULL) name vb + if(code==0) { value s - else + } else if(code==1) { + nom s + denom v + value= nom/denom + } else if(code==2) { + mantissa s + exponent s + value= mantissa*pow(2,exp) + } else { value vb + } } reserved_bytes checksum u(32) @@ -613,9 +621,12 @@ EOF, as index_ptr will always be 12 bytes before the end of file if there is an index at all. +info_stream_id + Which stream this info packet reffers to, plus one. Zero menas global + to file. + id the ID of the type/name pair, so it is more compact - 0 means end type for example: "UTF8" -> string or "JPEG" -> JPEG image @@ -624,8 +635,6 @@ info packet types the name of the info entry, valid names are - "StreamId" - the stream(s) to which the info packet applies "Author" "Description" "Copyright" @@ -644,8 +653,8 @@ (ISO 8601 format, see http://www.cl.cam.ac.uk/~mgk25/iso-time.html) Note: do not forget the timezone "Keywords" - "TotalTime" - total length of the stream in msecs + "TrackTime" + length of a track/chapter in seconds "Language" ISO 639 and ISO 3166 for language/country code something like "eng" (US english), can be 0 if unknown @@ -666,23 +675,34 @@ stuffing 0x80 can be placed in front of any type v entry for stuffing purposes -info_table[][2]={ - {NULL , NULL }, // end - {NULL , NULL }, - {NULL , "UTF8"}, - {NULL , "v"}, - {NULL , "s"}, - {"StreamId" , "v"}, - {"Author" , "UTF8"}, - {"Title" , "UTF8"}, - {"Language" , "UTF8"}, - {"Description" , "UTF8"}, - {"Copyright" , "UTF8"}, - {"Encoder" , "UTF8"}, - {"Keyword" , "UTF8"}, - {"Cover" , "JPEG"}, - {"Cover" , "PNG"}, - {"Disposition" , "UTF8"}, +info_table[4][][2]={ + { + {NULL , NULL}, + {NULL , "i"}, // integer + }, + { + {NULL , NULL}, + {NULL , "r"}, // rational + {"TrackTime" , "r"}, + }, + { + {NULL , NULL}, + {NULL , "f"}, // float + }, + { + {NULL , NULL }, + {NULL , "UTF8"}, + {"Author" , "UTF8"}, + {"Title" , "UTF8"}, + {"Language" , "UTF8"}, + {"Description" , "UTF8"}, + {"Copyright" , "UTF8"}, + {"Encoder" , "UTF8"}, + {"Keyword" , "UTF8"}, + {"Cover" , "JPEG"}, + {"Cover" , "PNG"}, + {"Disposition" , "UTF8"}, + } };