On 6/17/17 12:22 AM, Mark Thompson wrote: > --- > libavfilter/vf_hwmap.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavfilter/vf_hwmap.c b/libavfilter/vf_hwmap.c > index 48ebbb6bd..b28cb2145 100644 > --- a/libavfilter/vf_hwmap.c > +++ b/libavfilter/vf_hwmap.c > @@ -54,7 +54,7 @@ static int hwmap_config_output(AVFilterLink *outlink) > AVHWFramesContext *hwfc; > AVBufferRef *device; > const AVPixFmtDescriptor *desc; > - int err; > + int err, device_is_derived; > > av_log(avctx, AV_LOG_DEBUG, "Configure hwmap %s -> %s.\n", > av_get_pix_fmt_name(inlink->format), > @@ -63,6 +63,7 @@ static int hwmap_config_output(AVFilterLink *outlink) > av_buffer_unref(&ctx->hwframes_ref); > > device = avctx->hw_device_ctx; > + device_is_derived = 0; > > if (inlink->hw_frames_ctx) { > hwfc = (AVHWFramesContext*)inlink->hw_frames_ctx->data; > @@ -84,6 +85,7 @@ static int hwmap_config_output(AVFilterLink *outlink) > "device context: %d.\n", err); > goto fail; > } > + device_is_derived = 1; > } > > desc = av_pix_fmt_desc_get(outlink->format); > @@ -238,9 +240,13 @@ static int hwmap_config_output(AVFilterLink *outlink) > outlink->w = inlink->w; > outlink->h = inlink->h; > > + if (device_is_derived) > + av_buffer_unref(&device); > return 0; > > fail: > + if (device_is_derived) > + av_buffer_unref(&device); > av_buffer_unref(&ctx->hwframes_ref); > return err; > } >
Seems ok. _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel