From aac7d6b284c3976eb0c48d61f342f008fb6e4103 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 8 Jan 2016 12:29:38 +0100 Subject: nvenc: flush the encoder before closing it, as required by the docs Otherwise, closing the encoder can crash. --- libavcodec/nvenc.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index 02cb8b4225..c151ad5055 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -825,6 +825,14 @@ av_cold int ff_nvenc_encode_close(AVCodecContext *avctx) NV_ENCODE_API_FUNCTION_LIST *nv = &ctx->nvel.nvenc_funcs; int i; + /* the encoder has to be flushed before it can be closed */ + if (ctx->nvenc_ctx) { + NV_ENC_PIC_PARAMS params = { .version = NV_ENC_PIC_PARAMS_VER, + .encodePicFlags = NV_ENC_PIC_FLAG_EOS }; + + nv->nvEncEncodePicture(ctx->nvenc_ctx, ¶ms); + } + av_fifo_free(ctx->timestamps); av_fifo_free(ctx->pending); av_fifo_free(ctx->ready); -- cgit v1.2.3