From fe8c1be575e2e2f9d1268479538ea0b56dd8ad5a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 29 May 2018 14:04:41 -0500 Subject: [PATCH] FS-11177: [freeswitch-core] h264 vid tweaks #resolve --- src/mod/applications/mod_av/avcodec.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index 5994e48aba..96e6b154f0 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -829,7 +829,8 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt { int sane = 0; int threads = switch_core_cpu_count(); - + int fps = 15; + #ifdef NVENC_SUPPORT if (!context->encoder) { if (context->av_codec_id == AV_CODEC_ID_H264) { @@ -903,10 +904,21 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt } if (threads > 4) threads = 4; - context->bandwidth *= 4; + context->bandwidth *= 3; + + fps = context->codec_settings.video.fps; + + if (!fps) fps = 20; + context->encoder_ctx->bit_rate = context->bandwidth * 1024; - + context->encoder_ctx->rc_min_rate = context->encoder_ctx->bit_rate; + context->encoder_ctx->rc_max_rate = context->encoder_ctx->bit_rate; + context->encoder_ctx->rc_buffer_size = context->encoder_ctx->bit_rate; + context->encoder_ctx->qcompress = 0.6; + context->encoder_ctx->gop_size = fps * 2; + context->encoder_ctx->keyint_min = fps * 2; + context->encoder_ctx->width = context->codec_settings.video.width; context->encoder_ctx->height = context->codec_settings.video.height; /* frames per second */ @@ -915,9 +927,6 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt context->encoder_ctx->pix_fmt = AV_PIX_FMT_YUV420P; context->encoder_ctx->thread_count = threads; - context->encoder_ctx->rc_max_rate = context->bandwidth * 1024; - context->encoder_ctx->rc_buffer_size = context->bandwidth * 1024 * 4; - if (context->av_codec_id == AV_CODEC_ID_H263 || context->av_codec_id == AV_CODEC_ID_H263P) { #ifndef H263_MODE_B # if defined(__ICL) || defined (__INTEL_COMPILER) @@ -934,7 +943,6 @@ FF_DISABLE_DEPRECATION_WARNINGS context->encoder_ctx->rtp_callback = rtp_callback; FF_ENABLE_DEPRECATION_WARNINGS #endif - context->encoder_ctx->rc_min_rate = context->encoder_ctx->rc_max_rate; context->encoder_ctx->opaque = context; av_opt_set_int(context->encoder_ctx->priv_data, "mb_info", SLICE_SIZE - 8, 0); } else if (context->av_codec_id == AV_CODEC_ID_H264) {