summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavfilter/avf_showspectrum.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavfilter/avf_showspectrum.c b/libavfilter/avf_showspectrum.c
index 3a3ef7eb31..a4dd7b7879 100644
--- a/libavfilter/avf_showspectrum.c
+++ b/libavfilter/avf_showspectrum.c
@@ -1365,6 +1365,8 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
s->xpos = 0;
if (!s->single_pic && (s->sliding != FULLFRAME || s->xpos == 0)) {
if (s->old_pts < outpicref->pts) {
+ AVFrame *clone;
+
if (s->legend) {
char *units = get_time(ctx, insamples->pts /(float)inlink->sample_rate, x);
if (!units)
@@ -1393,7 +1395,10 @@ static int plot_spectrum_column(AVFilterLink *inlink, AVFrame *insamples)
av_free(units);
}
s->old_pts = outpicref->pts;
- ret = ff_filter_frame(outlink, av_frame_clone(s->outpicref));
+ clone = av_frame_clone(s->outpicref);
+ if (!clone)
+ return AVERROR(ENOMEM);
+ ret = ff_filter_frame(outlink, clone);
if (ret < 0)
return ret;
return 0;