From 16ddcae4e39e21bff4a88018a6ebffa0dd5b9c92 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Wed, 18 Apr 2012 16:13:57 -0400 Subject: x264enc: Report latency base on x264 buffer size --- ext/x264/gstx264enc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'ext/x264/gstx264enc.c') diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c index 5c0018e3..ac7e620a 100644 --- a/ext/x264/gstx264enc.c +++ b/ext/x264/gstx264enc.c @@ -1476,6 +1476,15 @@ gst_x264_enc_set_src_caps (GstX264Enc * encoder, GstCaps * caps) return TRUE; } +static void +gst_x264_enc_set_latency (GstX264Enc * encoder) +{ + GstVideoInfo *info = &encoder->input_state->info; + GstClockTime latency = gst_util_uint64_scale (GST_SECOND * info->fps_d, + x264_encoder_maximum_delayed_frames (encoder->x264enc), info->fps_n); + gst_video_encoder_set_latency (GST_VIDEO_ENCODER (encoder), latency, latency); +} + static gboolean gst_x264_enc_set_format (GstVideoEncoder * video_enc, GstVideoCodecState * state) @@ -1647,6 +1656,8 @@ gst_x264_enc_set_format (GstVideoEncoder * video_enc, return FALSE; } + gst_x264_enc_set_latency (encoder); + return TRUE; } @@ -1757,6 +1768,7 @@ gst_x264_enc_encode_frame (GstX264Enc * encoder, x264_picture_t * pic_in, encoder->reconfig = FALSE; if (x264_encoder_reconfig (encoder->x264enc, &encoder->x264param) < 0) GST_WARNING_OBJECT (encoder, "Could not reconfigure"); + gst_x264_enc_set_latency (encoder); } if (pic_in && input_frame) { -- cgit v1.2.3