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;
}
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);
}
{
AudioPhaseMeterContext *s = ctx->priv;
AVFilterPad pad;
+ int ret;
pad = (AVFilterPad){
.name = av_strdup("out0"),
};
if (!pad.name)
return AVERROR(ENOMEM);
- ff_insert_outpad(ctx, 0, &pad);
+ ret = ff_insert_outpad(ctx, 0, &pad);
+ if (ret < 0) {
+ av_freep(&pad.name);
+ return ret;
+ }
if (s->do_video) {
pad = (AVFilterPad){
};
if (!pad.name)
return AVERROR(ENOMEM);
- ff_insert_outpad(ctx, 1, &pad);
+ ret = ff_insert_outpad(ctx, 1, &pad);
+ if (ret < 0) {
+ av_freep(&pad.name);
+ return ret;
+ }
}
return 0;