[FFmpeg-devel] [PATCH 4/7] Extend buffer source to accept the time base for the output PTS.

Stefano Sabatini stefano.sabatini-lala
Wed Jul 21 17:58:34 CEST 2010


---
 ffmpeg.c                  |    5 +++--
 libavfilter/vsrc_buffer.c |    7 +++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/ffmpeg.c b/ffmpeg.c
index af6f9db..08acd8a 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -414,8 +414,9 @@ static int configure_filters(AVInputStream *ist, AVOutputStream *ost)
     if (!(ist->out_video_filter = avfilter_open(&output_filter, "out")))
         return -1;
 
-    snprintf(args, 255, "%d:%d:%d", ist->st->codec->width,
-             ist->st->codec->height, ist->st->codec->pix_fmt);
+    snprintf(args, 255, "%d:%d:%d:%d:%d", ist->st->codec->width,
+             ist->st->codec->height, ist->st->codec->pix_fmt,
+             ist->st->time_base.num, ist->st->time_base.den);
     if (avfilter_init_filter(ist->input_video_filter, args, NULL))
         return -1;
     if (avfilter_init_filter(ist->out_video_filter, NULL, &codec->pix_fmt))
diff --git a/libavfilter/vsrc_buffer.c b/libavfilter/vsrc_buffer.c
index 08f25ed..55ee8d9 100644
--- a/libavfilter/vsrc_buffer.c
+++ b/libavfilter/vsrc_buffer.c
@@ -25,6 +25,7 @@
 
 #include "avfilter.h"
 #include "vsrc_buffer.h"
+#include "internal.h"
 
 typedef struct {
     int64_t           pts;
@@ -32,6 +33,7 @@ typedef struct {
     int               has_frame;
     int               h, w;
     enum PixelFormat  pix_fmt;
+    AVRational        time_base;     ///< time_base used for expressing the PTS
     AVRational        pixel_aspect;
 } BufferSourceContext;
 
@@ -63,10 +65,10 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
 {
     BufferSourceContext *c = ctx->priv;
 
-    if (args && sscanf(args, "%d:%d:%d", &c->w, &c->h, &c->pix_fmt) == 3)
+    if (args && sscanf(args, "%d:%d:%d:%d:%d", &c->w, &c->h, &c->pix_fmt, &c->time_base.num, &c->time_base.den) == 5)
         return 0;
 
-    av_log(ctx, AV_LOG_ERROR, "init() expected 3 arguments:'%s'\n", args);
+    av_log(ctx, AV_LOG_ERROR, "init() expected 5 arguments:'%s'\n", args);
     return -1;
 }
 
@@ -85,6 +87,7 @@ static int config_props(AVFilterLink *link)
 
     link->w = c->w;
     link->h = c->h;
+    link_spad(link).time_base = c->time_base;
 
     return 0;
 }
-- 
1.6.0.4




More information about the ffmpeg-devel mailing list