From 9d30a96aa14477afc06c8d2a29ba292c7187624e Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Sat, 19 May 2012 18:50:10 +0200
Subject: [PATCH] ffmpeg: inject a aresample filter for -async

Based on similar code from anton

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 ffmpeg.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/ffmpeg.c b/ffmpeg.c
index cb0ac1a5121..860dad7ea49 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -867,6 +867,29 @@ static int configure_audio_filters(FilterGraph *fg, AVFilterContext **in_filter,
         *out_filter = format;
     }
 
+    if (audio_sync_method > 0) {
+        AVFilterContext *aswr;
+        char args[256] = {0};
+
+        av_strlcatf(args, sizeof(args), "min_comp=0.001:min_hard_comp=%f", audio_drift_threshold);
+
+        if (audio_sync_method > 1)
+            av_strlcatf(args, sizeof(args), ":max_soft_comp=%f", audio_sync_method/(double)icodec->sample_rate);
+
+        av_log(NULL, AV_LOG_INFO, "-async %d is forwarded to lavfi similarly to -af aresample=%s\n", audio_sync_method, args);
+
+        ret = avfilter_graph_create_filter(&aswr, avfilter_get_by_name("aresample"),
+                                           "aresample", args, NULL, fg->graph);
+        if (ret < 0)
+            return ret;
+
+        ret = avfilter_link(*in_filter, 0, aswr, 0);
+        if (ret < 0)
+            return ret;
+
+        *in_filter = aswr;
+    }
+
 #define AUTO_INSERT_FILTER(opt_name, filter_name, arg) do {                 \
     AVFilterContext *filt_ctx;                                              \
                                                                             \
-- 
GitLab