[FFmpeg-devel] [PATCH] lavfi/settb: factorize rescaling code in settb and asettb

Stefano Sabatini stefasab at gmail.com
Mon Jul 30 15:17:26 CEST 2012


---
 libavfilter/f_settb.c |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)

diff --git a/libavfilter/f_settb.c b/libavfilter/f_settb.c
index 9558d26..44ae231 100644
--- a/libavfilter/f_settb.c
+++ b/libavfilter/f_settb.c
@@ -99,6 +99,17 @@ static int config_output_props(AVFilterLink *outlink)
     return 0;
 }
 
+inline static void rescale_ref_time(AVFilterBufferRef *out, AVRational outtb,
+                                    const AVFilterBufferRef *in, AVRational intb,
+                                    void *log_ctx)
+{
+    out->pts = av_rescale_q(in->pts, intb, outtb);
+    av_log(log_ctx, AV_LOG_DEBUG,
+           "tb:%d/%d pts:%"PRId64" -> tb:%d/%d pts:%"PRId64"\n",
+           intb .num, intb .den, in ->pts,
+           outtb.num, outtb.den, out->pts);
+}
+
 static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
 {
     AVFilterContext *ctx = inlink->dst;
@@ -107,10 +118,8 @@ static int start_frame(AVFilterLink *inlink, AVFilterBufferRef *inpicref)
 
     if (av_cmp_q(inlink->time_base, outlink->time_base)) {
         outpicref = avfilter_ref_buffer(inpicref, ~0);
-        outpicref->pts = av_rescale_q(inpicref->pts, inlink->time_base, outlink->time_base);
-        av_log(ctx, AV_LOG_DEBUG, "tb:%d/%d pts:%"PRId64" -> tb:%d/%d pts:%"PRId64"\n",
-               inlink ->time_base.num, inlink ->time_base.den, inpicref ->pts,
-               outlink->time_base.num, outlink->time_base.den, outpicref->pts);
+        rescale_ref_time(outpicref, outlink->time_base,
+                         inpicref, inlink->time_base, ctx);
         avfilter_unref_buffer(inpicref);
     }
     inlink->cur_buf = NULL;
@@ -126,10 +135,8 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples)
 
     if (av_cmp_q(inlink->time_base, outlink->time_base)) {
         outsamples = avfilter_ref_buffer(insamples, ~0);
-        outsamples->pts = av_rescale_q(insamples->pts, inlink->time_base, outlink->time_base);
-        av_log(ctx, AV_LOG_DEBUG, "tb:%d/%d pts:%"PRId64" -> tb:%d/%d pts:%"PRId64"\n",
-               inlink ->time_base.num, inlink ->time_base.den, insamples ->pts,
-               outlink->time_base.num, outlink->time_base.den, outsamples->pts);
+        rescale_ref_time(outsamples, outlink->time_base,
+                         insamples, inlink->time_base, ctx);
         avfilter_unref_buffer(insamples);
     }
 
-- 
1.7.5.4



More information about the ffmpeg-devel mailing list