summaryrefslogtreecommitdiff
path: root/ext/x264/gstx264enc.c
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2012-04-18 16:13:57 -0400
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-06-18 16:01:20 +0100
commit16ddcae4e39e21bff4a88018a6ebffa0dd5b9c92 (patch)
tree10d48946f6917d0e789f5b143ede7e909144ef2f /ext/x264/gstx264enc.c
parent4fbb1a042eb5d8567bffc8f4dd2fbbaa724900ac (diff)
x264enc: Report latency base on x264 buffer size
Diffstat (limited to 'ext/x264/gstx264enc.c')
-rw-r--r--ext/x264/gstx264enc.c12
1 files changed, 12 insertions, 0 deletions
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) {