spelling/grammar/wording

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@16429 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2005-09-09 09:25:07 +00:00
parent e3ad55448c
commit e548b29dd0
1 changed files with 30 additions and 31 deletions

View File

@ -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<length; i++){
data[i] u(8)
}
[Note: strings MUST be encoded in utf8]
[Note: strings MUST be encoded in UTF-8]
vb (variable length binary data or string)
length v
@ -298,7 +297,7 @@ version
max_distance
max distance of frame_startcodes, the distance may only be larger if
there is only a single frame between the 2 frame_startcodes this can
there is only a single frame between the two frame_startcodes this can
be used by the demuxer to detect damaged frame headers if the damage
results in too long of a chain
@ -315,8 +314,8 @@ max_index_distance
stream_id[FIXME]
Stream identifier
Note: streams with a lower relative class MUST have a lower relative id
so a stream with class 0 MUST always have an id which is lower than any
Note: streams with a lower relative class MUST have a lower relative ID
so a stream with class 0 MUST always have an ID which is lower than any
stream with class > 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)