[FFmpeg-devel] [PATCH] lavfi/setpts: set framerate constant when defined
Stefano Sabatini
stefasab at gmail.com
Mon Sep 10 12:06:39 CEST 2012
Useful for constant frame-rate video.
TODO: bump micro
---
doc/filters.texi | 3 +++
libavfilter/f_setpts.c | 11 +++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 0b57eed..677c4fa 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -4194,6 +4194,9 @@ Accept in input an expression evaluated through the eval API, which
can contain the following constants:
@table @option
+ at item FRAME_RATE
+frame rate, only defined for constant frame-rate video
+
@item PTS
the presentation timestamp in input
diff --git a/libavfilter/f_setpts.c b/libavfilter/f_setpts.c
index 177d29b..61446c1 100644
--- a/libavfilter/f_setpts.c
+++ b/libavfilter/f_setpts.c
@@ -35,6 +35,7 @@
#include "video.h"
static const char *const var_names[] = {
+ "FRAME_RATE", ///< defined only for constant-frame-rate video
"INTERLACED", ///< tell if the current frame is interlaced
"N", ///< frame number (starting at zero)
"NB_CONSUMED_SAMPLES", ///< number of samples consumed by the filter (only audio)
@@ -54,6 +55,7 @@ static const char *const var_names[] = {
};
enum var_name {
+ VAR_FRAME_RATE,
VAR_INTERLACED,
VAR_N,
VAR_NB_CONSUMED_SAMPLES,
@@ -107,8 +109,13 @@ static int config_input(AVFilterLink *inlink)
if (setpts->type == AVMEDIA_TYPE_AUDIO)
setpts->var_values[VAR_SAMPLE_RATE] = inlink->sample_rate;
- av_log(inlink->src, AV_LOG_VERBOSE, "TB:%f SAMPLE_RATE:%f\n",
- setpts->var_values[VAR_TB], setpts->var_values[VAR_SAMPLE_RATE]);
+ setpts->var_values[VAR_FRAME_RATE] = inlink->frame_rate.num && inlink->frame_rate.den ?
+ av_q2d(inlink->frame_rate) : NAN;
+
+ av_log(inlink->src, AV_LOG_VERBOSE, "TB:%f FRAME_RATE:%f SAMPLE_RATE:%f\n",
+ setpts->var_values[VAR_TB],
+ setpts->var_values[VAR_FRAME_RATE],
+ setpts->var_values[VAR_SAMPLE_RATE]);
return 0;
}
--
1.7.5.4
More information about the ffmpeg-devel
mailing list