[FFmpeg-cvslog] libavfilter: src_buffer, use only aresample, not aconvert.

Michael Niedermayer git at videolan.org
Thu May 17 04:12:58 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Thu May 17 02:38:14 2012 +0200| [664f0aac62e060d7a28beb7c04d8ca9e35e5e05f] | committer: Michael Niedermayer

libavfilter: src_buffer, use only aresample, not aconvert.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=664f0aac62e060d7a28beb7c04d8ca9e35e5e05f
---

 libavfilter/src_buffer.c |   34 +++++++++-------------------------
 1 file changed, 9 insertions(+), 25 deletions(-)

diff --git a/libavfilter/src_buffer.c b/libavfilter/src_buffer.c
index 8f27ea0..33b3ec7 100644
--- a/libavfilter/src_buffer.c
+++ b/libavfilter/src_buffer.c
@@ -215,19 +215,25 @@ static int check_format_change_audio(AVFilterContext *ctx,
     int ret, logged = 0;
 
     link = ctx->outputs[0];
-    if (samplesref->audio->sample_rate != link->sample_rate) {
+    if (samplesref->audio->sample_rate    != link->sample_rate    ||
+        samplesref->format                != link->format         ||
+        samplesref->audio->channel_layout != link->channel_layout) {
 
         log_input_change(ctx, link, samplesref);
         logged = 1;
 
-        abuffer->sample_rate = samplesref->audio->sample_rate;
+        abuffer->sample_rate    = samplesref->audio->sample_rate;
+        abuffer->sample_format  = samplesref->format;
+        abuffer->channel_layout = samplesref->audio->channel_layout;
 
         if (!abuffer->aresample) {
             ret = insert_filter(abuffer, link, &abuffer->aresample, "aresample");
             if (ret < 0) return ret;
         } else {
             link = abuffer->aresample->outputs[0];
-            if (samplesref->audio->sample_rate == link->sample_rate)
+            if (samplesref->audio->sample_rate    == link->sample_rate    &&
+                samplesref->format                == link->format         &&
+                samplesref->audio->channel_layout == link->channel_layout)
                 remove_filter(&abuffer->aresample);
             else
                 if ((ret = reconfigure_filter(abuffer, abuffer->aresample)) < 0)
@@ -235,28 +241,6 @@ static int check_format_change_audio(AVFilterContext *ctx,
         }
     }
 
-    link = ctx->outputs[0];
-    if (samplesref->format                != link->format         ||
-        samplesref->audio->channel_layout != link->channel_layout) {
-
-        if (!logged) log_input_change(ctx, link, samplesref);
-
-        abuffer->sample_format  = samplesref->format;
-        abuffer->channel_layout = samplesref->audio->channel_layout;
-
-        if (!abuffer->aconvert) {
-            ret = insert_filter(abuffer, link, &abuffer->aconvert, "aconvert");
-            if (ret < 0) return ret;
-        } else {
-            link = abuffer->aconvert->outputs[0];
-            if (samplesref->format                == link->format         &&
-                samplesref->audio->channel_layout == link->channel_layout)
-                remove_filter(&abuffer->aconvert);
-            else
-                if ((ret = reconfigure_filter(abuffer, abuffer->aconvert)) < 0)
-                    return ret;
-        }
-    }
 
     return 0;
 }



More information about the ffmpeg-cvslog mailing list