lavfi/abuffersink: add sample_rates field to AVABufferSinkParams
Allow to select sample rates.
This commit is contained in:
parent
5085b46496
commit
b59cd089ff
4 changed files with 19 additions and 1 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue