[FFmpeg-devel] [PATCH 05/10] buffersrc: accept the frame rate as argument.

Nicolas George nicolas.george at normalesup.org
Thu Jun 7 21:16:26 CEST 2012


Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
---
 doc/filters.texi        |    3 +++
 libavfilter/buffersrc.c |    7 +++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index acfea34..d4f8116 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -3176,6 +3176,9 @@ name.
 @item time_base
 Specify the timebase assumed by the timestamps of the buffered frames.
 
+ at item time_base
+Specify the frame rate expected for the video stream.
+
 @item pixel_aspect
 Specify the sample aspect ratio assumed by the video frames.
 
diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c
index cd6c1f0..6b78f81 100644
--- a/libavfilter/buffersrc.c
+++ b/libavfilter/buffersrc.c
@@ -42,6 +42,7 @@ typedef struct {
     const AVClass    *class;
     AVFifoBuffer     *fifo;
     AVRational        time_base;     ///< time_base to set in the output link
+    AVRational        frame_rate;    ///< frame_rate to set in the output link
     unsigned          nb_failed_requests;
 
     /* video only */
@@ -220,6 +221,7 @@ unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src)
 #define V AV_OPT_FLAG_VIDEO_PARAM
 static const AVOption video_options[] = {
     { "time_base",      NULL, OFFSET(time_base),           AV_OPT_TYPE_RATIONAL,   { 0 }, 0, INT_MAX, V },
+    { "frame_rate",     NULL, OFFSET(frame_rate),          AV_OPT_TYPE_RATIONAL,   { 0 }, 0, INT_MAX, V },
     { "video_size",     NULL, OFFSET(w),                   AV_OPT_TYPE_IMAGE_SIZE,           .flags = V },
     { "pix_fmt",        NULL, OFFSET(pix_fmt),             AV_OPT_TYPE_PIXEL_FMT,            .flags = V },
     { "pixel_aspect",   NULL, OFFSET(pixel_aspect),        AV_OPT_TYPE_RATIONAL,   { 0 }, 0, INT_MAX, V },
@@ -280,9 +282,9 @@ static av_cold int init_video(AVFilterContext *ctx, const char *args, void *opaq
         goto fail;
     }
 
-    av_log(ctx, AV_LOG_INFO, "w:%d h:%d pixfmt:%s tb:%d/%d sar:%d/%d sws_param:%s\n",
+    av_log(ctx, AV_LOG_INFO, "w:%d h:%d pixfmt:%s tb:%d/%d fr:%d/%d sar:%d/%d sws_param:%s\n",
            c->w, c->h, av_pix_fmt_descriptors[c->pix_fmt].name,
-           c->time_base.num, c->time_base.den,
+           c->time_base.num, c->time_base.den, c->frame_rate.num, c->frame_rate.den,
            c->pixel_aspect.num, c->pixel_aspect.den, (char *)av_x_if_null(c->sws_param, ""));
     return 0;
 
@@ -415,6 +417,7 @@ static int config_props(AVFilterLink *link)
     }
 
     link->time_base = c->time_base;
+    link->frame_rate = c->frame_rate;
     return 0;
 }
 
-- 
1.7.10



More information about the ffmpeg-devel mailing list