x264enc: Request buffers in allocation query
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Tue, 8 Jul 2014 20:45:45 +0000 (16:45 -0400)
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Fri, 25 Jul 2014 18:29:21 +0000 (14:29 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=732288

ext/x264/gstx264enc.c

index aa1e481e15fec4296784d59c26b571dbd361e6d5..3b67cdabafdd6674ce106dd0999698e602741f9a 100644 (file)
@@ -1920,8 +1920,21 @@ gst_x264_enc_finish (GstVideoEncoder * encoder)
 static gboolean
 gst_x264_enc_propose_allocation (GstVideoEncoder * encoder, GstQuery * query)
 {
+  GstX264Enc *self = GST_X264_ENC (encoder);
+  GstVideoInfo *info;
+  guint num_buffers;
+
   gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL);
 
+  if (!self->input_state)
+    return FALSE;
+
+  info = &self->input_state->info;
+  num_buffers = x264_encoder_maximum_delayed_frames (self->x264enc) + 1;
+
+  gst_query_add_allocation_pool (query, NULL, info->size, num_buffers,
+      num_buffers);
+
   return GST_VIDEO_ENCODER_CLASS (parent_class)->propose_allocation (encoder,
       query);
 }