summaryrefslogtreecommitdiff
path: root/gst/deinterlace/gstdeinterlace.c
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2013-05-14 09:45:12 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2013-05-14 09:45:12 +0200
commit5c8bb90262f0af596a71f2a7749a1b382817d523 (patch)
tree9a51eefd7ac224d4360b2a8ce0f84b9d604e5070 /gst/deinterlace/gstdeinterlace.c
parent30c00f4fb78b173e99787a2b85cf7db267ea505b (diff)
downloadgstreamer-plugins-good-5c8bb90262f0af596a71f2a7749a1b382817d523.tar.gz
deinterlace: Improve handling of min/max buffer numbers of the buffer pool
Diffstat (limited to 'gst/deinterlace/gstdeinterlace.c')
-rw-r--r--gst/deinterlace/gstdeinterlace.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c
index 6bc752674..b93b5b719 100644
--- a/gst/deinterlace/gstdeinterlace.c
+++ b/gst/deinterlace/gstdeinterlace.c
@@ -2359,7 +2359,11 @@ gst_deinterlace_do_bufferpool (GstDeinterlace * self, GstCaps * outcaps)
gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
else {
pool = NULL;
- size = GST_VIDEO_INFO_SIZE (&self->vinfo), min = max = 0;
+ size = GST_VIDEO_INFO_SIZE (&self->vinfo);
+ min =
+ MAX ((gst_deinterlace_method_get_fields_required (self->method) +
+ 1) / 2 + 1, 4);
+ max = 0;
}
if (pool == NULL) {
@@ -2620,7 +2624,9 @@ gst_deinterlace_propose_allocation (GstDeinterlace * self, GstQuery * query)
gst_query_add_allocation_pool (query, pool, size, 0, 0);
config = gst_buffer_pool_get_config (pool);
- gst_buffer_pool_config_set_params (config, caps, size, 0, 0);
+ gst_buffer_pool_config_set_params (config, caps, size,
+ (gst_deinterlace_method_get_fields_required (self->method) + 1) / 2 + 1,
+ 0);
gst_buffer_pool_set_config (pool, config);
gst_object_unref (pool);