diff options
author | Pavel Koshevoy <pkoshevoy@gmail.com> | 2018-06-07 09:08:15 -0600 |
---|---|---|
committer | Timo Rothenpieler <timo@rothenpieler.org> | 2018-06-15 11:18:47 +0200 |
commit | f7d117b4846477852076d28d09db93cce7a697f8 (patch) | |
tree | 75faa539cfbe7dd6b4146acf4092eff68a89d825 | |
parent | 29cddc99cd8302e462bbae572e885e88f63d6dc3 (diff) |
avcodec/nvenc: enable nvenc encoder instance reuse
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
-rw-r--r-- | libavcodec/nvenc.c | 12 |
1 files 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); |