From: Víctor Manuel Jáquez Leal Date: Thu, 30 Apr 2015 11:21:08 +0000 (+0200) Subject: plugins: check if the pool config is already set X-Git-Tag: 1.19.3~503^2~1797 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=188d8fe44261555c77b92169710d6400ca118be6;p=platform%2Fupstream%2Fgstreamer.git plugins: check if the pool config is already set In commit 97b768, a regression for GStreamer 1.2 was introduced: GStreamer 1.2 doesn't check, in gst_buffer_pool_set_config() if the config option is already set. This patch adds an inline function to first verify if the option is not in the pool config berfore add it. --- diff --git a/gst/vaapi/gstvaapipluginbase.c b/gst/vaapi/gstvaapipluginbase.c index 206848d..d29e817 100644 --- a/gst/vaapi/gstvaapipluginbase.c +++ b/gst/vaapi/gstvaapipluginbase.c @@ -587,6 +587,22 @@ error_pool_config: } } +/* XXXX: GStreamer 1.2 doesn't check, in gst_buffer_pool_set_config() + if the config option is already set */ +static inline gboolean +gst_vaapi_plugin_base_set_pool_config (GstBufferPool * pool, + const gchar * option) +{ + GstStructure *config; + + config = gst_buffer_pool_get_config (pool); + if (!gst_buffer_pool_config_has_option (config, option)) { + gst_buffer_pool_config_add_option (config, option); + return gst_buffer_pool_set_config (pool, config); + } + return TRUE; +} + /** * gst_vaapi_plugin_base_decide_allocation: * @plugin: a #GstVaapiPluginBase @@ -706,26 +722,20 @@ gst_vaapi_plugin_base_decide_allocation (GstVaapiPluginBase * plugin, /* Check whether GstVideoMeta, or GstVideoAlignment, is needed (raw video) */ if (has_video_meta) { - config = gst_buffer_pool_get_config (pool); - gst_buffer_pool_config_add_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_META); - if (!gst_buffer_pool_set_config (pool, config)) + if (!gst_vaapi_plugin_base_set_pool_config (pool, + GST_BUFFER_POOL_OPTION_VIDEO_META)) goto config_failed; } else if (has_video_alignment) { - config = gst_buffer_pool_get_config (pool); - gst_buffer_pool_config_add_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT); - if (!gst_buffer_pool_set_config (pool, config)) + if (!gst_vaapi_plugin_base_set_pool_config (pool, + GST_BUFFER_POOL_OPTION_VIDEO_ALIGNMENT)) goto config_failed; } /* GstVideoGLTextureUploadMeta (OpenGL) */ #if (USE_GLX || USE_EGL) if (has_texture_upload_meta) { - config = gst_buffer_pool_get_config (pool); - gst_buffer_pool_config_add_option (config, - GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META); - if (!gst_buffer_pool_set_config (pool, config)) + if (!gst_vaapi_plugin_base_set_pool_config (pool, + GST_BUFFER_POOL_OPTION_VIDEO_GL_TEXTURE_UPLOAD_META)) goto config_failed; } #endif