@@ -106,7 +106,7 @@ static constexpr const int DEFAULT_GOP_SIZE = 20;
106106static constexpr int DEFAULT_SLICE_COUNT = 32 ;
107107static constexpr string_view DONT_SET_PRESET = " dont_set_preset" ;
108108
109- #define DEFAULT_RC_BUF_SIZE_FACTOR 2.5
109+ #define DEFAULT_X26X_RC_BUF_SIZE_FACTOR 2.5
110110
111111namespace {
112112
@@ -1761,7 +1761,7 @@ static void configure_amf([[maybe_unused]] AVCodecContext *codec_ctx, [[maybe_un
17611761ADD_TO_PARAM (" lavc-h264-interlaced-dct" , " * lavc-h264-interlaced-dct\n "
17621762 " Use interlaced DCT for H.264\n " );
17631763ADD_TO_PARAM (" lavc-rc-buffer-size-factor" , " * lavc-rc-buffer-size-factor=<val>\n "
1764- " Multiplier how much can individual frame overshot average size (default: " TOSTRING(DEFAULT_RC_BUF_SIZE_FACTOR ) ").\n");
1764+ " Multiplier how much can individual frame overshot average size (default x264/5 : " TOSTRING(DEFAULT_X26X_RC_BUF_SIZE_FACTOR ) ", nvenc: 1 ).\n");
17651765static void configure_x264_x265 (AVCodecContext *codec_ctx, struct setparam_param *param)
17661766{
17671767 const char *tune = codec_ctx->codec ->id == AV_CODEC_ID_H264 ? " zerolatency,fastdecode" : " zerolatency" ; // x265 supports only single tune parameter
@@ -1771,7 +1771,7 @@ static void configure_x264_x265(AVCodecContext *codec_ctx, struct setparam_param
17711771 codec_ctx->rc_max_rate = codec_ctx->bit_rate ;
17721772 // codec_ctx->rc_min_rate = s->codec_ctx->bit_rate / 4 * 3;
17731773 // codec_ctx->rc_buffer_aggressivity = 1.0;
1774- double lavc_rc_buffer_size_factor = DEFAULT_RC_BUF_SIZE_FACTOR ;
1774+ double lavc_rc_buffer_size_factor = DEFAULT_X26X_RC_BUF_SIZE_FACTOR ;
17751775 if (const char *val = get_commandline_param (" lavc-rc-buffer-size-factor" )) {
17761776 lavc_rc_buffer_size_factor = stof (val);
17771777 }
@@ -1890,6 +1890,12 @@ static void configure_nvenc(AVCodecContext *codec_ctx, struct setparam_param *pa
18901890 check_av_opt_set<const char *>(codec_ctx->priv_data , " b_ref_mode" , " disabled" , 0 );
18911891 codec_ctx->rc_max_rate = codec_ctx->bit_rate ;
18921892 codec_ctx->rc_buffer_size = codec_ctx->rc_max_rate / param->desc .fps ;
1893+ if (const char *val = get_commandline_param (" lavc-rc-buffer-size-factor" )) {
1894+ codec_ctx->rc_buffer_size *= stof (val);
1895+ } else {
1896+ log_msg (LOG_LEVEL_WARNING, MOD_NAME " To reduce NVENC pulsation, you can try \" --param lavc-rc-buffer-size-factor=0\" "
1897+ " or a small number. 0 or higher value (than default 1) may cause frame drops on receiver.\n " );
1898+ }
18931899}
18941900
18951901static void configure_svt (AVCodecContext *codec_ctx, struct setparam_param *param)
0 commit comments