]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11177: [freeswitch-core] h264 vid tweaks #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 29 May 2018 19:04:41 +0000 (14:04 -0500)
committerMuteesa Fred <muteesafred@hotmail.com>
Tue, 24 Jul 2018 07:21:53 +0000 (07:21 +0000)
src/mod/applications/mod_av/avcodec.c

index 5994e48aba15ed392f0a5226be35fa75a19e2916..96e6b154f0c2c79f58c78c4c5d78416b0b4acf51 100644 (file)
@@ -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->encoder_ctx->bit_rate = context->bandwidth * 1024;
+       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) {