vd_lavc: Support hwaccel 1.2 and later

Hwaccel 1.2 populates only the third data field and assumes
that the AVCodecContext is available to the dealloc function.
This commit is contained in:
Luca Barbato 2014-03-23 19:20:43 +01:00
parent c78b8b2c0c
commit 5cbfdac2a8
1 changed files with 4 additions and 4 deletions

View File

@ -395,6 +395,9 @@ static void uninit_avctx(struct dec_video *vd)
vd_ffmpeg_ctx *ctx = vd->priv;
AVCodecContext *avctx = ctx->avctx;
if (ctx->hwdec && ctx->hwdec->uninit)
ctx->hwdec->uninit(ctx);
if (avctx) {
if (avctx->codec && avcodec_close(avctx) < 0)
MP_ERR(vd, "Could not close codec.\n");
@ -405,9 +408,6 @@ static void uninit_avctx(struct dec_video *vd)
av_freep(&ctx->avctx);
if (ctx->hwdec && ctx->hwdec->uninit)
ctx->hwdec->uninit(ctx);
av_frame_free(&ctx->pic);
}
@ -590,7 +590,7 @@ static int decode(struct dec_video *vd, struct demux_packet *packet,
av_frame_unref(ctx->pic);
if (!mpi)
return 0;
assert(mpi->planes[0]);
assert(mpi->planes[0] || mpi->planes[3]);
mp_image_set_params(mpi, &params);
if (ctx->hwdec && ctx->hwdec->process_image)