avcodec/nvenc: move reconfig_encoder call inside of push/pop ctx
authorTimo Rothenpieler <timo@rothenpieler.org>
Thu, 3 May 2018 16:57:40 +0000 (18:57 +0200)
committerTimo Rothenpieler <timo@rothenpieler.org>
Fri, 4 May 2018 21:35:38 +0000 (23:35 +0200)
Also make it void, it must not fail the encode anyway.

libavcodec/nvenc.c

index f3193f1..d61955c 100644 (file)
@@ -1948,7 +1948,7 @@ static int output_ready(AVCodecContext *avctx, int flush)
     return (nb_ready > 0) && (nb_ready + nb_pending >= ctx->async_depth);
 }
 
-static int reconfig_encoder(AVCodecContext *avctx, const AVFrame *frame)
+static void reconfig_encoder(AVCodecContext *avctx, const AVFrame *frame)
 {
     NvencContext *ctx = avctx->priv_data;
     NV_ENCODE_API_FUNCTION_LIST *p_nvenc = &ctx->nvenc_dload_funcs.nvenc_funcs;
@@ -2038,8 +2038,6 @@ static int reconfig_encoder(AVCodecContext *avctx, const AVFrame *frame)
 
         }
     }
-
-    return 0;
 }
 
 int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame)
@@ -2064,8 +2062,6 @@ int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame)
         return AVERROR_EOF;
 
     if (frame) {
-        reconfig_encoder(avctx, frame);
-
         in_surf = get_free_frame(ctx);
         if (!in_surf)
             return AVERROR(EAGAIN);
@@ -2074,6 +2070,8 @@ int ff_nvenc_send_frame(AVCodecContext *avctx, const AVFrame *frame)
         if (res < 0)
             return res;
 
+        reconfig_encoder(avctx, frame);
+
         res = nvenc_upload_frame(avctx, frame, in_surf);
 
         res2 = nvenc_pop_context(avctx);