doc/ffmpeg-formats: reword and extend documentation for avoid_negative_ts option
[ffmpeg.git] / doc / ffmpeg-formats.texi
1 \input texinfo @c -*- texinfo -*-
2
3 @settitle FFmpeg Formats Documentation
4 @titlepage
5 @center @titlefont{FFmpeg Formats Documentation}
6 @end titlepage
7
8 @top
9
10 @contents
11
12 @chapter Description
13 @c man begin DESCRIPTION
14
15 This document describes the supported formats (muxers and demuxers)
16 provided by the libavformat library.
17
18 @c man end DESCRIPTION
19
20 @chapter Format Options
21 @c man begin FORMAT OPTIONS
22
23 The libavformat library provides some generic global options, which
24 can be set on all the muxers and demuxers. In addition each muxer or
25 demuxer may support so-called private options, which are specific for
26 that component.
27
28 Options may be set by specifying -@var{option} @var{value} in the
29 FFmpeg tools, or by setting the value explicitly in the
30 @code{AVFormatContext} options or using the @file{libavutil/opt.h} API
31 for programmatic use.
32
33 The list of supported options follows:
34
35 @table @option
36 @item avioflags @var{flags} (@emph{input/output})
37 Possible values:
38 @table @samp
39 @item direct
40 Reduce buffering.
41 @end table
42
43 @item probesize @var{integer} (@emph{input})
44 Set probing size in bytes, i.e. the size of the data to analyze to get
45 stream information. A higher value will allow to detect more
46 information in case it is dispersed into the stream, but will increase
47 latency. Must be an integer not lesser than 32. It is 5000000 by default.
48
49 @item packetsize @var{integer} (@emph{output})
50 Set packet size.
51
52 @item fflags @var{flags} (@emph{input/output})
53 Set format flags.
54
55 Possible values:
56 @table @samp
57 @item ignidx
58 Ignore index.
59 @item genpts
60 Generate PTS.
61 @item nofillin
62 Do not fill in missing values that can be exactly calculated.
63 @item noparse
64 Disable AVParsers, this needs @code{+nofillin} too.
65 @item igndts
66 Ignore DTS.
67 @item discardcorrupt
68 Discard corrupted frames.
69 @item sortdts
70 Try to interleave output packets by DTS.
71 @item keepside
72 Do not merge side data.
73 @item latm
74 Enable RTP MP4A-LATM payload.
75 @item nobuffer
76 Reduce the latency introduced by optional buffering
77 @end table
78
79 @item analyzeduration @var{integer} (@emph{input})
80 Specify how many microseconds are analyzed to probe the input. A
81 higher value will allow to detect more accurate information, but will
82 increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
83
84 @item cryptokey @var{hexadecimal string} (@emph{input})
85 Set decryption key.
86
87 @item indexmem @var{integer} (@emph{input})
88 Set max memory used for timestamp index (per stream).
89
90 @item rtbufsize @var{integer} (@emph{input})
91 Set max memory used for buffering real-time frames.
92
93 @item fdebug @var{flags} (@emph{input/output})
94 Print specific debug info.
95
96 Possible values:
97 @table @samp
98 @item ts
99 @end table
100
101 @item max_delay @var{integer} (@emph{input/output})
102 Set maximum muxing or demuxing delay in microseconds.
103
104 @item fpsprobesize @var{integer} (@emph{input})
105 Set number of frames used to probe fps.
106
107 @item audio_preload @var{integer} (@emph{output})
108 Set microseconds by which audio packets should be interleaved earlier.
109
110 @item chunk_duration @var{integer} (@emph{output})
111 Set microseconds for each chunk.
112
113 @item chunk_size @var{integer} (@emph{output})
114 Set size in bytes for each chunk.
115
116 @item err_detect, f_err_detect @var{flags} (@emph{input})
117 Set error detection flags. @code{f_err_detect} is deprecated and
118 should be used only via the @command{ffmpeg} tool.
119
120 Possible values:
121 @table @samp
122 @item crccheck
123 Verify embedded CRCs.
124 @item bitstream
125 Detect bitstream specification deviations.
126 @item buffer
127 Detect improper bitstream length.
128 @item explode
129 Abort decoding on minor error detection.
130 @item careful
131 Consider things that violate the spec and have not been seen in the
132 wild as errors.
133 @item compliant
134 Consider all spec non compliancies as errors.
135 @item aggressive
136 Consider things that a sane encoder should not do as an error.
137 @end table
138
139 @item use_wallclock_as_timestamps @var{integer} (@emph{input})
140 Use wallclock as timestamps.
141
142 @item avoid_negative_ts @var{integer} (@emph{output})
143 Shift timestamps to make them positive. A value of 1 enables shifting,
144 a value of 0 disables it, the default value of -1 enables shifting
145 when required by the target format.
146
147 When shifting is enabled, all output timestamps are shifted by the
148 same amount. Audio, video, and subtitles desynching and relative
149 timestamp differences are preserved compared to how they would have
150 been without shifting.
151
152 Also note that this affects only leading negative timestamps, and not
153 non-monotonic negative timestamps.
154
155 When avoid_negative_ts is used together with copyts, vsync or async then
156 avoid_negative_ts is applied last. This is neccessary so that containers
157 which do not support negative timestamps wont get any and can be used
158 with vsync/async and copyts.
159 @end table
160
161 @c man end FORMAT OPTIONS
162
163 @include demuxers.texi
164 @include muxers.texi
165 @include metadata.texi
166
167 @chapter See Also
168
169 @ifhtml
170 @url{ffmpeg.html,ffmpeg}, @url{ffplay.html,ffplay}, @url{ffprobe.html,ffprobe}, @url{ffserver.html,ffserver},
171 @url{libavformat.html,libavformat}
172 @end ifhtml
173
174 @ifnothtml
175 ffmpeg(1), ffplay(1), ffprobe(1), ffserver(1), libavformat(3)
176 @end ifnothtml
177
178 @include authors.texi
179
180 @ignore
181
182 @setfilename ffmpeg-formats
183 @settitle FFmpeg formats
184
185 @end ignore
186
187 @bye