X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Ff_ebur128.c;h=f9da80d1cf82cb5436c49a36c0812a3feb0c13db;hb=83ab46a57e4b8c647366bf81679891164e215a00;hp=5424276ea0d2dd20d0769b4acdf5cd2f13683537;hpb=c73fcc8de3e314304819eed89216727a20e5e8a0;p=ffmpeg diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c index 5424276ea0d..f9da80d1cf8 100644 --- a/libavfilter/f_ebur128.c +++ b/libavfilter/f_ebur128.c @@ -30,9 +30,9 @@ #include -#include "libavutil/audioconvert.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavutil/channel_layout.h" #include "libavutil/xga_font_data.h" #include "libavutil/opt.h" #include "libavutil/timestamp.h" @@ -436,7 +436,7 @@ static int gate_update(struct integrator *integ, double power, return gate_hist_pos; } -static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples) +static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *insamples) { int i, ch; AVFilterContext *ctx = inlink->dst; @@ -625,9 +625,8 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples) /* set pts and push frame */ pic->pts = pts; - if ((ret = ff_start_frame(outlink, avfilter_ref_buffer(pic, ~AV_PERM_WRITE))) < 0 || - (ret = ff_draw_slice(outlink, 0, outlink->h, 1)) < 0 || - (ret = ff_end_frame(outlink)) < 0) + ret = ff_filter_frame(outlink, avfilter_ref_buffer(pic, ~AV_PERM_WRITE)); + if (ret < 0) return ret; } @@ -638,7 +637,7 @@ static int filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamples) } } - return ff_filter_samples(ctx->outputs[ebur128->do_video], insamples); + return ff_filter_frame(ctx->outputs[ebur128->do_video], insamples); } static int query_formats(AVFilterContext *ctx) @@ -649,9 +648,9 @@ static int query_formats(AVFilterContext *ctx) AVFilterLink *inlink = ctx->inputs[0]; AVFilterLink *outlink = ctx->outputs[0]; - static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_DBL, -1 }; + static const enum AVSampleFormat sample_fmts[] = { AV_SAMPLE_FMT_DBL, AV_SAMPLE_FMT_NONE }; static const int input_srate[] = {48000, -1}; // ITU-R BS.1770 provides coeff only for 48kHz - static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_RGB24, -1 }; + static const enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_NONE }; /* set input audio formats */ formats = ff_make_format_list(sample_fmts); @@ -728,6 +727,16 @@ static av_cold void uninit(AVFilterContext *ctx) avfilter_unref_bufferp(&ebur128->outpicref); } +static const AVFilterPad ebur128_inputs[] = { + { + .name = "default", + .type = AVMEDIA_TYPE_AUDIO, + .get_audio_buffer = ff_null_get_audio_buffer, + .filter_frame = filter_frame, + }, + { NULL } +}; + AVFilter avfilter_af_ebur128 = { .name = "ebur128", .description = NULL_IF_CONFIG_SMALL("EBU R128 scanner."), @@ -735,13 +744,7 @@ AVFilter avfilter_af_ebur128 = { .init = init, .uninit = uninit, .query_formats = query_formats, - - .inputs = (const AVFilterPad[]) { - { .name = "default", - .type = AVMEDIA_TYPE_AUDIO, - .get_audio_buffer = ff_null_get_audio_buffer, - .filter_samples = filter_samples, }, - { .name = NULL } - }, - .outputs = NULL, + .inputs = ebur128_inputs, + .outputs = NULL, + .priv_class = &ebur128_class, };