Browse Source

setpts: add FRAME_RATE constant

Useful for dealing with constant frame-rate video.

(cherry picked from ffmpeg commit 722762f7e1)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
tags/n3.0
Stefano Sabatini Anton Khirnov 10 years ago
parent
commit
018bdaed37
2 changed files with 12 additions and 0 deletions
  1. +3
    -0
      doc/filters.texi
  2. +9
    -0
      libavfilter/setpts.c

+ 3
- 0
doc/filters.texi View File

@@ -209,6 +209,9 @@ The expression is evaluated through the eval API and can contain the following
constants:

@table @option
@item FRAME_RATE
frame rate, only defined for constant frame-rate video

@item PTS
the presentation timestamp in input



+ 9
- 0
libavfilter/setpts.c View File

@@ -41,6 +41,7 @@

static const char *const var_names[] = {
"E", ///< Euler number
"FRAME_RATE", ///< defined only for constant frame-rate video
"INTERLACED", ///< tell if the current frame is interlaced
"N", ///< frame / sample number (starting at zero)
"PHI", ///< golden ratio
@@ -59,6 +60,7 @@ static const char *const var_names[] = {

enum var_name {
VAR_E,
VAR_FRAME_RATE,
VAR_INTERLACED,
VAR_N,
VAR_PHI,
@@ -115,6 +117,13 @@ static int config_input(AVFilterLink *inlink)
setpts->var_values[VAR_SR] = inlink->sample_rate;
}

setpts->var_values[VAR_FRAME_RATE] = inlink->frame_rate.num &&
inlink->frame_rate.den ?
av_q2d(inlink->frame_rate) : NAN;

// Indicate the output can be variable framerate.
inlink->frame_rate = (AVRational){1, 0};

av_log(inlink->src, AV_LOG_VERBOSE, "TB:%f\n", setpts->var_values[VAR_TB]);
return 0;
}


Loading…
Cancel
Save