X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Favf_aphasemeter.c;h=be0b2fb70f5a7fd5e038be7d744501392d867eb8;hb=4ebfc13c338423cf48f1a1266c890422367f7775;hp=ed837059eaaa36a6691971e7d8248851eb3233f6;hpb=d6b62ce1aced9e2456582870382f384581cc7cbb;p=ffmpeg diff --git a/libavfilter/avf_aphasemeter.c b/libavfilter/avf_aphasemeter.c index ed837059eaa..be0b2fb70f5 100644 --- a/libavfilter/avf_aphasemeter.c +++ b/libavfilter/avf_aphasemeter.c @@ -106,7 +106,7 @@ static int config_input(AVFilterLink *inlink) int nb_samples; if (s->do_video) { - nb_samples = FFMAX(1024, ((double)inlink->sample_rate / av_q2d(s->frame_rate)) + 0.5); + nb_samples = FFMAX(1, av_rescale(inlink->sample_rate, s->frame_rate.den, s->frame_rate.num)); inlink->partial_buf_size = inlink->min_samples = inlink->max_samples = nb_samples; @@ -213,8 +213,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) } if (s->do_video) { + AVFrame *clone; + s->out->pts = in->pts; - ff_filter_frame(outlink, av_frame_clone(s->out)); + clone = av_frame_clone(s->out); + if (!clone) + return AVERROR(ENOMEM); + ff_filter_frame(outlink, clone); } return ff_filter_frame(aoutlink, in); }