[FFmpeg-cvslog] avcodec/nvenc: enable nvenc encoder instance reuse

Pavel Koshevoy git at videolan.org
Fri Jun 15 16:43:44 EEST 2018


ffmpeg | branch: master | Pavel Koshevoy <pkoshevoy at gmail.com> | Thu Jun  7 09:08:15 2018 -0600| [f7d117b4846477852076d28d09db93cce7a697f8] | committer: Timo Rothenpieler

avcodec/nvenc: enable nvenc encoder instance reuse

Signed-off-by: Timo Rothenpieler <timo at rothenpieler.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f7d117b4846477852076d28d09db93cce7a697f8
---

 libavcodec/nvenc.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
index b4186c0bec..cfa7268a5e 100644
--- a/libavcodec/nvenc.c
+++ b/libavcodec/nvenc.c
@@ -2051,8 +2051,16 @@ int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame)
     if ((!ctx->cu_context && !ctx->d3d11_device) || !ctx->nvencoder)
         return AVERROR(EINVAL);
 
-    if (ctx->encoder_flushing)
-        return AVERROR_EOF;
+    if (ctx->encoder_flushing) {
+        if (avctx->internal->draining)
+            return AVERROR_EOF;
+
+        ctx->encoder_flushing = 0;
+        ctx->first_packet_output = 0;
+        ctx->initial_pts[0] = AV_NOPTS_VALUE;
+        ctx->initial_pts[1] = AV_NOPTS_VALUE;
+        av_fifo_reset(ctx->timestamp_list);
+    }
 
     if (frame) {
         in_surf = get_free_frame(ctx);



More information about the ffmpeg-cvslog mailing list