mirror of
https://github.com/mpv-player/mpv
synced 2025-02-16 20:27:23 +00:00
ad_lavc, vd_lavc, sd_lavc: consistently use avcodec_free_context()
Instead of various ad-hoc ways to achieve the same thing. (The API was added only later.)
This commit is contained in:
parent
aa2bdec26c
commit
d5702d3b95
@ -147,14 +147,8 @@ static void uninit(struct dec_audio *da)
|
||||
struct priv *ctx = da->priv;
|
||||
if (!ctx)
|
||||
return;
|
||||
AVCodecContext *lavc_context = ctx->avctx;
|
||||
|
||||
if (lavc_context) {
|
||||
if (avcodec_close(lavc_context) < 0)
|
||||
MP_ERR(da, "Could not close codec.\n");
|
||||
av_freep(&lavc_context->extradata);
|
||||
av_freep(&lavc_context);
|
||||
}
|
||||
avcodec_free_context(&ctx->avctx);
|
||||
av_frame_free(&ctx->avframe);
|
||||
}
|
||||
|
||||
|
@ -113,9 +113,7 @@ static int init(struct sd *sd)
|
||||
|
||||
error:
|
||||
MP_FATAL(sd, "Could not open libavcodec subtitle decoder\n");
|
||||
if (ctx)
|
||||
av_free(ctx->extradata);
|
||||
av_free(ctx);
|
||||
avcodec_free_context(&ctx);
|
||||
talloc_free(priv);
|
||||
return -1;
|
||||
}
|
||||
|
@ -664,11 +664,7 @@ static void uninit_avctx(struct dec_video *vd)
|
||||
av_frame_free(&ctx->pic);
|
||||
av_buffer_unref(&ctx->cached_hw_frames_ctx);
|
||||
|
||||
if (ctx->avctx) {
|
||||
if (avcodec_close(ctx->avctx) < 0)
|
||||
MP_ERR(vd, "Could not close codec.\n");
|
||||
av_freep(&ctx->avctx->extradata);
|
||||
}
|
||||
avcodec_free_context(&ctx->avctx);
|
||||
|
||||
if (ctx->hwdec_dev && ctx->hwdec && ctx->hwdec->generic_hwaccel &&
|
||||
ctx->hwdec_dev->destroy)
|
||||
|
Loading…
Reference in New Issue
Block a user