diff options
author | Matthew Waters <ystreet00@gmail.com> | 2013-03-14 11:15:29 +1100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2013-04-05 00:38:36 +0100 |
commit | bf502f55020ee20a93cce88c1808f2943c26a657 (patch) | |
tree | 5d3cf2ed1a75d48546a78b04d87c955d73ca43d4 /gst/audiovisualizers | |
parent | 5d72759fecf260fccd5f8d4c7c9732984405d0b7 (diff) |
audiovisualizer: handle non-existant pool in the default allocation query
gst_query_set_nth_allocation_pool() requires there to be a pool in the
query already. This is not always the case when we get the query from
upstream. Use gst_query_add_allocation_pool() instead in such case.
https://bugzilla.gnome.org/show_bug.cgi?id=681719
Diffstat (limited to 'gst/audiovisualizers')
-rw-r--r-- | gst/audiovisualizers/gstaudiovisualizer.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gst/audiovisualizers/gstaudiovisualizer.c b/gst/audiovisualizers/gstaudiovisualizer.c index f0f03cd9f..579b31407 100644 --- a/gst/audiovisualizers/gstaudiovisualizer.c +++ b/gst/audiovisualizers/gstaudiovisualizer.c @@ -936,6 +936,7 @@ default_decide_allocation (GstAudioVisualizer * scope, GstQuery * query) GstAllocationParams params; GstStructure *config; gboolean update_allocator; + gboolean update_pool; gst_query_parse_allocation (query, &outcaps, NULL); @@ -953,10 +954,12 @@ default_decide_allocation (GstAudioVisualizer * scope, GstQuery * query) if (gst_query_get_n_allocation_pools (query) > 0) { gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max); + update_pool = TRUE; } else { pool = NULL; size = GST_VIDEO_INFO_SIZE (&scope->vinfo); min = max = 0; + update_pool = FALSE; } if (pool == NULL) { @@ -978,10 +981,13 @@ default_decide_allocation (GstAudioVisualizer * scope, GstQuery * query) if (allocator) gst_object_unref (allocator); - if (pool) { + if (update_pool) gst_query_set_nth_allocation_pool (query, 0, pool, size, min, max); + else + gst_query_add_allocation_pool (query, pool, size, min, max); + + if (pool) gst_object_unref (pool); - } return TRUE; } |