diff --git a/video/decode/vd_lavc.c b/video/decode/vd_lavc.c index cdd0dd8884..9ce657bb5c 100644 --- a/video/decode/vd_lavc.c +++ b/video/decode/vd_lavc.c @@ -456,6 +456,7 @@ static void uninit_avctx(struct dec_video *vd) if (ctx->hwdec && ctx->hwdec->uninit) ctx->hwdec->uninit(ctx); + ctx->hwdec = NULL; av_freep(&ctx->avctx); diff --git a/video/decode/vdpau.c b/video/decode/vdpau.c index 9a3e7e27cf..f8375532fb 100644 --- a/video/decode/vdpau.c +++ b/video/decode/vdpau.c @@ -80,13 +80,9 @@ static int init(struct lavc_ctx *ctx) ctx->hwdec_priv = p; if (mp_vdpau_handle_preemption(p->mpvdp, &p->preemption_counter) < 1) - goto error; + return -1; return 0; - -error: - uninit(ctx); - return -1; } static int probe(struct vd_lavc_hwdec *hwdec, struct mp_hwdec_info *info,