diff options
Diffstat (limited to 'media-libs/gstreamer/files/gst-0.10.32-0003-add-GstQueryBuffers-query.patch')
-rw-r--r-- | media-libs/gstreamer/files/gst-0.10.32-0003-add-GstQueryBuffers-query.patch | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/media-libs/gstreamer/files/gst-0.10.32-0003-add-GstQueryBuffers-query.patch b/media-libs/gstreamer/files/gst-0.10.32-0003-add-GstQueryBuffers-query.patch deleted file mode 100644 index 4c54083..0000000 --- a/media-libs/gstreamer/files/gst-0.10.32-0003-add-GstQueryBuffers-query.patch +++ /dev/null @@ -1,258 +0,0 @@ -From 7f071cf72491a9f60c886f4779c7d14d924bc43d Mon Sep 17 00:00:00 2001 -From: Rob Clark <rob@ti.com> -Date: Wed, 19 May 2010 15:48:09 -0500 -Subject: [PATCH 3/5] add GstQueryBuffers query - -This query is used by buffer allocator, for example a video sink element, -to find out any minimum buffer requirements of upstream elements that uses -pad_alloc() to allocate buffers. For example, some cameras may have need -for additional padding/boarder around the frame (for vstab), or some video -decoders may have requirements for a certain minimum number of buffers (so -they can hold refs to reference-frames) ---- - gst/gstquark.c | 3 +- - gst/gstquark.h | 7 ++- - gst/gstquery.c | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - gst/gstquery.h | 16 ++++++- - 4 files changed, 164 insertions(+), 3 deletions(-) - -diff --git a/gst/gstquark.c b/gst/gstquark.c -index 4073eb4..58badca 100644 ---- a/gst/gstquark.c -+++ b/gst/gstquark.c -@@ -49,7 +49,8 @@ static const gchar *_quark_strings[] = { - "GstQueryURI", "GstEventStep", "GstMessageStepDone", "amount", "flush", - "intermediate", "GstMessageStepStart", "active", "eos", "sink-message", - "message", "GstMessageQOS", "running-time", "stream-time", "jitter", -- "quality", "processed", "dropped", "buffering-ranges" -+ "quality", "processed", "dropped", "buffering-ranges", "GstQueryBuffers", -+ "caps", "count", "width", "height" - }; - - GQuark _priv_gst_quark_table[GST_QUARK_MAX]; -diff --git a/gst/gstquark.h b/gst/gstquark.h -index c95d9cd..f4c8e0f 100644 ---- a/gst/gstquark.h -+++ b/gst/gstquark.h -@@ -127,8 +127,13 @@ typedef enum _GstQuarkId - GST_QUARK_PROCESSED = 98, - GST_QUARK_DROPPED = 99, - GST_QUARK_BUFFERING_RANGES = 100, -+ GST_QUARK_QUERY_BUFFERS = 101, -+ GST_QUARK_CAPS = 102, -+ GST_QUARK_COUNT = 103, -+ GST_QUARK_WIDTH = 104, -+ GST_QUARK_HEIGHT = 105, - -- GST_QUARK_MAX = 101 -+ GST_QUARK_MAX = 106 - } GstQuarkId; - - extern GQuark _priv_gst_quark_table[GST_QUARK_MAX]; -diff --git a/gst/gstquery.c b/gst/gstquery.c -index 9373175..4823ff0 100644 ---- a/gst/gstquery.c -+++ b/gst/gstquery.c -@@ -96,6 +96,7 @@ static GstQueryTypeDefinition standard_definitions[] = { - {GST_QUERY_BUFFERING, "buffering", "Buffering status", 0}, - {GST_QUERY_CUSTOM, "custom", "Custom query", 0}, - {GST_QUERY_URI, "uri", "URI of the source or sink", 0}, -+ {GST_QUERY_BUFFERS, "buffers", "Minimum buffer requirements", 0}, - {0, NULL, NULL, 0} - }; - -@@ -1480,3 +1481,143 @@ gst_query_parse_uri (GstQuery * query, gchar ** uri) - *uri = g_value_dup_string (gst_structure_id_get_value (query->structure, - GST_QUARK (URI))); - } -+ -+/** -+ * gst_query_new_buffers: -+ * @caps: the #GstCaps for the buffers that are going to be allocated -+ * -+ * Constructs a new buffer requirements query object to query buffer -+ * requirements for a particular caps. Use gst_query_unref() when done -+ * with it. -+ * -+ * Returns: A #GstQuery -+ */ -+GstQuery * -+gst_query_new_buffers (GstCaps * caps) -+{ -+ GstQuery *query; -+ GstStructure *structure; -+ -+ /* XXX could add size here, for linear (non YUV/RGB) buffers? But I'm not -+ * entirely sure what is the use-case for that.. it should be easy enough -+ * to add more optional reply fields later -+ */ -+ structure = gst_structure_id_new (GST_QUARK (QUERY_BUFFERS), -+ GST_QUARK (CAPS), GST_TYPE_CAPS, caps, -+ GST_QUARK (COUNT), G_TYPE_INT, -1, -+ GST_QUARK (WIDTH), G_TYPE_INT, -1, -+ GST_QUARK (HEIGHT), G_TYPE_INT, -1, NULL); -+ -+ query = gst_query_new (GST_QUERY_BUFFERS, structure); -+ -+ return query; -+} -+ -+/** -+ * gst_query_set_buffers_count: -+ * @count: minimum number of buffers required -+ * -+ * Answer a buffers query by setting the minimum number of buffers required. -+ * If there is no minimum buffer count requirement, don't set this field in -+ * the query. -+ */ -+void -+gst_query_set_buffers_count (GstQuery * query, gint count) -+{ -+ GstStructure *structure; -+ -+ g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERS); -+ -+ structure = gst_query_get_structure (query); -+ gst_structure_id_set (structure, GST_QUARK (COUNT), G_TYPE_INT, count, NULL); -+} -+ -+/** -+ * gst_query_set_buffers_dimensions: -+ * @width: minimum buffer width -+ * @height: minimum buffer height -+ * -+ * Answer a buffers query by setting the minimum buffer dimensions required. -+ * If there is no minimum buffer dimensions (beyond the width/height specified -+ * in the #GstCaps), don't set this field in the query. -+ */ -+void -+gst_query_set_buffers_dimensions (GstQuery * query, gint width, gint height) -+{ -+ GstStructure *structure; -+ -+ g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERS); -+ -+ structure = gst_query_get_structure (query); -+ gst_structure_id_set (structure, -+ GST_QUARK (WIDTH), G_TYPE_INT, width, -+ GST_QUARK (HEIGHT), G_TYPE_INT, height, NULL); -+} -+ -+/** -+ * gst_query_parse_buffers_caps: -+ * @query: a #GstQuery -+ * @caps: the storage for the #GstCaps pointer, or NULL -+ * -+ * Parse a buffers query. -+ */ -+void -+gst_query_parse_buffers_caps (GstQuery * query, const GstCaps ** caps) -+{ -+ GstStructure *structure; -+ -+ g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERS); -+ -+ structure = gst_query_get_structure (query); -+ if (caps) -+ *caps = gst_value_get_caps (gst_structure_id_get_value (structure, -+ GST_QUARK (CAPS))); -+} -+ -+/** -+ * gst_query_parse_buffers_count: -+ * @query: a #GstQuery -+ * @count: the storage for minimum number of buffers, or NULL -+ * -+ * Parse a buffers query answer to see the minimum number of buffers -+ * required. A returned value of -1 means there is no minimum requirement -+ */ -+void -+gst_query_parse_buffers_count (GstQuery * query, gint * count) -+{ -+ GstStructure *structure; -+ -+ g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERS); -+ -+ structure = gst_query_get_structure (query); -+ if (count) -+ *count = g_value_get_int (gst_structure_id_get_value (structure, -+ GST_QUARK (COUNT))); -+} -+ -+/** -+ * gst_query_parse_buffers_dimensions: -+ * @query: a #GstQuery -+ * @width: the storage for minimum width, or NULL -+ * @height: the storage for minimum height, or NULL -+ * -+ * Parse a buffers query answer to see the minimum buffer dimensions required. -+ * A returned value of -1 for either dimension means there is no minimum -+ * requirement in that axis -+ */ -+void -+gst_query_parse_buffers_dimensions (GstQuery * query, gint * width, -+ gint * height) -+{ -+ GstStructure *structure; -+ -+ g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERS); -+ -+ structure = gst_query_get_structure (query); -+ if (width) -+ *width = g_value_get_int (gst_structure_id_get_value (structure, -+ GST_QUARK (WIDTH))); -+ if (height) -+ *height = g_value_get_int (gst_structure_id_get_value (structure, -+ GST_QUARK (HEIGHT))); -+} -diff --git a/gst/gstquery.h b/gst/gstquery.h -index 09d0225..ae1f5cd 100644 ---- a/gst/gstquery.h -+++ b/gst/gstquery.h -@@ -31,6 +31,7 @@ - #include <gst/gstminiobject.h> - #include <gst/gststructure.h> - #include <gst/gstformat.h> -+#include <gst/gstcaps.h> - - G_BEGIN_DECLS - -@@ -51,6 +52,9 @@ G_BEGIN_DECLS - * @GST_QUERY_CUSTOM: a custom application or element defined query. Since - * 0.10.22. - * @GST_QUERY_URI: query the URI of the source or sink. Since 0.10.22. -+ * @GST_QUERY_BUFFERS: query the upstream users of pad_alloc()'d buffers to -+ * find any particular requirements about buffer size (padding) or numbers of -+ * buffers. Since ?.?.?. - * - * Standard predefined Query types - */ -@@ -69,7 +73,8 @@ typedef enum { - GST_QUERY_FORMATS, - GST_QUERY_BUFFERING, - GST_QUERY_CUSTOM, -- GST_QUERY_URI -+ GST_QUERY_URI, -+ GST_QUERY_BUFFERS - } GstQueryType; - - /** -@@ -336,6 +341,15 @@ GstQuery * gst_query_new_uri (void); - void gst_query_parse_uri (GstQuery *query, gchar **uri); - void gst_query_set_uri (GstQuery *query, const gchar *uri); - -+/* buffer requirements query */ -+GstQuery * gst_query_new_buffers (GstCaps * caps); -+void gst_query_set_buffers_count (GstQuery * query, gint count); -+void gst_query_set_buffers_dimensions (GstQuery * query, gint width, gint height); -+void gst_query_parse_buffers_caps (GstQuery * query, const GstCaps ** caps); -+void gst_query_parse_buffers_count (GstQuery * query, gint * count); -+void gst_query_parse_buffers_dimensions (GstQuery * query, gint * width, gint * height); -+ -+ - G_END_DECLS - - #endif /* __GST_QUERY_H__ */ --- -1.7.1 - |