Browse Source

lavfi/abuffersink: add sample_rates field to AVABufferSinkParams

Allow to select sample rates.
tags/n1.2
Stefano Sabatini 12 years ago
parent
commit
b59cd089ff
4 changed files with 19 additions and 1 deletions
  1. +3
    -0
      doc/APIchanges
  2. +1
    -0
      libavfilter/buffersink.h
  3. +14
    -0
      libavfilter/sink_buffer.c
  4. +1
    -1
      libavfilter/version.h

+ 3
- 0
doc/APIchanges View File

@@ -15,6 +15,9 @@ libavutil: 2012-10-22


API changes, most recent first: 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 2013-01-17 - a1a707f - lavf 54.61.100
Add av_codec_get_tag2(). Add av_codec_get_tag2().




+ 1
- 0
libavfilter/buffersink.h View File

@@ -48,6 +48,7 @@ typedef struct {
const int64_t *channel_layouts; ///< list of allowed channel layouts, terminated by -1 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 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 all_channel_counts; ///< if not 0, accept any channel count or layout
int *sample_rates; ///< list of allowed sample rates, terminated by -1
} AVABufferSinkParams; } AVABufferSinkParams;


/** /**


+ 14
- 0
libavfilter/sink_buffer.c View File

@@ -62,6 +62,7 @@ typedef struct {
enum AVSampleFormat *sample_fmts; ///< list of accepted sample formats, terminated by AV_SAMPLE_FMT_NONE 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 int64_t *channel_layouts; ///< list of accepted channel layouts, terminated by -1
int all_channel_counts; int all_channel_counts;
int *sample_rates; ///< list of accepted sample rates, terminated by -1
} BufferSinkContext; } BufferSinkContext;


#define FIFO_INIT_SIZE 8 #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) if (!buf->sample_fmts)
return AVERROR(ENOMEM); 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 && (params->channel_layouts || params->channel_counts)) {
if (params->all_channel_counts) { if (params->all_channel_counts) {
av_log(ctx, AV_LOG_ERROR, av_log(ctx, AV_LOG_ERROR,
@@ -324,6 +330,7 @@ static av_cold void asink_uninit(AVFilterContext *ctx)
BufferSinkContext *buf = ctx->priv; BufferSinkContext *buf = ctx->priv;


av_freep(&buf->sample_fmts); av_freep(&buf->sample_fmts);
av_freep(&buf->sample_rates);
av_freep(&buf->channel_layouts); av_freep(&buf->channel_layouts);
common_uninit(ctx); common_uninit(ctx);
} }
@@ -348,6 +355,13 @@ static int asink_query_formats(AVFilterContext *ctx)
ff_set_common_channel_layouts(ctx, layouts); 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; return 0;
} }




+ 1
- 1
libavfilter/version.h View File

@@ -29,7 +29,7 @@
#include "libavutil/avutil.h" #include "libavutil/avutil.h"


#define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MAJOR 3
#define LIBAVFILTER_VERSION_MINOR 40
#define LIBAVFILTER_VERSION_MINOR 41
#define LIBAVFILTER_VERSION_MICRO 100 #define LIBAVFILTER_VERSION_MICRO 100


#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \


Loading…
Cancel
Save