avviddec: only free config when pool doesn't take ownership
authorLuis de Bethencourt <luisbg@osg.samsung.com>
Fri, 2 Oct 2015 10:49:35 +0000 (11:49 +0100)
committerLuis de Bethencourt <luisbg@osg.samsung.com>
Fri, 2 Oct 2015 10:49:39 +0000 (11:49 +0100)
Since gst_buffer_pool_set_config() takes ownership of the config structure,
it is only necessary to free the structure before using it when the true
branch of if (gst_buffer_pool_config_validate_params) hasn't run.

gst_buffer_pool_set_config() always takes ownership of the structure
regardless of success or failure. Which means the return, checked with
if (!working_pool), has no relation to the state of the structure.

ext/libav/gstavviddec.c

index d9344fa58c3beaddcdae34e2fde64d6d7f307c33..f139aee172037317763292ac411f723dde49217a 100644 (file)
@@ -1884,12 +1884,13 @@ gst_ffmpegviddec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
     if (gst_buffer_pool_config_validate_params (config, state->caps, size, min,
             max)) {
       working_pool = gst_buffer_pool_set_config (pool, config);
+    } else {
+      gst_structure_free (config);
     }
 
     if (!working_pool) {
       gst_object_unref (pool);
       pool = gst_video_buffer_pool_new ();
-      gst_structure_free (config);
       config = gst_buffer_pool_get_config (pool);
       gst_buffer_pool_config_set_params (config, state->caps, size, min, max);
       gst_buffer_pool_config_set_allocator (config, NULL, &params);