mirror of https://git.ffmpeg.org/ffmpeg.git
avfilter/vf_colorconstancy: av_frame_free(&in) in case of error or direct flag is false
Signed-off-by: Limin Wang <lance.lmwang@gmail.com> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
df625057af
commit
3a6ec10d90
|
@ -682,13 +682,16 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
||||||
AVFilterLink *outlink = ctx->outputs[0];
|
AVFilterLink *outlink = ctx->outputs[0];
|
||||||
AVFrame *out;
|
AVFrame *out;
|
||||||
int ret;
|
int ret;
|
||||||
|
int direct = 0;
|
||||||
|
|
||||||
ret = illumination_estimation(ctx, in);
|
ret = illumination_estimation(ctx, in);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
av_frame_free(&in);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (av_frame_is_writable(in)) {
|
if (av_frame_is_writable(in)) {
|
||||||
|
direct = 1;
|
||||||
out = in;
|
out = in;
|
||||||
} else {
|
} else {
|
||||||
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
out = ff_get_video_buffer(outlink, outlink->w, outlink->h);
|
||||||
|
@ -700,6 +703,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
|
||||||
}
|
}
|
||||||
chromatic_adaptation(ctx, in, out);
|
chromatic_adaptation(ctx, in, out);
|
||||||
|
|
||||||
|
if (!direct)
|
||||||
|
av_frame_free(&in);
|
||||||
|
|
||||||
return ff_filter_frame(outlink, out);
|
return ff_filter_frame(outlink, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue