Re: [FFmpeg-devel] [PATCH] configure: remove the mixed declarations and code warning flag
On 16-02-04 at 15:48, Rostislav Pehlivanov wrote:
[..]
> This will essentially help bring the project to near 21st century age
> and finally allow for developers to save on line numbers by NOT having
> to define the variable around which a for loop needs to iterate (e.g.
> have for (int i = 0; i < N; i++) loops instead of having to define 'i'
> at the start of the function like a normal variable), as well as more of
> the syntactic sugar C99 permits.
Just being pedantic, but -Wdeclaration-after-statement does not warn on
any of those, see attached test file which compiles without errors with
-Wall -Wpedantic -Werror -Wdeclaration-after-statement (at least on
modern clang and gcc). No comment on the actual change.
--
Simon Thelen
int main()
{
int a = 0;
for (int i = 0; i < 10; i++) {
int j = 5;
a += j + i;
}
if (a != 0) {
int b = 5;
b--;
}
return 0;
}
___
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] Complete rewrite of the "fps" video filter section. More accurate.
From: Jim DeLaHunt
This is a complete rewrite of the documentation for the "fps" video
filter. It describes the filter's behaviour more clearly and accurately.
I based the rewrite on reading the source code in vf_fps.c closely.
No code, or other documentation files, are touched by this change.
Signed-off-by: Jim DeLaHunt
---
doc/filters.texi | 167 ++-
1 file changed, 149 insertions(+), 18 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 71a6787289..bd4a1ad2a9 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -11139,27 +11139,34 @@ format=pix_fmts=yuv420p|yuv444p|yuv410p
@anchor{fps}
@section fps
-Convert the video to specified constant frame rate by duplicating or dropping
-frames as necessary.
+Generate a video, having the specified constant frame rate, from the frames of
+the input video, by copying or duplicating or dropping input frames based on
+their input presentation time stamps (PTSs). The output video has new PTSs.
You
+can choose the method for rounding from input PTS to output PTS.
It accepts the following parameters:
@table @option
@item fps
-The desired output frame rate. The default is @code{25}.
+The output frame rate, as a number of frames per second. This value can be an
+integer, real, or rational number, or an abbreviation. The default is
@code{25}.
@item start_time
-Assume the first PTS should be the given value, in seconds. This allows for
-padding/trimming at the start of stream. By default, no assumption is made
-about the first frame's expected PTS, so no padding or trimming is done.
-For example, this could be set to 0 to pad the beginning with duplicates of
-the first frame if a video stream starts after the audio stream or to trim any
-frames with a negative PTS.
+The time, in seconds from the start of the input stream, which is converted to
+an input starting PTS value and an output starting PTS value.
+If set, @var{fps} drops input frames
+which have PTS values less than the input starting PTS. If not set, the input
+and output starting PTS values are zero, but @var{fps} drops no input frames
based
+on PTS.
+(See details below.)
@item round
-Timestamp (PTS) rounding method.
+Rounding method to use when calculating output Presentation Timestamp
+(PTS) integer values from input PTS values. If the calculated output PTS value
+is not exactly an integer, then the method determines which of the two
+neighbouring integer values to choose.
-Possible values are:
+Possible method names are:
@table @option
@item zero
round towards 0
@@ -11170,43 +11177,167 @@ round towards -infinity
@item up
round towards +infinity
@item near
-round to nearest
+round to nearest (and if exactly at midpoint, away from 0)
@end table
The default is @code{near}.
@item eof_action
-Action performed when reading the last frame.
+Action which @var{fps} takes with the final input frame. The input video passes
+in an ending input PTS, which @var{fps} converts to an ending output PTS.
+@var{fps} drops any input frames with a PTS at or after this ending PTS.
Possible values are:
@table @option
@item round
-Use same timestamp rounding method as used for other frames.
+Use same rounding method as for other frames, to convert the ending input PTS
+to output PTS.
+
@item pass
-Pass through last frame if input duration has not been reached yet.
+Round the ending input PTS using @code{up}. This can have the effect of passing
+through one last input frame.
@end table
+
The default is @code{round}.
@end table
-Alternatively, the options can be specified as a flat string:
+Alternatively, the options may be specified as a flat string:
@var{fps}[:@var{start_time}[:@var{round}]].
+@var{fps} generates an output video with integer Presentation Time Stamp (PTS)
+values which increment by one each output frame, and with a time base set to
+the inverse of the given frame rate. @var{fps} copies, duplicates, or drops
+input frames, in sequence, to the output video. It does so according to their
+input PTS values, as converted to seconds (via the input time base), then
+rounded to output PTS values.
+
+@var{fps} sets output PTS values in terms of a time line which starts at
+zero. The integer PTS value multipled by the output time base gives a point
+in seconds of that output frame on that timeline. If the @var{start_time}
+parameter is not set, or is zero, the first output frame's PTS value is zero.
+Otherwise, the first PTS value is the output starting PTS value calculated
+from the @var{start_time} parameter.
+
+@var{fps} interprets input PTS values in terms of the same time line. It
+multiplies the input PTS value by the input time base time, to get a frame
+position in seconds on the time line. It rounds that position to an integer
+output PTS value. For example, if the input video has a frame rate
+of 30 fps, a time base of 1/30 seconds, and its first frame has a
+PTS of 300, the
[FFmpeg-devel] [PATCH v2] doc/filters.texi: complete rewrite of fps filter doc, v2.
Thank you for the review. Here is a rewrite of the improvement to the fps filter documentation, based on those comments. Thought it was too wordy before? It now has 11% fewer words. To confirm, no other documentation and no code are affected by this patch. Comments? —Jim DeLaHunt, software engineer, Vancouver, Canada ___ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
[FFmpeg-devel] [PATCH v2] doc/filters.texi: complete rewrite of fps filter doc, v2.
From: Jim DeLaHunt
Fix unclear wording and spelling mistakes based on review.
Reduce overall word count by 11%. Ready for patch review.
No other docs, and no executable code, are changed.
Signed-off-by: Jim DeLaHunt
---
doc/filters.texi | 157 +--
1 file changed, 138 insertions(+), 19 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index d19fd346ae..0d7d15c448 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -11194,25 +11194,30 @@ format=pix_fmts=yuv420p|yuv444p|yuv410p
@anchor{fps}
@section fps
-Convert the video to specified constant frame rate by duplicating or dropping
-frames as necessary.
+Make a new video from the frames and presentation time stamps (PTSs) of the
+input. The new video has a specified constant frame rate, and new PTSs. It
+generally keeps frames from the old video, but might repeat or drop some
frames.
+You can choose the method for rounding from input PTS to output PTS. This
+affects which frames @var{fps} keeps, repeats, or drops.
It accepts the following parameters:
@table @option
@item fps
-The desired output frame rate. The default is @code{25}.
+The output frame rate, in frames per second. May be an integer, real, or
+rational number, or an abbreviation. The default is @code{25}.
@item start_time
-Assume the first PTS should be the given value, in seconds. This allows for
-padding/trimming at the start of stream. By default, no assumption is made
-about the first frame's expected PTS, so no padding or trimming is done.
-For example, this could be set to 0 to pad the beginning with duplicates of
-the first frame if a video stream starts after the audio stream or to trim any
-frames with a negative PTS.
+A time, in seconds from the start of the input stream, which @var{fps}
converts
+to an input starting PTS and an output starting PTS. If set,
+@var{fps} drops input frames which have PTSs less than the input starting
+PTS. If not set, the input and output starting PTSs are zero, but
+@var{fps} drops no input frames based on PTS. (See details below.)
@item round
-Timestamp (PTS) rounding method.
+Rounding method to use when calculating output PTSs from input PTSs.
+If the calculated output PTS is not exactly an integer, then the value
+determines which neighbouring integer value @var{fps} selects.
Possible values are:
@table @option
@@ -11225,43 +11230,157 @@ round towards -infinity
@item up
round towards +infinity
@item near
-round to nearest
+round to nearest (midpoints round away from 0)
@end table
The default is @code{near}.
@item eof_action
-Action performed when reading the last frame.
+Action which @var{fps} takes with the final input frame. The input video passes
+in a final input PTS, which @var{fps} converts to an output PTS limit.
+@var{fps} drops any input frames with a PTS at or after this limit.
Possible values are:
@table @option
@item round
-Use same timestamp rounding method as used for other frames.
+Use same rounding method as for other frames.
+
@item pass
-Pass through last frame if input duration has not been reached yet.
+Round the ending input PTS using @code{up}. This might make @ref{fps} include
+one last input frame.
@end table
+
The default is @code{round}.
@end table
-Alternatively, the options can be specified as a flat string:
+Alternatively, the options may be specified as a flat string:
@var{fps}[:@var{start_time}[:@var{round}]].
-See also the @ref{setpts} filter.
+@var{fps} makes an output video with consecutive integer PTSs, and with a
+time base set to the inverse of the given frame rate. @var{fps} keeps,
repeats,
+or drops input frames, in sequence, to the output video. It does so according
+to their input PTSs, as converted to seconds (via the input time base),
+then rounded to output PTSs.
+
+@var{fps} sets output PTSs in terms of a timeline which starts at
+zero. For any output frame, the integer PTS multiplied by the time base
+gives a value in seconds on that timeline. If the @var{start_time}
+parameter is not set, or is zero, the first output frame's PTS is zero.
+Otherwise, the first PTS is the output starting PTS calculated
+from the @var{start_time} parameter.
+
+@var{fps} interprets input PTSs in terms of the same timeline. It
+multiplies each input frame's PTS by the input time base, to get a value
+in seconds on the timeline. It rounds that value to an integer output PTS.
+For example, if the input video has a frame rate of 30 fps, a time base
+of 1/30 seconds, and a first frame with a PTS of 300, then @var{fps} treats
that
+first frame as occurring 10 seconds (= 300 * 1/30) after the start of the
video,
+even though it is the first frame.
+
+Setting a @code{start_time} value allows for padding/trimming at the
+start of the input. For example, you can set @code{start_time} to 0, to pad
the
+beginning with repeats of the first frame if a video stream starts after
+the audio stream,
