Module: libav
Branch: master
Commit: aac7d6b284c3976eb0c48d61f342f008fb6e4103

Author:    Anton Khirnov <[email protected]>
Committer: Anton Khirnov <[email protected]>
Date:      Fri Jan  8 12:29:38 2016 +0100

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 02cb8b4..c151ad5 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, &params);
+    }
+
     av_fifo_free(ctx->timestamps);
     av_fifo_free(ctx->pending);
     av_fifo_free(ctx->ready);

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to