diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2014-05-24 18:45:30 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2014-05-24 18:45:30 -0400 |
commit | 4aa5d421847ed29719ec6501c1fce827dc2c21e9 (patch) | |
tree | 5204bceedf9f0067045eb54634f99399f3877723 /sys | |
parent | aff64af8ad8adf57b107d85083926f80e5291952 (diff) |
v4l2object: Use proposed allocator as default
Diffstat (limited to 'sys')
-rw-r--r-- | sys/v4l2/gstv4l2object.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 44081836d..e60c07386 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -3147,6 +3147,8 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query) gboolean has_video_meta; gboolean can_share_own_pool, pushing_from_our_pool = FALSE; struct v4l2_control ctl = { 0, }; + GstAllocator *allocator = NULL; + GstAllocationParams params = { 0 }; GST_DEBUG_OBJECT (obj->element, "decide allocation"); @@ -3160,6 +3162,9 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query) goto pool_failed; } + if (gst_query_get_n_allocation_params (query) > 0) + gst_query_parse_nth_allocation_param (query, 0, &allocator, ¶ms); + if (gst_query_get_n_allocation_pools (query) > 0) { gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max); update = TRUE; @@ -3300,6 +3305,7 @@ gst_v4l2_object_decide_allocation (GstV4l2Object * obj, GstQuery * query) GST_BUFFER_POOL_OPTION_VIDEO_META); } + gst_buffer_pool_config_set_allocator (config, allocator, ¶ms); gst_buffer_pool_config_set_params (config, caps, size, own_min, 0); GST_DEBUG_OBJECT (obj->element, "setting own pool config to %" @@ -3331,6 +3337,7 @@ setup_other_pool: goto done; config = gst_buffer_pool_get_config (pool); + gst_buffer_pool_config_set_allocator (config, allocator, ¶ms); gst_buffer_pool_config_set_params (config, caps, size, min, max); GST_DEBUG_OBJECT (obj->element, "setting other pool config to %" @@ -3353,6 +3360,9 @@ done: else gst_query_add_allocation_pool (query, pool, size, min, max); + if (allocator) + gst_object_unref (allocator); + if (pool) gst_object_unref (pool); @@ -3377,6 +3387,9 @@ no_size: } cleanup: { + if (allocator) + gst_object_unref (allocator); + if (pool) gst_object_unref (pool); return FALSE; |