summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2017-06-08 12:51:50 +0200
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>2017-06-08 13:21:42 +0200
commit94b41c8d3873aeea34d9a3a9214120509847940c (patch)
tree5d63f7f7e1a68360dcb507c88a910e40ac8bf7de
parentf8afb1eea475d2d77b5b660609a0f02da401636f (diff)
libs: encoder: set framerate if bigger than 0/1
Just set the framerate parameter if the framerate numerator and denominator are bigger than zero. Otherwise, in Intel Gen6 driver, a warning is raised disabling the bitrate control. Original-patch-by: Hyunjun Ko <zzoon@igalia.com> https://bugzilla.gnome.org/show_bug.cgi?id=783532
-rw-r--r--gst-libs/gst/vaapi/gstvaapiencoder.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapiencoder.c b/gst-libs/gst/vaapi/gstvaapiencoder.c
index b416c850..fb2d5dd8 100644
--- a/gst-libs/gst/vaapi/gstvaapiencoder.c
+++ b/gst-libs/gst/vaapi/gstvaapiencoder.c
@@ -803,14 +803,18 @@ gst_vaapi_encoder_reconfigure_internal (GstVaapiEncoder * encoder)
GstVaapiEncoderStatus status;
GstVaapiVideoPool *pool;
guint codedbuf_size, target_percentage, quality_level_max = 0;
+ guint fps_d, fps_n;
+
+ fps_d = GST_VIDEO_INFO_FPS_D (vip);
+ fps_n = GST_VIDEO_INFO_FPS_N (vip);
/* Generate a keyframe every second */
if (!encoder->keyframe_period)
- encoder->keyframe_period = (vip->fps_n + vip->fps_d - 1) / vip->fps_d;
+ encoder->keyframe_period = (fps_n + fps_d - 1) / fps_d;
/* Default frame rate parameter */
- GST_VAAPI_ENCODER_VA_FRAME_RATE (encoder).framerate =
- (guint) GST_VIDEO_INFO_FPS_D (vip) << 16 | GST_VIDEO_INFO_FPS_N (vip);
+ if (fps_d > 0 && fps_n > 0)
+ GST_VAAPI_ENCODER_VA_FRAME_RATE (encoder).framerate = fps_d << 16 | fps_n;
target_percentage =
(GST_VAAPI_ENCODER_RATE_CONTROL (encoder) == GST_VAAPI_RATECONTROL_CBR) ?