From: Nicolas Dufresne Date: Sat, 24 May 2014 22:45:30 +0000 (-0400) Subject: v4l2object: Use proposed allocator as default X-Git-Tag: 1.3.3~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4aa5d421847ed29719ec6501c1fce827dc2c21e9;p=platform%2Fupstream%2Fgst-plugins-good.git v4l2object: Use proposed allocator as default --- diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 4408183..e60c073 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;