diff --git a/sub/sd_lavc.c b/sub/sd_lavc.c index dda6ac4f1c..7fa798dd66 100644 --- a/sub/sd_lavc.c +++ b/sub/sd_lavc.c @@ -102,8 +102,7 @@ static int init(struct sd *sd) ctx = avcodec_alloc_context3(sub_codec); if (!ctx) goto error; - ctx->extradata_size = sd->extradata_len; - ctx->extradata = sd->extradata; + mp_lavc_set_extradata(ctx, sd->extradata, sd->extradata_len); if (avcodec_open2(ctx, sub_codec, NULL) < 0) goto error; priv->avctx = ctx; @@ -259,6 +258,7 @@ static void uninit(struct sd *sd) clear(priv); avcodec_close(priv->avctx); + av_free(priv->avctx->extradata); av_free(priv->avctx); talloc_free(priv); }