X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Faf_aresample.c;h=422194508ba8ff9e5c3395e394c67d5b5b2ae54f;hb=b2bc48ae22969256334988238f284c78e73c89e4;hp=81f326ff474ba44b44ad6fb9b087d975436e493b;hpb=87dced8074cf83e74e69d7dee725c8d62601c4e8;p=ffmpeg diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c index 81f326ff474..422194508ba 100644 --- a/libavfilter/af_aresample.c +++ b/libavfilter/af_aresample.c @@ -24,6 +24,7 @@ * resampling audio filter */ +#include "libavutil/audioconvert.h" #include "libavutil/avstring.h" #include "libavutil/opt.h" #include "libavutil/samplefmt.h" @@ -40,7 +41,7 @@ typedef struct { int req_fullfilled; } AResampleContext; -static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque) +static av_cold int init(AVFilterContext *ctx, const char *args) { AResampleContext *aresample = ctx->priv; int ret = 0; @@ -112,7 +113,7 @@ static int query_formats(AVFilterContext *ctx) if(out_format != AV_SAMPLE_FMT_NONE) { out_formats = ff_make_format_list((int[]){ out_format, -1 }); } else - out_formats = avfilter_make_all_formats(AVMEDIA_TYPE_AUDIO); + out_formats = ff_all_formats(AVMEDIA_TYPE_AUDIO); ff_formats_ref(out_formats, &outlink->in_formats); if(out_layout) { @@ -160,19 +161,21 @@ static int config_output(AVFilterLink *outlink) av_get_channel_layout_string(inchl_buf, sizeof(inchl_buf), -1, inlink ->channel_layout); av_get_channel_layout_string(outchl_buf, sizeof(outchl_buf), -1, outlink->channel_layout); - av_log(ctx, AV_LOG_INFO, "chl:%s fmt:%s r:%"PRId64"Hz -> chl:%s fmt:%s r:%"PRId64"Hz\n", + + av_log(ctx, AV_LOG_VERBOSE, "chl:%s fmt:%s r:%dHz -> chl:%s fmt:%s r:%dHz\n", inchl_buf, av_get_sample_fmt_name(inlink->format), inlink->sample_rate, outchl_buf, av_get_sample_fmt_name(outlink->format), outlink->sample_rate); return 0; } -static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamplesref) +static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamplesref) { AResampleContext *aresample = inlink->dst->priv; const int n_in = insamplesref->audio->nb_samples; int n_out = n_in * aresample->ratio * 2 ; AVFilterLink *const outlink = inlink->dst->outputs[0]; AVFilterBufferRef *outsamplesref = ff_get_audio_buffer(outlink, AV_PERM_WRITE, n_out); + int ret; avfilter_copy_buffer_ref_props(outsamplesref, insamplesref); @@ -191,15 +194,16 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamplesref if (n_out <= 0) { avfilter_unref_buffer(outsamplesref); avfilter_unref_buffer(insamplesref); - return; + return 0; } outsamplesref->audio->sample_rate = outlink->sample_rate; outsamplesref->audio->nb_samples = n_out; - ff_filter_samples(outlink, outsamplesref); + ret = ff_filter_samples(outlink, outsamplesref); aresample->req_fullfilled= 1; avfilter_unref_buffer(insamplesref); + return ret; } static int request_frame(AVFilterLink *outlink) @@ -211,7 +215,7 @@ static int request_frame(AVFilterLink *outlink) aresample->req_fullfilled = 0; do{ - ret = avfilter_request_frame(ctx->inputs[0]); + ret = ff_request_frame(ctx->inputs[0]); }while(!aresample->req_fullfilled && ret>=0); if (ret == AVERROR_EOF) {