diff --git a/DOCS/tech/mpcf.txt b/DOCS/tech/mpcf.txt index 8f27126d5e..f093cb612b 100644 --- a/DOCS/tech/mpcf.txt +++ b/DOCS/tech/mpcf.txt @@ -6,38 +6,37 @@ Intro: Features / goals: - (supported by the format, not necessary by a specific implementation) + (supported by the format, not necessarily by a specific implementation) Simple use the same encoding for nearly all fields - simple decoding, so slow cpus (and embedded systems) can handle it + simple decoding, so slow CPUs (and embedded systems) can handle it Extendible - no limit for the possible values for all fields (using universal vlc) + no limit for the possible values of all fields (using universal vlc) allow adding of new headers in the future allow adding more fields at the end of headers Compact ~0.2% overhead, for normal bitrates index is <10kb per hour (1 keyframe every 3sec) - a usual header for a file is about 100bytes (audio + video headers together) + a usual header for a file is about 100 bytes (audio + video headers together) a packet header is about ~1-8 bytes Error resistant seeking / playback without an index headers & index can be repeated - damaged files can be played back with minimal data lost and fast - resyncing times - + damaged files can be played back with minimal data loss and fast + resync times Definitions: MUST the specific part must be done to conform to this standard -SHOULD it's recommended to be done that way, but it's not strictly required +SHOULD it is recommended to be done that way, but not strictly required Syntax: -Since nut heavily uses variable length fields, the simplest way to describe it +Since NUT heavily uses variable length fields, the simplest way to describe it is using a pseudocode approach. Conventions: @@ -59,14 +58,14 @@ name: (optional note) [Optional notes] The in-depth tag description follows the bitstream syntax. -The functional definition has a C like syntax. +The functional definition has a C-like syntax. Type definitions: f(n) (n fixed bits in big-endian order) -u(n) (unsigned number encoded in n bits in MSB first order) +u(n) (unsigned number encoded in n bits in MSB-first order) v (variable length value, unsigned) value=0 @@ -86,7 +85,7 @@ b (binary data or string, to be use in vb, see below) for(i=0; i 0 stream_id MUST be < stream_count @@ -336,7 +335,7 @@ fourcc time_base_nom / time_base_denom = time_base the number of timer ticks per second, this MUST be equal to the fps - if the fixed_fps is 1 + if fixed_fps is 1 time_base_denom MUST NOT be 0 time_base_nom and time_base_denom MUST be relatively prime time_base_nom MUST be < 2^31 @@ -379,8 +378,8 @@ msb_timestamp_shift decode_delay maximum time between input and output for a codec, used to generate dts from pts - is set to 0 for streams without b frames, and set to 1 for streams with - b frames, may be larger for future codecs + is set to 0 for streams without B-frames, and set to 1 for streams with + B-frames, may be larger for future codecs fixed_fps 1 indicates that the fps is fixed @@ -454,7 +453,7 @@ dts the smallest value is removed, this is then the current dts this buffer is initalized with decode_delay -1 elements all frames with dts == timestamp must be monotone, that means a frame - which occures later in the stream must have a larger or equal dts + which occurs later in the stream must have a larger or equal dts than an earlier frame FIXME rename timestamp* to pts* ? @@ -487,15 +486,15 @@ index_position position in bytes of the first byte of a keyframe, relative to the last keyframe stored in this index there MUST be no keyframe with the same stream_id as this index between - 2 consecutive index entries if they are more than max_index_distance + two consecutive index entries if they are more than max_index_distance apart id - the id of the type/name pair, so it's more compact + the ID of the type/name pair, so it is more compact 0 means end type - for example: "UTF8" -> String or "JPEG" -> jpeg image + for example: "UTF8" -> string or "JPEG" -> JPEG image Note: nonstandard fields should be prefixed by "X-" Note: MUST be less than 6 byte long (might be increased to 64 later) @@ -508,14 +507,14 @@ info packet types "Copyright" "Encoder" the name & version of the software used for encoding "Title" - "Cover" an image of the (cd,dvd,vhs,..) cover (preferable PNG or JPEG) + "Cover" an image of the (CD, DVD, VHS, ..) cover (preferably PNG or JPEG) "Source" "DVD", "VCD", "CD", "MD", "FM radio", "VHS", "TV", "LD" - Optional: appended PAL,NTSC,SECAM, ... in parentheses + Optional: appended PAL, NTSC, SECAM, ... in parentheses "CaptureDevice" "BT878", "BT848", "webcam", ... (more exact names are fine too) "CreationTime" "2003-01-20 20:13:15Z", ... (ISO 8601 format, see http://www.cl.cam.ac.uk/~mgk25/iso-time.html) - Note: don't forget the timezone + Note: do not forget the timezone "Keywords" "TotalTime" total length of the stream in msecs "Language" ISO 639 and ISO 3166 for language/country code @@ -571,7 +570,7 @@ the closest position after 2^12=4096 at which the headers can be placed headers MUST be placed at least at the start of the file and immediately before the index or at the file end if there is no index -headers MUST be repeated at least twice (so they exist 3 times in a file) +headers MUST be repeated at least twice (so they exist three times in a file) a demuxer MUST NOT demux a stream which contains more than one stream, or which is wrapped in a structure to facilitate more than one stream or otherwise @@ -597,9 +596,9 @@ MUST be ignored by the demuxer demuxer (non-normative) -in the absence of valid header at beginning, players SHOULD search for backup -headers starting at offset 2^x for each x players SHOULD end their search from -a particular offset when any startcode is found (including syncpoint) +in the absence of a valid header at the beginning, players SHOULD search for +backup headers starting at offset 2^x; for each x players SHOULD end their +search at a particular offset when any startcode is found (including syncpoint) Sample code (GPL, & untested) @@ -682,8 +681,8 @@ static int64_t get_dts(int64_t pts, int64_t *pts_cache, int delay, int reset){ Authors -Folks from MPlayer Developers Mailinglist (http://www.mplayehrq.hu/). -Authors in ABC-order: (FIXME! Tell us if we left you out) +Folks from the MPlayer developers mailing list (http://www.mplayerhq.hu/). +Authors in alphabetical order: (FIXME! Tell us if we left you out) Beregszaszi, Alex (alex@fsn.hu) Bunkus, Moritz (moritz@bunkus.org) Diedrich, Tobias (ranma+mplayer@tdiedrich.de)