[FFmpeg-cvslog] lavfi/abuffersink: add sample_rates field to AVABufferSinkParams

Stefano Sabatini git at videolan.org
Sun Feb 24 23:46:07 CET 2013


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Sun Feb  3 19:33:58 2013 +0100| [b59cd089ffd6fc976dca28649ad6c5d9f03b4569] | committer: Stefano Sabatini

lavfi/abuffersink: add sample_rates field to AVABufferSinkParams

Allow to select sample rates.

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

 doc/APIchanges            |    3 +++
 libavfilter/buffersink.h  |    1 +
 libavfilter/sink_buffer.c |   14 ++++++++++++++
 libavfilter/version.h     |    2 +-
 4 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index ca52aa4..8535d9f 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil:     2012-10-22
 
 API changes, most recent first:
 
+2013-02-24 - xxxxxx - lavfi 3.41.100 - buffersink.h
+  Add sample_rates field to AVABufferSinkParams.
+
 2013-01-17 - a1a707f - lavf 54.61.100
   Add av_codec_get_tag2().
 
diff --git a/libavfilter/buffersink.h b/libavfilter/buffersink.h
index 825a36a..6f8ac5c 100644
--- a/libavfilter/buffersink.h
+++ b/libavfilter/buffersink.h
@@ -48,6 +48,7 @@ typedef struct {
     const int64_t *channel_layouts;         ///< list of allowed channel layouts, terminated by -1
     const int *channel_counts;              ///< list of allowed channel counts, terminated by -1
     int all_channel_counts;                 ///< if not 0, accept any channel count or layout
+    int *sample_rates;                      ///< list of allowed sample rates, terminated by -1
 } AVABufferSinkParams;
 
 /**
diff --git a/libavfilter/sink_buffer.c b/libavfilter/sink_buffer.c
index 0edf9c5..ea0cf06 100644
--- a/libavfilter/sink_buffer.c
+++ b/libavfilter/sink_buffer.c
@@ -62,6 +62,7 @@ typedef struct {
     enum AVSampleFormat *sample_fmts;       ///< list of accepted sample formats, terminated by AV_SAMPLE_FMT_NONE
     int64_t *channel_layouts;               ///< list of accepted channel layouts, terminated by -1
     int all_channel_counts;
+    int *sample_rates;                      ///< list of accepted sample rates, terminated by -1
 } BufferSinkContext;
 
 #define FIFO_INIT_SIZE 8
@@ -303,6 +304,11 @@ static av_cold int asink_init(AVFilterContext *ctx, const char *args, void *opaq
         if (!buf->sample_fmts)
             return AVERROR(ENOMEM);
     }
+    if (params && params->sample_rates) {
+        buf->sample_rates = ff_copy_int_list(params->sample_rates);
+        if (!buf->sample_rates)
+            return AVERROR(ENOMEM);
+    }
     if (params && (params->channel_layouts || params->channel_counts)) {
         if (params->all_channel_counts) {
             av_log(ctx, AV_LOG_ERROR,
@@ -324,6 +330,7 @@ static av_cold void asink_uninit(AVFilterContext *ctx)
     BufferSinkContext *buf = ctx->priv;
 
     av_freep(&buf->sample_fmts);
+    av_freep(&buf->sample_rates);
     av_freep(&buf->channel_layouts);
     common_uninit(ctx);
 }
@@ -348,6 +355,13 @@ static int asink_query_formats(AVFilterContext *ctx)
         ff_set_common_channel_layouts(ctx, layouts);
     }
 
+    if (buf->sample_rates) {
+        formats = ff_make_format_list(buf->sample_rates);
+        if (!formats)
+            return AVERROR(ENOMEM);
+        ff_set_common_samplerates(ctx, formats);
+    }
+
     return 0;
 }
 
diff --git a/libavfilter/version.h b/libavfilter/version.h
index a6a2024..93bdf91 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -29,7 +29,7 @@
 #include "libavutil/avutil.h"
 
 #define LIBAVFILTER_VERSION_MAJOR  3
-#define LIBAVFILTER_VERSION_MINOR  40
+#define LIBAVFILTER_VERSION_MINOR  41
 #define LIBAVFILTER_VERSION_MICRO 100
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \



More information about the ffmpeg-cvslog mailing list